The rationale for this is the same as for
commit 3d406995e21bf1695f6abc743fb37d16cc387f9e
("jit: remove is_jit_method() and introduce is_native()")

Signed-off-by: Tomek Grabiec <tgrab...@gmail.com>
---
 arch/x86/include/arch/signal.h |    2 +-
 arch/x86/signal.c              |    9 ++-------
 vm/signal.c                    |    8 ++++++--
 3 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/arch/x86/include/arch/signal.h b/arch/x86/include/arch/signal.h
index 1940a34..69406cd 100644
--- a/arch/x86/include/arch/signal.h
+++ b/arch/x86/include/arch/signal.h
@@ -19,7 +19,7 @@
 
 struct compilation_unit;
 
-bool signal_from_jit_method(void *ctx);
+bool signal_from_native(void *ctx);
 struct compilation_unit *get_signal_source_cu(void *ctx);
 
 #endif
diff --git a/arch/x86/signal.c b/arch/x86/signal.c
index 61d7eba..f36464c 100644
--- a/arch/x86/signal.c
+++ b/arch/x86/signal.c
@@ -32,18 +32,13 @@
 
 #include <vm/signal.h>
 
-bool signal_from_jit_method(void *ctx)
+bool signal_from_native(void *ctx)
 {
        ucontext_t *uc;
-       unsigned long ip;
 
        uc = ctx;
-       ip = uc->uc_mcontext.gregs[REG_IP];
 
-       if (is_native(ip))
-               return false;
-
-       return true;
+       return is_native(uc->uc_mcontext.gregs[REG_IP]);
 }
 
 struct compilation_unit *get_signal_source_cu(void *ctx)
diff --git a/vm/signal.c b/vm/signal.c
index d52ea50..2453549 100644
--- a/vm/signal.c
+++ b/vm/signal.c
@@ -51,19 +51,23 @@ static void throw_null_pointer_exception(void)
 
 static void sigfpe_handler(int sig, siginfo_t *si, void *ctx)
 {
-       if (signal_from_jit_method(ctx) && si->si_code == FPE_INTDIV) {
+       if (signal_from_native(ctx))
+               goto exit;
+
+       if (si->si_code == FPE_INTDIV) {
                if (install_signal_bh(ctx, throw_arithmetic_exception) == 0)
                        return;
 
                fprintf(stderr, "%s: install_signal_bh() failed.\n", __func__);
        }
 
+ exit:
        print_backtrace_and_die(sig, si, ctx);
 }
 
 static void sigsegv_handler(int sig, siginfo_t *si, void *ctx)
 {
-       if (!signal_from_jit_method(ctx))
+       if (signal_from_native(ctx))
                goto exit;
 
        /* Assume that zero-page access is caused by dereferencing a
-- 
1.6.0.6


------------------------------------------------------------------------------
_______________________________________________
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel

Reply via email to