vm: reserve some more special-objects

Need a jit-safepoint object to deal with #332, and ffi-signal-handler words for immediate signal handling during FFI calls
db4
Joe Groff 2011-11-02 22:15:52 -07:00
parent 86c35999f9
commit d28845a1ef
4 changed files with 99 additions and 88 deletions

View File

@ -166,46 +166,49 @@ SPECIAL-OBJECT: jit-word-jump 26
SPECIAL-OBJECT: jit-word-call 27
SPECIAL-OBJECT: jit-if-word 28
SPECIAL-OBJECT: jit-if 29
SPECIAL-OBJECT: jit-epilog 30
SPECIAL-OBJECT: jit-return 31
SPECIAL-OBJECT: jit-profiling 32
SPECIAL-OBJECT: jit-push 33
SPECIAL-OBJECT: jit-dip-word 34
SPECIAL-OBJECT: jit-dip 35
SPECIAL-OBJECT: jit-2dip-word 36
SPECIAL-OBJECT: jit-2dip 37
SPECIAL-OBJECT: jit-3dip-word 38
SPECIAL-OBJECT: jit-3dip 39
SPECIAL-OBJECT: jit-execute 40
SPECIAL-OBJECT: jit-declare-word 41
SPECIAL-OBJECT: jit-safepoint 30
SPECIAL-OBJECT: jit-epilog 31
SPECIAL-OBJECT: jit-return 32
SPECIAL-OBJECT: jit-profiling 33
SPECIAL-OBJECT: jit-push 34
SPECIAL-OBJECT: jit-dip-word 35
SPECIAL-OBJECT: jit-dip 36
SPECIAL-OBJECT: jit-2dip-word 37
SPECIAL-OBJECT: jit-2dip 38
SPECIAL-OBJECT: jit-3dip-word 39
SPECIAL-OBJECT: jit-3dip 40
SPECIAL-OBJECT: jit-execute 41
SPECIAL-OBJECT: jit-declare-word 42
SPECIAL-OBJECT: c-to-factor-word 42
SPECIAL-OBJECT: lazy-jit-compile-word 43
SPECIAL-OBJECT: unwind-native-frames-word 44
SPECIAL-OBJECT: fpu-state-word 45
SPECIAL-OBJECT: set-fpu-state-word 46
SPECIAL-OBJECT: signal-handler-word 47
SPECIAL-OBJECT: leaf-signal-handler-word 48
SPECIAL-OBJECT: c-to-factor-word 43
SPECIAL-OBJECT: lazy-jit-compile-word 44
SPECIAL-OBJECT: unwind-native-frames-word 45
SPECIAL-OBJECT: fpu-state-word 46
SPECIAL-OBJECT: set-fpu-state-word 47
SPECIAL-OBJECT: signal-handler-word 48
SPECIAL-OBJECT: leaf-signal-handler-word 49
SPECIAL-OBJECT: ffi-signal-handler-word 50
SPECIAL-OBJECT: ffi-leaf-signal-handler-word 51
SPECIAL-OBJECT: callback-stub 50
SPECIAL-OBJECT: callback-stub 53
! PIC stubs
SPECIAL-OBJECT: pic-load 51
SPECIAL-OBJECT: pic-tag 52
SPECIAL-OBJECT: pic-tuple 53
SPECIAL-OBJECT: pic-check-tag 54
SPECIAL-OBJECT: pic-check-tuple 55
SPECIAL-OBJECT: pic-hit 56
SPECIAL-OBJECT: pic-miss-word 57
SPECIAL-OBJECT: pic-miss-tail-word 58
SPECIAL-OBJECT: pic-load 54
SPECIAL-OBJECT: pic-tag 55
SPECIAL-OBJECT: pic-tuple 56
SPECIAL-OBJECT: pic-check-tag 57
SPECIAL-OBJECT: pic-check-tuple 58
SPECIAL-OBJECT: pic-hit 59
SPECIAL-OBJECT: pic-miss-word 60
SPECIAL-OBJECT: pic-miss-tail-word 61
! Megamorphic dispatch
SPECIAL-OBJECT: mega-lookup 59
SPECIAL-OBJECT: mega-lookup-word 60
SPECIAL-OBJECT: mega-miss-word 61
SPECIAL-OBJECT: mega-lookup 62
SPECIAL-OBJECT: mega-lookup-word 63
SPECIAL-OBJECT: mega-miss-word 64
! Default definition for undefined words
SPECIAL-OBJECT: undefined-quot 62
SPECIAL-OBJECT: undefined-quot 65
: special-object-offset ( symbol -- n )
special-objects get at header-size + ;

