vm: get rid of now-trivial innermost_stack_frame
parent
2eba1b5449
commit
a1ee881435
|
@ -102,26 +102,12 @@ void factor_vm::primitive_callstack_to_array()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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.
|
/* Some primitives implementing a limited form of callstack mutation.
|
||||||
Used by the single stepper. */
|
Used by the single stepper. */
|
||||||
void factor_vm::primitive_innermost_stack_frame_executing()
|
void factor_vm::primitive_innermost_stack_frame_executing()
|
||||||
{
|
{
|
||||||
callstack *stack = untag_check<callstack>(ctx->pop());
|
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);
|
void *addr = frame_return_address(frame);
|
||||||
ctx->push(code->code_block_for_address((cell)addr)->owner_quot());
|
ctx->push(code->code_block_for_address((cell)addr)->owner_quot());
|
||||||
}
|
}
|
||||||
|
@ -129,7 +115,7 @@ void factor_vm::primitive_innermost_stack_frame_executing()
|
||||||
void factor_vm::primitive_innermost_stack_frame_scan()
|
void factor_vm::primitive_innermost_stack_frame_scan()
|
||||||
{
|
{
|
||||||
callstack *stack = untag_check<callstack>(ctx->pop());
|
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);
|
void *addr = frame_return_address(frame);
|
||||||
ctx->push(code->code_block_for_address((cell)addr)->scan(this,addr));
|
ctx->push(code->code_block_for_address((cell)addr)->scan(this,addr));
|
||||||
}
|
}
|
||||||
|
@ -144,7 +130,7 @@ void factor_vm::primitive_set_innermost_stack_frame_quot()
|
||||||
|
|
||||||
jit_compile_quot(quot.value(),true);
|
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);
|
void *addr = frame_return_address(inner);
|
||||||
code_block *block = code->code_block_for_address((cell)addr);
|
code_block *block = code->code_block_for_address((cell)addr);
|
||||||
cell offset = block->offset(addr);
|
cell offset = block->offset(addr);
|
||||||
|
|
|
@ -508,7 +508,7 @@ struct find_symbol_at_address_visitor {
|
||||||
image load. It finds the symbol and library, and throws an error. */
|
image load. It finds the symbol and library, and throws an error. */
|
||||||
void factor_vm::undefined_symbol()
|
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);
|
void *return_address = frame_return_address(frame);
|
||||||
code_block *compiled = code->code_block_for_address((cell)return_address);
|
code_block *compiled = code->code_block_for_address((cell)return_address);
|
||||||
find_symbol_at_address_visitor visitor(this, (cell)return_address);
|
find_symbol_at_address_visitor visitor(this, (cell)return_address);
|
||||||
|
|
|
@ -634,7 +634,6 @@ struct factor_vm
|
||||||
void primitive_callstack_for();
|
void primitive_callstack_for();
|
||||||
void *frame_predecessor(void *frame);
|
void *frame_predecessor(void *frame);
|
||||||
void primitive_callstack_to_array();
|
void primitive_callstack_to_array();
|
||||||
void *innermost_stack_frame(void *bottom, void *top);
|
|
||||||
void primitive_innermost_stack_frame_executing();
|
void primitive_innermost_stack_frame_executing();
|
||||||
void primitive_innermost_stack_frame_scan();
|
void primitive_innermost_stack_frame_scan();
|
||||||
void primitive_set_innermost_stack_frame_quot();
|
void primitive_set_innermost_stack_frame_quot();
|
||||||
|
|
Loading…
Reference in New Issue