]> gitweb.factorcode.org Git - factor.git/commitdiff
vm: reserve some more special-objects
authorJoe Groff <arcata@gmail.com>
Thu, 3 Nov 2011 05:15:52 +0000 (22:15 -0700)
committerJoe Groff <arcata@gmail.com>
Thu, 3 Nov 2011 05:16:08 +0000 (22:16 -0700)
Need a jit-safepoint object to deal with #332, and ffi-signal-handler words for immediate signal handling during FFI calls

basis/bootstrap/image/image.factor
core/bootstrap/primitives.factor
core/kernel/kernel.factor
vm/objects.hpp

index 9c0254d24b9931a0cb75fa7352f1fbcf719f6283..b13b192c8126ca763d74c47bedf494625c0ebf5c 100755 (executable)
@@ -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: 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 + ;
index 2ec81559a3721ffe58a388cc8f06ef50b40b4f6d..20a5a493cd314f14be87e1dd4f905e7137087c5e 100755 (executable)
@@ -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" ( -- ) }
index 0d742deb8517cc2371ce570b95bedde8e533e802..32cdb24b06ee7faed55cba6bbfbc5dda505c9160 100644 (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: 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
index 55e18c17dd6667dbebd860f855685cce614252e4..e7262a94790a1c3bd0c352a1c2895e07f5c3e6ee 100755 (executable)
@@ -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