[svn:parrot] r38052 - trunk/src/jit/i386
whiteknight at svn.parrot.org
whiteknight at svn.parrot.org
Sat Apr 11 03:20:47 UTC 2009
Author: whiteknight
Date: Sat Apr 11 03:20:45 2009
New Revision: 38052
URL: https://trac.parrot.org/parrot/changeset/38052
Log:
attempted JIT fix, since my earlier commit apparently broke it. I'm not on i386, so if anybody is, please test this and let me know if I borked it worse please
Modified:
trunk/src/jit/i386/jit_defs.c
Modified: trunk/src/jit/i386/jit_defs.c
==============================================================================
--- trunk/src/jit/i386/jit_defs.c Sat Apr 11 02:24:42 2009 (r38051)
+++ trunk/src/jit/i386/jit_defs.c Sat Apr 11 03:20:45 2009 (r38052)
@@ -2267,8 +2267,11 @@
break;
case 'V':
emitm_call_cfunc(pc, get_nci_P);
- emitm_lea_m_r(interp, pc, emit_EAX, emit_EAX, 0, 1, offsetof(struct PMC, data));
- /* emitm_lea_m_r(interp, pc, emit_EAX, emit_EAX, 0, 1, 0); */
+ emitm_movl_r_m(interp, pc, emit_EAX, emit_EBP, 0, 1, temp_calls_offset + 4);
+ /* Call the get_pointer VTABLE on the Pointer PMC to get the returned pointer */
+ emitm_movl_m_r(interp, pc, emit_EAX, emit_EAX, 0, 1, offsetof(PMC, vtable));
+ emitm_movl_m_r(interp, pc, emit_EAX, emit_EAX, 0, 1, offsetof(VTABLE, get_pointer));
+ emitm_callr(pc, emit_EAX);
emitm_movl_r_m(interp, pc, emit_EAX, emit_EBP, 0, 1, args_offset);
break;
case 'b': /* buffer (void*) pass PObj_bufstart(SReg) */
More information about the parrot-commits
mailing list