]> git.unchartedbackwaters.co.uk Git - francis/libjit.git/commitdiff
initialize thrown_exception value
authorAleksey Demakov <ademakov@gmail.com>
Mon, 10 Apr 2006 19:42:40 +0000 (19:42 +0000)
committerAleksey Demakov <ademakov@gmail.com>
Mon, 10 Apr 2006 19:42:40 +0000 (19:42 +0000)
ChangeLog
jit/jit-insn.c

index 50e3a1dfeee3eeda492719de83efdd9025058cbb..ab6ce00ed0ed0348af55039802200b16e1352299 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-04-11  Aleksey Demakov  <ademakov@gmail.com>
+
+       * jit/jit-insn.c (jit_insn_start_catcher): initialize
+       thrown_exception (the problem was found by Klaus).
+
 2006-04-08  Aleksey Demakov  <ademakov@gmail.com>
 
        * jit/jit-opcode.c: add jump table into jit_opcodes array.
index 8a8127db26a3f00ac679f9beebcfd658054ddcba..e3fc3a4bc753522b875ccb10ad6f11dc8a8178fb 100644 (file)
@@ -7228,6 +7228,10 @@ int jit_insn_uses_catcher(jit_function_t func)
 jit_value_t jit_insn_start_catcher(jit_function_t func)
 {
        jit_value_t value;
+#if !defined(JIT_BACKEND_INTERP)
+       jit_value_t last_exception;
+       jit_type_t type;
+#endif
        if(!_jit_function_ensure_builder(func))
        {
                return 0;
@@ -7248,6 +7252,17 @@ jit_value_t jit_insn_start_catcher(jit_function_t func)
        {
                return 0;
        }
+#else
+       type = jit_type_create_signature(jit_abi_cdecl, jit_type_void_ptr, 0, 0, 1);
+       if(!type)
+       {
+               return 0;
+       }
+       last_exception = jit_insn_call_native(
+               func, "jit_exception_get_last",
+               (void *)jit_exception_get_last, type, 0, 0, JIT_CALL_NOTHROW);
+       jit_insn_store(func, value, last_exception);
+       jit_type_free(type);
 #endif
        return value;
 }