Changeset 6349 for branches/x8664-call


Ignore:
Timestamp:
Apr 24, 2007, 8:41:22 AM (13 years ago)
Author:
gb
Message:

New catch, unwind-protect stuff.

File:
1 edited

Legend:

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

    r6343 r6349  
    77477747    (x862-one-targeted-reg-form seg tag ($ x8664::arg_z))
    77487748    (if mv-pass
    7749       (! mkcatchmv tag-label-value)
    7750       (! mkcatch1v tag-label-value))
     7749      (! nmkcatchmv tag-label-value)
     7750      (! nmkcatch1v tag-label-value))
    77517751    (x862-open-undo)
    77527752    (if mv-pass
     
    82078207         (protform-label (backend-get-next-label))
    82088208         (old-stack (x862-encode-stack))
    8209          (yreg ($ x8664::arg_y)))
    8210     (! ref-interrupt-level yreg)
    8211     (x862-dbind seg (make-acode (%nx1-operator fixnum) -1) '*interrupt-level*)
    8212     (! mkunwind
     8209         (ilevel '*interrupt-level*))
     8210    (! nmkunwind
    82138211       (aref *backend-labels* protform-label)
    82148212       (aref *backend-labels* cleanup-label))
     8213    (x862-open-undo $undointerruptlevel)
     8214    (x862-new-vstack-lcell :special-value *x862-target-lcell-size* 0 ilevel)
     8215    (x862-new-vstack-lcell :special *x862-target-lcell-size* (ash 1 $vbitspecial) ilevel)
     8216    (x862-new-vstack-lcell :special-link *x862-target-lcell-size* 0 ilevel)
     8217    (x862-adjust-vstack (* 3 *x862-target-node-size*))   
    82158218    (@= cleanup-label)
    82168219    (let* ((*x862-vstack* *x862-vstack*)
     
    82248227    (x862-open-undo)
    82258228    (@=  protform-label)
    8226     (x862-dbind seg yreg '*interrupt-level*)
     8229    (x862-open-undo $undointerruptlevel)
     8230    (x862-new-vstack-lcell :special-value *x862-target-lcell-size* 0 ilevel)
     8231    (x862-new-vstack-lcell :special *x862-target-lcell-size* (ash 1 $vbitspecial) ilevel)
     8232    (x862-new-vstack-lcell :special-link *x862-target-lcell-size* 0 ilevel)
     8233    (x862-adjust-vstack (* 3 *x862-target-node-size*))   
    82278234    (x862-undo-body seg vreg xfer protected-form old-stack)))
    82288235
     
    82308237  (let* ((cleanup-label (backend-get-next-label))
    82318238         (protform-label (backend-get-next-label))
    8232          (old-stack (x862-encode-stack)))
     8239         (old-stack (x862-encode-stack))
     8240         (ilevel '*interrupt-level*))
    82338241    (x862-two-targeted-reg-forms seg symbols ($ x8664::arg_y) values ($ x8664::arg_z))
    82348242    (! progvsave)
    82358243    (x862-open-undo $undostkblk)
    8236     (! mkunwind
     8244    (! nmkunwind
    82378245       (aref *backend-labels* protform-label)
    82388246       (aref *backend-labels* cleanup-label))
     8247    (x862-open-undo $undointerruptlevel)
     8248    (x862-new-vstack-lcell :special-value *x862-target-lcell-size* 0 ilevel)
     8249    (x862-new-vstack-lcell :special *x862-target-lcell-size* (ash 1 $vbitspecial) ilevel)
     8250    (x862-new-vstack-lcell :special-link *x862-target-lcell-size* 0 ilevel)
     8251    (x862-adjust-vstack (* 3 *x862-target-node-size*))   
    82398252    (@= cleanup-label)
    82408253    (! progvrestore)
    82418254    (x862-open-undo)
    82428255    (@= protform-label)
     8256    (x862-open-undo $undointerruptlevel)
     8257    (x862-new-vstack-lcell :special-value *x862-target-lcell-size* 0 ilevel)
     8258    (x862-new-vstack-lcell :special *x862-target-lcell-size* (ash 1 $vbitspecial) ilevel)
     8259    (x862-new-vstack-lcell :special-link *x862-target-lcell-size* 0 ilevel)
     8260    (x862-adjust-vstack (* 3 *x862-target-node-size*))   
    82438261    (x862-undo-body seg vreg xfer body old-stack)))
    82448262
Note: See TracChangeset for help on using the changeset viewer.