Changeset 6307


Ignore:
Timestamp:
Apr 19, 2007, 8:50:50 PM (15 years ago)
Author:
gb
Message:

In x862-aset3, maybe push/pop the val reg if it conflicts with an
immediate temporary (we'll need all the imm temps we have on x86-64.)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/compiler/X86/x862.lisp

    r6267 r6307  
    17351735                                          new val-reg)
    17361736            (x862-pop-register seg src)))
    1737         (let* ((*available-backend-imm-temps* *available-backend-imm-temps*))
    1738           (when (and (= (hard-regspec-class val-reg) hard-reg-class-gpr)
     1737        (let* ((need-push-val-reg
     1738                (and (= (hard-regspec-class val-reg) hard-reg-class-gpr)
    17391739                     (logbitp (hard-regspec-value val-reg)
    1740                               *backend-imm-temps*))
    1741             (use-imm-temp (hard-regspec-value val-reg)))
    1742        
     1740                              *backend-imm-temps*))))
     1741          (when need-push-val-reg (x862-push-register seg val-reg))
    17431742          (when safe     
    17441743            (when (typep safe 'fixnum)
     
    17671766                (let* ((v ($ x8664::arg_x)))
    17681767                  (! array-data-vector-ref v src)
     1768                  (when need-push-val-reg
     1769                    (x862-pop-register seg val-reg))
    17691770                  (x862-vset1 seg vreg xfer type-keyword v idx-reg constidx val-reg (x862-unboxed-reg-for-aset seg type-keyword val-reg safe constval) constval needs-memoization))))))))))
    17701771
Note: See TracChangeset for help on using the changeset viewer.