Ticket #1215: tt1215.patch

File tt1215.patch, 55.1 KB (added by soh_cah_toa, 11 years ago)

This should work now. 'make bootstrap-ops' ran with no errors.

  • src/ops/core_ops.c

    diff --git a/src/ops/core_ops.c b/src/ops/core_ops.c
    index 9985434..91355de 100644
    a b  
    6969 
    7070 
    7171 
     72PARROT_WARN_UNUSED_RESULT 
     73PMC * 
     74parrot_pmc_new_from_type(PARROT_INTERP, ARGIN(PMC *key)) 
     75{ 
     76    PMC *pmc; 
     77    PMC *const classobj = Parrot_oo_get_class(interp, key); 
     78 
     79    if (!PMC_IS_NULL(classobj)) 
     80        pmc = VTABLE_instantiate(interp, classobj, PMCNULL); 
     81    else { 
     82        const INTVAL type = Parrot_pmc_get_type(interp, key); 
     83 
     84        if (type <= 0) { 
     85            Parrot_ex_throw_from_c_args(interp, NULL, 
     86                EXCEPTION_NO_CLASS, "Class '%Ss' not found", 
     87                VTABLE_get_repr(interp, key)); 
     88        } 
     89 
     90        pmc = Parrot_pmc_new(interp, type); 
     91    } 
     92 
     93    return pmc; 
     94} 
     95 
     96 
     97 
    7298INTVAL core_numops = 1072; 
    7399 
    74100/* 
     
    2222722253Parrot_fetch_p_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2222822254    PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PREG(3)); 
    2222922255    if (PMC_IS_NULL(PREG(1))) { 
    22230         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    22231  
    22232         if ((!PMC_IS_NULL(classobj))) { 
    22233             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22234         } 
    22235         else { 
    22236             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    22237  
    22238             if ((type <= 0)) { 
    22239                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    22240  
    22241                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22242                 return (opcode_t *)dest; 
    22243             } 
    22244  
    22245             PREG(1) = Parrot_pmc_new(interp, type); 
    22246         } 
    22247  
     22256        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2224822257    } 
    2224922258 
    2225022259    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2225522264Parrot_fetch_p_pc_p_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2225622265    PREG(1) = VTABLE_get_pmc_keyed(interp, PCONST(2), PREG(3)); 
    2225722266    if (PMC_IS_NULL(PREG(1))) { 
    22258         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    22259  
    22260         if ((!PMC_IS_NULL(classobj))) { 
    22261             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22262         } 
    22263         else { 
    22264             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    22265  
    22266             if ((type <= 0)) { 
    22267                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    22268  
    22269                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22270                 return (opcode_t *)dest; 
    22271             } 
    22272  
    22273             PREG(1) = Parrot_pmc_new(interp, type); 
    22274         } 
    22275  
     22267        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2227622268    } 
    2227722269 
    2227822270    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2228322275Parrot_fetch_p_p_pc_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2228422276    PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PCONST(3)); 
    2228522277    if (PMC_IS_NULL(PREG(1))) { 
    22286         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    22287  
    22288         if ((!PMC_IS_NULL(classobj))) { 
    22289             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22290         } 
    22291         else { 
    22292             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    22293  
    22294             if ((type <= 0)) { 
    22295                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    22296  
    22297                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22298                 return (opcode_t *)dest; 
    22299             } 
    22300  
    22301             PREG(1) = Parrot_pmc_new(interp, type); 
    22302         } 
    22303  
     22278        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2230422279    } 
    2230522280 
    2230622281    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2231122286Parrot_fetch_p_pc_pc_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2231222287    PREG(1) = VTABLE_get_pmc_keyed(interp, PCONST(2), PCONST(3)); 
    2231322288    if (PMC_IS_NULL(PREG(1))) { 
    22314         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    22315  
    22316         if ((!PMC_IS_NULL(classobj))) { 
    22317             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22318         } 
    22319         else { 
    22320             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    22321  
    22322             if ((type <= 0)) { 
    22323                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    22324  
    22325                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22326                 return (opcode_t *)dest; 
    22327             } 
    22328  
    22329             PREG(1) = Parrot_pmc_new(interp, type); 
    22330         } 
    22331  
     22289        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2233222290    } 
    2233322291 
    2233422292    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2233922297Parrot_fetch_p_p_p_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2234022298    PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PREG(3)); 
    2234122299    if (PMC_IS_NULL(PREG(1))) { 
    22342         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    22343  
    22344         if ((!PMC_IS_NULL(classobj))) { 
    22345             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22346         } 
    22347         else { 
    22348             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    22349  
    22350             if ((type <= 0)) { 
    22351                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    22352  
    22353                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22354                 return (opcode_t *)dest; 
    22355             } 
    22356  
    22357             PREG(1) = Parrot_pmc_new(interp, type); 
    22358         } 
    22359  
     22300        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2236022301    } 
    2236122302 
    2236222303    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2236722308Parrot_fetch_p_pc_p_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2236822309    PREG(1) = VTABLE_get_pmc_keyed(interp, PCONST(2), PREG(3)); 
    2236922310    if (PMC_IS_NULL(PREG(1))) { 
    22370         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    22371  
    22372         if ((!PMC_IS_NULL(classobj))) { 
    22373             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22374         } 
    22375         else { 
    22376             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    22377  
    22378             if ((type <= 0)) { 
    22379                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    22380  
    22381                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22382                 return (opcode_t *)dest; 
    22383             } 
    22384  
    22385             PREG(1) = Parrot_pmc_new(interp, type); 
    22386         } 
    22387  
     22311        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2238822312    } 
    2238922313 
    2239022314    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2239522319Parrot_fetch_p_p_pc_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2239622320    PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PCONST(3)); 
    2239722321    if (PMC_IS_NULL(PREG(1))) { 
    22398         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    22399  
    22400         if ((!PMC_IS_NULL(classobj))) { 
    22401             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22402         } 
    22403         else { 
    22404             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    22405  
    22406             if ((type <= 0)) { 
    22407                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    22408  
    22409                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22410                 return (opcode_t *)dest; 
    22411             } 
    22412  
    22413             PREG(1) = Parrot_pmc_new(interp, type); 
    22414         } 
    22415  
     22322        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2241622323    } 
    2241722324 
    2241822325    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2242322330Parrot_fetch_p_pc_pc_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2242422331    PREG(1) = VTABLE_get_pmc_keyed(interp, PCONST(2), PCONST(3)); 
    2242522332    if (PMC_IS_NULL(PREG(1))) { 
    22426         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    22427  
    22428         if ((!PMC_IS_NULL(classobj))) { 
    22429             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22430         } 
    22431         else { 
    22432             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    22433  
    22434             if ((type <= 0)) { 
    22435                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    22436  
    22437                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22438                 return (opcode_t *)dest; 
    22439             } 
    22440  
    22441             PREG(1) = Parrot_pmc_new(interp, type); 
    22442         } 
    22443  
     22333        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2244422334    } 
    2244522335 
    2244622336    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2245122341Parrot_fetch_p_p_i_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2245222342    PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), IREG(3)); 
    2245322343    if (PMC_IS_NULL(PREG(1))) { 
    22454         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    22455  
    22456         if ((!PMC_IS_NULL(classobj))) { 
    22457             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22458         } 
    22459         else { 
    22460             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    22461  
    22462             if ((type <= 0)) { 
    22463                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    22464  
    22465                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22466                 return (opcode_t *)dest; 
    22467             } 
    22468  
    22469             PREG(1) = Parrot_pmc_new(interp, type); 
    22470         } 
    22471  
     22344        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2247222345    } 
    2247322346 
    2247422347    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2247922352Parrot_fetch_p_pc_i_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2248022353    PREG(1) = VTABLE_get_pmc_keyed_int(interp, PCONST(2), IREG(3)); 
    2248122354    if (PMC_IS_NULL(PREG(1))) { 
    22482         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    22483  
    22484         if ((!PMC_IS_NULL(classobj))) { 
    22485             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22486         } 
    22487         else { 
    22488             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    22489  
    22490             if ((type <= 0)) { 
    22491                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    22492  
    22493                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22494                 return (opcode_t *)dest; 
    22495             } 
    22496  
    22497             PREG(1) = Parrot_pmc_new(interp, type); 
    22498         } 
    22499  
     22355        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2250022356    } 
    2250122357 
    2250222358    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2250722363Parrot_fetch_p_p_ic_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2250822364    PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), ICONST(3)); 
    2250922365    if (PMC_IS_NULL(PREG(1))) { 
    22510         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    22511  
    22512         if ((!PMC_IS_NULL(classobj))) { 
    22513             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22514         } 
    22515         else { 
    22516             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    22517  
    22518             if ((type <= 0)) { 
    22519                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    22520  
    22521                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22522                 return (opcode_t *)dest; 
    22523             } 
    22524  
    22525             PREG(1) = Parrot_pmc_new(interp, type); 
    22526         } 
    22527  
     22366        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2252822367    } 
    2252922368 
    2253022369    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2253522374Parrot_fetch_p_pc_ic_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2253622375    PREG(1) = VTABLE_get_pmc_keyed_int(interp, PCONST(2), ICONST(3)); 
    2253722376    if (PMC_IS_NULL(PREG(1))) { 
    22538         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    22539  
    22540         if ((!PMC_IS_NULL(classobj))) { 
    22541             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22542         } 
    22543         else { 
    22544             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    22545  
    22546             if ((type <= 0)) { 
    22547                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    22548  
    22549                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22550                 return (opcode_t *)dest; 
    22551             } 
    22552  
    22553             PREG(1) = Parrot_pmc_new(interp, type); 
    22554         } 
    22555  
     22377        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2255622378    } 
    2255722379 
    2255822380    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2256322385Parrot_fetch_p_p_i_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2256422386    PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), IREG(3)); 
    2256522387    if (PMC_IS_NULL(PREG(1))) { 
    22566         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    22567  
    22568         if ((!PMC_IS_NULL(classobj))) { 
    22569             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22570         } 
    22571         else { 
    22572             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    22573  
    22574             if ((type <= 0)) { 
    22575                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    22576  
    22577                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22578                 return (opcode_t *)dest; 
    22579             } 
    22580  
    22581             PREG(1) = Parrot_pmc_new(interp, type); 
    22582         } 
    22583  
     22388        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2258422389    } 
    2258522390 
    2258622391    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2259122396Parrot_fetch_p_pc_i_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2259222397    PREG(1) = VTABLE_get_pmc_keyed_int(interp, PCONST(2), IREG(3)); 
    2259322398    if (PMC_IS_NULL(PREG(1))) { 
    22594         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    22595  
    22596         if ((!PMC_IS_NULL(classobj))) { 
    22597             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22598         } 
    22599         else { 
    22600             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    22601  
    22602             if ((type <= 0)) { 
    22603                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    22604  
    22605                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22606                 return (opcode_t *)dest; 
    22607             } 
    22608  
    22609             PREG(1) = Parrot_pmc_new(interp, type); 
    22610         } 
    22611  
     22399        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2261222400    } 
    2261322401 
    2261422402    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2261922407Parrot_fetch_p_p_ic_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2262022408    PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), ICONST(3)); 
    2262122409    if (PMC_IS_NULL(PREG(1))) { 
    22622         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    22623  
    22624         if ((!PMC_IS_NULL(classobj))) { 
    22625             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22626         } 
    22627         else { 
    22628             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    22629  
    22630             if ((type <= 0)) { 
    22631                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    22632  
    22633                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22634                 return (opcode_t *)dest; 
    22635             } 
    22636  
    22637             PREG(1) = Parrot_pmc_new(interp, type); 
    22638         } 
    22639  
     22410        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2264022411    } 
    2264122412 
    2264222413    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2264722418Parrot_fetch_p_pc_ic_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2264822419    PREG(1) = VTABLE_get_pmc_keyed_int(interp, PCONST(2), ICONST(3)); 
    2264922420    if (PMC_IS_NULL(PREG(1))) { 
    22650         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    22651  
    22652         if ((!PMC_IS_NULL(classobj))) { 
    22653             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22654         } 
    22655         else { 
    22656             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    22657  
    22658             if ((type <= 0)) { 
    22659                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    22660  
    22661                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22662                 return (opcode_t *)dest; 
    22663             } 
    22664  
    22665             PREG(1) = Parrot_pmc_new(interp, type); 
    22666         } 
    22667  
     22421        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2266822422    } 
    2266922423 
    2267022424    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2267522429Parrot_fetch_p_p_s_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2267622430    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SREG(3)); 
    2267722431    if (PMC_IS_NULL(PREG(1))) { 
    22678         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    22679  
    22680         if ((!PMC_IS_NULL(classobj))) { 
    22681             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22682         } 
    22683         else { 
    22684             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    22685  
    22686             if ((type <= 0)) { 
    22687                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    22688  
    22689                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22690                 return (opcode_t *)dest; 
    22691             } 
    22692  
    22693             PREG(1) = Parrot_pmc_new(interp, type); 
    22694         } 
    22695  
     22432        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2269622433    } 
    2269722434 
    2269822435    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2270322440Parrot_fetch_p_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2270422441    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PCONST(2), SREG(3)); 
    2270522442    if (PMC_IS_NULL(PREG(1))) { 
    22706         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    22707  
    22708         if ((!PMC_IS_NULL(classobj))) { 
    22709             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22710         } 
    22711         else { 
    22712             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    22713  
    22714             if ((type <= 0)) { 
    22715                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    22716  
    22717                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22718                 return (opcode_t *)dest; 
    22719             } 
    22720  
    22721             PREG(1) = Parrot_pmc_new(interp, type); 
    22722         } 
    22723  
     22443        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2272422444    } 
    2272522445 
    2272622446    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2273122451Parrot_fetch_p_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2273222452    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SCONST(3)); 
    2273322453    if (PMC_IS_NULL(PREG(1))) { 
    22734         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    22735  
    22736         if ((!PMC_IS_NULL(classobj))) { 
    22737             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22738         } 
    22739         else { 
    22740             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    22741  
    22742             if ((type <= 0)) { 
    22743                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    22744  
    22745                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22746                 return (opcode_t *)dest; 
    22747             } 
    22748  
    22749             PREG(1) = Parrot_pmc_new(interp, type); 
    22750         } 
    22751  
     22454        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2275222455    } 
    2275322456 
    2275422457    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2275922462Parrot_fetch_p_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2276022463    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PCONST(2), SCONST(3)); 
    2276122464    if (PMC_IS_NULL(PREG(1))) { 
    22762         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    22763  
    22764         if ((!PMC_IS_NULL(classobj))) { 
    22765             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22766         } 
    22767         else { 
    22768             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    22769  
    22770             if ((type <= 0)) { 
    22771                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    22772  
    22773                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22774                 return (opcode_t *)dest; 
    22775             } 
    22776  
    22777             PREG(1) = Parrot_pmc_new(interp, type); 
    22778         } 
    22779  
     22465        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2278022466    } 
    2278122467 
    2278222468    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2278722473Parrot_fetch_p_p_s_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2278822474    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SREG(3)); 
    2278922475    if (PMC_IS_NULL(PREG(1))) { 
    22790         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    22791  
    22792         if ((!PMC_IS_NULL(classobj))) { 
    22793             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22794         } 
    22795         else { 
    22796             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    22797  
    22798             if ((type <= 0)) { 
    22799                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    22800  
    22801                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22802                 return (opcode_t *)dest; 
    22803             } 
    22804  
    22805             PREG(1) = Parrot_pmc_new(interp, type); 
    22806         } 
    22807  
     22476        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2280822477    } 
    2280922478 
    2281022479    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2281522484Parrot_fetch_p_pc_s_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2281622485    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PCONST(2), SREG(3)); 
    2281722486    if (PMC_IS_NULL(PREG(1))) { 
    22818         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    22819  
    22820         if ((!PMC_IS_NULL(classobj))) { 
    22821             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22822         } 
    22823         else { 
    22824             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    22825  
    22826             if ((type <= 0)) { 
    22827                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    22828  
    22829                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22830                 return (opcode_t *)dest; 
    22831             } 
    22832  
    22833             PREG(1) = Parrot_pmc_new(interp, type); 
    22834         } 
    22835  
     22487        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2283622488    } 
    2283722489 
    2283822490    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2284322495Parrot_fetch_p_p_sc_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2284422496    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SCONST(3)); 
    2284522497    if (PMC_IS_NULL(PREG(1))) { 
    22846         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    22847  
    22848         if ((!PMC_IS_NULL(classobj))) { 
    22849             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22850         } 
    22851         else { 
    22852             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    22853  
    22854             if ((type <= 0)) { 
    22855                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    22856  
    22857                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22858                 return (opcode_t *)dest; 
    22859             } 
    22860  
    22861             PREG(1) = Parrot_pmc_new(interp, type); 
    22862         } 
    22863  
     22498        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2286422499    } 
    2286522500 
    2286622501    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2287122506Parrot_fetch_p_pc_sc_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2287222507    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PCONST(2), SCONST(3)); 
    2287322508    if (PMC_IS_NULL(PREG(1))) { 
    22874         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    22875  
    22876         if ((!PMC_IS_NULL(classobj))) { 
    22877             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22878         } 
    22879         else { 
    22880             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    22881  
    22882             if ((type <= 0)) { 
    22883                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    22884  
    22885                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22886                 return (opcode_t *)dest; 
    22887             } 
    22888  
    22889             PREG(1) = Parrot_pmc_new(interp, type); 
    22890         } 
    22891  
     22509        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2289222510    } 
    2289322511 
    2289422512    PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
     
    2289922517Parrot_vivify_p_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2290022518    PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PREG(3)); 
    2290122519    if (PMC_IS_NULL(PREG(1))) { 
    22902         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    22903  
    22904         if ((!PMC_IS_NULL(classobj))) { 
    22905             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22906         } 
    22907         else { 
    22908             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    22909  
    22910             if ((type <= 0)) { 
    22911                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    22912  
    22913                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22914                 return (opcode_t *)dest; 
    22915             } 
    22916  
    22917             PREG(1) = Parrot_pmc_new(interp, type); 
    22918         } 
    22919  
     22520        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2292022521        VTABLE_set_pmc_keyed(interp, PREG(2), PREG(3), PREG(1)); 
    2292122522    } 
    2292222523 
     
    2292822529Parrot_vivify_p_pc_p_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2292922530    PREG(1) = VTABLE_get_pmc_keyed(interp, PCONST(2), PREG(3)); 
    2293022531    if (PMC_IS_NULL(PREG(1))) { 
    22931         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    22932  
    22933         if ((!PMC_IS_NULL(classobj))) { 
    22934             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22935         } 
    22936         else { 
    22937             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    22938  
    22939             if ((type <= 0)) { 
    22940                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    22941  
    22942                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22943                 return (opcode_t *)dest; 
    22944             } 
    22945  
    22946             PREG(1) = Parrot_pmc_new(interp, type); 
    22947         } 
    22948  
     22532        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2294922533        VTABLE_set_pmc_keyed(interp, PCONST(2), PREG(3), PREG(1)); 
    2295022534    } 
    2295122535 
     
    2295722541Parrot_vivify_p_p_pc_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2295822542    PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PCONST(3)); 
    2295922543    if (PMC_IS_NULL(PREG(1))) { 
    22960         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    22961  
    22962         if ((!PMC_IS_NULL(classobj))) { 
    22963             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22964         } 
    22965         else { 
    22966             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    22967  
    22968             if ((type <= 0)) { 
    22969                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    22970  
    22971                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    22972                 return (opcode_t *)dest; 
    22973             } 
    22974  
    22975             PREG(1) = Parrot_pmc_new(interp, type); 
    22976         } 
    22977  
     22544        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2297822545        VTABLE_set_pmc_keyed(interp, PREG(2), PCONST(3), PREG(1)); 
    2297922546    } 
    2298022547 
     
    2298622553Parrot_vivify_p_pc_pc_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2298722554    PREG(1) = VTABLE_get_pmc_keyed(interp, PCONST(2), PCONST(3)); 
    2298822555    if (PMC_IS_NULL(PREG(1))) { 
    22989         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    22990  
    22991         if ((!PMC_IS_NULL(classobj))) { 
    22992             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    22993         } 
    22994         else { 
    22995             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    22996  
    22997             if ((type <= 0)) { 
    22998                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    22999  
    23000                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    23001                 return (opcode_t *)dest; 
    23002             } 
    23003  
    23004             PREG(1) = Parrot_pmc_new(interp, type); 
    23005         } 
    23006  
     22556        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2300722557        VTABLE_set_pmc_keyed(interp, PCONST(2), PCONST(3), PREG(1)); 
    2300822558    } 
    2300922559 
     
    2301522565Parrot_vivify_p_p_p_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2301622566    PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PREG(3)); 
    2301722567    if (PMC_IS_NULL(PREG(1))) { 
    23018         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    23019  
    23020         if ((!PMC_IS_NULL(classobj))) { 
    23021             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    23022         } 
    23023         else { 
    23024             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    23025  
    23026             if ((type <= 0)) { 
    23027                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    23028  
    23029                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    23030                 return (opcode_t *)dest; 
    23031             } 
    23032  
    23033             PREG(1) = Parrot_pmc_new(interp, type); 
    23034         } 
    23035  
     22568        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2303622569        VTABLE_set_pmc_keyed(interp, PREG(2), PREG(3), PREG(1)); 
    2303722570    } 
    2303822571 
     
    2304422577Parrot_vivify_p_pc_p_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2304522578    PREG(1) = VTABLE_get_pmc_keyed(interp, PCONST(2), PREG(3)); 
    2304622579    if (PMC_IS_NULL(PREG(1))) { 
    23047         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    23048  
    23049         if ((!PMC_IS_NULL(classobj))) { 
    23050             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    23051         } 
    23052         else { 
    23053             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    23054  
    23055             if ((type <= 0)) { 
    23056                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    23057  
    23058                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    23059                 return (opcode_t *)dest; 
    23060             } 
    23061  
    23062             PREG(1) = Parrot_pmc_new(interp, type); 
    23063         } 
    23064  
     22580        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2306522581        VTABLE_set_pmc_keyed(interp, PCONST(2), PREG(3), PREG(1)); 
    2306622582    } 
    2306722583 
     
    2307322589Parrot_vivify_p_p_pc_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2307422590    PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PCONST(3)); 
    2307522591    if (PMC_IS_NULL(PREG(1))) { 
    23076         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    23077  
    23078         if ((!PMC_IS_NULL(classobj))) { 
    23079             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    23080         } 
    23081         else { 
    23082             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    23083  
    23084             if ((type <= 0)) { 
    23085                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    23086  
    23087                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    23088                 return (opcode_t *)dest; 
    23089             } 
    23090  
    23091             PREG(1) = Parrot_pmc_new(interp, type); 
    23092         } 
    23093  
     22592        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2309422593        VTABLE_set_pmc_keyed(interp, PREG(2), PCONST(3), PREG(1)); 
    2309522594    } 
    2309622595 
     
    2310222601Parrot_vivify_p_pc_pc_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2310322602    PREG(1) = VTABLE_get_pmc_keyed(interp, PCONST(2), PCONST(3)); 
    2310422603    if (PMC_IS_NULL(PREG(1))) { 
    23105         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    23106  
    23107         if ((!PMC_IS_NULL(classobj))) { 
    23108             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    23109         } 
    23110         else { 
    23111             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    23112  
    23113             if ((type <= 0)) { 
    23114                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    23115  
    23116                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    23117                 return (opcode_t *)dest; 
    23118             } 
    23119  
    23120             PREG(1) = Parrot_pmc_new(interp, type); 
    23121         } 
    23122  
     22604        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2312322605        VTABLE_set_pmc_keyed(interp, PCONST(2), PCONST(3), PREG(1)); 
    2312422606    } 
    2312522607 
     
    2313122613Parrot_vivify_p_p_i_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2313222614    PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), IREG(3)); 
    2313322615    if (PMC_IS_NULL(PREG(1))) { 
    23134         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    23135  
    23136         if ((!PMC_IS_NULL(classobj))) { 
    23137             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    23138         } 
    23139         else { 
    23140             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    23141  
    23142             if ((type <= 0)) { 
    23143                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    23144  
    23145                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    23146                 return (opcode_t *)dest; 
    23147             } 
    23148  
    23149             PREG(1) = Parrot_pmc_new(interp, type); 
    23150         } 
    23151  
     22616        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2315222617        VTABLE_set_pmc_keyed_int(interp, PREG(2), IREG(3), PREG(1)); 
    2315322618    } 
    2315422619 
     
    2316022625Parrot_vivify_p_pc_i_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2316122626    PREG(1) = VTABLE_get_pmc_keyed_int(interp, PCONST(2), IREG(3)); 
    2316222627    if (PMC_IS_NULL(PREG(1))) { 
    23163         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    23164  
    23165         if ((!PMC_IS_NULL(classobj))) { 
    23166             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    23167         } 
    23168         else { 
    23169             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    23170  
    23171             if ((type <= 0)) { 
    23172                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    23173  
    23174                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    23175                 return (opcode_t *)dest; 
    23176             } 
    23177  
    23178             PREG(1) = Parrot_pmc_new(interp, type); 
    23179         } 
    23180  
     22628        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2318122629        VTABLE_set_pmc_keyed_int(interp, PCONST(2), IREG(3), PREG(1)); 
    2318222630    } 
    2318322631 
     
    2318922637Parrot_vivify_p_p_ic_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2319022638    PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), ICONST(3)); 
    2319122639    if (PMC_IS_NULL(PREG(1))) { 
    23192         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    23193  
    23194         if ((!PMC_IS_NULL(classobj))) { 
    23195             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    23196         } 
    23197         else { 
    23198             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    23199  
    23200             if ((type <= 0)) { 
    23201                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    23202  
    23203                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    23204                 return (opcode_t *)dest; 
    23205             } 
    23206  
    23207             PREG(1) = Parrot_pmc_new(interp, type); 
    23208         } 
    23209  
     22640        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2321022641        VTABLE_set_pmc_keyed_int(interp, PREG(2), ICONST(3), PREG(1)); 
    2321122642    } 
    2321222643 
     
    2321822649Parrot_vivify_p_pc_ic_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2321922650    PREG(1) = VTABLE_get_pmc_keyed_int(interp, PCONST(2), ICONST(3)); 
    2322022651    if (PMC_IS_NULL(PREG(1))) { 
    23221         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    23222  
    23223         if ((!PMC_IS_NULL(classobj))) { 
    23224             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    23225         } 
    23226         else { 
    23227             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    23228  
    23229             if ((type <= 0)) { 
    23230                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    23231  
    23232                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    23233                 return (opcode_t *)dest; 
    23234             } 
    23235  
    23236             PREG(1) = Parrot_pmc_new(interp, type); 
    23237         } 
    23238  
     22652        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2323922653        VTABLE_set_pmc_keyed_int(interp, PCONST(2), ICONST(3), PREG(1)); 
    2324022654    } 
    2324122655 
     
    2324722661Parrot_vivify_p_p_i_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2324822662    PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), IREG(3)); 
    2324922663    if (PMC_IS_NULL(PREG(1))) { 
    23250         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    23251  
    23252         if ((!PMC_IS_NULL(classobj))) { 
    23253             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    23254         } 
    23255         else { 
    23256             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    23257  
    23258             if ((type <= 0)) { 
    23259                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    23260  
    23261                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    23262                 return (opcode_t *)dest; 
    23263             } 
    23264  
    23265             PREG(1) = Parrot_pmc_new(interp, type); 
    23266         } 
    23267  
     22664        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2326822665        VTABLE_set_pmc_keyed_int(interp, PREG(2), IREG(3), PREG(1)); 
    2326922666    } 
    2327022667 
     
    2327622673Parrot_vivify_p_pc_i_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2327722674    PREG(1) = VTABLE_get_pmc_keyed_int(interp, PCONST(2), IREG(3)); 
    2327822675    if (PMC_IS_NULL(PREG(1))) { 
    23279         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    23280  
    23281         if ((!PMC_IS_NULL(classobj))) { 
    23282             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    23283         } 
    23284         else { 
    23285             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    23286  
    23287             if ((type <= 0)) { 
    23288                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    23289  
    23290                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    23291                 return (opcode_t *)dest; 
    23292             } 
    23293  
    23294             PREG(1) = Parrot_pmc_new(interp, type); 
    23295         } 
    23296  
     22676        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2329722677        VTABLE_set_pmc_keyed_int(interp, PCONST(2), IREG(3), PREG(1)); 
    2329822678    } 
    2329922679 
     
    2330522685Parrot_vivify_p_p_ic_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2330622686    PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), ICONST(3)); 
    2330722687    if (PMC_IS_NULL(PREG(1))) { 
    23308         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    23309  
    23310         if ((!PMC_IS_NULL(classobj))) { 
    23311             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    23312         } 
    23313         else { 
    23314             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    23315  
    23316             if ((type <= 0)) { 
    23317                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    23318  
    23319                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    23320                 return (opcode_t *)dest; 
    23321             } 
    23322  
    23323             PREG(1) = Parrot_pmc_new(interp, type); 
    23324         } 
    23325  
     22688        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2332622689        VTABLE_set_pmc_keyed_int(interp, PREG(2), ICONST(3), PREG(1)); 
    2332722690    } 
    2332822691 
     
    2333422697Parrot_vivify_p_pc_ic_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2333522698    PREG(1) = VTABLE_get_pmc_keyed_int(interp, PCONST(2), ICONST(3)); 
    2333622699    if (PMC_IS_NULL(PREG(1))) { 
    23337         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    23338  
    23339         if ((!PMC_IS_NULL(classobj))) { 
    23340             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    23341         } 
    23342         else { 
    23343             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    23344  
    23345             if ((type <= 0)) { 
    23346                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    23347  
    23348                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    23349                 return (opcode_t *)dest; 
    23350             } 
    23351  
    23352             PREG(1) = Parrot_pmc_new(interp, type); 
    23353         } 
    23354  
     22700        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2335522701        VTABLE_set_pmc_keyed_int(interp, PCONST(2), ICONST(3), PREG(1)); 
    2335622702    } 
    2335722703 
     
    2336322709Parrot_vivify_p_p_s_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2336422710    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SREG(3)); 
    2336522711    if (PMC_IS_NULL(PREG(1))) { 
    23366         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    23367  
    23368         if ((!PMC_IS_NULL(classobj))) { 
    23369             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    23370         } 
    23371         else { 
    23372             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    23373  
    23374             if ((type <= 0)) { 
    23375                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    23376  
    23377                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    23378                 return (opcode_t *)dest; 
    23379             } 
    23380  
    23381             PREG(1) = Parrot_pmc_new(interp, type); 
    23382         } 
    23383  
     22712        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2338422713        VTABLE_set_pmc_keyed_str(interp, PREG(2), SREG(3), PREG(1)); 
    2338522714    } 
    2338622715 
     
    2339222721Parrot_vivify_p_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2339322722    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PCONST(2), SREG(3)); 
    2339422723    if (PMC_IS_NULL(PREG(1))) { 
    23395         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    23396  
    23397         if ((!PMC_IS_NULL(classobj))) { 
    23398             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    23399         } 
    23400         else { 
    23401             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    23402  
    23403             if ((type <= 0)) { 
    23404                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    23405  
    23406                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    23407                 return (opcode_t *)dest; 
    23408             } 
    23409  
    23410             PREG(1) = Parrot_pmc_new(interp, type); 
    23411         } 
    23412  
     22724        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2341322725        VTABLE_set_pmc_keyed_str(interp, PCONST(2), SREG(3), PREG(1)); 
    2341422726    } 
    2341522727 
     
    2342122733Parrot_vivify_p_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2342222734    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SCONST(3)); 
    2342322735    if (PMC_IS_NULL(PREG(1))) { 
    23424         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    23425  
    23426         if ((!PMC_IS_NULL(classobj))) { 
    23427             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    23428         } 
    23429         else { 
    23430             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    23431  
    23432             if ((type <= 0)) { 
    23433                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    23434  
    23435                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    23436                 return (opcode_t *)dest; 
    23437             } 
    23438  
    23439             PREG(1) = Parrot_pmc_new(interp, type); 
    23440         } 
    23441  
     22736        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2344222737        VTABLE_set_pmc_keyed_str(interp, PREG(2), SCONST(3), PREG(1)); 
    2344322738    } 
    2344422739 
     
    2345022745Parrot_vivify_p_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP) { 
    2345122746    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PCONST(2), SCONST(3)); 
    2345222747    if (PMC_IS_NULL(PREG(1))) { 
    23453         PMC  * const  classobj = Parrot_oo_get_class(interp, PREG(4)); 
    23454  
    23455         if ((!PMC_IS_NULL(classobj))) { 
    23456             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    23457         } 
    23458         else { 
    23459             const INTVAL   type = Parrot_pmc_get_type(interp, PREG(4)); 
    23460  
    23461             if ((type <= 0)) { 
    23462                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4))); 
    23463  
    23464                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    23465                 return (opcode_t *)dest; 
    23466             } 
    23467  
    23468             PREG(1) = Parrot_pmc_new(interp, type); 
    23469         } 
    23470  
     22748        PREG(1) = parrot_pmc_new_from_type(interp, PREG(4)); 
    2347122749        VTABLE_set_pmc_keyed_str(interp, PCONST(2), SCONST(3), PREG(1)); 
    2347222750    } 
    2347322751 
     
    2347922757Parrot_vivify_p_p_s_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2348022758    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SREG(3)); 
    2348122759    if (PMC_IS_NULL(PREG(1))) { 
    23482         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    23483  
    23484         if ((!PMC_IS_NULL(classobj))) { 
    23485             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    23486         } 
    23487         else { 
    23488             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    23489  
    23490             if ((type <= 0)) { 
    23491                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    23492  
    23493                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    23494                 return (opcode_t *)dest; 
    23495             } 
    23496  
    23497             PREG(1) = Parrot_pmc_new(interp, type); 
    23498         } 
    23499  
     22760        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2350022761        VTABLE_set_pmc_keyed_str(interp, PREG(2), SREG(3), PREG(1)); 
    2350122762    } 
    2350222763 
     
    2350822769Parrot_vivify_p_pc_s_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2350922770    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PCONST(2), SREG(3)); 
    2351022771    if (PMC_IS_NULL(PREG(1))) { 
    23511         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    23512  
    23513         if ((!PMC_IS_NULL(classobj))) { 
    23514             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    23515         } 
    23516         else { 
    23517             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    23518  
    23519             if ((type <= 0)) { 
    23520                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    23521  
    23522                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    23523                 return (opcode_t *)dest; 
    23524             } 
    23525  
    23526             PREG(1) = Parrot_pmc_new(interp, type); 
    23527         } 
    23528  
     22772        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2352922773        VTABLE_set_pmc_keyed_str(interp, PCONST(2), SREG(3), PREG(1)); 
    2353022774    } 
    2353122775 
     
    2353722781Parrot_vivify_p_p_sc_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2353822782    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SCONST(3)); 
    2353922783    if (PMC_IS_NULL(PREG(1))) { 
    23540         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    23541  
    23542         if ((!PMC_IS_NULL(classobj))) { 
    23543             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    23544         } 
    23545         else { 
    23546             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    23547  
    23548             if ((type <= 0)) { 
    23549                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    23550  
    23551                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    23552                 return (opcode_t *)dest; 
    23553             } 
    23554  
    23555             PREG(1) = Parrot_pmc_new(interp, type); 
    23556         } 
    23557  
     22784        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2355822785        VTABLE_set_pmc_keyed_str(interp, PREG(2), SCONST(3), PREG(1)); 
    2355922786    } 
    2356022787 
     
    2356622793Parrot_vivify_p_pc_sc_pc(opcode_t *cur_opcode, PARROT_INTERP) { 
    2356722794    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PCONST(2), SCONST(3)); 
    2356822795    if (PMC_IS_NULL(PREG(1))) { 
    23569         PMC  * const  classobj = Parrot_oo_get_class(interp, PCONST(4)); 
    23570  
    23571         if ((!PMC_IS_NULL(classobj))) { 
    23572             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL); 
    23573         } 
    23574         else { 
    23575             const INTVAL   type = Parrot_pmc_get_type(interp, PCONST(4)); 
    23576  
    23577             if ((type <= 0)) { 
    23578                 opcode_t  * dest = Parrot_ex_throw_from_op_args(interp,  cur_opcode + 5, EXCEPTION_NO_CLASS, "Class '%Ss' not found", VTABLE_get_repr(interp, PCONST(4))); 
    23579  
    23580                 PARROT_GC_WRITE_BARRIER(interp, CURRENT_CONTEXT(interp)); 
    23581                 return (opcode_t *)dest; 
    23582             } 
    23583  
    23584             PREG(1) = Parrot_pmc_new(interp, type); 
    23585         } 
    23586  
     22796        PREG(1) = parrot_pmc_new_from_type(interp, PCONST(4)); 
    2358722797        VTABLE_set_pmc_keyed_str(interp, PCONST(2), SCONST(3), PREG(1)); 
    2358822798    } 
    2358922799 
  • src/ops/experimental.ops

    diff --git a/src/ops/experimental.ops b/src/ops/experimental.ops
    index ec288ac..88a7c89b 100644
    a b  
    22** experimental.ops 
    33*/ 
    44 
     5BEGIN_OPS_PREAMBLE 
     6 
     7PARROT_WARN_UNUSED_RESULT 
     8PMC * 
     9parrot_pmc_new_from_type(PARROT_INTERP, ARGIN(PMC *key)) 
     10{ 
     11    PMC *pmc; 
     12    PMC *const classobj = Parrot_oo_get_class(interp, key); 
     13 
     14    if (!PMC_IS_NULL(classobj)) 
     15        pmc = VTABLE_instantiate(interp, classobj, PMCNULL); 
     16    else { 
     17        const INTVAL type = Parrot_pmc_get_type(interp, key); 
     18 
     19        if (type <= 0) { 
     20            Parrot_ex_throw_from_c_args(interp, NULL, 
     21                EXCEPTION_NO_CLASS, "Class '%Ss' not found", 
     22                VTABLE_get_repr(interp, key)); 
     23        } 
     24 
     25        pmc = Parrot_pmc_new(interp, type); 
     26    } 
     27 
     28    return pmc; 
     29} 
     30 
     31END_OPS_PREAMBLE 
     32 
    533=head1 NAME 
    634 
    735experimental.ops - Experimental Opcodes 
     
    84112 
    85113inline op fetch(out PMC, in PMC, in PMC, in PMC) :base_core { 
    86114    $1 = VTABLE_get_pmc_keyed(interp, $2, $3); 
     115 
    87116    if (PMC_IS_NULL($1)) { 
    88         PMC * const classobj = Parrot_oo_get_class(interp, $4); 
    89         if (!PMC_IS_NULL(classobj)) 
    90             $1 = VTABLE_instantiate(interp, classobj, PMCNULL); 
    91         else { 
    92             const INTVAL type = Parrot_pmc_get_type(interp, $4); 
    93             if (type <= 0) { 
    94                 opcode_t *dest = Parrot_ex_throw_from_op_args( 
    95                     interp, expr NEXT(), EXCEPTION_NO_CLASS, 
    96                     "Class '%Ss' not found", VTABLE_get_repr(interp, $4)); 
    97                 goto ADDRESS(dest); 
    98             } 
    99  
    100             $1 = Parrot_pmc_new(interp, type); 
    101         } 
     117        $1 = parrot_pmc_new_from_type(interp, $4); 
    102118    } 
    103119} 
    104120 
    105121inline op fetch(out PMC, in PMC, in INT, in PMC) :base_core { 
    106122    $1 = VTABLE_get_pmc_keyed_int(interp, $2, $3); 
     123 
    107124    if (PMC_IS_NULL($1)) { 
    108         PMC * const classobj = Parrot_oo_get_class(interp, $4); 
    109         if (!PMC_IS_NULL(classobj)) 
    110             $1 = VTABLE_instantiate(interp, classobj, PMCNULL); 
    111         else { 
    112             const INTVAL type = Parrot_pmc_get_type(interp, $4); 
    113             if (type <= 0) { 
    114                 opcode_t *dest = Parrot_ex_throw_from_op_args( 
    115                     interp, expr NEXT(), EXCEPTION_NO_CLASS, 
    116                     "Class '%Ss' not found", VTABLE_get_repr(interp, $4)); 
    117                 goto ADDRESS(dest); 
    118             } 
    119  
    120             $1 = Parrot_pmc_new(interp, type); 
    121         } 
     125        $1 = parrot_pmc_new_from_type(interp, $4); 
    122126    } 
    123127} 
    124128 
    125129inline op fetch(out PMC, in PMC, in STR, in PMC) :base_core { 
    126130    $1 = VTABLE_get_pmc_keyed_str(interp, $2, $3); 
     131 
    127132    if (PMC_IS_NULL($1)) { 
    128         PMC * const classobj = Parrot_oo_get_class(interp, $4); 
    129         if (!PMC_IS_NULL(classobj)) 
    130             $1 = VTABLE_instantiate(interp, classobj, PMCNULL); 
    131         else { 
    132             const INTVAL type = Parrot_pmc_get_type(interp, $4); 
    133             if (type <= 0) { 
    134                 opcode_t *dest = Parrot_ex_throw_from_op_args( 
    135                     interp, expr NEXT(), EXCEPTION_NO_CLASS, 
    136                     "Class '%Ss' not found", VTABLE_get_repr(interp, $4)); 
    137                 goto ADDRESS(dest); 
    138             } 
    139  
    140             $1 = Parrot_pmc_new(interp, type); 
    141         } 
     133        $1 = parrot_pmc_new_from_type(interp, $4); 
    142134    } 
    143135} 
    144136 
     
    157149    $1 = VTABLE_get_pmc_keyed(interp, $2, $3); 
    158150 
    159151    if (PMC_IS_NULL($1)) { 
    160         PMC * const classobj = Parrot_oo_get_class(interp, $4); 
    161  
    162         if (!PMC_IS_NULL(classobj)) 
    163             $1 = VTABLE_instantiate(interp, classobj, PMCNULL); 
    164         else { 
    165             const INTVAL type = Parrot_pmc_get_type(interp, $4); 
    166             if (type <= 0) { 
    167                 opcode_t *dest = Parrot_ex_throw_from_op_args( 
    168                     interp, expr NEXT(), EXCEPTION_NO_CLASS, 
    169                     "Class '%Ss' not found", VTABLE_get_repr(interp, $4)); 
    170                 goto ADDRESS(dest); 
    171             } 
    172  
    173             $1 = Parrot_pmc_new(interp, type); 
    174         } 
     152        $1 = parrot_pmc_new_from_type(interp, $4); 
     153 
    175154        VTABLE_set_pmc_keyed(interp, $2, $3, $1); 
    176155    } 
    177156} 
     
    180159    $1 = VTABLE_get_pmc_keyed_int(interp, $2, $3); 
    181160 
    182161    if (PMC_IS_NULL($1)) { 
    183         PMC * const classobj = Parrot_oo_get_class(interp, $4); 
    184         if (!PMC_IS_NULL(classobj)) 
    185             $1 = VTABLE_instantiate(interp, classobj, PMCNULL); 
    186         else { 
    187             const INTVAL type = Parrot_pmc_get_type(interp, $4); 
    188             if (type <= 0) { 
    189                 opcode_t *dest = Parrot_ex_throw_from_op_args( 
    190                     interp, expr NEXT(), EXCEPTION_NO_CLASS, 
    191                     "Class '%Ss' not found", VTABLE_get_repr(interp, $4)); 
    192                 goto ADDRESS(dest); 
    193             } 
    194  
    195             $1 = Parrot_pmc_new(interp, type); 
    196         } 
     162        $1 = parrot_pmc_new_from_type(interp, $4); 
    197163 
    198164        VTABLE_set_pmc_keyed_int(interp, $2, $3, $1); 
    199165    } 
     
    203169    $1 = VTABLE_get_pmc_keyed_str(interp, $2, $3); 
    204170 
    205171    if (PMC_IS_NULL($1)) { 
    206         PMC * const classobj = Parrot_oo_get_class(interp, $4); 
    207         if (!PMC_IS_NULL(classobj)) 
    208             $1 = VTABLE_instantiate(interp, classobj, PMCNULL); 
    209         else { 
    210             const INTVAL type = Parrot_pmc_get_type(interp, $4); 
    211             if (type <= 0) { 
    212                 opcode_t *dest = Parrot_ex_throw_from_op_args( 
    213                     interp, expr NEXT(), EXCEPTION_NO_CLASS, 
    214                     "Class '%Ss' not found", VTABLE_get_repr(interp, $4)); 
    215                 goto ADDRESS(dest); 
    216             } 
    217  
    218             $1 = Parrot_pmc_new(interp, type); 
    219         } 
     172        $1 = parrot_pmc_new_from_type(interp, $4); 
    220173 
    221174        VTABLE_set_pmc_keyed_str(interp, $2, $3, $1); 
    222175    }