Index: /branches/ia32/level-0/X86/X8632/x8632-misc.lisp
===================================================================
--- /branches/ia32/level-0/X86/X8632/x8632-misc.lisp	(revision 8215)
+++ /branches/ia32/level-0/X86/X8632/x8632-misc.lisp	(revision 8216)
@@ -324,39 +324,36 @@
 (defx8632lapfunction %tcr-toplevel-function ((tcr arg_z))
   (check-nargs 1)
-  (mark-as-imm temp1)
-  (let ((imm1 temp1))
-    (cmpl (% tcr) (@ (% :rcontext) x8632::tcr.linear))
-    (movl (% esp) (% imm0))
-    (movl (@ x8632::tcr.vs-area (% tcr)) (% temp0))
-    (movl (@ x8632::area.high (% temp0)) (% imm1))
-    (jz @room)
-    (movl (@ x8632::area.active (% temp0)) (% imm0))
-    @room
-    (cmpl (% imm1) (% imm0))
-    (movl ($ x8632::nil-value) (% arg_z))
-    (cmovnel (@ (- x8632::node-size) (% imm1)) (% arg_z)))
-  (mark-as-node temp1)
-  (single-value-return))
-
+  (movl (@ x8632::tcr.vs-area (% tcr)) (% temp0))
+  (movl (@ x8632::area.high (% temp0)) (% imm0)) ;bottom of vstack
+  (cmpl (% tcr) (@ (% :rcontext) x8632::tcr.linear))
+  (jz @myself)
+  (cmpl (% imm0) (@ x8632::area.active (% temp0)))
+  (jmp @finish)
+  @myself
+  (cmpl (% imm0) (% esp))
+  @finish
+  (movl ($ x8632::nil-value) (% arg_z))
+  (cmovnel (@ (- x8632::node-size) (% imm0)) (% arg_z))
+  (single-value-return))
+  
 (defx8632lapfunction %set-tcr-toplevel-function ((tcr arg_y) (fun arg_z))
   (check-nargs 2)
-  (mark-as-imm temp1)
-  (let ((imm1 temp1))
-    (cmpl (% tcr) (@ (% :rcontext) x8632::tcr.linear))
-    (movl (% esp) (% imm0))
-    (movl (@ x8632::tcr.vs-area (% tcr)) (% temp0))
-    (movl (@ x8632::area.high (% temp0)) (% imm1))
-    (jz @room)
-    (movl (@ x8632::area.active (% temp0)) (% imm0))
-    @room
-    (cmpl (% imm1) (% imm0))
-    (leal (@ (- x8632::node-size) (% imm1)) (% imm1))
-    (movl ($ 0) (@ (% imm1)))
-    (jne @have-room)
-    (movl (% imm1) (@ x8632::area.active (% temp0)))
-    (movl (% imm1) (@ x8632::tcr.save-vsp (% tcr)))
-    @have-room
-    (movl (% fun) (@ (% imm1))))
-  (mark-as-node temp1)
+  (movl (@ x8632::tcr.vs-area (% tcr)) (% temp0))
+  (movl (@ x8632::area.high (% temp0)) (% imm0))
+  (cmpl (% tcr) (@ (% :rcontext) x8632::tcr.linear))
+  (jz @myself)
+  (cmpl (% imm0) (@ x8632::area.active (% temp0))) ;vstack empty?
+  (jmp @room)
+  @myself
+  (cmpl (% imm0) (% esp))
+  @room
+  (leal (@ (- x8632::node-size) (% imm0)) (% imm0))
+  (movl ($ 0) (@ (% imm0)))
+  (jne @have-room)
+  (movl (% imm0) (@ x8632::area.active (% temp0)))
+  (movl (% imm0) (@ x8632::tcr.save-vsp (% tcr)))
+  (jmp @have-room)
+  @have-room
+  (movl (% fun) (@ (% imm0)))
   (single-value-return))
 
