[svn:parrot] r40713 - in branches/context_pmc3/src: . jit/i386

bacek at svn.parrot.org bacek at svn.parrot.org
Sat Aug 22 07:58:01 UTC 2009


Author: bacek
Date: Sat Aug 22 07:58:00 2009
New Revision: 40713
URL: https://trac.parrot.org/parrot/changeset/40713

Log:
Fix using contexts in jit definition.

Modified:
   branches/context_pmc3/src/jit/i386/jit_defs.c
   branches/context_pmc3/src/jit_defs.c

Modified: branches/context_pmc3/src/jit/i386/jit_defs.c
==============================================================================
--- branches/context_pmc3/src/jit/i386/jit_defs.c	Sat Aug 22 07:45:49 2009	(r40712)
+++ branches/context_pmc3/src/jit/i386/jit_defs.c	Sat Aug 22 07:58:00 2009	(r40713)
@@ -871,8 +871,9 @@
     }
 #endif
     /* get base pointer */
-    emitm_movl_m_r(interp, jit_info->native_ptr, emit_EBX, emit_EBX, 0, 1,
-            offsetof(Interp, ctx.bp));
+    // XXX Broken!
+    //emitm_movl_m_r(interp, jit_info->native_ptr, emit_EBX, emit_EBX, 0, 1,
+    //        offsetof(Interp, ctx.bp));
 
     /* This jumps to the address in op_map[EDX + sizeof (void *) * INDEX] */
     emitm_jumpm(jit_info->native_ptr, emit_EDX, emit_EAX,
@@ -1231,7 +1232,7 @@
     PMC *sig_pmc;
     INTVAL *sig_bits, i, n;
 
-    sig_pmc = CONTEXT(interp)->constants[CUR_OPCODE[1]]->u.key;
+    sig_pmc = Parrot_ctx_get_pmc_constant(interp, CONTEXT(interp), CUR_OPCODE[1]);
     GETATTR_FixedIntegerArray_int_array(interp, sig_pmc, sig_bits);
     n = VTABLE_elements(interp, sig_pmc);
     jit_info->n_args = n;
@@ -1267,7 +1268,7 @@
     int i, used_i, save_i;
     const jit_arch_regs *reg_info;
 
-    used_i = CONTEXT(interp)->n_regs_used[REGNO_INT];
+    used_i = CURRENT_CONTEXT_FIELD(n_regs_used[REGNO_INT]);
     reg_info = &jit_info->arch_info->regs[jit_info->code_type];
     save_i = reg_info->n_preserved_I;
     for (i = save_i; i < used_i; ++i) {
@@ -1283,7 +1284,7 @@
     int i, used_i, save_i;
     const jit_arch_regs *reg_info;
 
-    used_i = CONTEXT(interp)->n_regs_used[REGNO_INT];
+    used_i = CURRENT_CONTEXT_FIELD(n_regs_used[REGNO_INT]);
     reg_info = &jit_info->arch_info->regs[jit_info->code_type];
     save_i = reg_info->n_preserved_I;
     /* note - reversed order of jit_save_regs  */
@@ -1307,8 +1308,8 @@
     int i, used_i, used_n;
     const jit_arch_regs *reg_info;
 
-    used_i = CONTEXT(interp)->n_regs_used[REGNO_INT];
-    used_n = CONTEXT(interp)->n_regs_used[REGNO_NUM];
+    used_i = CURRENT_CONTEXT_FIELD(n_regs_used[REGNO_INT]);
+    used_n = CURRENT_CONTEXT_FIELD(n_regs_used[REGNO_NUM]);
     jit_emit_sub_ri_i(interp, jit_info->native_ptr, emit_ESP,
             (used_i * sizeof (INTVAL) + used_n * sizeof (FLOATVAL)));
     reg_info = &jit_info->arch_info->regs[jit_info->code_type];
@@ -1338,8 +1339,8 @@
     int i, used_i, used_n;
     const jit_arch_regs *reg_info;
 
-    used_i = CONTEXT(interp)->n_regs_used[REGNO_INT];
-    used_n = CONTEXT(interp)->n_regs_used[REGNO_NUM];
+    used_i = CURRENT_CONTEXT_FIELD(n_regs_used[REGNO_INT]);
+    used_n = CURRENT_CONTEXT_FIELD(n_regs_used[REGNO_NUM]);
     reg_info = &jit_info->arch_info->regs[jit_info->code_type];
 
     for (i = 0; i < used_i; ++i) {
@@ -1368,7 +1369,7 @@
     PMC *sig_pmc;
     INTVAL *sig_bits, sig;
 
-    sig_pmc = CONTEXT(interp)->constants[CUR_OPCODE[1]]->u.key;
+    sig_pmc = Parrot_ctx_get_pmc_constant(interp, CONTEXT(interp), CUR_OPCODE[1]);
     if (!VTABLE_elements(interp, sig_pmc))
         return;
     GETATTR_FixedIntegerArray_int_array(interp, sig_pmc, sig_bits);
@@ -1442,7 +1443,7 @@
         Parrot_ex_throw_from_c_args(interp, NULL, 1,
             "set_args_jit - can't do that yet ");
 
-    constants = CONTEXT(interp)->constants;
+    constants = CURRENT_CONTEXT_FIELD(constants);
     sig_args  = constants[CUR_OPCODE[1]]->u.key;
 
     if (!VTABLE_elements(interp, sig_args))
@@ -1747,8 +1748,8 @@
         L1 = NATIVECODE;
         emitm_calll(NATIVECODE, 0);
         /* check type of return value */
-        constants = CONTEXT(interp)->constants;
-        result = CONTEXT(interp)->current_results;
+        constants = CURRENT_CONTEXT_FIELD(constants);
+        result = CURRENT_CONTEXT_FIELD(current_results);
         sig_result = constants[result[1]]->u.key;
         if (!VTABLE_elements(interp, sig_result))
             goto no_result;

Modified: branches/context_pmc3/src/jit_defs.c
==============================================================================
--- branches/context_pmc3/src/jit_defs.c	Sat Aug 22 07:45:49 2009	(r40712)
+++ branches/context_pmc3/src/jit_defs.c	Sat Aug 22 07:58:00 2009	(r40713)
@@ -871,7 +871,7 @@
     }
 #endif
     /* get base pointer */
-    // XXX Broken.
+    // XXX Broken!
     //emitm_movl_m_r(interp, jit_info->native_ptr, emit_EBX, emit_EBX, 0, 1,
     //        offsetof(Interp, ctx.bp));
 


More information about the parrot-commits mailing list