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 callsdb4
parent
86c35999f9
commit
d28845a1ef
|
@ -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 + ;
|
||||
|
|
|
@ -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" ( -- ) }
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue