]> gitweb.factorcode.org Git - factor.git/commitdiff
vm: get rid of now-trivial innermost_stack_frame
authorJoe Groff <arcata@gmail.com>
Wed, 14 Dec 2011 00:21:53 +0000 (16:21 -0800)
committerJoe Groff <arcata@gmail.com>
Wed, 14 Dec 2011 17:56:49 +0000 (09:56 -0800)
vm/callstack.cpp
vm/code_blocks.cpp
vm/vm.hpp

index 830ef6b35ce3bbfb1ccb77ad23695ee63fb44a61..0c81aa408aab635a123a82c1c13b2c4db137b1c3 100755 (executable)
@@ -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.
 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());
 }
@@ -129,7 +115,7 @@ void factor_vm::primitive_innermost_stack_frame_executing()
 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));
 }
@@ -144,7 +130,7 @@ void factor_vm::primitive_set_innermost_stack_frame_quot()
 
        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);
index 0d17225128887228459458ccffbb5ae63291f72b..17d9fe075aa38392979c3427b3ae7b5a29584cb5 100755 (executable)
@@ -508,7 +508,7 @@ struct find_symbol_at_address_visitor {
 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);
index bac366d2e856004e6df05d745f741d936dd3885c..70af2cc77b1f79ea44fe1b61e5170e08fbe2f01c 100755 (executable)
--- a/vm/vm.hpp
+++ b/vm/vm.hpp
@@ -634,7 +634,6 @@ struct factor_vm
        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();