[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dotgnu-pnet-commits] libjit ChangeLog tools/gen-rules-parser.y jit/j...
From: |
Aleksey Demakov |
Subject: |
[dotgnu-pnet-commits] libjit ChangeLog tools/gen-rules-parser.y jit/j... |
Date: |
Sat, 09 Sep 2006 05:21:03 +0000 |
CVSROOT: /sources/dotgnu-pnet
Module name: libjit
Changes by: Aleksey Demakov <avd> 06/09/09 05:21:03
Modified files:
. : ChangeLog
tools : gen-rules-parser.y
jit : jit-reg-alloc.h jit-reg-alloc.c
Log message:
add _JIT_REGS_CLOBBER_STACK flag to be used for "only" rules
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/libjit/ChangeLog?cvsroot=dotgnu-pnet&r1=1.267&r2=1.268
http://cvs.savannah.gnu.org/viewcvs/libjit/tools/gen-rules-parser.y?cvsroot=dotgnu-pnet&r1=1.11&r2=1.12
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-reg-alloc.h?cvsroot=dotgnu-pnet&r1=1.17&r2=1.18
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-reg-alloc.c?cvsroot=dotgnu-pnet&r1=1.40&r2=1.41
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/ChangeLog,v
retrieving revision 1.267
retrieving revision 1.268
diff -u -b -r1.267 -r1.268
--- ChangeLog 2 Sep 2006 13:46:28 -0000 1.267
+++ ChangeLog 9 Sep 2006 05:21:03 -0000 1.268
@@ -1,3 +1,10 @@
+2006-09-09 Aleksey Demakov <address@hidden>
+
+ * jit/jit-reg-alloc.h, jit/jit-reg-alloc.c:
+ * tools/gen-rules-parser.y: add _JIT_REGS_CLOBBER_STACK flag and use
+ it in the code genearted for "only" rules instead of the explicit
+ stack top check followed by the _jit_regs_spill_all() call.
+
2006-09-02 Aleksey Demakov <address@hidden>
* jit/jit-interp.c (_jit_run_function):
Index: tools/gen-rules-parser.y
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/tools/gen-rules-parser.y,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- tools/gen-rules-parser.y 30 Aug 2006 18:35:10 -0000 1.11
+++ tools/gen-rules-parser.y 9 Sep 2006 05:21:03 -0000 1.12
@@ -88,11 +88,6 @@
static int gensel_reserve_more_space = 128;
/*
- * First register in a stack arrangement.
- */
-static int gensel_first_stack_reg = 8; /* st0 under x86 */
-
-/*
* Maximal number of input values in a pattern.
*/
#define MAX_INPUT 3
@@ -1133,17 +1128,6 @@
printf("\telse\n\t{\n");
}
- if(gensel_search_option(options, GENSEL_OPT_STACK)
- && gensel_search_option(options, GENSEL_OPT_ONLY))
- {
- printf("\t\tif(!_jit_regs_is_top(gen, insn->value1)
||\n");
- printf("\t\t _jit_regs_num_used(gen, %d) != 1)\n",
- gensel_first_stack_reg);
- printf("\t\t{\n");
- printf("\t\t\t_jit_regs_spill_all(gen);\n");
- printf("\t\t}\n");
- }
-
if(gensel_search_option(options, GENSEL_OPT_BINARY_BRANCH)
|| gensel_search_option(options, GENSEL_OPT_UNARY_BRANCH))
{
@@ -1228,6 +1212,18 @@
}
printf("_JIT_REGS_STACK");
}
+ if(gensel_search_option(options, GENSEL_OPT_ONLY))
+ {
+ if(seen_option)
+ {
+ printf(" | ");
+ }
+ else
+ {
+ seen_option = 1;
+ }
+ printf("_JIT_REGS_CLOBBER_STACK");
+ }
if(gensel_search_option(options, GENSEL_OPT_X87ARITH))
{
if(seen_option)
Index: jit/jit-reg-alloc.h
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-reg-alloc.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- jit/jit-reg-alloc.h 22 Aug 2006 17:30:09 -0000 1.17
+++ jit/jit-reg-alloc.h 9 Sep 2006 05:21:03 -0000 1.18
@@ -86,6 +86,7 @@
#define _JIT_REGS_COMMUTATIVE 0x0040
#define _JIT_REGS_REVERSIBLE 0x0080
#define _JIT_REGS_FREE_DEST 0x0100
+#define _JIT_REGS_CLOBBER_STACK 0x0200
/*
* Flags for _jit_regs_init_dest(), _jit_regs_init_value1(), and
@@ -140,6 +141,7 @@
typedef struct
{
unsigned clobber_all : 1;
+ unsigned clobber_stack : 1;
unsigned ternary : 1;
unsigned branch : 1;
unsigned copy : 1;
Index: jit/jit-reg-alloc.c
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-reg-alloc.c,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -b -r1.40 -r1.41
--- jit/jit-reg-alloc.c 29 Aug 2006 11:57:13 -0000 1.40
+++ jit/jit-reg-alloc.c 9 Sep 2006 05:21:03 -0000 1.41
@@ -2832,10 +2832,9 @@
}
/* Choose between pop and no-pop instructions. */
- if(regs->on_stack && regs->x87_arith
- && !regs->no_pop && !regs->clobber_all
- && regs->descs[1].value
- && regs->descs[2].value)
+ if(regs->on_stack && regs->x87_arith && !regs->no_pop
+ && !regs->clobber_all && !regs->clobber_stack
+ && regs->descs[1].value && regs->descs[2].value)
{
/* Determine if we might want to keep either of input values
in registers after the instruction completion. */
@@ -3971,6 +3970,7 @@
int index;
regs->clobber_all = (flags & _JIT_REGS_CLOBBER_ALL) != 0;
+ regs->clobber_stack = (flags & _JIT_REGS_CLOBBER_STACK) != 0;
regs->ternary = (flags & _JIT_REGS_TERNARY) != 0;
regs->branch = (flags & _JIT_REGS_BRANCH) != 0;
regs->copy = (flags & _JIT_REGS_COPY) != 0;
@@ -3998,7 +3998,7 @@
/* Set clobber flags. */
regs->clobber = jit_regused_init;
- if(regs->clobber_all)
+ if(regs->clobber_all || regs->clobber_stack)
{
for(index = 0; index < JIT_NUM_REGS; index++)
{
@@ -4007,9 +4007,12 @@
{
continue;
}
+ if(regs->clobber_all || IS_STACK_REG(index))
+ {
jit_reg_set_used(regs->clobber, index);
}
}
+ }
regs->assigned = gen->inhibit;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [dotgnu-pnet-commits] libjit ChangeLog tools/gen-rules-parser.y jit/j...,
Aleksey Demakov <=