X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Ftrace-table.lisp;h=1abbee462292dfe7606e7b09ebdda4e06391c74b;hb=f17811c866c0412da17d3ee94f11cf38783301f7;hp=1f93fb45730ad0ab81a6f8ddce0bf162580b7231;hpb=cea4896b2482b7b2b429c1631d774b4cfbc0efba;p=sbcl.git diff --git a/src/compiler/trace-table.lisp b/src/compiler/trace-table.lisp index 1f93fb4..1abbee4 100644 --- a/src/compiler/trace-table.lisp +++ b/src/compiler/trace-table.lisp @@ -17,19 +17,20 @@ (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)) @@ -58,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))