vm: get rid of now-trivial innermost_stack_frame

db4
Joe Groff 2011-12-13 16:21:53 -08:00
parent 2eba1b5449
commit a1ee881435
3 changed files with 4 additions and 19 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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();