View File

@ -350,6 +350,8 @@ tuple
{ "set-fpu-state" "kernel.private" ( -- ) }
{ "signal-handler" "kernel.private" ( -- ) }
{ "leaf-signal-handler" "kernel.private" ( -- ) }
{ "ffi-signal-handler" "kernel.private" ( -- ) }
{ "ffi-leaf-signal-handler" "kernel.private" ( -- ) }
{ "unwind-native-frames" "kernel.private" ( -- ) }
{ "set-callstack" "kernel.private" ( callstack -- * ) }
{ "lazy-jit-compile" "kernel.private" ( -- ) }

View File

@ -285,59 +285,62 @@ CONSTANT: JIT-WORD-JUMP 26
CONSTANT: JIT-WORD-CALL 27
CONSTANT: JIT-IF-WORD 28
CONSTANT: JIT-IF 29
CONSTANT: JIT-EPILOG 30
CONSTANT: JIT-RETURN 31
CONSTANT: JIT-PROFILING 32
CONSTANT: JIT-PUSH-IMMEDIATE 33
CONSTANT: JIT-DIP-WORD 34
CONSTANT: JIT-DIP 35
CONSTANT: JIT-2DIP-WORD 36
CONSTANT: JIT-2DIP 37
CONSTANT: JIT-3DIP-WORD 38
CONSTANT: JIT-3DIP 39
CONSTANT: JIT-EXECUTE 40
CONSTANT: JIT-DECLARE-WORD 41
CONSTANT: JIT-SAFEPOINT 30
CONSTANT: JIT-EPILOG 31
CONSTANT: JIT-RETURN 32
CONSTANT: JIT-PROFILING 33
CONSTANT: JIT-PUSH-IMMEDIATE 34
CONSTANT: JIT-DIP-WORD 35
CONSTANT: JIT-DIP 36
CONSTANT: JIT-2DIP-WORD 37
CONSTANT: JIT-2DIP 38
CONSTANT: JIT-3DIP-WORD 39
CONSTANT: JIT-3DIP 40
CONSTANT: JIT-EXECUTE 41
CONSTANT: JIT-DECLARE-WORD 42
CONSTANT: C-TO-FACTOR-WORD 42
CONSTANT: LAZY-JIT-COMPILE-WORD 43
CONSTANT: UNWIND-NATIVE-FRAMES-WORD 44
CONSTANT: GET-FPU-STATE-WORD 45
CONSTANT: SET-FPU-STATE-WORD 46
CONSTANT: SIGNAL-HANDLER-WORD 47
CONSTANT: LEAF-SIGNAL-HANDLER-WORD 48
CONSTANT: C-TO-FACTOR-WORD 43
CONSTANT: LAZY-JIT-COMPILE-WORD 44
CONSTANT: UNWIND-NATIVE-FRAMES-WORD 45
CONSTANT: GET-FPU-STATE-WORD 46
CONSTANT: SET-FPU-STATE-WORD 47
CONSTANT: SIGNAL-HANDLER-WORD 48
CONSTANT: LEAF-SIGNAL-HANDLER-WORD 49
CONSTANT: FFI-SIGNAL-HANDLER-WORD 50
CONSTANT: FFI-LEAF-SIGNAL-HANDLER-WORD 51
CONSTANT: REDEFINITION-COUNTER 49
CONSTANT: REDEFINITION-COUNTER 52
CONSTANT: CALLBACK-STUB 50
CONSTANT: CALLBACK-STUB 53
CONSTANT: PIC-LOAD 51
CONSTANT: PIC-TAG 52
CONSTANT: PIC-TUPLE 53
CONSTANT: PIC-CHECK-TAG 54
CONSTANT: PIC-CHECK-TUPLE 55
CONSTANT: PIC-HIT 56
CONSTANT: PIC-MISS-WORD 57
CONSTANT: PIC-MISS-TAIL-WORD 58
CONSTANT: PIC-LOAD 54
CONSTANT: PIC-TAG 55
CONSTANT: PIC-TUPLE 56
CONSTANT: PIC-CHECK-TAG 57
CONSTANT: PIC-CHECK-TUPLE 58
CONSTANT: PIC-HIT 59
CONSTANT: PIC-MISS-WORD 60
CONSTANT: PIC-MISS-TAIL-WORD 61
CONSTANT: MEGA-LOOKUP 59
CONSTANT: MEGA-LOOKUP-WORD 60
CONSTANT: MEGA-MISS-WORD 61
CONSTANT: MEGA-LOOKUP 62
CONSTANT: MEGA-LOOKUP-WORD 63
CONSTANT: MEGA-MISS-WORD 64
CONSTANT: OBJ-UNDEFINED 62
CONSTANT: OBJ-UNDEFINED 65
CONSTANT: OBJ-STDERR 63
CONSTANT: OBJ-STDERR 66
CONSTANT: OBJ-STAGE2 64
CONSTANT: OBJ-STAGE2 67
CONSTANT: OBJ-CURRENT-THREAD 65
CONSTANT: OBJ-CURRENT-THREAD 68
CONSTANT: OBJ-THREADS 66
CONSTANT: OBJ-RUN-QUEUE 67
CONSTANT: OBJ-SLEEP-QUEUE 68
CONSTANT: OBJ-THREADS 69
CONSTANT: OBJ-RUN-QUEUE 70
CONSTANT: OBJ-SLEEP-QUEUE 71
CONSTANT: OBJ-VM-COMPILER 69
CONSTANT: OBJ-VM-COMPILER 72
CONSTANT: OBJ-WAITING-CALLBACKS 70
CONSTANT: OBJ-WAITING-CALLBACKS 73
! Context object count and identifiers must be kept in sync with:
! vm/contexts.hpp

