}
-void *factor_vm::innermost_stack_frame(void *bottom, void *top)
-{
- /* if (top < bottom)
- {
- void *pred = frame_predecessor(top);
- if (pred < bottom)
- return pred;
- else
- return top;
- }
- else */
- return top;
-}
-
/* Some primitives implementing a limited form of callstack mutation.
Used by the single stepper. */
void factor_vm::primitive_innermost_stack_frame_executing()
{
callstack *stack = untag_check<callstack>(ctx->pop());
- void *frame = innermost_stack_frame(stack->bottom(), stack->top());
+ void *frame = stack->top();
void *addr = frame_return_address(frame);
ctx->push(code->code_block_for_address((cell)addr)->owner_quot());
}
void factor_vm::primitive_innermost_stack_frame_scan()
{
callstack *stack = untag_check<callstack>(ctx->pop());
- void *frame = innermost_stack_frame(stack->bottom(), stack->top());
+ void *frame = stack->top();
void *addr = frame_return_address(frame);
ctx->push(code->code_block_for_address((cell)addr)->scan(this,addr));
}
jit_compile_quot(quot.value(),true);
- void *inner = innermost_stack_frame(stack->bottom(), stack->top());
+ void *inner = stack->top();
void *addr = frame_return_address(inner);
code_block *block = code->code_block_for_address((cell)addr);
cell offset = block->offset(addr);
image load. It finds the symbol and library, and throws an error. */
void factor_vm::undefined_symbol()
{
- void *frame = innermost_stack_frame(ctx->callstack_bottom, ctx->callstack_top);
+ void *frame = ctx->callstack_top;
void *return_address = frame_return_address(frame);
code_block *compiled = code->code_block_for_address((cell)return_address);
find_symbol_at_address_visitor visitor(this, (cell)return_address);
void primitive_callstack_for();
void *frame_predecessor(void *frame);
void primitive_callstack_to_array();
- void *innermost_stack_frame(void *bottom, void *top);
void primitive_innermost_stack_frame_executing();
void primitive_innermost_stack_frame_scan();
void primitive_set_innermost_stack_frame_quot();