X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86-64%2Falloc.lisp;h=c89b135aadb3a8ce6d81e16b9770bf7d3cc072ef;hb=038ecde3e0386e347550709a199c7f856052c0cd;hp=7138cdd59970061a8e1dc52622bc4d3ebe767487;hpb=9ed1517375b86e4df9d886f930ce1a42bcc31ce2;p=sbcl.git diff --git a/src/compiler/x86-64/alloc.lisp b/src/compiler/x86-64/alloc.lisp index 7138cdd..c89b135 100644 --- a/src/compiler/x86-64/alloc.lisp +++ b/src/compiler/x86-64/alloc.lisp @@ -124,7 +124,7 @@ (inst lea result (make-ea :byte :base result :disp other-pointer-lowtag)) (storew type result 0 other-pointer-lowtag) (storew length result vector-length-slot other-pointer-lowtag) - (inst xor zero zero) + (zeroize zero) (inst rep) (inst stos zero))) @@ -218,7 +218,6 @@ (make-ea :byte :base result :disp fun-pointer-lowtag)) (storew (logior (ash (1- size) n-widetag-bits) closure-header-widetag) result 0 fun-pointer-lowtag)) - (storew result result closure-self-slot fun-pointer-lowtag) (loadw temp function closure-fun-slot fun-pointer-lowtag) (storew temp result closure-fun-slot fun-pointer-lowtag)))) @@ -226,10 +225,11 @@ (define-vop (make-value-cell) (:args (value :scs (descriptor-reg any-reg) :to :result)) (:results (result :scs (descriptor-reg) :from :eval)) + (:info stack-allocate-p) (:node-var node) (:generator 10 (with-fixed-allocation - (result value-cell-header-widetag value-cell-size node) + (result value-cell-header-widetag value-cell-size node stack-allocate-p) (storew value result value-cell-value-slot other-pointer-lowtag)))) ;;;; automatic allocators for primitive objects @@ -240,6 +240,12 @@ (:generator 1 (inst mov result unbound-marker-widetag))) +(define-vop (make-funcallable-instance-tramp) + (:args) + (:results (result :scs (any-reg))) + (:generator 1 + (inst lea result (make-fixup "funcallable_instance_tramp" :foreign)))) + (define-vop (fixed-alloc) (:args) (:info name words type lowtag)