Changeset 6396 for branches/x8664-call


Ignore:
Timestamp:
May 3, 2007, 4:58:29 PM (13 years ago)
Author:
gb
Message:

Remove the extraneous "6"; don't want to know how it got there ...
PROGV uses the old unwind-protect support.
UNWIND-PROTECT: account for the return address that's (automatically)
on the stack on entry to the cleanup form.

File:
1 edited

Legend:

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

    r6377 r6396  
    1616
    1717(in-package "CCL")
    18 6
     18
    1919(eval-when (:compile-toplevel :execute)
    2020  (require "NXENV")
     
    82148214           (*x862-top-vstack-lcell* *x862-top-vstack-lcell*))
    82158215      (x862-open-undo $undostkblk)      ; tsp frame created by nthrow.
     8216      (x862-new-vstack-lcell :cleanup-return *x862-target-lcell-size* 0 nil)
     8217      (x862-adjust-vstack *x862-target-node-size*)     
    82168218      (x862-form seg nil nil cleanup-form)
    82178219      (x862-close-undo)
     
    82238225    (x862-new-vstack-lcell :special *x862-target-lcell-size* (ash 1 $vbitspecial) ilevel)
    82248226    (x862-new-vstack-lcell :special-link *x862-target-lcell-size* 0 ilevel)
    8225     (x862-adjust-vstack (* 3 *x862-target-node-size*))   
     8227    (x862-adjust-vstack (* 3 *x862-target-node-size*))
    82268228    (x862-undo-body seg vreg xfer protected-form old-stack)))
    82278229
     
    82298231  (let* ((cleanup-label (backend-get-next-label))
    82308232         (protform-label (backend-get-next-label))
    8231          (old-stack (x862-encode-stack))
    8232          (ilevel '*interrupt-level*))
     8233         (old-stack (x862-encode-stack)))
    82338234    (x862-two-targeted-reg-forms seg symbols ($ x8664::arg_y) values ($ x8664::arg_z))
    82348235    (! progvsave)
    82358236    (x862-open-undo $undostkblk)
    8236     (! nmkunwind
     8237    (! mkunwind
    82378238       (aref *backend-labels* protform-label)
    82388239       (aref *backend-labels* cleanup-label))
    8239     (x862-open-undo $undointerruptlevel)
    8240     (x862-new-vstack-lcell :special-value *x862-target-lcell-size* 0 ilevel)
    8241     (x862-new-vstack-lcell :special *x862-target-lcell-size* (ash 1 $vbitspecial) ilevel)
    8242     (x862-new-vstack-lcell :special-link *x862-target-lcell-size* 0 ilevel)
    8243     (x862-adjust-vstack (* 3 *x862-target-node-size*))   
    82448240    (@= cleanup-label)
    82458241    (! progvrestore)
    82468242    (x862-open-undo)
    82478243    (@= protform-label)
    8248     (x862-open-undo $undointerruptlevel)
    8249     (x862-new-vstack-lcell :special-value *x862-target-lcell-size* 0 ilevel)
    8250     (x862-new-vstack-lcell :special *x862-target-lcell-size* (ash 1 $vbitspecial) ilevel)
    8251     (x862-new-vstack-lcell :special-link *x862-target-lcell-size* 0 ilevel)
    8252     (x862-adjust-vstack (* 3 *x862-target-node-size*))   
    82538244    (x862-undo-body seg vreg xfer body old-stack)))
    82548245
Note: See TracChangeset for help on using the changeset viewer.