X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86%2Fmacros.lisp;h=5d4238f04c8cacf22f3804a999c97f114fff49e0;hb=3c65762b927af861c9c8bc416e4cbac9a14ec0c3;hp=b82ca88006f525d3a05de4f6c33e67ec04030aaa;hpb=aa2dc9529460ea0d9c99998dc87283fc1a43e808;p=sbcl.git diff --git a/src/compiler/x86/macros.lisp b/src/compiler/x86/macros.lisp index b82ca88..5d4238f 100644 --- a/src/compiler/x86/macros.lisp +++ b/src/compiler/x86/macros.lisp @@ -73,7 +73,7 @@ :disp (+ nil-value (static-symbol-offset ',symbol) (ash symbol-value-slot word-shift) - (- other-pointer-type))))) + (- other-pointer-lowtag))))) (defmacro store-symbol-value (reg symbol) `(inst mov @@ -81,7 +81,7 @@ :disp (+ nil-value (static-symbol-offset ',symbol) (ash symbol-value-slot word-shift) - (- other-pointer-type))) + (- other-pointer-lowtag))) ,reg)) @@ -257,17 +257,17 @@ :foreign))))))))) (values)) -(defmacro with-fixed-allocation ((result-tn type-code size &optional inline) +;;; Allocate an other-pointer object of fixed SIZE with a single word +;;; header having the specified WIDETAG value. The result is placed in +;;; RESULT-TN. +(defmacro with-fixed-allocation ((result-tn widetag size &optional inline) &rest forms) - #!+sb-doc - "Allocate an other-pointer object of fixed Size with a single - word header having the specified Type-Code. The result is placed in - Result-TN." `(pseudo-atomic (allocation ,result-tn (pad-data-block ,size) ,inline) - (storew (logior (ash (1- ,size) sb!vm:type-bits) ,type-code) ,result-tn) + (storew (logior (ash (1- ,size) sb!vm:n-widetag-bits) ,widetag) + ,result-tn) (inst lea ,result-tn - (make-ea :byte :base ,result-tn :disp other-pointer-type)) + (make-ea :byte :base ,result-tn :disp other-pointer-lowtag)) ,@forms)) ;;;; error code @@ -386,13 +386,13 @@ (ash symbol-value-slot word-shift) ;; FIXME: Use mask, not minus, to ;; take out type bits. - (- other-pointer-type))) + (- other-pointer-lowtag))) 0) (inst mov (make-ea :byte :disp (+ nil-value (static-symbol-offset '*pseudo-atomic-atomic*) (ash symbol-value-slot word-shift) - (- other-pointer-type))) + (- other-pointer-lowtag))) (fixnumize 1))) ,@forms (when *enable-pseudo-atomic* @@ -400,7 +400,7 @@ (static-symbol-offset '*pseudo-atomic-atomic*) (ash symbol-value-slot word-shift) - (- other-pointer-type))) + (- other-pointer-lowtag))) 0) ;; KLUDGE: Is there any requirement for interrupts to be ;; handled in order? It seems as though an interrupt coming @@ -413,7 +413,7 @@ (static-symbol-offset '*pseudo-atomic-interrupted*) (ash symbol-value-slot word-shift) - (- other-pointer-type))) + (- other-pointer-lowtag))) 0) (inst jmp :eq ,label) (inst break pending-interrupt-trap)