X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Ftrace-table.lisp;h=1abbee462292dfe7606e7b09ebdda4e06391c74b;hb=dfa55a883f94470267b626dae77ce7e7dfac3df6;hp=80c217c359dde1c53b26940f69a1ae0989f20d94;hpb=a530bbe337109d898d5b4a001fc8f1afa3b5dc39;p=sbcl.git diff --git a/src/compiler/trace-table.lisp b/src/compiler/trace-table.lisp index 80c217c..1abbee4 100644 --- a/src/compiler/trace-table.lisp +++ b/src/compiler/trace-table.lisp @@ -11,28 +11,26 @@ (in-package "SB!C") -(file-comment - "$Header$") - (defun trace-table-entry (state) (let ((label (gen-label))) (emit-label label) (push (cons label state) *trace-table-info*)) (values)) -;;; Convert the list of (label . state) entries into an ivector. -(eval-when (:compile-toplevel :load-toplevel :execute) - (defconstant tt-bits-per-state 3) - (defconstant tt-bytes-per-entry 2) - (defconstant tt-bits-per-entry (* tt-bytes-per-entry sb!vm:byte-bits)) - (defconstant tt-bits-per-offset (- tt-bits-per-entry tt-bits-per-state)) - (defconstant tt-max-offset (1- (ash 1 tt-bits-per-offset)))) +(defconstant tt-bits-per-state 3) +(defconstant tt-bytes-per-entry 2) +(defconstant tt-bits-per-entry (* tt-bytes-per-entry sb!vm:byte-bits)) +(defconstant tt-bits-per-offset (- tt-bits-per-entry tt-bits-per-state)) +(defconstant tt-max-offset (1- (ash 1 tt-bits-per-offset))) + (deftype tt-state () `(unsigned-byte ,tt-bits-per-state)) (deftype tt-entry () `(unsigned-byte ,tt-bits-per-entry)) (deftype tt-offset () `(unsigned-byte ,tt-bits-per-offset)) + +;;; Convert the list of (LABEL . STATE) entries into an ivector. (declaim (ftype (function (list) (simple-array tt-entry 1)) pack-trace-table)) (defun pack-trace-table (entries) (declare (list entries)) @@ -61,7 +59,7 @@ (let* ((posn (label-position (car entry))) (state (cdr entry))) (declare (type index posn) (type tt-state state)) - (assert (<= last-posn posn)) + (aver (<= last-posn posn)) (do ((offset (- posn last-posn) (- offset tt-max-offset))) ((< offset tt-max-offset) (push-entry offset state))