Ticket #1280: cage.patch

File cage.patch, 1.3 KB (added by jimmy, 5 years ago)
  • src/oo.c

     
    939939Parrot_find_method_with_cache(PARROT_INTERP, ARGIN(PMC *_class), ARGIN(STRING *method_name)) 
    940940{ 
    941941    ASSERT_ARGS(Parrot_find_method_with_cache) 
    942     UINTVAL type, bits; 
    943942 
     943    UINTVAL type, bits; 
    944944    Caches           *mc; 
    945     Meth_cache_entry *e, *old; 
     945    Meth_cache_entry *e; 
    946946 
    947947    PARROT_ASSERT(method_name != 0); 
    948948 
    949949#if DISABLE_METH_CACHE 
    950950    return Parrot_find_method_direct(interp, _class, method_name); 
    951 #endif 
     951#else 
    952952 
    953953    if (! PObj_constant_TEST(method_name)) 
    954954        return Parrot_find_method_direct(interp, _class, method_name); 
     
    975975    } 
    976976 
    977977    e   = mc->idx[type][bits]; 
    978     old = NULL; 
    979978 
    980979    while (e && e->strstart != method_name->strstart) { 
    981         old = e; 
    982980        e   = e->next; 
    983981    } 
    984982 
     
    986984        /* when here no or no correct entry was at [bits] */ 
    987985        e     = mem_allocate_typed(Meth_cache_entry); 
    988986 
    989         if (old) 
    990             old->next = e; 
    991         else 
    992             mc->idx[type][bits] = e; 
     987        mc->idx[type][bits] = e; 
    993988 
    994989        e->pmc      = Parrot_find_method_direct(interp, _class, method_name); 
    995990        e->next     = NULL; 
     
    997992    } 
    998993 
    999994    return e->pmc; 
     995 
     996#endif 
    1000997} 
    1001998 
    1002999