]> git.unchartedbackwaters.co.uk Git - francis/libjit.git/commitdiff
fix jump table code generation
authorAleksey Demakov <ademakov@gmail.com>
Sun, 7 Oct 2007 14:01:02 +0000 (14:01 +0000)
committerAleksey Demakov <ademakov@gmail.com>
Sun, 7 Oct 2007 14:01:02 +0000 (14:01 +0000)
ChangeLog
jit/jit-rules-x86.ins

index 5ad612d57fe2e5986f3a0414ab2afee3d41f5ffc..2554779205d19ba853fbbd6dfa9335106c78fe71 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-10-07  Aleksey Demakov  <ademakov@gmail.com>
+
+       * jit/jit-rules-x86.ins (JIT_OP_JUMP_TABLE): fix jump table code
+       generation.
+
 2007-06-11  Aleksey Demakov  <ademakov@gmail.com>
 
        * jit/jit-insn.c (accumulate_relative_offset): remove.
index 8e84119c25b339a764a8db630ea09786c991ffa1..ad2c141208e91f30ba6ab3d151f9b88f5833c73b 100644 (file)
@@ -2508,7 +2508,7 @@ JIT_OP_ALLOCA:
        }
 
 JIT_OP_JUMP_TABLE: ternary, branch
-       [reg, imm, imm, space("32 + sizeof(void) * $3")] -> {
+       [reg, imm, imm, space("32 + sizeof(void *) * $3")] -> {
                unsigned char *patch_jump_table;
                unsigned char *patch_fall_through;
                int index;
@@ -2521,7 +2521,7 @@ JIT_OP_JUMP_TABLE: ternary, branch
 
                x86_alu_reg_imm(inst, X86_CMP, $1, num_labels);
                patch_fall_through = inst;
-               x86_branch32(inst, X86_CC_GE, 0, 1);
+               x86_branch32(inst, X86_CC_AE, 0, 0);
 
                if(func->builder->position_independent)
                {