return frame + 1;
}
-inline void factor_vm::primitive_callstack()
+void factor_vm::primitive_callstack()
{
stack_frame *top = capture_start();
stack_frame *bottom = stack_chain->callstack_bottom;
dpush(tag<callstack>(stack));
}
-PRIMITIVE_FORWARD(callstack)
-
-inline void factor_vm::primitive_set_callstack()
+void factor_vm::primitive_set_callstack()
{
callstack *stack = untag_check<callstack>(dpop());
critical_error("Bug in set_callstack()",0);
}
-PRIMITIVE_FORWARD(set_callstack)
-
code_block *factor_vm::frame_code(stack_frame *frame)
{
check_frame(frame);
}
-inline void factor_vm::primitive_callstack_to_array()
+void factor_vm::primitive_callstack_to_array()
{
gc_root<callstack> callstack(dpop(),this);
dpush(accum.frames.elements.value());
}
-PRIMITIVE_FORWARD(callstack_to_array)
-
stack_frame *factor_vm::innermost_stack_frame(callstack *stack)
{
stack_frame *top = stack->top();
/* Some primitives implementing a limited form of callstack mutation.
Used by the single stepper. */
-inline void factor_vm::primitive_innermost_stack_frame_executing()
+void factor_vm::primitive_innermost_stack_frame_executing()
{
dpush(frame_executing(innermost_stack_frame(untag_check<callstack>(dpop()))));
}
-PRIMITIVE_FORWARD(innermost_stack_frame_executing)
-
-inline void factor_vm::primitive_innermost_stack_frame_scan()
+void factor_vm::primitive_innermost_stack_frame_scan()
{
dpush(frame_scan(innermost_stack_frame_quot(untag_check<callstack>(dpop()))));
}
-PRIMITIVE_FORWARD(innermost_stack_frame_scan)
-
-inline void factor_vm::primitive_set_innermost_stack_frame_quot()
+void factor_vm::primitive_set_innermost_stack_frame_quot()
{
gc_root<callstack> callstack(dpop(),this);
gc_root<quotation> quot(dpop(),this);
FRAME_RETURN_ADDRESS(inner) = (char *)quot->xt + offset;
}
-PRIMITIVE_FORWARD(set_innermost_stack_frame_quot)
-
/* called before entry into Factor code. */
void factor_vm::save_callstack_bottom(stack_frame *callstack_bottom)
{