diff options
Diffstat (limited to 'asmrun/signals_asm.c')
-rw-r--r-- | asmrun/signals_asm.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/asmrun/signals_asm.c b/asmrun/signals_asm.c index 85d441dae..f8f542ada 100644 --- a/asmrun/signals_asm.c +++ b/asmrun/signals_asm.c @@ -46,12 +46,11 @@ extern void caml_win32_overflow_detection(); #endif extern char * caml_code_area_start, * caml_code_area_end; -CAMLextern int caml_is_in_code(void *); -#define In_code_area(pc) \ +#define Is_in_code_area(pc) \ ( ((char *)(pc) >= caml_code_area_start && \ (char *)(pc) <= caml_code_area_end) \ - || caml_is_in_code((void *)(pc)) ) + || (Classify_addr(pc) & In_code_area) ) /* This routine is the common entry point for garbage collection and signal handling. It can trigger a callback to Caml code. @@ -86,7 +85,7 @@ DECLARE_SIGNAL_HANDLER(handle_signal) Use the signal context to modify that register too, but only if we are inside Caml code (not inside C code). */ #if defined(CONTEXT_PC) && defined(CONTEXT_YOUNG_LIMIT) - if (In_code_area(CONTEXT_PC)) + if (Is_in_code_area(CONTEXT_PC)) CONTEXT_YOUNG_LIMIT = (context_reg) caml_young_limit; #endif } @@ -192,7 +191,7 @@ DECLARE_SIGNAL_HANDLER(segv_handler) && fault_addr < system_stack_top && fault_addr >= system_stack_top - limit.rlim_cur - 0x2000 #ifdef CONTEXT_PC - && In_code_area(CONTEXT_PC) + && Is_in_code_area(CONTEXT_PC) #endif ) { /* Turn this into a Stack_overflow exception */ |