removed some vm-> forwarding functions
parent
2f3cd4d23d
commit
700e03a6a6
|
@ -93,12 +93,6 @@ void *factorvm::alien_pointer()
|
||||||
return unbox_alien() + offset;
|
return unbox_alien() + offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *alien_pointer()
|
|
||||||
{
|
|
||||||
return vm->alien_pointer();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* define words to read/write values at an alien address */
|
/* define words to read/write values at an alien address */
|
||||||
#define DEFINE_ALIEN_ACCESSOR(name,type,boxer,to) \
|
#define DEFINE_ALIEN_ACCESSOR(name,type,boxer,to) \
|
||||||
PRIMITIVE(alien_##name) \
|
PRIMITIVE(alien_##name) \
|
||||||
|
@ -232,7 +226,7 @@ char *factorvm::unbox_alien()
|
||||||
|
|
||||||
VM_C_API char *unbox_alien()
|
VM_C_API char *unbox_alien()
|
||||||
{
|
{
|
||||||
printf("*PHIL unbox_alien\n");fflush(stdout);
|
printf("PHIL unbox_alien\n");fflush(stdout);
|
||||||
return vm->unbox_alien();
|
return vm->unbox_alien();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,17 +9,11 @@ void factorvm::init_code_heap(cell size)
|
||||||
new_heap(&code,size);
|
new_heap(&code,size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool factorvm::in_code_heap_p(cell ptr)
|
bool factorvm::in_code_heap_p(cell ptr)
|
||||||
{
|
{
|
||||||
return (ptr >= code.seg->start && ptr <= code.seg->end);
|
return (ptr >= code.seg->start && ptr <= code.seg->end);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool in_code_heap_p(cell ptr)
|
|
||||||
{
|
|
||||||
return vm->in_code_heap_p(ptr); // used by os specific signal handlers
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Compile a word definition with the non-optimizing compiler. Allocates memory */
|
/* Compile a word definition with the non-optimizing compiler. Allocates memory */
|
||||||
void factorvm::jit_compile_word(cell word_, cell def_, bool relocate)
|
void factorvm::jit_compile_word(cell word_, cell def_, bool relocate)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
namespace factor
|
namespace factor
|
||||||
{
|
{
|
||||||
|
|
||||||
bool in_code_heap_p(cell ptr); // Used by platform specific code
|
|
||||||
|
|
||||||
struct factorvm;
|
struct factorvm;
|
||||||
typedef void (*code_heap_iterator)(code_block *compiled,factorvm *myvm);
|
typedef void (*code_heap_iterator)(code_block *compiled,factorvm *myvm);
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ static void call_fault_handler(
|
||||||
a divide by zero or stack underflow in the listener */
|
a divide by zero or stack underflow in the listener */
|
||||||
|
|
||||||
/* Are we in compiled Factor code? Then use the current stack pointer */
|
/* Are we in compiled Factor code? Then use the current stack pointer */
|
||||||
if(in_code_heap_p(MACH_PROGRAM_COUNTER(thread_state)))
|
if(vm->in_code_heap_p(MACH_PROGRAM_COUNTER(thread_state)))
|
||||||
signal_callstack_top = (stack_frame *)MACH_STACK_POINTER(thread_state);
|
signal_callstack_top = (stack_frame *)MACH_STACK_POINTER(thread_state);
|
||||||
/* Are we in C? Then use the saved callstack top */
|
/* Are we in C? Then use the saved callstack top */
|
||||||
else
|
else
|
||||||
|
|
|
@ -107,7 +107,7 @@ static stack_frame *uap_stack_pointer(void *uap)
|
||||||
delivered during stack frame setup/teardown or while transitioning
|
delivered during stack frame setup/teardown or while transitioning
|
||||||
from Factor to C is a sign of things seriously gone wrong, not just
|
from Factor to C is a sign of things seriously gone wrong, not just
|
||||||
a divide by zero or stack underflow in the listener */
|
a divide by zero or stack underflow in the listener */
|
||||||
if(in_code_heap_p(UAP_PROGRAM_COUNTER(uap)))
|
if(vm->in_code_heap_p(UAP_PROGRAM_COUNTER(uap)))
|
||||||
{
|
{
|
||||||
stack_frame *ptr = (stack_frame *)ucontext_stack_pointer(uap);
|
stack_frame *ptr = (stack_frame *)ucontext_stack_pointer(uap);
|
||||||
if(!ptr)
|
if(!ptr)
|
||||||
|
|
|
@ -21,7 +21,7 @@ FACTOR_STDCALL LONG exception_handler(PEXCEPTION_POINTERS pe)
|
||||||
PEXCEPTION_RECORD e = (PEXCEPTION_RECORD)pe->ExceptionRecord;
|
PEXCEPTION_RECORD e = (PEXCEPTION_RECORD)pe->ExceptionRecord;
|
||||||
CONTEXT *c = (CONTEXT*)pe->ContextRecord;
|
CONTEXT *c = (CONTEXT*)pe->ContextRecord;
|
||||||
|
|
||||||
if(in_code_heap_p(c->EIP))
|
if(vm->in_code_heap_p(c->EIP))
|
||||||
signal_callstack_top = (stack_frame *)c->ESP;
|
signal_callstack_top = (stack_frame *)c->ESP;
|
||||||
else
|
else
|
||||||
signal_callstack_top = NULL;
|
signal_callstack_top = NULL;
|
||||||
|
|
Loading…
Reference in New Issue