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-interp.c jit/jit-rules...


From: Aleksey Demakov
Subject: [dotgnu-pnet-commits] libjit ChangeLog jit/jit-interp.c jit/jit-rules...
Date: Sat, 02 Sep 2006 13:46:28 +0000

CVSROOT:        /sources/dotgnu-pnet
Module name:    libjit
Changes by:     Aleksey Demakov <avd>   06/09/02 13:46:28

Modified files:
        .              : ChangeLog 
        jit            : jit-interp.c jit-rules-interp.c 

Log message:
        remove last traces of register allocation from the interpreter

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/libjit/ChangeLog?cvsroot=dotgnu-pnet&r1=1.266&r2=1.267
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-interp.c?cvsroot=dotgnu-pnet&r1=1.15&r2=1.16
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-rules-interp.c?cvsroot=dotgnu-pnet&r1=1.27&r2=1.28

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/ChangeLog,v
retrieving revision 1.266
retrieving revision 1.267
diff -u -b -r1.266 -r1.267
--- ChangeLog   30 Aug 2006 19:43:13 -0000      1.266
+++ ChangeLog   2 Sep 2006 13:46:28 -0000       1.267
@@ -1,3 +1,9 @@
+2006-09-02  Aleksey Demakov  <address@hidden>
+
+       * jit/jit-interp.c (_jit_run_function): 
+       * jit/jit-rules-interp.c (_jit_gen_insn): remove last traces of
+       register allocation from the interpreter.
+
 2006-08-31  Klaus Treichel  <address@hidden>
 
        * configure.in: Replace the deprecated AM_PROG_LIBTOOL with the current

Index: jit/jit-interp.c
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-interp.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- jit/jit-interp.c    30 Aug 2006 13:31:58 -0000      1.15
+++ jit/jit-interp.c    2 Sep 2006 13:46:28 -0000       1.16
@@ -3532,8 +3532,8 @@
                                tempptr2 = ((jit_item *)tempptr2)[1].ptr_value;
                                --temparg;
                        }
-                       VM_STK_PTRP = ((jit_item *)tempptr) + VM_NINT_ARG;
-                       VM_MODIFY_PC_AND_STACK(3, -1);
+                       VM_R0_PTR = ((jit_item *)tempptr) + VM_NINT_ARG;
+                       VM_MODIFY_PC(3);
                }
                VMBREAK;
 
@@ -3548,8 +3548,8 @@
                                tempptr = ((jit_item *)tempptr)[1].ptr_value;
                                --temparg;
                        }
-                       VM_STK_PTRP = ((jit_item *)tempptr) + VM_NINT_ARG;
-                       VM_MODIFY_PC_AND_STACK(3, -1);
+                       VM_R0_PTR = ((jit_item *)tempptr) + VM_NINT_ARG;
+                       VM_MODIFY_PC(3);
                }
                VMBREAK;
 
@@ -3665,20 +3665,16 @@
 
                VMCASE(JIT_OP_LEAVE_FILTER):
                {
-                       /* TODO!!! */
-                       /* Return from a "filter" handler: pc and value on 
stack */
-                       pc = (void **)(stacktop[1].ptr_value);
-                       stacktop[1] = stacktop[0];
+                       /* Return from a "filter" handler: pc on stack */
+                       pc = (void **)(stacktop[0].ptr_value);
                        VM_MODIFY_STACK(1);
                }
                VMBREAK;
 
                VMCASE(JIT_OP_CALL_FILTER):
                {
-                       /* TODO!!! */
                        /* Call a "filter" handler with pc and value on stack */
-                       stacktop[-1] = stacktop[0];
-                       stacktop[0].ptr_value = (void *)(pc + 2);
+                       stacktop[-1].ptr_value = (void *)(pc + 2);
                        VM_MODIFY_STACK(-1);
                        pc = VM_BR_TARGET;
                }

