Changeset 10919


Ignore:
Timestamp:
Sep 29, 2008, 8:38:30 AM (11 years ago)
Author:
gb
Message:

Move the initial gc trap to the start of toplevel_loop (after we've
switched onto the lisp stack.) This might or might not matter, but it
might only be possible (or at least might be much easier) on win32 to
handle synchronous lisp exceptions if they always occur on the lisp
stack.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/lisp-kernel/x86-subprims32.s

    r10796 r10919  
    2424        __(push $0)
    2525        __(mov %esp,%ebp)
     26        __(clr %imm0)
     27        __(cmpl $0,C(GCDebug))
     28        __(jne 1f)
     29        __(uuo_error_gc_trap)
     301:
    2631        __(jmp local_label(test))
    2732local_label(loop):
     
    6873        __(mov 8(%ebp), %ebx)   /* get tcr */
    6974        __(movw tcr.ldt_selector(%ebx), %rcontext_reg)
     75        __(movl 8(%ebp),%eax)
     76        __(cmpl rcontext(tcr.linear),%eax)
     77        __(je 0f)
     78        __(hlt)
     790:             
    7080        .if c_stack_16_byte_aligned
    7181        __(sub $12, %esp)       /* stack now 16-byte aligned */
     
    8393        __(ldmxcsr rcontext(tcr.lisp_mxcsr))
    8494        __(movl $TCR_STATE_LISP, rcontext(tcr.valence))
    85         __(clr %imm0)
    86         __(cmpl $0,C(GCDebug))
    87         __(jne 1f)
    88         __(uuo_error_gc_trap)
    89 1:
    9095        __(call toplevel_loop)
    9196        __(movl $TCR_STATE_FOREIGN, rcontext(tcr.valence))
Note: See TracChangeset for help on using the changeset viewer.