From de4917e6a18c1f964eba8f6d9c8dbd43d4dc5bbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Lindqvist?= Date: Sun, 30 Aug 2015 12:44:33 +0200 Subject: [PATCH] VM: give the exception handling special object a real name --- basis/bootstrap/assembler/x86.32.windows.factor | 8 ++++---- core/kernel/kernel-docs.factor | 7 +++++-- core/kernel/kernel.factor | 1 + vm/factor.cpp | 2 +- vm/objects.hpp | 2 +- 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/basis/bootstrap/assembler/x86.32.windows.factor b/basis/bootstrap/assembler/x86.32.windows.factor index 6f2ade1ebe..e3e7af531b 100644 --- a/basis/bootstrap/assembler/x86.32.windows.factor +++ b/basis/bootstrap/assembler/x86.32.windows.factor @@ -1,8 +1,8 @@ ! 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 ; @@ -16,7 +16,7 @@ IN: bootstrap.x86 ! 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 diff --git a/core/kernel/kernel-docs.factor b/core/kernel/kernel-docs.factor index 3389d9727c..9e4c794c36 100644 --- a/core/kernel/kernel-docs.factor +++ b/core/kernel/kernel-docs.factor @@ -1,7 +1,10 @@ -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." } ; diff --git a/core/kernel/kernel.factor b/core/kernel/kernel.factor index faf1849373..bf81876367 100644 --- a/core/kernel/kernel.factor +++ b/core/kernel/kernel.factor @@ -367,6 +367,7 @@ CONSTANT: GET-FPU-STATE-WORD 46 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 diff --git a/vm/factor.cpp b/vm/factor.cpp index eb96d0da8d..f78999dc82 100644 --- a/vm/factor.cpp +++ b/vm/factor.cpp @@ -155,7 +155,7 @@ void factor_vm::init_factor(vm_parameters* p) { {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]); diff --git a/vm/objects.hpp b/vm/objects.hpp index 02b9f3de4c..9696be2627 100644 --- a/vm/objects.hpp +++ b/vm/objects.hpp @@ -64,7 +64,7 @@ enum special_object { 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