! Copyright (C) 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: compiler.codegen.relocation compiler.constants
-cpu.x86.assembler cpu.x86.assembler.operands kernel layouts
-locals parser sequences ;
+USING: compiler.codegen.relocation compiler.constants cpu.x86.assembler
+cpu.x86.assembler.operands kernel kernel.private layouts locals parser
+sequences ;
IN: bootstrap.x86
: tib-segment ( -- ) FS ;
! Clobbers tib-temp.
! Align stack
ESP 3 bootstrap-cells ADD
- tib-temp EBX 50 vm-special-object-offset [+] MOV
+ tib-temp EBX WIN-EXCEPTION-HANDLER vm-special-object-offset [+] MOV
tib-temp tib-temp alien-offset [+] MOV
tib-temp PUSH
-USING: arrays classes combinators help.markup help.syntax
-kernel.private layouts math quotations words ;
+USING: alien arrays classes combinators help.markup help.syntax
+kernel.private layouts math quotations system words ;
IN: kernel
+HELP: WIN-EXCEPTION-HANDLER
+{ $description "This special object is an " { $link alien } " containing a pointer to the processes global exception handler. Only applicable on " { $link windows } "." } ;
+
HELP: eq?
{ $values { "obj1" object } { "obj2" object } { "?" boolean } }
{ $description "Tests if two references point at the same object." } ;
CONSTANT: SET-FPU-STATE-WORD 47
CONSTANT: SIGNAL-HANDLER-WORD 48
CONSTANT: LEAF-SIGNAL-HANDLER-WORD 49
+CONSTANT: WIN-EXCEPTION-HANDLER 50
CONSTANT: REDEFINITION-COUNTER 52
{OBJ_VM_GIT_LABEL, (cell)FACTOR_STRINGIZE(FACTOR_GIT_LABEL)},
{OBJ_VM_VERSION, (cell)FACTOR_STRINGIZE(FACTOR_VERSION)},
#if defined(WINDOWS)
- {UNUSED1, (cell)&factor::exception_handler}
+ {WIN_EXCEPTION_HANDLER, (cell)&factor::exception_handler}
#endif
};
int n_items = sizeof(aliens) / sizeof(cell[2]);
SET_FPU_STATE_WORD,
SIGNAL_HANDLER_WORD,
LEAF_SIGNAL_HANDLER_WORD,
- UNUSED1,
+ WIN_EXCEPTION_HANDLER,
UNUSED2,
/* Incremented on every modify-code-heap call; invalidates call( inline