Need a jit-safepoint object to deal with #332, and ffi-signal-handler words for immediate signal handling during FFI calls
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: 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: callback-stub 50
+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 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 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 + ;
{ "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" ( -- ) }
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: 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: REDEFINITION-COUNTER 49
-
-CONSTANT: CALLBACK-STUB 50
-
-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: MEGA-LOOKUP 59
-CONSTANT: MEGA-LOOKUP-WORD 60
-CONSTANT: MEGA-MISS-WORD 61
-
-CONSTANT: OBJ-UNDEFINED 62
-
-CONSTANT: OBJ-STDERR 63
-
-CONSTANT: OBJ-STAGE2 64
-
-CONSTANT: OBJ-CURRENT-THREAD 65
-
-CONSTANT: OBJ-THREADS 66
-CONSTANT: OBJ-RUN-QUEUE 67
-CONSTANT: OBJ-SLEEP-QUEUE 68
-
-CONSTANT: OBJ-VM-COMPILER 69
-
-CONSTANT: OBJ-WAITING-CALLBACKS 70
+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 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 52
+
+CONSTANT: CALLBACK-STUB 53
+
+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 62
+CONSTANT: MEGA-LOOKUP-WORD 63
+CONSTANT: MEGA-MISS-WORD 64
+
+CONSTANT: OBJ-UNDEFINED 65
+
+CONSTANT: OBJ-STDERR 66
+
+CONSTANT: OBJ-STAGE2 67
+
+CONSTANT: OBJ-CURRENT-THREAD 68
+
+CONSTANT: OBJ-THREADS 69
+CONSTANT: OBJ-RUN-QUEUE 70
+CONSTANT: OBJ-SLEEP-QUEUE 71
+
+CONSTANT: OBJ-VM-COMPILER 72
+
+CONSTANT: OBJ-WAITING-CALLBACKS 73
! Context object count and identifiers must be kept in sync with:
! vm/contexts.hpp
JIT_WORD_CALL,
JIT_IF_WORD,
JIT_IF,
+ JIT_SAFEPOINT,
JIT_EPILOG,
JIT_RETURN,
JIT_PROFILING,
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,
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