X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86-64%2Falloc.lisp;h=76bad499a0fd26341c4a79fc92e72bb0e6c3bce0;hb=2dbf6e6a5011edecc5361c208e9d5915ca783351;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..76bad49 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)))) @@ -240,6 +239,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)