#551: t/pmc/nci.t:  2 test failures
---------------------+------------------------------------------------------
 Reporter:  jkeenan  |       Owner:                 
     Type:  bug      |      Status:  new            
 Priority:  normal   |   Milestone:                 
Component:  none     |     Version:                 
 Severity:  medium   |    Keywords:  pmc nci pointer
     Lang:           |       Patch:                 
 Platform:           |  
---------------------+------------------------------------------------------
Changes (by rg):

 * cc: r...@… (added)


Comment:

 Replying to [comment:6 whiteknight]:

 > Any opinions on this?

 I think you wouldn't even need to allocate a buffer. The only API change
 required would be to return the address of the pointer instead of the
 pointer itself, or maybe instead add a different function to request the
 pointer address. I was about to try this, but it's not working for test
 66, yet.

 You definitely need to add this diff to fix the stack after the vtable
 call (sorry for inlining):
 {{{
 --- src/jit/i386/jit_defs.c     (revision 38087)
 +++ src/jit/i386/jit_defs.c     (working copy)
 @@ -2273,6 +2273,9 @@
                  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);
 +                /* reset ESP(4) */
 +                emitm_lea_m_r(interp, pc, emit_EAX, emit_EBP, 0, 1,
 st_offset);
 +                emitm_movl_r_m(interp, pc, emit_EAX, emit_EBP, 0, 1,
 temp_calls_offset + 4);
                  break;
              case 'b':   /* buffer (void*) pass PObj_bufstart(SReg) */
                  emitm_call_cfunc(pc, get_nci_S);
 }}}
 Maybe combined with your own fix attempt, this will get you further ;)

-- 
Ticket URL: <https://trac.parrot.org/parrot/ticket/551#comment:7>
Parrot <https://trac.parrot.org/parrot/>
Parrot Development
_______________________________________________
parrot-tickets mailing list
[email protected]
http://lists.parrot.org/mailman/listinfo/parrot-tickets

Reply via email to