X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fppc%2Fstatic-fn.lisp;h=2e8bf7bf6ffd5042d16dcd830f34c62d3ac2db12;hb=9304704f68a18894fa8eb985b387465e5d25e1d5;hp=2842087302ae74689975c46f8169a80286e644ac;hpb=52cfe54802db8736f1f4e2b67764c43bba9b78b3;p=sbcl.git diff --git a/src/compiler/ppc/static-fn.lisp b/src/compiler/ppc/static-fn.lisp index 2842087..2e8bf7b 100644 --- a/src/compiler/ppc/static-fn.lisp +++ b/src/compiler/ppc/static-fn.lisp @@ -19,6 +19,8 @@ (:temporary (:scs (non-descriptor-reg)) temp) (:temporary (:scs (descriptor-reg)) move-temp) (:temporary (:sc descriptor-reg :offset lra-offset) lra) + (:temporary (:sc descriptor-reg :offset fdefn-offset) fdefn) + (:temporary (:scs (descriptor-reg)) function) (:temporary (:sc interior-reg :offset lip-offset) entry-point) (:temporary (:sc any-reg :offset nargs-offset) nargs) (:temporary (:sc any-reg :offset ocfp-offset) old-fp) @@ -78,7 +80,9 @@ (let ((lra-label (gen-label)) (cur-nfp (current-nfp-tn vop))) ,@(moves (temp-names) (arg-names)) - (inst lwz entry-point null-tn (static-fun-offset symbol)) + (inst addi fdefn null-tn (static-fdefn-offset symbol)) + (loadw function fdefn fdefn-fun-slot other-pointer-lowtag) + (loadw entry-point fdefn fdefn-raw-addr-slot other-pointer-lowtag) (inst lr nargs (fixnumize ,num-args)) (when cur-nfp (store-stack-tn nfp-save cur-nfp))