View File

@ -42,6 +42,7 @@ enum special_object {
JIT_WORD_CALL,
JIT_IF_WORD,
JIT_IF,
JIT_SAFEPOINT,
JIT_EPILOG,
JIT_RETURN,
JIT_PROFILING,
@ -56,23 +57,25 @@ enum special_object {
JIT_DECLARE_WORD,
/* External entry points */
C_TO_FACTOR_WORD,
C_TO_FACTOR_WORD = 43,
LAZY_JIT_COMPILE_WORD,
UNWIND_NATIVE_FRAMES_WORD,
GET_FPU_STATE_WORD,
SET_FPU_STATE_WORD,
SIGNAL_HANDLER_WORD,
LEAF_SIGNAL_HANDLER_WORD,
FFI_SIGNAL_HANDLER_WORD,
FFI_LEAF_SIGNAL_HANDLER_WORD,
/* Incremented on every modify-code-heap call; invalidates call( inline
caching */
REDEFINITION_COUNTER = 49,
REDEFINITION_COUNTER = 52,
/* Callback stub generation in callbacks.c */
CALLBACK_STUB = 50,
CALLBACK_STUB = 53,
/* Polymorphic inline cache generation in inline_cache.c */
PIC_LOAD = 51,
PIC_LOAD = 54,
PIC_TAG,
PIC_TUPLE,
PIC_CHECK_TAG,
@ -82,25 +85,25 @@ enum special_object {
PIC_MISS_TAIL_WORD,
/* Megamorphic cache generation in dispatch.c */
MEGA_LOOKUP = 59,
MEGA_LOOKUP = 62,
MEGA_LOOKUP_WORD,
MEGA_MISS_WORD,
OBJ_UNDEFINED = 62, /* default quotation for undefined words */
OBJ_UNDEFINED = 65, /* default quotation for undefined words */
OBJ_STDERR = 63, /* stderr FILE* handle */
OBJ_STDERR = 66, /* stderr FILE* handle */
OBJ_STAGE2 = 64, /* have we bootstrapped? */
OBJ_STAGE2 = 67, /* have we bootstrapped? */
OBJ_CURRENT_THREAD = 65,
OBJ_CURRENT_THREAD = 68,
OBJ_THREADS = 66,
OBJ_RUN_QUEUE = 67,
OBJ_SLEEP_QUEUE = 68,
OBJ_THREADS = 69,
OBJ_RUN_QUEUE = 70,
OBJ_SLEEP_QUEUE = 71,
OBJ_VM_COMPILER = 69, /* version string of the compiler we were built with */
OBJ_VM_COMPILER = 72, /* version string of the compiler we were built with */
OBJ_WAITING_CALLBACKS = 70,
OBJ_WAITING_CALLBACKS = 73,
};
/* save-image-and-exit discards special objects that are filled in on startup