dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dotgnu-pnet-commits] libjit ChangeLog jit/jit-rules.h jit/jit-rules-...


From: Aleksey Demakov
Subject: [dotgnu-pnet-commits] libjit ChangeLog jit/jit-rules.h jit/jit-rules-...
Date: Tue, 29 Aug 2006 11:57:13 +0000

CVSROOT:        /sources/dotgnu-pnet
Module name:    libjit
Changes by:     Aleksey Demakov <avd>   06/08/29 11:57:13

Modified files:
        .              : ChangeLog 
        jit            : jit-rules.h jit-rules-arm.c jit-rules-alpha.c 
                         jit-rules-x86.c jit-rules-interp.c 
                         jit-reg-alloc.c 

Log message:
        add _jit_gen_move_top() to take part of the _jit_gen_exch_top() 
functionality
        thus making the interface cleaner

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/libjit/ChangeLog?cvsroot=dotgnu-pnet&r1=1.260&r2=1.261
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-rules.h?cvsroot=dotgnu-pnet&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-rules-arm.c?cvsroot=dotgnu-pnet&r1=1.22&r2=1.23
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-rules-alpha.c?cvsroot=dotgnu-pnet&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-rules-x86.c?cvsroot=dotgnu-pnet&r1=1.37&r2=1.38
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-rules-interp.c?cvsroot=dotgnu-pnet&r1=1.25&r2=1.26
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-reg-alloc.c?cvsroot=dotgnu-pnet&r1=1.39&r2=1.40

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/ChangeLog,v
retrieving revision 1.260
retrieving revision 1.261
diff -u -b -r1.260 -r1.261
--- ChangeLog   28 Aug 2006 19:52:48 -0000      1.260
+++ ChangeLog   29 Aug 2006 11:57:12 -0000      1.261
@@ -1,5 +1,10 @@
 2006-08-29  Aleksey Demakov  <address@hidden>
 
+       * jit/jit-rules.h, jit/jit-rules-alpha.c, jit/jit-rules-arm.c,
+       * jit/jit-rules-interp.c, jit/jit-rules-x86.c, jit/jit-reg-alloc.c:
+       move part of the _jit_gen_exch_top() functionality into a separate
+       _jit_gen_move_top() function.
+
        * include/jit/jit-opcode.h:
        * jit/jit-opcode.c: add JIT_OPCODE_IS_JUMP_TABLE flag to mark the
        JIT_OP_JUMP_TABLE opcode.

Index: jit/jit-rules.h
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-rules.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- jit/jit-rules.h     12 Jul 2006 03:06:49 -0000      1.13
+++ jit/jit-rules.h     29 Aug 2006 11:57:13 -0000      1.14
@@ -200,7 +200,8 @@
        (jit_gencode_t gen, int reg, int other_reg, jit_value_t value);
 void _jit_gen_spill_global(jit_gencode_t gen, int reg, jit_value_t value);
 void _jit_gen_load_global(jit_gencode_t gen, int reg, jit_value_t value);
-void _jit_gen_exch_top(jit_gencode_t gen, int reg, int pop);
+void _jit_gen_exch_top(jit_gencode_t gen, int reg);
+void _jit_gen_move_top(jit_gencode_t gen, int reg);
 void _jit_gen_spill_top(jit_gencode_t gen, int reg, jit_value_t value, int 
pop);
 void _jit_gen_fix_value(jit_value_t value);
 void _jit_gen_insn(jit_gencode_t gen, jit_function_t func,

Index: jit/jit-rules-arm.c
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-rules-arm.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- jit/jit-rules-arm.c 14 Apr 2006 14:44:29 -0000      1.22
+++ jit/jit-rules-arm.c 29 Aug 2006 11:57:13 -0000      1.23
@@ -774,7 +774,11 @@
        jit_cache_end_output();
 }
 
-void _jit_gen_exch_top(jit_gencode_t gen, int reg, int pop)
+void _jit_gen_exch_top(jit_gencode_t gen, int reg)
+{
+}
+
+void _jit_gen_move_top(jit_gencode_t gen, int reg)
 {
 }
 

Index: jit/jit-rules-alpha.c
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-rules-alpha.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- jit/jit-rules-alpha.c       22 Aug 2006 23:41:32 -0000      1.9
+++ jit/jit-rules-alpha.c       29 Aug 2006 11:57:13 -0000      1.10
@@ -267,10 +267,13 @@
        return 0;
 }
 
