]> git.unchartedbackwaters.co.uk Git - francis/libjit.git/commitdiff
Throw exceptions correctly for "check_null".
authorRhys Weatherley <rweather@southern-storm.com.au>
Mon, 31 May 2004 11:24:49 +0000 (11:24 +0000)
committerRhys Weatherley <rweather@southern-storm.com.au>
Mon, 31 May 2004 11:24:49 +0000 (11:24 +0000)
ChangeLog
jit/jit-rules-x86.sel

index 55cf553935b919b99999de664b674d8e7c57fcec..f1fe449ed58eb8c5b57f262fb551e6a45feb7870 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,8 @@
        * jit/jit-rules-x86.c, jit/jit-rules-x86.sel, tools/gen-sel-parser.y,
        tools/gen-sel-scanner.l: inline and optimize divisions for x86.
 
+       * jit/jit-rules-x86.sel: throw exceptions correctly for "check_null".
+
 2004-05-30  Rhys Weatherley  <rweather@southern-storm.com.au>
 
        * doc/libjit.texi: clarify the text that describes LLVM, at the
index f40003d171ed4e32ed0c84c4e80d798114d6535d..b6b38c772760c8ce5362ee5e23db083dcc652e8c 100644 (file)
@@ -1418,14 +1418,11 @@ JIT_OP_IGE_UN: binary
 
 JIT_OP_CHECK_NULL: unary_note
        [reg] -> {
-               /* TODO: won't work in a function with a "try" block */
                unsigned char *patch;
-               TODO();
                x86_alu_reg_reg(inst, X86_OR, $1, $1);
                patch = inst;
                x86_branch8(inst, X86_CC_NE, 0, 0);
-               x86_push_imm(inst, JIT_RESULT_NULL_REFERENCE);
-               x86_call_code(inst, (void *)jit_exception_builtin);
+               inst = throw_builtin(inst, func, JIT_RESULT_NULL_REFERENCE);
                x86_patch(patch, inst);
        }