Changeset 16489


Ignore:
Timestamp:
Aug 2, 2015, 4:03:08 PM (4 years ago)
Author:
gb
Message:

Use :NEEDS-FRAME-POINTER and :USES-FRAME-POINTER consistently.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/lscan/source/compiler/X86/X8664/x8664-vinsns.lisp

    r16471 r16489  
    515515 
    516516
    517 (define-x8664-vinsn (save-lisp-context-no-stack-args ) (()
     517(define-x8664-vinsn (save-lisp-context-no-stack-args :uses-frame-pointer) (()
    518518                                                     ())
    519519  (pushq (:%q x8664::rbp))
     
    521521
    522522
    523 (define-x8664-vinsn (save-lisp-context-offset :uses-frame-pointer) (()
     523(define-x8664-vinsn (save-lisp-context-offset :needs-frame-pointer) (()
    524524                                              ((nbytes-pushed :s32const)))
    525525  (movq (:%q x8664::rbp) (:@ (:apply + nbytes-pushed x8664::node-size) (:%q x8664::rsp)))
     
    527527  (popq  (:@ x8664::node-size (:%q x8664::rbp))))
    528528
    529 (define-x8664-vinsn save-lisp-context-variable-arg-count (()
     529(define-x8664-vinsn (save-lisp-context-variable-arg-count :needs-frame-pointer) (()
    530530                                                          ()
    531531                                                          ((temp :u64)))
     
    544544;;; We know that some args were pushed, but don't know how many were
    545545;;; passed.
    546 (define-x8664-vinsn save-lisp-context-in-frame (()
     546(define-x8664-vinsn (save-lisp-context-in-frame :needs-frame-pointer) (()
    547547                                                ()
    548548                                                ((temp :u64)))
     
    569569
    570570
    571 (define-x8664-vinsn (vframe-load :vsp :ref)
     571(define-x8664-vinsn (vframe-load :vsp :ref :needs-frame-pointer)
    572572    (((dest :lisp))
    573573     ((frame-offset :stack-offset)
     
    575575  (movq (:@ (:apply - (:apply + frame-offset x8664::word-size-in-bytes)) (:%q x8664::rbp)) (:%q dest)))
    576576
    577 (define-x8664-vinsn (compare-vframe-offset-to-nil :vsp :ref)
     577(define-x8664-vinsn (compare-vframe-offset-to-nil :vsp :ref :needs-frame-pointer)
    578578    (()
    579579     ((frame-offset :u16const)
     
    581581  (cmpb (:$b x8664::fulltag-nil) (:@ (:apply - (:apply + frame-offset x8664::word-size-in-bytes)) (:%q x8664::rbp))))
    582582
    583 (define-x8664-vinsn (compare-vframe-offset-to-fixnum :vsp :ref)
     583(define-x8664-vinsn (compare-vframe-offset-to-fixnum :vsp :ref :needs-frame-pointer)
    584584    (()
    585585     ((frame-offset :stack-offset)
     
    592592
    593593
    594 (define-x8664-vinsn (add-constant-to-vframe-offset :vsp :ref :set)
     594(define-x8664-vinsn (add-constant-to-vframe-offset :vsp :ref :set :needs-frame-pointer)
    595595    (()
    596596     ((frame-offset :stack-offset)
     
    609609
    610610
    611 (define-x8664-vinsn (vframe-push :push :node :vsp :ref)
     611(define-x8664-vinsn (vframe-push :push :node :vsp :ref :needs-frame-pointer)
    612612    (()
    613613     ((frame-offset :stack-offset)
     
    615615  (pushq (:@ (:apply - (:apply + frame-offset x8664::word-size-in-bytes)) (:%q x8664::rbp))))
    616616
    617 (define-x8664-vinsn (vframe-store :vsp :set)
     617(define-x8664-vinsn (vframe-store :vsp :set :needs-frame-pointer)
    618618    (()
    619619     ((src :lisp)
     
    624624
    625625       
    626 (define-x8664-vinsn (popj :lispcontext :pop :vsp  :lrrestore :jumpLR)
    627     (()
    628      ())
    629   (leave)
    630   (ret))
    631 
    632 (define-x8664-vinsn (popj-via-jump :lispcontext :pop :vsp  :lrrestore  :jumpLR)
    633     (()
    634      ((lab :label)))
    635   (jmp lab))
    636 
    637 (define-x8664-vinsn (restore-full-lisp-context :lispcontext :pop :vsp )
     626
     627
     628
     629
     630(define-x8664-vinsn (restore-full-lisp-context :lispcontext :pop :vsp :uses-frame-pointer)
    638631    (()
    639632     ())
     
    10261019
    10271020(define-x8664-vinsn cr-bit->boolean (((dest :lisp))
    1028                                      ((crbit :u8const)))
     1021                                     ((crbit :u8const))
     1022                                     ((true :u64)))
     1023  (movl (:$l (:apply target-t-value)) (:%l true))
    10291024  (movl (:$l (:apply target-nil-value)) (:%l dest))
    1030   (cmovccl (:$ub crbit) (:@ (+ x8664::t-offset x8664::symbol.vcell) (:%l dest)) (:%l dest)))
     1025  (cmovccl (:$ub crbit) (:%l true) (:%l dest)))
    10311026
    10321027
     
    11241119  )
    11251120
    1126 (define-x8664-vinsn incoming-register-arg  (((dest :lisp))
    1127                                                            ((i :u32const)
    1128                                                             (b :u32const)))
    1129   ((:pred spilled-lreg-p dest)
    1130     (movq (:%q (:apply x8664-incoming-register-arg-number i b)) (:@ (:apply x8664-target-spill-set dest)  (:%q x8664::rbp))))
    1131    
    1132  
    1133   )
    1134 
    1135 (define-x8664-vinsn (spill :spill) (()
     1121
     1122
     1123(define-x8664-vinsn (spill :spill :needs-frame-pointer) (()
    11361124                           ((src :lisp)
    11371125                            (slot :stack-offset)))
     
    11811169  (movdqu (:%xmm val) (:@ (:apply + 16 offset) (:% x8664::temp5))))
    11821170
    1183 (define-x8664-vinsn (reload :reload ) (((dest :lisp))
     1171(define-x8664-vinsn (reload :reload :needs-frame-pointer) (((dest :lisp))
    11841172                           ((slot :stack-offset)))
    11851173 
     
    21722160
    21732161
    2174 (define-x8664-vinsn make-tsp-cons (((dest :lisp))
     2162(define-x8664-vinsn (make-tsp-cons ) (((dest :lisp))
    21752163                                   ((car :lisp) (cdr :lisp))
    21762164                                   ((temp :imm)
     
    39153903;;; the PPC, this case only involves creating one frame here, but that
    39163904;;; frame has two return addresses.)
    3917 (define-x8664-vinsn build-lexpr-frame (()
     3905(define-x8664-vinsn (build-lexpr-frame :needs-frame-pointer) (()
    39183906                                       ()
    39193907                                       ((temp :imm)))
     
    51805168
    51815169
    5182 (define-x8664-vinsn pop-outgoing-arg (((n :u16const))
     5170(define-x8664-vinsn (pop-outgoing-arg :needs-frame-pointer) (((n :u16const))
    51835171                                      ())
    51845172  (popq (:@ (:apply * n (- x8664::node-size)) (:%q x8664::rbp))))
    51855173
    5186 (define-x8664-vinsn slide-nth-arg (()
     5174(define-x8664-vinsn (slide-nth-arg :needs-frame-pointer) (()
    51875175                                   ((n :u16const)
    51885176                                    (nstackargs :u16const)
     
    51925180                                   
    51935181
    5194 (define-x8664-vinsn set-tail-vsp (((nargs :u16const))
     5182(define-x8664-vinsn (set-tail-vsp :needs-frame-pointer) (((nargs :u16const))
    51955183                                  ())
    51965184  ((:pred = 0 nargs)
     
    52045192;;; entry point), we need to push the caller's return address and unlink
    52055193;;; its frame pointer.
    5206 (define-x8664-vinsn prepare-tail-call (()
     5194(define-x8664-vinsn (prepare-tail-call :needs-frame-pointer) (()
    52075195                                       ())
    52085196  (pushq (:@ x8664::node-size (:%q x8664::rbp)))
    52095197  (movq (:@ (:%q x8664::rbp)) (:%q x8664::rbp)))
    52105198
    5211 (define-x8664-vinsn reuse-frame (()())
     5199(define-x8664-vinsn (reuse-frame :needs-frame-pointer) (()())
    52125200  (movq (:%q x8664::rbp) (:%q x8664::rsp)))
    52135201
Note: See TracChangeset for help on using the changeset viewer.