X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86-64%2Fstatic-fn.lisp;h=ec4809a1e46b2e58a8febbba8ed57e936552accd;hb=a3d4610158f227d53cb5eac287dd2661e975fc70;hp=bf3c6ea0d2b64724aac03fe61267cc9b5b94bc45;hpb=47f408ca8480937ac946db8455b7c3d3e0b353bb;p=sbcl.git diff --git a/src/compiler/x86-64/static-fn.lisp b/src/compiler/x86-64/static-fn.lisp index bf3c6ea..ec4809a 100644 --- a/src/compiler/x86-64/static-fn.lisp +++ b/src/compiler/x86-64/static-fn.lisp @@ -73,7 +73,6 @@ static-fun-template) (:args ,@(args)) ,@(temps) - (:temporary (:sc unsigned-reg) call-target) (:results ,@(results)) (:node-var ,node) (:generator ,(+ 50 num-args num-results) @@ -109,14 +108,7 @@ ;; longer executed? Does it not depend on the ;; 1+3=4=fdefn_raw_address_offset relationship above? ;; Is something else going on?) - - ;; Need to load the target address into a register, since - ;; immediate call arguments are just a 32-bit displacement, - ;; which obviously can't work with >4G spaces. - (inst mov call-target - (make-ea :qword - :disp (+ nil-value (static-fun-offset function)))) - (inst call call-target) + (call-indirect (+ nil-value (static-fun-offset function))) ,(collect ((bindings) (links)) (do ((temp (temp-names) (cdr temp)) (name 'values (gensym))