Ticket #321: tt321_pcc_class.patch

File tt321_pcc_class.patch, 1.3 KB (added by ronaldws, 5 years ago)
  • src/call/pcc.c

     
    29722972                                   sigs, indexes, ctx, sig_obj); 
    29732973 
    29742974    /* Set up the context object for the function invokation */ 
    2975     interp->current_object       = PMCNULL; 
     2975    if (strncmp(signature, "Pi", 2) == 0) { 
     2976        interp->current_object = VTABLE_get_pmc_keyed_int(interp, sig_obj, 0); 
     2977    } 
     2978    else { 
     2979        interp->current_object       = PMCNULL; 
     2980    } 
    29762981    interp->current_cont         = NEED_CONTINUATION; 
    29772982    ctx->current_cont            = ret_cont; 
    29782983    PMC_cont(ret_cont)->from_ctx = Parrot_context_ref(interp, ctx); 
  • src/pmc/class.pmc

     
    335335        meth = Parrot_oo_find_vtable_override_for_class(interp, parent, name); 
    336336 
    337337        if (!PMC_IS_NULL(meth)) { 
    338             Parrot_run_meth_fromc_args(interp, meth, object, name, "v"); 
    339         } 
     338             PMC *sig_obj = Parrot_pcc_build_sig_object_from_varargs(interp, object, "->", NULL); 
     339             Parrot_pcc_invoke_from_sig_object(interp, meth, sig_obj); 
     340             gc_unregister_pmc(interp, sig_obj); 
     341        }   
    340342    } 
    341343} 
    342344