X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fhppa%2Fcell.lisp;h=8c16d62e115b37ffc4a6464df4c5f6fac8a3797b;hb=942e45e3bb73fd55786e4a0ab4590324063c0c89;hp=98bcb2654dcae1dfffb2e257f7740f572399d9f3;hpb=7a896fb715ceac43581a9a3835418e615002f9ec;p=sbcl.git diff --git a/src/compiler/hppa/cell.lisp b/src/compiler/hppa/cell.lisp index 98bcb26..8c16d62 100644 --- a/src/compiler/hppa/cell.lisp +++ b/src/compiler/hppa/cell.lisp @@ -24,7 +24,7 @@ (define-vop (set-slot) (:args (object :scs (descriptor-reg)) - (value :scs (descriptor-reg any-reg))) + (value :scs (descriptor-reg any-reg))) (:info name offset lowtag) (:ignore name) (:results) @@ -114,7 +114,7 @@ (:policy :fast-safe) (:translate (setf fdefn-fun)) (:args (function :scs (descriptor-reg) :target result) - (fdefn :scs (descriptor-reg))) + (fdefn :scs (descriptor-reg))) (:temporary (:scs (interior-reg)) lip) (:temporary (:scs (non-descriptor-reg)) type) (:results (result :scs (descriptor-reg))) @@ -123,7 +123,7 @@ (inst addi (- simple-fun-header-widetag) type type) (inst comb := type zero-tn normal-fn) (inst addi (- (ash simple-fun-code-offset word-shift) fun-pointer-lowtag) - function lip) + function lip) (inst li (make-fixup "closure_tramp" :foreign) lip) NORMAL-FN (storew function fdefn fdefn-fun-slot other-pointer-lowtag) @@ -152,7 +152,7 @@ (define-vop (bind) (:args (val :scs (any-reg descriptor-reg)) - (symbol :scs (descriptor-reg))) + (symbol :scs (descriptor-reg))) (:temporary (:scs (descriptor-reg)) temp) (:generator 5 (loadw temp symbol symbol-value-slot other-pointer-lowtag) @@ -167,6 +167,7 @@ (loadw symbol bsp-tn (- binding-symbol-slot binding-size)) (loadw value bsp-tn (- binding-value-slot binding-size)) (storew value symbol symbol-value-slot other-pointer-lowtag) + (storew zero-tn bsp-tn (- binding-value-slot binding-size)) (storew zero-tn bsp-tn (- binding-symbol-slot binding-size)) (inst addi (- (* binding-size n-word-bytes)) bsp-tn bsp-tn))) @@ -181,6 +182,7 @@ (inst comb := symbol zero-tn skip) (loadw value bsp-tn (- binding-value-slot binding-size)) (storew value symbol symbol-value-slot other-pointer-lowtag) + (storew zero-tn bsp-tn (- binding-value-slot binding-size)) (storew zero-tn bsp-tn (- binding-symbol-slot binding-size)) SKIP