Ticket #551: donthandle.patch

File donthandle.patch, 2.2 KB (added by rg, 5 years ago)

simplest workaround: don't handle 'V' signature

  • src/jit/i386/jit_defs.c

     
    22652265                break; 
    22662266            case 'v': 
    22672267                break; 
    2268             case 'V': 
    2269                 emitm_call_cfunc(pc, get_nci_P); 
    2270                 emitm_movl_r_m(interp, pc, emit_EAX, emit_EBP, 0, 1, temp_calls_offset + 4); 
    2271                 /* Call the get_pointer VTABLE on the Pointer PMC to get the returned pointer */ 
    2272                 emitm_movl_m_r(interp, pc, emit_EAX, emit_EAX, 0, 1, offsetof(PMC, vtable)); 
    2273                 emitm_movl_m_r(interp, pc, emit_EAX, emit_EAX, 0, 1, offsetof(VTABLE, get_pointer)); 
    2274                 emitm_callr(pc, emit_EAX); 
    2275                 emitm_movl_r_m(interp, pc, emit_EAX, emit_EBP, 0, 1, args_offset); 
    2276                 break; 
    22772268            case 'b':   /* buffer (void*) pass PObj_bufstart(SReg) */ 
    22782269                emitm_call_cfunc(pc, get_nci_S); 
    22792270                emitm_movl_m_r(interp, pc, emit_EAX, emit_EAX, 0, 1, 
     
    22962287            case '2': 
    22972288            case '3': 
    22982289            case '4': 
     2290            case 'V': 
    22992291                mem_free_executable(jit_info.native_ptr, JIT_ALLOC_SIZE); 
    23002292                return NULL; 
    23012293                break; 
  • t/pmc/nci.t

     
    264726473 
    26482648OUTPUT 
    26492649 
    2650 { 
    2651     local $TODO = 0; 
    2652     if ($PConfig{jitcapable}){ 
    2653         $TODO = "TT #551 - jitted NCI sig with V is broken"; 
    2654     } 
    26552650pir_output_is( << 'CODE', << 'OUTPUT', "nci_vVi - void** out parameter" ); 
    26562651.sub test :main 
    26572652    .local string library_name 
     
    26742669CODE 
    26752670got 10 
    26762671OUTPUT 
    2677 } 
    26782672 
    26792673pir_output_is( << 'CODE', << 'OUTPUT', "nci_ttt - t_tt parameter" ); 
    26802674.sub test :main 
     
    271227061 
    27132707OUTPUT 
    27142708 
    2715 { 
    2716     local $TODO = 0; 
    2717     if ($PConfig{jitcapable}){ 
    2718         $TODO = "TT #551 - jitted NCI sig with V is broken"; 
    2719     } 
    27202709pir_output_is( << 'CODE', << 'OUTPUT', "nci_vV - char** out parameter" ); 
    27212710.sub test :main 
    27222711    .local string library_name 
     
    27642753It is a beautiful day! 
    27652754Go suck a lemon. 
    27662755OUTPUT 
    2767 } 
    27682756 
    27692757# Local Variables: 
    27702758#   mode: cperl