]> git.unchartedbackwaters.co.uk Git - francis/libjit.git/commitdiff
fix computation of stack register index
authorAleksey Demakov <ademakov@gmail.com>
Sat, 20 May 2006 10:43:17 +0000 (10:43 +0000)
committerAleksey Demakov <ademakov@gmail.com>
Sat, 20 May 2006 10:43:17 +0000 (10:43 +0000)
ChangeLog
jit/jit-reg-alloc.c
jit/jit-reg-alloc.h
jit/jit-rules-x86.c

index 13568d41575d57b70bbb977c35f2889189363c3c..1c02f3e8fee5b6f375d9febfa671cb90b3ec6503 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2006-05-20  avd  <avd@buzz.wiraqocha.local>
+
+       * jit/jit-rules-x86.c (_jit_gen_exch_top): fix computation of stack
+       register index.
+
+       * jit/jit-reg-alloc.c (_jit_regs_assign): micro optimization by
+       changing nesting order of for and if statements.
+
 2006-05-19  Aleksey Demakov  <ademakov@gmail.com>
 
        * jit-reg-alloc.h, jit/jit-reg-alloc.c: determine if input values
index f3d218f269dd8ffa9ef2c9d34b0fe05e35e3b304..cea4fe58e5aa665be1ab6cd5a92c8a927ccd3a23 100644 (file)
@@ -3740,23 +3740,17 @@ _jit_regs_assign(jit_gencode_t gen, _jit_regs_t *regs)
 #endif
 
        /* Set clobber flags. */
-       for(index = 0; index < JIT_NUM_REGS; index++)
+       if(regs->clobber_all)
        {
-               if((_jit_reg_info[index].flags & JIT_REG_FIXED)
-                  || jit_reg_is_used(gen->permanent, index))
-               {
-                       continue;
-               }
-               if(regs->clobber_all)
+               for(index = 0; index < JIT_NUM_REGS; index++)
                {
+                       if((_jit_reg_info[index].flags & JIT_REG_FIXED)
+                          || jit_reg_is_used(gen->permanent, index))
+                       {
+                               continue;
+                       }
                        jit_reg_set_used(regs->clobber, index);
                }
-#if 0
-               if(jit_reg_is_used(regs->clobber, index))
-               {
-                       jit_reg_set_used(gen->touched, index);
-               }
-#endif
        }
 
        /* Spill all clobbered registers. */
index 10c3bbe81e59bd6ecb5e7f53fb5d92c3007f3fd1..4a8f3a99a80d3a4d1eddad582235c50c851ac20c 100644 (file)
@@ -74,11 +74,6 @@ void _jit_regs_get_reg_pair(jit_gencode_t gen, int not_this1, int not_this2,
  */
 #define _JIT_REGS_SCRATCH_MAX          6
 
-/*
- * The maximum number of stack register exchanges.
- */
-#define _JIT_REGS_MAX_EXCHANGES                16
-
 /*
  * Flags for _jit_regs_init().
  */
index ae6e96c085f42f76d6b7a1ec530936a357202e18..5cc9631d5e4adf0b247f151b0b1da02009f0d11d 100644 (file)
@@ -775,11 +775,11 @@ _jit_gen_exch_top(jit_gencode_t gen, int reg, int pop)
                jit_cache_setup_output(2);
                if(pop)
                {
-                       x86_fstp(inst, reg - X86_REG_ST0);
+                       x86_fstp(inst, fp_stack_index(gen, reg));
                }
                else
                {
-                       x86_fxch(inst, reg - X86_REG_ST0);
+                       x86_fxch(inst, fp_stack_index(gen, reg));
                }
                jit_cache_end_output();
        }