-void _jit_gen_exch_top(jit_gencode_t gen, int reg, int pop) {
+void _jit_gen_exch_top(jit_gencode_t gen, int reg) {
        /* not used by alpha */;
 }
 
+void _jit_gen_move_top(jit_gencode_t gen, int reg) {
+       /* not used by alpha */;
+}
 
 void _jit_gen_spill_top(jit_gencode_t gen, int reg, jit_value_t value, int 
pop) {
        /* not used by alpha */;

Index: jit/jit-rules-x86.c
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-rules-x86.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -b -r1.37 -r1.38
--- jit/jit-rules-x86.c 22 Aug 2006 20:55:31 -0000      1.37
+++ jit/jit-rules-x86.c 29 Aug 2006 11:57:13 -0000      1.38
@@ -778,19 +778,23 @@
 }
 
 void
-_jit_gen_exch_top(jit_gencode_t gen, int reg, int pop)
+_jit_gen_exch_top(jit_gencode_t gen, int reg)
 {
        if(IS_FLOAT_REG(reg))
        {
                jit_cache_setup_output(2);
-               if(pop)
-               {
-                       x86_fstp(inst, fp_stack_index(gen, reg));
-               }
-               else
-               {
                        x86_fxch(inst, fp_stack_index(gen, reg));
+               jit_cache_end_output();
                }
+}
+
+void
+ _jit_gen_move_top(jit_gencode_t gen, int reg)
+{
+       if(IS_FLOAT_REG(reg))
+       {
+               jit_cache_setup_output(2);
+               x86_fstp(inst, fp_stack_index(gen, reg));
                jit_cache_end_output();
        }
 }

Index: jit/jit-rules-interp.c
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-rules-interp.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -b -r1.25 -r1.26
--- jit/jit-rules-interp.c      14 Apr 2006 14:44:29 -0000      1.25
+++ jit/jit-rules-interp.c      29 Aug 2006 11:57:13 -0000      1.26
@@ -932,12 +932,46 @@
        /* Global registers are not used in the interpreted back end */
 }
 
-void _jit_gen_exch_top(jit_gencode_t gen, int reg, int pop)
+/*@
+ * @deftypefun void _jit_gen_exch_top (jit_gencode_t gen, int reg)
+ * Generate instructions to exchange the contents of the top stack register
+ * with a stack register specified by the @code{reg} argument.
+ *
+ * It needs to be implemented only by backends that support stack registers.
+ * @end deftypefun
address@hidden/
+void _jit_gen_exch_top(jit_gencode_t gen, int reg)
+{
+       /* Stack registers are not used in the interpreted back end */
+}
+
+/*@
+ * @deftypefun void _jit_gen_move_top (jit_gencode_t gen, int reg)
+ * Generate instructions to copy the contents of the top stack register
+ * into a stack register specified by the @code{reg} argument and pop
+ * the top register after this. If @code{reg} is equal to the top register
+ * then the top register is just popped without copying it.
+ *
+ * It needs to be implemented only by backends that support stack registers.
+ * @end deftypefun
address@hidden/
+void _jit_gen_move_top(jit_gencode_t gen, int reg)
 {
+       /* Stack registers are not used in the interpreted back end */
 }
 
+/*@
+ * @deftypefun _jit_gen_spill_top (jit_gencode_t gen, int reg, jit_value_t 
value, int pop)
+ * Generate instructions to spill the top stack register to the local
+ * variable frame. The @code{pop} argument indicates if the top register
+ * is popped from the stack.
+ *
+ * It needs to be implemented only by backends that support stack registers.
+ * @end deftypefun
address@hidden/
 void _jit_gen_spill_top(jit_gencode_t gen, int reg, jit_value_t value, int pop)
 {
+       /* Stack registers are not used in the interpreted back end */
 }
 
 /*@

Index: jit/jit-reg-alloc.c
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-reg-alloc.c,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -b -r1.39 -r1.40
--- jit/jit-reg-alloc.c 22 Aug 2006 17:30:09 -0000      1.39
+++ jit/jit-reg-alloc.c 29 Aug 2006 11:57:13 -0000      1.40
@@ -3341,12 +3341,17 @@
        stack_start = get_stack_start(reg);
        top = get_stack_top(gen, stack_start);
 
-       /* Generate exchange instruction. */
-       _jit_gen_exch_top(gen, reg, pop);
        if(pop)
        {
+               /* Generate move/pop-top instruction. */
+               _jit_gen_move_top(gen, reg);
                remap_stack_down(gen, stack_start, top);
        }
+       else
+       {
+               /* Generate exchange instruction. */
+               _jit_gen_exch_top(gen, reg);
+       }
 
        /* Update information about the contents of the registers.  */
        for(index = 0;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]