Changeset 14195


Ignore:
Timestamp:
Aug 17, 2010, 4:04:30 AM (9 years ago)
Author:
rme
Message:

x862-stack-to-register: use regmap to avoid reading from the stack
when the desired value is already in a register.

x862-unwind-set: update regmap when unwinding.

File:
1 edited

Legend:

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

    r14194 r14195  
    833833(defun x862-regmap-note-store (gpr loc)
    834834  (let* ((gpr (%hard-regspec-value gpr)))
    835     (assert (< gpr 16) nil "bad regno")
    836835    ;; Any other GPRs that had contained loc no longer do so.
    837836    (dotimes (i 16)
     
    14631462(defun x862-stack-to-register (seg memspec reg)
    14641463  (with-x86-local-vinsn-macros (seg)
    1465     (let* ((offset (memspec-frame-address-offset memspec)))
    1466       (if (and *x862-tos-reg*
    1467                (= offset (- *x862-vstack* *x862-target-node-size*)))
    1468         (x862-copy-register seg reg *x862-tos-reg*)
    1469         (! vframe-load reg offset  *x862-vstack*)))))
    1470 
    1471 #+not-yet
    1472 (defun x862-stack-to-register (seg memspec reg)
    1473   (with-x86-local-vinsn-macros (seg)
    14741464    (let* ((offset (memspec-frame-address-offset memspec))
    14751465           (mask *x862-gpr-locations-valid-mask*)
     
    14771467           (regno (%hard-regspec-value reg))
    14781468           (other (x862-register-for-frame-offset offset regno)))
    1479       (assert (< regno 16) nil "bad regno")
    14801469      (unless (eql regno other)
    14811470        (cond (other
     
    53855374                       (x862-decode-stack encoding)
    53865375    (x862-unwind-stack seg xfer target-catch target-cstack target-vstack)
     5376    (x862-regmap-note-vstack-delta target-vstack *x862-vstack*)
    53875377    (setq *x862-undo-count* target-catch
    53885378          *x862-cstack* target-cstack
Note: See TracChangeset for help on using the changeset viewer.