Ticket #452: integer_nommd_is_equal.patch

File integer_nommd_is_equal.patch, 1.2 KB (added by cotto, 6 years ago)

switch Integer from is_equal MULTI to is_equal VTABLE

  • src/pmc/integer.pmc

     
    11491149 
    11501150*/ 
    11511151 
    1152     MULTI INTVAL is_equal(BigInt value) { 
    1153         PMC * const temp = pmc_new(INTERP, enum_class_BigInt); 
    1154         VTABLE_set_integer_native(INTERP, temp, SELF.get_integer()); 
    1155         return Parrot_BigInt_multi_is_equal_BigInt(INTERP, temp, value); 
    1156     } 
     1152    VTABLE INTVAL is_equal(PMC *value) { 
     1153        PMC *temp; 
    11571154 
    1158  
    1159     MULTI INTVAL is_equal(DEFAULT value) { 
    1160         return (VTABLE_get_integer(INTERP, SELF) 
    1161             ==  VTABLE_get_integer(INTERP, value)); 
     1155        switch (value->vtable->base_type) { 
     1156            case enum_class_BigInt: 
     1157                temp = pmc_new(INTERP, enum_class_BigInt); 
     1158                VTABLE_set_integer_native(INTERP, temp, SELF.get_integer()); 
     1159                return Parrot_BigInt_multi_is_equal_BigInt(INTERP, temp, value); 
     1160                break; 
     1161            default: 
     1162                return (VTABLE_get_integer(INTERP, SELF) 
     1163                    ==  VTABLE_get_integer(INTERP, value)); 
     1164                break; 
     1165        } 
    11621166    } 
    11631167 
    11641168