]> git.unchartedbackwaters.co.uk Git - francis/libjit.git/commitdiff
Fix JIT_OP_IDIV and JIT_OP_IREM rules for the divisor value of -1.
authorAleksey Demakov <ademakov@gmail.com>
Fri, 16 Jun 2006 02:35:16 +0000 (02:35 +0000)
committerAleksey Demakov <ademakov@gmail.com>
Fri, 16 Jun 2006 02:35:16 +0000 (02:35 +0000)
ChangeLog
jit/jit-rules-x86.ins
jit/jit-rules-x86.sel

index 626d9517e8cc56ad4d1b1cc6291a2f3b741c13a0..e25f6aed5993bd648461c13b3874a41ab0296600 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-06-16  Aleksey Demakov  <ademakov@gmail.com>
+
+       * jit/jit-rules-x86.sel, jit/jit-rules-x86.ins: fix JIT_OP_IDIV and
+       JIT_OP_IREM rules for the divisor value of -1.
+
 2006-06-09  Aleksey Demakov  <ademakov@gmail.com>
 
        * jit/jit-rules-x86.ins: rewrite JIT_OP_STORE_RELATIVE_BYTE,
index 4b7f8456cfb553dab4c54e30340ece10481052d8..b94095f6f6fe3e002cec11b0d906ff90c5080f72 100644 (file)
@@ -449,8 +449,9 @@ JIT_OP_IDIV: binary, spill_before, more_space
                        {
                                /* Dividing by -1 gives an exception if the argument
                                   is minint, or simply negates for other values */
-                               unsigned char *patch = inst;
+                               unsigned char *patch;
                                x86_alu_reg_imm(inst, X86_CMP, $1, jit_min_int);
+                               patch = inst;
                                x86_branch8(inst, X86_CC_NE, 0, 0);
                                inst = throw_builtin(inst, func, JIT_RESULT_ARITHMETIC);
                                x86_patch(patch, inst);
@@ -911,8 +912,9 @@ JIT_OP_IREM: binary, spill_before, more_space
                        {
                                /* Dividing by -1 gives an exception if the argument
                                   is minint, or simply gives a remainder of zero */
-                               unsigned char *patch = inst;
+                               unsigned char *patch;
                                x86_alu_reg_imm(inst, X86_CMP, $1, jit_min_int);
+                               patch = inst;
                                x86_branch8(inst, X86_CC_NE, 0, 0);
                                inst = throw_builtin(inst, func, JIT_RESULT_ARITHMETIC);
                                x86_patch(patch, inst);
index 8b3acdfd9af4203ad7dbde4036eb3c1f54578c64..9a20f85bde1a6d9e64aaf6c186346b6bb82745db 100644 (file)
@@ -449,8 +449,9 @@ JIT_OP_IDIV: binary, spill_before, more_space
                        {
                                /* Dividing by -1 gives an exception if the argument
                                   is minint, or simply negates for other values */
-                               unsigned char *patch = inst;
+                               unsigned char *patch;
                                x86_alu_reg_imm(inst, X86_CMP, $1, jit_min_int);
+                               patch = inst;
                                x86_branch8(inst, X86_CC_NE, 0, 0);
                                inst = throw_builtin(inst, func, JIT_RESULT_ARITHMETIC);
                                x86_patch(patch, inst);
@@ -911,8 +912,9 @@ JIT_OP_IREM: binary, spill_before, more_space
                        {
                                /* Dividing by -1 gives an exception if the argument
                                   is minint, or simply gives a remainder of zero */
-                               unsigned char *patch = inst;
+                               unsigned char *patch;
                                x86_alu_reg_imm(inst, X86_CMP, $1, jit_min_int);
+                               patch = inst;
                                x86_branch8(inst, X86_CC_NE, 0, 0);
                                inst = throw_builtin(inst, func, JIT_RESULT_ARITHMETIC);
                                x86_patch(patch, inst);