Changeset 6357 for branches/x8664-call


Ignore:
Timestamp:
Apr 29, 2007, 9:22:08 AM (13 years ago)
Author:
gb
Message:

Functions (and most subprims) called with return address on top of
stack; lots of changes to support this.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/x8664-call/ccl/compiler/X86/X8664/x8664-vinsns.lisp

    r6352 r6357  
    279279                                               ()
    280280                                               ((entry (:label 1))))
    281   (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0))
    282281  (:talign 4)
    283   (jmp (:@ x8664::symbol.fcell (:% x8664::fname)))
    284   :back
     282  (call (:@ x8664::symbol.fcell (:% x8664::fname)))
    285283  (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn)))
    286284
    287 ;;; It's neccessary to use x8664:xfn to reference the current function
    288 ;;; when neither x8664::fn nor x8664::ra0 are doing so.
     285
    289286(define-x8664-vinsn (jump-known-symbol :jumplr) (()
    290287                                                 ())
     
    416413(define-x8664-vinsn save-lisp-context-no-stack-args (()
    417414                                                     ())
    418   (pushq (:%q x8664::ra0))
    419415  (pushq (:%q x8664::rbp))
    420416  (movq (:%q x8664::rsp) (:%q x8664::rbp)))
     
    422418
    423419(define-x8664-vinsn save-lisp-context-offset (()
    424                                               ((nbytes-pushed :s32const))
    425                                               ((temp :u64)))
    426   (movq (:%q x8664::rbp) (:@ nbytes-pushed (:%q x8664::rsp)))
    427   (leaq (:@ nbytes-pushed (:%q x8664::rsp)) (:%q x8664::rbp))
    428   (movq (:% x8664::ra0) (:@ 8 (:%q x8664::rbp))))
     420                                              ((nbytes-pushed :s32const)))
     421  (movq (:%q x8664::rbp) (:@ (:apply + nbytes-pushed x8664::node-size) (:%q x8664::rsp)))
     422  (leaq (:@ (:apply + nbytes-pushed x8664::node-size) (:%q x8664::rsp)) (:%q x8664::rbp))
     423  (popq  (:@ x8664::node-size (:%q x8664::rbp))))
    429424
    430425(define-x8664-vinsn save-lisp-context-variable-arg-count (()
     
    434429  (subq (:$b (* $numx8664argregs x8664::node-size)) (:%q temp))
    435430  (jle :push)
    436   (movq (:%q x8664::rbp) (:@ (:%q x8664::rsp) (:%q temp)))
    437   (leaq (:@ (:%q x8664::rsp) (:%q temp)) (:%q x8664::rbp))
    438   (movq (:% x8664::ra0) (:@ 8 (:%q x8664::rbp)))
     431  (movq (:%q x8664::rbp) (:@ x8664::node-size (:%q x8664::rsp) (:%q temp)))
     432  (leaq (:@ x8664::node-size (:%q x8664::rsp) (:%q temp)) (:%q x8664::rbp))
     433  (popq (:@ 8 (:%q x8664::rbp)))
    439434  (jmp :done)
    440435  :push
    441   (pushq (:%q x8664::ra0))
    442436  (pushq (:%q x8664::rbp))
    443437  (movq (:%q x8664::rsp) (:%q x8664::rbp))
     
    451445  (movzwl (:%w x8664::nargs) (:%l temp))
    452446  (subq (:$b (* $numx8664argregs x8664::node-size)) (:%q temp))
    453   (movq (:%q x8664::rbp) (:@ (:%q x8664::rsp) (:%q temp)))
    454   (leaq (:@ (:%q x8664::rsp) (:%q temp)) (:%q x8664::rbp))
    455   (movq (:% x8664::ra0) (:@ 8 (:%q x8664::rbp))))
     447  (movq (:%q x8664::rbp) (:@ x8664::node-size (:%q x8664::rsp) (:%q temp)))
     448  (leaq (:@ x8664::node-size (:%q x8664::rsp) (:%q temp)) (:%q x8664::rbp))
     449  (popq  (:@ x8664::node-size (:%q x8664::rbp))))
    456450
    457451
     
    513507     ())
    514508  (leave)
    515   (popq (:%q x8664::ra0))
    516   (jmp (:%q x8664::ra0)))
    517 
    518 (define-x8664-vinsn (restore-full-lisp-context :lispcontext :pop :vsp :lrRestore)
     509  (ret))
     510
     511(define-x8664-vinsn (restore-full-lisp-context :lispcontext :pop :vsp )
    519512    (()
    520513     ())
    521   (leave)
    522   (popq (:%q x8664::ra0)))
     514  (leave))
    523515
    524516(define-x8664-vinsn compare-to-nil (()
     
    988980  (jmp (:@ spno)))
    989981
    990 (define-x8664-vinsn (call-subprim :call)  (()
    991                                            ((spno :s32const))
    992                                            ((entry (:label 1))))
     982;;; "call" a subprimitive that manipulates the stack in some way,
     983;;; using an lea/jmp calling convention.
     984(define-x8664-vinsn (lea-jmp-subprim :call)  (()
     985                                              ((spno :s32const))
     986                                              ((entry (:label 1))))
    993987  (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0))
    994988  (:talign 4)
     
    997991  (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn)))
    998992
    999 (define-x8664-vinsn (xcall-subprim :call)  (()
     993;;; Call a subprimitive using a tail-aligned CALL instruction.
     994(define-x8664-vinsn (call-subprim :call)  (()
    1000995                                           ((spno :s32const))
    1001996                                           ((entry (:label 1))))
     
    11521147   (movq (:%q val) (:%q x8664::arg_z)))
    11531148  (:talign 4)
    1154   (call (:@ .SPnfix-overflow))
     1149  (call (:@ .SPfix-overflow))
    11551150  (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn))
    11561151  ((:not (:pred = x8664::arg_z
     
    11711166   (movq (:%q val) (:%q x8664::arg_z)))
    11721167  (:talign 4)
    1173   (call (:@ .SPnfix-overflow))
     1168  (call (:@ .SPfix-overflow))
    11741169  (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn))
    11751170  ((:not (:pred = x8664::arg_z
     
    12941289                                        ((label :label))
    12951290                                        ((entry (:label 1))))
    1296   (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0))
    1297   (jmp label)
    1298   (:align 3)
    1299   (:long (:^ :back))
    1300   :back
     1291  (:talign 4)
     1292  (call label)
    13011293  (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn)))
    13021294
     
    15521544(define-x8664-vinsn pass-multiple-values-symbol (()
    15531545                                                 ())
    1554   (movq (:@ (+ x8664::nil-value (x8664::%kernel-global 'x86::ret1valaddr)))
    1555         (:%q x8664::ra0))
     1546  (pushq (:@ (+ x8664::nil-value (x8664::%kernel-global 'x86::ret1valaddr))))
    15561547  (jmp (:@ x8664::symbol.fcell (:% x8664::fname))))
    15571548
     
    15671558  (jl :bad)
    15681559  (cmoveq (:@ x8664::symbol.fcell (:%q x8664::fname)) (:%q x8664::fn))
    1569   (movq (:@ (+ x8664::nil-value (x8664::%kernel-global 'x86::ret1valaddr)))
    1570         (:%q x8664::ra0))
     1560  (pushq (:@ (+ x8664::nil-value (x8664::%kernel-global 'x86::ret1valaddr))))
    15711561  (jmp (:%q x8664::fn))
    15721562  :bad
     
    15881578                                                 ()
    15891579                                                 ((entry (:label 1))))
    1590   (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0))
    1591   (movq (:%q x8664::temp0) (:%q x8664::fn))
    15921580  (:talign 4)
    1593   (jmp (:%q x8664::fn))
    1594   :back
     1581  (call (:%q x8664::temp0))
    15951582  (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn)))
    15961583
    15971584(define-x8664-vinsn (jump-known-function :jumplr) (()
    15981585                                                   ())
    1599   (Movq (:%q x8664::fn) (:%q x8664::xfn))
     1586  (movq (:%q x8664::fn) (:%q x8664::xfn))
    16001587  (movq (:%q x8664::temp0)  (:%q x8664::fn))
    16011588  (jmp (:%q x8664::fn)))
     
    16791666
    16801667
    1681 (defmacro define-x8664-subprim-call-vinsn ((name &rest other-attrs) spno)
     1668(defmacro define-x8664-subprim-lea-jmp-vinsn ((name &rest other-attrs) spno)
    16821669  `(define-x8664-vinsn (,name :call :subprim-call ,@other-attrs) (() () ((entry (:label 1))))
    16831670    (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0))
     
    16871674    (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn))))
    16881675
    1689 (defmacro define-x8664-subprim-xcall-vinsn ((name &rest other-attrs) spno)
     1676(defmacro define-x8664-subprim-call-vinsn ((name &rest other-attrs) spno)
    16901677  `(define-x8664-vinsn (,name :call :subprim-call ,@other-attrs) (() () ((entry (:label 1))))
    16911678    (:talign 4)
     
    17091696
    17101697
    1711 (define-x8664-subprim-call-vinsn (bind-interrupt-level-0) .SPbind-interrupt-level-0)
     1698(define-x8664-subprim-lea-jmp-vinsn (bind-interrupt-level-0) .SPbind-interrupt-level-0)
    17121699
    17131700(define-x8664-vinsn bind-interrupt-level-0-inline (()
     
    17301717 
    17311718
    1732 (define-x8664-subprim-call-vinsn (bind-interrupt-level-m1) .SPbind-interrupt-level-m1)
     1719(define-x8664-subprim-lea-jmp-vinsn (bind-interrupt-level-m1) .SPbind-interrupt-level-m1)
    17331720
    17341721(define-x8664-vinsn bind-interrupt-level-m1-inline (()
     
    17421729  (movq (:%q x8664::rsp) (:@ (:%seg :rcontext) x8664::tcr.db-link)))
    17431730
    1744 (define-x8664-subprim-call-vinsn (bind-interrupt-level) .SPbind-interrupt-level)
     1731(define-x8664-subprim-lea-jmp-vinsn (bind-interrupt-level) .SPbind-interrupt-level)
    17451732
    17461733(define-x8664-subprim-call-vinsn (unbind-interrupt-level) .SPunbind-interrupt-level)
     
    17721759    (()
    17731760     ())
    1774   (jmp (:%q x8664::ra0)))
     1761  (ret))
    17751762
    17761763(define-x8664-vinsn (nmkcatchmv :call :subprim-call) (()
     
    17791766  (leaq (:@ (:^ lab)  (:%q x8664::fn)) (:%q x8664::xfn))
    17801767  (:talign 4)
    1781   (call (:@ .SPnmkcatchmv))
     1768  (call (:@ .SPmkcatchmv))
    17821769  :back
    17831770  (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn)))
     
    17881775  (leaq (:@ (:^ lab)  (:%q x8664::fn)) (:%q x8664::xfn))
    17891776  (:talign 4)
    1790   (call (:@ .SPnmkcatch1v))
     1777  (call (:@ .SPmkcatch1v))
    17911778  :back
    17921779  (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn)))
     1780
     1781
     1782(define-x8664-vinsn (make-simple-unwind :call :subprim-call) (()
     1783                                                     ((protform-lab :label)
     1784                                                      (cleanup-lab :label)))
     1785  (leaq (:@ (:^ protform-lab) (:%q x8664::fn)) (:%q x8664::ra0))
     1786  (leaq (:@ (:^ cleanup-lab)  (:%q x8664::fn)) (:%q x8664::xfn))
     1787  (jmp (:@ .SPmkunwind)))
    17931788
    17941789(define-x8664-vinsn (nmkunwind :call :subprim-call) (()
     
    18001795
    18011796
    1802 (define-x8664-subprim-call-vinsn (gvector) .SPgvector)
     1797(define-x8664-subprim-lea-jmp-vinsn (gvector) .SPgvector)
    18031798
    18041799(define-x8664-subprim-call-vinsn (getu64) .SPgetu64)
     
    18101805                             ((tag :u8)
    18111806                              (entry (:label 1))))
    1812   (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0))
    18131807  (movb (:%b x8664::temp0) (:%b tag))
    18141808  (andb (:$b x8664::fulltagmask) (:%b tag))
    18151809  (cmpb (:$b x8664::fulltag-symbol) (:%b tag))
    1816   (cmovgq (:%q x8664::temp0) (:%q x8664::fn))
    1817   (jl :bad)
    1818   (cmoveq (:@ x8664::symbol.fcell (:%q x8664::fname)) (:%q x8664::fn))
    1819   (jmp (:%q x8664::fn))
     1810  (cmovgq (:%q x8664::temp0) (:%q x8664::xfn))
     1811  (jge.pt :call)
     1812  (uuo-error-not-callable)
     1813  :call
     1814  (cmoveq (:@ x8664::symbol.fcell (:%q x8664::fname)) (:%q x8664::xfn))
    18201815  (:talign 4)
    1821   :bad
    1822   (uuo-error-not-callable)
    1823   :back
     1816  (call (:%q x8664::xfn))
    18241817  (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn)))
    18251818
     
    18391832
    18401833
    1841 ;;; Magic numbers in here include the address of .SPncall-closure.
     1834;;; Magic numbers in here include the address of .SPcall-closure.
    18421835(define-x8664-vinsn init-nclosure (()
    18431836                                   ((closure :lisp))
     
    18471840  (movb (:$b #x4c) (:@ (+ x8664::misc-data-offset 7) (:%q closure))) ; 1st byte of lea
    18481841  (movq (:%q imm0) (:@ (+ x8664::misc-data-offset 8) (:%q closure))) ; rest of lea, start of jmp
    1849   (movl (:$l #x0055b025) (:@ (+ x8664::misc-data-offset 16) (:%q closure)))
     1842  (movl (:$l #x00516825) (:@ (+ x8664::misc-data-offset 16) (:%q closure)))
    18501843  (movb (:$b x8664::function-boundary-marker) (:@ (+ x8664::misc-data-offset 24)  (:%q closure))))
    18511844
     
    18611854     ((entry (:label 1))))
    18621855  (:talign 4)
    1863   (call (:@ .SPnspecrefcheck))
     1856  (call (:@ .SPspecrefcheck))
    18641857  (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn)) )
    18651858
     
    18891882     ((entry (:label 1))))
    18901883  (:talign 4)
    1891   (jmp (:@ .SPnspecref))
     1884  (jmp (:@ .SPspecref))
    18921885  :back
    18931886  (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn)))
     
    28752868  (movss (:%xmm x8664::fpzero) (:%xmm dest)))
    28762869
    2877 (define-x8664-subprim-call-vinsn (heap-rest-arg) .SPheap-rest-arg)
    2878 (define-x8664-subprim-call-vinsn (stack-rest-arg) .SPstack-rest-arg)
    2879 (define-x8664-subprim-call-vinsn (req-stack-rest-arg) .SPreq-stack-rest-arg)
     2870(define-x8664-subprim-lea-jmp-vinsn (heap-rest-arg) .SPheap-rest-arg)
     2871(define-x8664-subprim-lea-jmp-vinsn (stack-rest-arg) .SPstack-rest-arg)
     2872(define-x8664-subprim-lea-jmp-vinsn (req-stack-rest-arg) .SPreq-stack-rest-arg)
    28802873
    28812874(define-x8664-subprim-call-vinsn (stack-misc-alloc) .SPstack-misc-alloc)
     
    29612954                                                           (z t))
    29622955                                                          ((entry (:label 1))))
    2963   (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0))
    29642956  (:talign 4)
    2965   (jmp (:@ spno))
    2966   :back
     2957  (call (:@ spno))
    29672958  (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn)))
    29682959
     
    29812972(define-x8664-subprim-jump-vinsn (progvrestore) .SPprogvrestore)
    29822973
    2983 (define-x8664-subprim-call-vinsn (simple-keywords) .SPsimple-keywords)
    2984 
    2985 (define-x8664-subprim-call-vinsn (keyword-args) .SPkeyword-args)
    2986 
    2987 (define-x8664-subprim-call-vinsn (keyword-bind) .SPkeyword-bind)
     2974(define-x8664-subprim-lea-jmp-vinsn (simple-keywords) .SPsimple-keywords)
     2975
     2976(define-x8664-subprim-lea-jmp-vinsn (keyword-args) .SPkeyword-args)
     2977
     2978(define-x8664-subprim-lea-jmp-vinsn (keyword-bind) .SPkeyword-bind)
    29882979
    29892980(define-x8664-vinsn scale-nargs (()
     
    31843175     ((entry (:label 1))))
    31853176  (:talign 4)
    3186   (call (:@ .SPnspecset))
     3177  (call (:@ .SPspecset))
    31873178  (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn)))
    31883179
     
    32133204(define-x8664-subprim-call-vinsn (misc-alloc) .SPmisc-alloc)
    32143205
    3215 (define-x8664-subprim-call-vinsn (make-stack-gvector)  .SPstkgvector)
     3206(define-x8664-subprim-lea-jmp-vinsn (make-stack-gvector)  .SPstkgvector)
    32163207
    32173208(define-x8664-vinsn load-character-constant (((dest :lisp))
     
    32613252                                                           (z t))
    32623253                                                          ((entry (:label 1))))
    3263   (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0))
    3264   (:talign 4)
    3265   (jmp (:@ spno))
    3266   :back
    3267   (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn)))
    3268 
    3269 (define-x8664-vinsn (xcall-subprim-2 :call :subprim-call) (((dest t))
    3270                                                           ((spno :s32const)
    3271                                                            (y t)
    3272                                                            (z t))
    3273                                                           ((entry (:label 1))))
    32743254  (:talign 4)
    32753255  (call (:@ spno))
    32763256  (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn)))
     3257
     3258
    32773259
    32783260(define-x8664-vinsn set-macptr-address (()
     
    33263308(define-x8664-subprim-call-vinsn (misc-set) .SPmisc-set)
    33273309
    3328 (define-x8664-subprim-call-vinsn (slide-values) .SPmvslide)
    3329 
    3330 (define-x8664-subprim-call-vinsn (spread-list)  .SPspreadargz)
     3310(define-x8664-subprim-lea-jmp-vinsn (slide-values) .SPmvslide)
     3311
     3312(define-x8664-subprim-lea-jmp-vinsn (spread-list)  .SPspreadargz)
    33313313
    33323314;;; Even though it's implemented by calling a subprim, THROW is really
     
    33543336  :got-it)
    33553337
    3356 (define-x8664-subprim-call-vinsn (save-values) .SPsave-values)
    3357 
    3358 (define-x8664-subprim-call-vinsn (recover-values)  .SPrecover-values)
    3359 
    3360 (define-x8664-subprim-call-vinsn (recover-values-for-mvcall) .SPrecover-values-for-mvcall)
    3361 
    3362 (define-x8664-subprim-call-vinsn (add-values) .SPadd-values)
     3338(define-x8664-subprim-lea-jmp-vinsn (save-values) .SPsave-values)
     3339
     3340(define-x8664-subprim-lea-jmp-vinsn (recover-values)  .SPrecover-values)
     3341
     3342(define-x8664-subprim-lea-jmp-vinsn (recover-values-for-mvcall) .SPrecover-values-for-mvcall)
     3343
     3344(define-x8664-subprim-lea-jmp-vinsn (add-values) .SPadd-values)
    33633345
    33643346(define-x8664-subprim-call-vinsn (make-stack-block)  .SPmakestackblock)
     
    34323414
    34333415
    3434 (define-x8664-subprim-call-vinsn (req-heap-rest-arg) .SPreq-heap-rest-arg)
     3416(define-x8664-subprim-lea-jmp-vinsn (req-heap-rest-arg) .SPreq-heap-rest-arg)
    34353417
    34363418(define-x8664-subprim-call-vinsn (stack-misc-alloc-init)  .SPstack-misc-alloc-init)
     
    35163498  :disp)
    35173499
    3518 (define-x8664-vinsn recover-fn-from-ra0 (()
    3519                                          ((lab :label)))
    3520   (leaq (:@ (:apply - (:^ lab)) (:%q x8664::ra0)) (:%q x8664::fn)))
     3500
    35213501
    35223502(define-x8664-subprim-call-vinsn (makeu64) .SPmakeu64)
    35233503
    3524 (define-x8664-subprim-xcall-vinsn (makes64) .SPnmakes64)
    3525 
    3526 (define-x8664-subprim-call-vinsn (stack-cons-list*)  .SPstkconslist-star)
    3527 
    3528 (define-x8664-subprim-call-vinsn (list*) .SPconslist-star)
     3504(define-x8664-subprim-call-vinsn (makes64) .SPmakes64)
     3505
     3506(define-x8664-subprim-lea-jmp-vinsn (stack-cons-list*)  .SPstkconslist-star)
     3507
     3508(define-x8664-subprim-lea-jmp-vinsn (list*) .SPconslist-star)
    35293509
    35303510(define-x8664-vinsn make-tsp-vcell (((dest :lisp))
     
    35423522  (leaq (:@ (+ x8664::dnode-size x8664::fulltag-misc) (:%q temp)) (:%q dest)))
    35433523
    3544 (define-x8664-subprim-call-vinsn (bind-nil)  .SPbind-nil)
    3545 
    3546 (define-x8664-subprim-call-vinsn (bind-self)  .SPbind-self)
    3547 
    3548 (define-x8664-subprim-call-vinsn (bind-self-boundp-check)  .SPbind-self-boundp-check)
    3549 
    3550 (define-x8664-subprim-call-vinsn (bind)  .SPbind)
     3524(define-x8664-subprim-lea-jmp-vinsn (bind-nil)  .SPbind-nil)
     3525
     3526(define-x8664-subprim-lea-jmp-vinsn (bind-self)  .SPbind-self)
     3527
     3528(define-x8664-subprim-lea-jmp-vinsn (bind-self-boundp-check)  .SPbind-self-boundp-check)
     3529
     3530(define-x8664-subprim-lea-jmp-vinsn (bind)  .SPbind)
    35513531
    35523532(define-x8664-vinsn (dpayback :call :subprim-call) (()
     
    35553535                                                     (entry (:label 1))))
    35563536  ((:pred > n 0)
    3557    (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0))
    35583537   ((:pred > n 1)
    35593538    (movl (:$l n) (:%l temp))
    35603539    (:talign 4)
    3561     (jmp (:@ .SPunbind-n)))
     3540    (call (:@ .SPunbind-n)))
    35623541   ((:pred = n 1)
    35633542    (:talign 4)
    3564     (jmp (:@ .SPunbind)))
    3565    :back
     3543    (call (:@ .SPunbind)))
    35663544   (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn)))) 
    35673545
     
    35763554            (:%q node)) (:%q dest)))
    35773555
    3578 (define-x8664-subprim-call-vinsn (stack-cons-list)  .SPstkconslist)
     3556(define-x8664-subprim-lea-jmp-vinsn (stack-cons-list)  .SPstkconslist)
    35793557
    35803558
     
    35973575  :ok)
    35983576
    3599 (define-x8664-subprim-call-vinsn (heap-cons-rest-arg) .SPheap-cons-rest-arg)
    3600 
    3601 (define-x8664-subprim-call-vinsn (stack-cons-rest-arg) .SPstack-cons-rest-arg)
    3602 
    3603 (define-x8664-subprim-call-vinsn (make-stack-vector)  .SPmkstackv)
     3577(define-x8664-subprim-lea-jmp-vinsn (heap-cons-rest-arg) .SPheap-cons-rest-arg)
     3578
     3579(define-x8664-subprim-lea-jmp-vinsn (stack-cons-rest-arg) .SPstack-cons-rest-arg)
     3580
     3581(define-x8664-subprim-lea-jmp-vinsn (make-stack-vector)  .SPmkstackv)
    36043582
    36053583(define-x8664-vinsn %current-frame-ptr (((dest :imm))
     
    36613639
    36623640
    3663 (define-x8664-subprim-call-vinsn (spread-lexpr)  .SPspread-lexpr-z)
     3641(define-x8664-subprim-lea-jmp-vinsn (spread-lexpr)  .SPspread-lexpr-z)
    36643642
    36653643(define-x8664-vinsn mem-ref-double-float (((dest :double-float))
     
    36813659  (movl (:$l n) (:%l x8664::nargs)))
    36823660
    3683 (define-x8664-subprim-call-vinsn (macro-bind) .SPmacro-bind)
    3684 
    3685 (define-x8664-subprim-call-vinsn (destructuring-bind-inner) .SPdestructuring-bind-inner)
    3686 
    3687 (define-x8664-subprim-call-vinsn (destructuring-bind) .SPdestructuring-bind)
     3661(define-x8664-subprim-lea-jmp-vinsn (macro-bind) .SPmacro-bind)
     3662
     3663(define-x8664-subprim-lea-jmp-vinsn (destructuring-bind-inner) .SPdestructuring-bind-inner)
     3664
     3665(define-x8664-subprim-lea-jmp-vinsn (destructuring-bind) .SPdestructuring-bind)
    36883666
    36893667(define-x8664-vinsn symbol-ref (((dest :lisp))
Note: See TracChangeset for help on using the changeset viewer.