Add callstack-bounds primitive to vm/ for use with javascriptcore library
parent
1a6a8d4c93
commit
366ce2896f
|
@ -349,6 +349,7 @@ M: bad-executable summary
|
|||
\ both-fixnums? { object object } { object } define-primitive
|
||||
\ byte-array>bignum { byte-array } { bignum } define-primitive \ byte-array>bignum make-foldable
|
||||
\ callstack { } { callstack } define-primitive \ callstack make-flushable
|
||||
\ callstack-bounds { } { alien alien } define-primitive \ callstack-bounds make-flushable
|
||||
\ callstack-for { c-ptr } { callstack } define-primitive \ callstack make-flushable
|
||||
\ callstack>array { callstack } { array } define-primitive \ callstack>array make-flushable
|
||||
\ check-datastack { array integer integer } { object } define-primitive \ check-datastack make-flushable
|
||||
|
|
|
@ -451,6 +451,7 @@ tuple
|
|||
{ "retainstack" "kernel" "primitive_retainstack" (( -- array )) }
|
||||
{ "(identity-hashcode)" "kernel.private" "primitive_identity_hashcode" (( obj -- code )) }
|
||||
{ "become" "kernel.private" "primitive_become" (( old new -- )) }
|
||||
{ "callstack-bounds" "kernel.private" "primitive_callstack_bounds" (( -- start end )) }
|
||||
{ "check-datastack" "kernel.private" "primitive_check_datastack" (( array in# out# -- ? )) }
|
||||
{ "compute-identity-hashcode" "kernel.private" "primitive_compute_identity_hashcode" (( obj -- )) }
|
||||
{ "context-object" "kernel.private" "primitive_context_object" (( n -- obj )) }
|
||||
|
|
|
@ -214,4 +214,10 @@ void factor_vm::primitive_set_innermost_stack_frame_quot()
|
|||
FRAME_RETURN_ADDRESS(inner,this) = (char *)quot->entry_point + offset;
|
||||
}
|
||||
|
||||
void factor_vm::primitive_callstack_bounds()
|
||||
{
|
||||
ctx->push(allot_alien((void*)ctx->callstack_seg->start));
|
||||
ctx->push(allot_alien((void*)ctx->callstack_seg->end));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -35,6 +35,7 @@ namespace factor
|
|||
_(byte_array_to_bignum) \
|
||||
_(callback) \
|
||||
_(callstack) \
|
||||
_(callstack_bounds) \
|
||||
_(callstack_for) \
|
||||
_(callstack_to_array) \
|
||||
_(check_datastack) \
|
||||
|
|
|
@ -606,6 +606,7 @@ struct factor_vm
|
|||
void primitive_innermost_stack_frame_executing();
|
||||
void primitive_innermost_stack_frame_scan();
|
||||
void primitive_set_innermost_stack_frame_quot();
|
||||
void primitive_callstack_bounds();
|
||||
template<typename Iterator> void iterate_callstack(context *ctx, Iterator &iterator);
|
||||
|
||||
// alien
|
||||
|
|
Loading…
Reference in New Issue