Changeset 10698

Show
Ignore:
Timestamp:
04/08/05 04:11:02 (4 years ago)
Author:
rtoy
Message:

The ppc port no longer uses the ppc-fun-hack where the
function-pointer and instance-pointer tags were swapped compared to
all other ports.

Remove code for ppc-fun-hack.

Location:
trunk/src
Files:
7 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/assembly/ppc/arith.lisp

    r9845 r10562  
    4040   (:temp lra descriptor-reg lra-offset) 
    4141   (:temp nargs any-reg nargs-offset) 
     42   #-PPC-FUN-HACK 
     43   (:temp lip interior-reg lip-offset) 
    4244   (:temp ocfp any-reg ocfp-offset)) 
    4345   
     
    5557  (with-fixed-allocation (res flag temp bignum-type (1+ bignum-digits-offset)) 
    5658    (storew temp2 res bignum-digits-offset other-pointer-type)) 
     59  #+PPC-FUN-HACK 
    5760  (lisp-return lra :offset 2) 
     61  #-PPC-FUN-HACK 
     62  (lisp-return lra lip :offset 2) 
    5863 
    5964  DO-STATIC-FUN 
     65  #+PPC-FUN-HACK 
    6066  (inst lwz code-tn null-tn (static-function-offset 'two-arg-+)) 
     67  #-PPC-FUN-HACK 
     68  (inst lwz lip null-tn (static-function-offset 'two-arg-+)) 
    6169  (inst li nargs (fixnumize 2)) 
    6270  (inst mr ocfp cfp-tn) 
    6371  (inst mr cfp-tn csp-tn) 
     72  #+PPC-FUN-HACK 
    6473  (inst j code-tn 
    6574        (- (* function-code-offset word-bytes) function-pointer-type)) 
     75  #-PPC-FUN-HACK 
     76  (inst j lip 0) 
    6677 
    6778  DONE 
     
    8697   (:temp lra descriptor-reg lra-offset) 
    8798   (:temp nargs any-reg nargs-offset) 
     99   #-PPC-FUN-HACK 
     100   (:temp lip interior-reg lip-offset) 
    88101   (:temp ocfp any-reg ocfp-offset)) 
    89102 
     
    103116  (with-fixed-allocation (res flag temp bignum-type (1+ bignum-digits-offset)) 
    104117    (storew temp2 res bignum-digits-offset other-pointer-type)) 
     118  #+PPC-FUN-HACK 
    105119  (lisp-return lra :offset 2) 
     120  #-PPC-FUN-HACK 
     121  (lisp-return lra lip :offset 2) 
    106122 
    107123  DO-STATIC-FUN 
     124  #+PPC-FUN-HACK 
    108125  (inst lwz code-tn null-tn (static-function-offset 'two-arg--)) 
     126  #-PPC-FUN-HACK 
     127  (inst lwz lip null-tn (static-function-offset 'two-arg--)) 
    109128  (inst li nargs (fixnumize 2)) 
    110129  (inst mr ocfp cfp-tn) 
    111130  (inst mr cfp-tn csp-tn) 
     131  #+PPC-FUN-HACK 
    112132  (inst j code-tn 
    113133        (- (* function-code-offset word-bytes) function-pointer-type)) 
     134  #-PPC-FUN-HACK 
     135  (inst j lip 0) 
    114136 
    115137  DONE 
     
    137159   (:temp hi non-descriptor-reg nl2-offset) 
    138160   (:temp pa-flag non-descriptor-reg nl3-offset) 
     161   #-PPC-FUN-HACK 
     162   (:temp lip interior-reg lip-offset) 
    139163   (:temp lra descriptor-reg lra-offset) 
    140164   (:temp nargs any-reg nargs-offset) 
     
    165189  CONS-BIGNUM 
    166190  ;; Allocate a BIGNUM for the result. 
    167   (pseudo-atomic (pa-flag :extra (pad-data-block (1+ bignum-digits-offset))) 
     191  (with-fixed-allocation (res pa-flag temp bignum-type (+ 2 bignum-digits-offset)) 
    168192    (let ((one-word (gen-label))) 
    169       (inst ori res alloc-tn other-pointer-type) 
    170193      ;; We start out assuming that we need one word.  Is that correct? 
    171194      (inst srawi temp lo 31) 
     
    174197      (inst beq one-word) 
    175198      ;; Nope, we need two, so allocate the additional space. 
    176       (inst addi alloc-tn alloc-tn (- (pad-data-block (+ 2 bignum-digits-offset)) 
    177                                       (pad-data-block (1+ bignum-digits-offset)))) 
    178199      (inst li temp (logior (ash 2 type-bits) bignum-type)) 
    179200      (storew hi res (1+ bignum-digits-offset) other-pointer-type) 
     
    183204  ;; Out of here 
    184205  GO-HOME 
     206  #+PPC-FUN-HACK 
    185207  (lisp-return lra :offset 2) 
     208  #-PPC-FUN-HACK 
     209  (lisp-return lra lip :offset 2) 
    186210 
    187211  DO-STATIC-FUN 
     212  #+PPC-FUN-HACK 
    188213  (inst lwz code-tn null-tn (static-function-offset 'two-arg-*)) 
     214  #-PPC-FUN-HACK 
     215  (inst lwz lip null-tn (static-function-offset 'two-arg-*)) 
    189216  (inst li nargs (fixnumize 2)) 
    190217  (inst mr ocfp cfp-tn) 
    191218  (inst mr cfp-tn csp-tn) 
     219  #+PPC-FUN-HACK 
    192220  (inst j code-tn 
    193221        (- (* function-code-offset word-bytes) function-pointer-type)) 
     222  #-PPC-FUN-HACK 
     223  (inst j lip 0) 
    194224 
    195225  LOW-FITS-IN-FIXNUM 
     
    309339           (:res res descriptor-reg a0-offset) 
    310340            
     341           #-PPC-FUN-HACK 
     342           (:temp lip interior-reg lip-offset) 
    311343           (:temp nargs any-reg nargs-offset) 
    312344           (:temp ocfp any-reg ocfp-offset)) 
     
    318350           
    319351          DO-STATIC-FN 
     352          #+PPC-FUN-HACK 
    320353          (inst lwz code-tn null-tn (static-function-offset ',static-fn)) 
     354          #-PPC-FUN-HACK 
     355          (inst lwz lip null-tn (static-function-offset ',static-fn)) 
    321356          (inst li nargs (fixnumize 2)) 
    322357          (inst mr ocfp cfp-tn) 
    323358          (inst mr cfp-tn csp-tn) 
     359          #+PPC-FUN-HACK 
    324360          (inst j code-tn 
    325361                (- (* function-code-offset word-bytes) function-pointer-type)) 
     362          #-PPC-FUN-HACK 
     363          (inst j lip 0) 
    326364           
    327365          DO-COMPARE 
     
    349387 
    350388                          (:temp lra descriptor-reg lra-offset) 
     389                          #-PPC-FUN-HACK 
     390                          (:temp lip interior-reg lip-offset) 
    351391                          (:temp nargs any-reg nargs-offset) 
    352392                          (:temp ocfp any-reg ocfp-offset)) 
     
    360400  RETURN-NIL 
    361401  (inst mr res null-tn) 
     402  #+PPC-FUN-HACK 
    362403  (lisp-return lra :offset 2) 
     404  #-PPC-FUN-HACK 
     405  (lisp-return lra lip :offset 2) 
    363406 
    364407  DO-STATIC-FN 
     408  #+PPC-FUN-HACK 
    365409  (inst lwz code-tn null-tn (static-function-offset 'eql)) 
     410  #-PPC-FUN-HACK 
     411  (inst lwz lip null-tn (static-function-offset 'eql)) 
    366412  (inst li nargs (fixnumize 2)) 
    367413  (inst mr ocfp cfp-tn) 
    368414  (inst mr cfp-tn csp-tn) 
     415  #+PPC-FUN-HACK 
    369416  (inst j code-tn 
    370417        (- (* function-code-offset word-bytes) function-pointer-type)) 
     418  #-PPC-FUN-HACK 
     419  (inst j lip 0) 
    371420 
    372421  RETURN-T 
     
    386435    
    387436   (:temp lra descriptor-reg lra-offset) 
     437   #-PPC-FUN-HACK 
     438   (:temp lip interior-reg lip-offset) 
    388439   (:temp nargs any-reg nargs-offset) 
    389440   (:temp ocfp any-reg ocfp-offset)) 
     
    396447 
    397448  (inst mr res null-tn) 
     449  #+PPC-FUN-HACK 
    398450  (lisp-return lra :offset 2) 
     451  #-PPC-FUN-HACK 
     452  (lisp-return lra lip :offset 2) 
    399453 
    400454  DO-STATIC-FN 
     455  #+PPC-FUN-HACK 
    401456  (inst lwz code-tn null-tn (static-function-offset 'two-arg-=)) 
     457  #-PPC-FUN-HACK 
     458  (inst lwz lip null-tn (static-function-offset 'two-arg-=)) 
    402459  (inst li nargs (fixnumize 2)) 
    403460  (inst mr ocfp cfp-tn) 
    404461  (inst mr cfp-tn csp-tn) 
     462  #+PPC-FUN-HACK 
    405463  (inst j code-tn 
    406464        (- (* function-code-offset word-bytes) function-pointer-type)) 
     465  #-PPC-FUN-HACK 
     466  (inst j lip 0) 
    407467 
    408468  RETURN-T 
     
    421481 
    422482                          (:temp lra descriptor-reg lra-offset) 
     483                          #-PPC-FUN-HACK 
     484                          (:temp lip interior-reg lip-offset) 
    423485                          (:temp nargs any-reg nargs-offset) 
    424486                          (:temp ocfp any-reg ocfp-offset)) 
     
    430492 
    431493  (load-symbol res t) 
     494  #+PPC-FUN-HACK 
    432495  (lisp-return lra :offset 2) 
     496  #-PPC-FUN-HACK 
     497  (lisp-return lra lip :offset 2) 
    433498 
    434499  DO-STATIC-FN 
     500  #+PPC-FUN-HACK 
    435501  (inst lwz code-tn null-tn (static-function-offset 'two-arg-=)) 
     502  #-PPC-FUN-HACK 
     503  (inst lwz lip null-tn (static-function-offset 'two-arg-=)) 
    436504  (inst li nargs (fixnumize 2)) 
    437505  (inst mr ocfp cfp-tn) 
     506  #+PPC-FUN-HACK 
    438507  (inst j code-tn 
    439508        (- (* function-code-offset word-bytes) function-pointer-type)) 
     509  #-PPC-FUN-HACK 
     510  (inst j lip 0) 
    440511  (inst mr cfp-tn csp-tn) 
    441512 
  • trunk/src/assembly/ppc/assem-rtns.lisp

    r9845 r10507  
    2828 
    2929     ;; These are just needed to facilitate the transfer 
     30     #-PPC-FUN-HACK 
     31     (:temp lip interior-reg lip-offset) 
    3032     (:temp count any-reg nl2-offset) 
    3133     (:temp src any-reg nl3-offset) 
     
    8486   
    8587  ;; Return. 
    86   (lisp-return lra)) 
     88  #+PPC-FUN-HACK 
     89  (lisp-return lra) 
     90  #-PPC-FUN-HACK 
     91  (lisp-return lra lip)) 
    8792 
    8893 
     
    107112     (:temp count any-reg nl3-offset) 
    108113     (:temp temp descriptor-reg l0-offset) 
     114     #-PPC-FUN-HACK 
     115     (:temp lip interior-reg lip-offset) 
    109116 
    110117     ;; These are needed so we can get at the register args. 
     
    143150  ;; We are done.  Do the jump. 
    144151  (loadw temp lexenv vm:closure-function-slot vm:function-pointer-type) 
    145   (lisp-jump temp)) 
     152  #+PPC-FUN-HACK 
     153  (lisp-jump temp) 
     154  #-PPC-FUN-HACK 
     155  (lisp-jump temp lip)) 
    146156 
    147157 
     
    157167                          (:arg count (any-reg descriptor-reg) nargs-offset) 
    158168                          (:temp lra descriptor-reg lra-offset) 
     169                          #-PPC-FUN-HACK 
     170                          (:temp lip interior-reg lip-offset) 
    159171                          (:temp cur-uwp any-reg nl0-offset) 
    160172                          (:temp next-uwp any-reg nl1-offset) 
     
    178190  (loadw code-tn cur-uwp vm:unwind-block-current-code-slot) 
    179191  (loadw lra cur-uwp vm:unwind-block-entry-pc-slot) 
     192  #+PPC-FUN-HACK 
    180193  (lisp-return lra :frob-code nil) 
     194  #-PPC-FUN-HACK 
     195  (lisp-return lra lip :frob-code nil) 
    181196 
    182197  DO-UWP 
  • trunk/src/assembly/ppc/support.lisp

    r8637 r10507  
    6262                                    :sc (sc-or-lose 'descriptor-reg *backend*) 
    6363                                    :offset lra-offset) 
     64                    #-PPC-FUN-HACK 
     65                    (make-random-tn :kind :normal 
     66                                    :sc (sc-or-lose 'interior-reg *backend*) 
     67                                    :offset lip-offset) 
    6468                    :offset 2))) 
    6569    (:none))) 
  • trunk/src/compiler/generic/objdef.lisp

    r10360 r10602  
    9797(defenum (:suffix -type) 
    9898  even-fixnum 
    99   #-ppc function-pointer #+ppc instance-pointer 
     99  #-PPC-FUN-HACK function-pointer #+PPC-FUN-HACK instance-pointer 
    100100  other-immediate-0 
    101101  list-pointer 
    102102  odd-fixnum 
    103   #-ppc instance-pointer #+ppc function-pointer 
     103  #-PPC-FUN-HACK instance-pointer #+PPC-FUN-HACK function-pointer 
    104104  other-immediate-1 
    105105  other-pointer) 
     
    304304                                   :lowtag function-pointer-type 
    305305                                   :header function-header-type) 
    306   #+ppc (jump-insn) 
     306  #+PPC-FUN-HACK (jump-insn) 
    307307  #-gengc (self :ref-trans %function-self :set-trans (setf %function-self)) 
    308308  #+gengc (entry-point :c-type "char *") 
     
    332332(define-primitive-object (closure :lowtag function-pointer-type 
    333333                                  :header closure-header-type) 
    334   #+ppc (jump-insn) 
     334  #+PPC-FUN-HACK (jump-insn) 
    335335  #-gengc (function :init :arg :ref-trans %closure-function) 
    336336  #+gengc (entry-point :c-type "char *") 
     
    341341                          :header funcallable-instance-header-type 
    342342                          :alloc-trans %make-funcallable-instance) 
    343   #+ppc (jump-insn) 
     343  #+PPC-FUN-HACK (jump-insn) 
    344344  #-gengc 
    345345  (function 
     
    467467;;;; Symbols 
    468468 
    469 #+(or gengc sparc x86 amd64) 
     469#+(or gengc sparc x86 amd64 ppc) 
    470470(defknown %make-symbol (fixnum simple-string) symbol 
    471471  (flushable movable)) 
    472472 
    473 #+(or gengc sparc x86 amd64) 
     473#+(or gengc sparc x86 amd64 ppc) 
    474474(defknown symbol-hash (symbol) fixnum 
    475475  (flushable movable)) 
    476476 
    477 #+(or gencgc sparc x86 amd64) 
     477#+(or gencgc sparc x86 amd64 ppc) 
    478478(defknown %set-symbol-hash  (symbol index) 
    479479  t (unsafe)) 
     
    489489                                 :header symbol-header-type 
    490490                                 :alloc-trans 
    491                                  #-(or gengc x86 amd64 sparc) make-symbol 
    492                                  #+(or gengc x86 amd64 sparc) %make-symbol) 
     491                                 #-(or gengc x86 amd64 sparc ppc) make-symbol 
     492                                 #+(or gengc x86 amd64 sparc ppc) %make-symbol) 
    493493  (value :set-trans %set-symbol-value 
    494494         :init :unbound) 
    495   #-(or gengc x86 amd64 sparc) unused 
    496   #+(or gengc x86 amd64 sparc) 
     495  #-(or gengc x86 amd64 sparc ppc) unused 
     496  #+(or gengc x86 amd64 sparc ppc) 
    497497  (hash :init :arg) 
    498498  (plist :ref-trans symbol-plist 
  • trunk/src/compiler/ppc/alloc.lisp

    r10561 r10679  
    200200  (:ignore name) 
    201201  (:results (result :scs (descriptor-reg))) 
    202   (:temporary (:scs (any-reg)) bytes header) 
     202  (:temporary (:scs (any-reg)) bytes) 
     203  (:temporary (:scs (non-descriptor-reg)) header) 
    203204  (:temporary (:sc non-descriptor-reg :offset nl3-offset) pa-flag) 
    204205  (:generator 6 
  • trunk/src/compiler/ppc/call.lisp

    r9851 r10561  
    142142;;; DISPLACEMENT.) 
    143143;;; 
    144 ;;; Duh.  PPC Linux (and VxWorks) adhere to the EABI. 
     144;;; Duh.  PPC Linux (and VxWorks) adhere to the EABI, but Darwin doesn't. 
    145145(defun bytes-needed-for-non-descriptor-stack-frame () 
    146   (logandc2 (+ 7 number-stack-displacement 
     146  (logandc2 (+ +stack-alignment-bytes+ number-stack-displacement 
    147147               (* (sb-allocated-size 'non-descriptor-stack) vm:word-bytes)) 
    148             7)) 
     148            +stack-alignment-bytes+)) 
    149149 
    150150 
     
    179179    (trace-table-entry trace-table-function-prologue) 
    180180    (emit-label start-lab) 
     181    #+PPC-FUN-HACK 
    181182    (let* ((entry-label (gen-label))) 
    182183      ;; Allocate function header. 
     
    185186      (dotimes (i (1- (1- vm:function-code-offset))) 
    186187        (inst word 0)) 
    187       (emit-label entry-label)) 
    188     ;; The start of the actual code. 
    189     ;; Fix CODE, cause the function object was passed in. 
    190     (inst compute-code-from-fn code-tn code-tn start-lab temp) 
     188      (emit-label entry-label) 
     189      ;; The start of the actual code. 
     190      ;; Fix CODE, cause the function object was passed in. 
     191      (inst compute-code-from-fn code-tn code-tn start-lab temp)) 
     192    #-PPC-FUN-HACK 
     193    (let* ((entry-label (gen-label))) 
     194      ;; Allocate function header. 
     195      (inst function-header-word) 
     196      (dotimes (i (1- vm:function-code-offset)) 
     197        (inst word 0)) 
     198      (emit-label entry-label) 
     199      ;; The start of the actual code. 
     200      (inst compute-code-from-fn code-tn lip-tn entry-label temp)) 
    191201    ;; Build our stack frames. 
    192202    (inst addi csp-tn cfp-tn 
     
    359369                    (let ((def (car remaining))) 
    360370                      (emit-label (car def)) 
    361                       (when (null (cdr remaining)) 
    362                         (inst b defaulting-done)) 
    363371                      (store-stack-tn (cdr def) null-tn))) 
     372                  (inst b defaulting-done) 
    364373                  (trace-table-entry trace-table-normal)))))) 
    365374 
     
    698707 
    699708     ,(if named 
    700           `(:temporary (:sc descriptor-reg :offset cname-offset 
     709          `(:temporary (:sc descriptor-reg :offset #+PPC-FUN-HACK cname-offset 
     710                                                   #-PPC-FUN-HACK fdefn-offset 
    701711                            :from (:argument ,(if (eq return :tail) 0 1)) 
    702712                            :to :eval) 
     
    725735         '((:temporary (:scs (non-descriptor-reg)) temp) 
    726736           (:temporary (:sc control-stack :offset nfp-save-offset) nfp-save))) 
     737 
     738     (:temporary (:sc interior-reg :offset lip-offset) entry-point) 
    727739 
    728740     (:generator ,(+ (if named 5 0) 
     
    808820                             vm:other-pointer-type) 
    809821                      (do-next-filler))) 
     822                   #+PPC-FUN-HACK 
    810823                   (loadw function name-pass fdefn-raw-addr-slot 
     824                          other-pointer-type) 
     825                   #-PPC-FUN-HACK 
     826                   (loadw entry-point name-pass fdefn-raw-addr-slot 
    811827                          other-pointer-type) 
    812828                   (do-next-filler)) 
     
    822838                   (loadw function lexenv vm:closure-function-slot 
    823839                          vm:function-pointer-type) 
    824                    (do-next-filler))) 
     840                   (do-next-filler) 
     841                   #-PPC-FUN-HACK 
     842                   (inst addi entry-point function 
     843                              (- (ash vm:function-code-offset vm:word-shift) 
     844                                 vm:function-pointer-type)))) 
    825845           (loop 
    826846             (if filler 
     
    829849            
    830850           (note-this-location vop :call-site) 
    831            (inst mtctr function) 
    832            (inst mr code-tn function) 
     851           (inst mtctr #+PPC-FUN-HACK function #-PPC-FUN-HACK entry-point) 
     852           #+PPC-FUN-HACK-MAYBE (inst mr code-tn function) 
    833853           (inst bctr) 
    834854           #| 
     
    915935         (value)) 
    916936  (:ignore value) 
     937  #-PPC-FUN-HACK 
     938  (:temporary (:scs (interior-reg)) lip) 
    917939  (:vop-var vop) 
    918940  (:generator 6 
     
    928950    (move cfp-tn old-fp) 
    929951    ;; Out of here. 
     952    #+PPC-FUN-HACK 
    930953    (lisp-return return-pc :offset 2) 
     954    #-PPC-FUN-HACK 
     955    (lisp-return return-pc lip :offset 2) 
    931956    (trace-table-entry trace-table-normal))) 
    932957 
     
    957982  (:temporary (:sc any-reg :offset nargs-offset) nargs) 
    958983  (:temporary (:sc any-reg :offset ocfp-offset) val-ptr) 
     984  #-PPC-FUN-HACK 
     985  (:temporary (:scs (interior-reg)) lip) 
    959986  (:vop-var vop) 
    960987  (:generator 6 
     
    971998           (move cfp-tn old-fp) 
    972999           ;; Out of here. 
    973            (lisp-return return-pc :offset 2)) 
     1000           #+PPC-FUN-HACK 
     1001           (lisp-return return-pc :offset 2) 
     1002           #-PPC-FUN-HACK 
     1003           (lisp-return return-pc lip :offset 2)) 
    9741004          (t 
    9751005           ;; Establish the values pointer and values count. 
     
    9851015               (move reg null-tn))) 
    9861016           ;; And away we go. 
    987            (lisp-return return-pc))) 
     1017           #+PPC-FUN-HACK 
     1018           (lisp-return return-pc) 
     1019           #-PPC-FUN-HACK 
     1020           (lisp-return return-pc lip))) 
    9881021    (trace-table-entry trace-table-normal))) 
    9891022 
     
    10051038  (:temporary (:sc any-reg :offset nargs-offset :from (:argument 3)) nvals) 
    10061039  (:temporary (:sc descriptor-reg :offset a0-offset) a0) 
     1040  #-PPC-FUN-HACK 
     1041  (:temporary (:scs (interior-reg)) lip) 
    10071042 
    10081043 
     
    10271062      (move csp-tn cfp-tn) 
    10281063      (move cfp-tn old-fp-arg) 
     1064      #+PPC-FUN-HACK 
    10291065      (lisp-return lra-arg :offset 2) 
     1066      #-PPC-FUN-HACK 
     1067      (lisp-return lra-arg lip :offset 2) 
    10301068                 
    10311069      ;; Nope, not the single case. 
     
    11611199      (assemble () 
    11621200        ;; Allocate a cons (2 words) for each item. 
    1163         (inst clrrwi result alloc-tn lowtag-bits) 
    1164         (inst ori result result list-pointer-type) 
     1201        (inst slwi temp count 1) 
     1202        (allocation result temp list-pointer-type :temp-tn dst) 
    11651203        (move dst result) 
    1166         (inst slwi temp count 1) 
    1167         (inst add alloc-tn alloc-tn temp) 
    11681204        (inst b enter) 
    11691205 
  • trunk/src/compiler/ppc/static-fn.lisp

    r9845 r10507  
    2727  (:temporary (:scs (descriptor-reg)) move-temp) 
    2828  (:temporary (:sc descriptor-reg :offset lra-offset) lra) 
     29  #-PPC-FUN-HACK 
     30  (:temporary (:sc interior-reg :offset lip-offset) entry-point) 
    2931  (:temporary (:scs (descriptor-reg)) func) 
    3032  (:temporary (:sc any-reg :offset nargs-offset) nargs) 
     
    8789                 (cur-nfp (current-nfp-tn vop))) 
    8890             ,@(moves (temp-names) (arg-names)) 
     91             #+PPC-FUN-HACK 
    8992             (inst lwz func null-tn (static-function-offset symbol)) 
     93             #-PPC-FUN-HACK 
     94             (inst lwz entry-point null-tn (static-function-offset symbol)) 
    9095             (inst lr nargs (fixnumize ,num-args)) 
    9196             (when cur-nfp 
     
    95100             (inst compute-lra-from-code lra code-tn lra-label temp) 
    96101            &