Index: jit/jit-rules-interp.c
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-rules-interp.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -b -r1.27 -r1.28
--- jit/jit-rules-interp.c      30 Aug 2006 13:31:58 -0000      1.27
+++ jit/jit-rules-interp.c      2 Sep 2006 13:46:28 -0000       1.28
@@ -1103,7 +1103,6 @@
        case JIT_OP_BR_ITRUE:
        case JIT_OP_BR_LFALSE:
        case JIT_OP_BR_LTRUE:
-       case JIT_OP_CALL_FILTER:
                /* Unary branch */
                load_value(gen, insn->value1, 1);
                /* Fall through */
@@ -1111,6 +1110,7 @@
        case JIT_OP_BR:
        case JIT_OP_CALL_FINALLY:
                /* Unconditional branch */
+       branch:
                label = (jit_label_t)(insn->dest);
                pc = (void **)(gen->posn.ptr);
                jit_cache_opcode(&(gen->posn), insn->opcode);
@@ -1132,6 +1132,12 @@
                }
                break;
 
+       case JIT_OP_CALL_FILTER:
+               /* Branch to a filter subroutine, load the filter
+                  parameter to the r0 register */
+               load_value(gen, insn->value1, 0);
+               goto branch;
+
        case JIT_OP_JUMP_TABLE:
        {
                jit_label_t *labels;
@@ -1192,13 +1198,6 @@
                store_value(gen, insn->dest, 0);
                break;
 
-#if 0
-       case JIT_OP_OUTGOING_REG:
-               /* Load a value to a register */
-               load_value(gen, insn->value1, insn->value2->address);
-               break;
-#endif
-
        case JIT_OP_CALL:
        case JIT_OP_CALL_TAIL:
                /* Call a function, whose pointer is supplied explicitly */
@@ -1272,12 +1271,7 @@
                break;
 
        case JIT_OP_IMPORT:
-               /* TODO!!! */
                /* Import a local variable from an outer nested scope */
-               if(_jit_regs_num_used(gen, 0) >= JIT_NUM_REGS)
-               {
-                       _jit_regs_spill_all(gen);
-               }
                _jit_gen_fix_value(insn->value1);
                if(insn->value1->frame_offset >= 0)
                {
@@ -1291,8 +1285,7 @@
                        jit_cache_native(&(gen->posn), 
-(insn->value1->frame_offset + 1));
                        jit_cache_native(&(gen->posn), 
jit_value_get_nint_constant(insn->value2));
                }
-               reg = _jit_regs_new_top(gen, insn->dest, 0);
-               adjust_working(gen, 1);
+               store_value(gen, insn->dest, 0);
                break;
 
        case JIT_OP_THROW:
@@ -1309,10 +1302,8 @@
                break;
 
        case JIT_OP_CALL_FILTER_RETURN:
-               /* TODO!!! */
-               /* The top of stack currently contains "dest" */
-               _jit_regs_set_value(gen, 0, insn->dest, 0);
-               adjust_working(gen, 1);
+               /* The r0 register currently contains "dest" */
+               store_value(gen, insn->dest, 0);
                break;
 
        case JIT_OP_ENTER_FINALLY:
@@ -1326,24 +1317,16 @@
                break;
 
        case JIT_OP_ENTER_FILTER:
-               /* TODO!!! */
-               /* The top of stack contains "dest" and a return address */
+               /* The top of the stack contains the return address,
+                  the r0 register contains the "dest" (filter parameter). */
                ++(gen->extra_working_space);
-               _jit_regs_set_value(gen, 0, insn->dest, 0);
-               adjust_working(gen, 1);
+               store_value(gen, insn->dest, 0);
                break;
 
        case JIT_OP_LEAVE_FILTER:
-               /* TODO!!! */
                /* Leave a filter clause, returning a particular value */
-               if(!_jit_regs_is_top(gen, insn->value1) ||
-                  _jit_regs_num_used(gen, 0) != 1)
-               {
-                       _jit_regs_spill_all(gen);
-               }
-               reg = _jit_regs_load_to_top(gen, insn->value1, 0, 0);
+               load_value(gen, insn->value1, 0);
                jit_cache_opcode(&(gen->posn), insn->opcode);
-               _jit_regs_free_reg(gen, reg, 1);
                break;
 
        case JIT_OP_RETURN_REG:




reply via email to

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