| Index: src/ic/mips/handler-compiler-mips.cc
|
| diff --git a/src/ic/mips/handler-compiler-mips.cc b/src/ic/mips/handler-compiler-mips.cc
|
| index 8a7b6aa8229ae38bdd851ee828d8b02ba2ce10bf..2a8d3b86f18adea2de25370046e7c91cd8a40b22 100644
|
| --- a/src/ic/mips/handler-compiler-mips.cc
|
| +++ b/src/ic/mips/handler-compiler-mips.cc
|
| @@ -412,11 +412,11 @@ Register PropertyHandlerCompiler::CheckPrototypes(
|
| __ lw(reg, FieldMemOperand(scratch1, Map::kPrototypeOffset));
|
| } else {
|
| Register map_reg = scratch1;
|
| + __ lw(map_reg, FieldMemOperand(reg, HeapObject::kMapOffset));
|
| if (depth != 1 || check == CHECK_ALL_MAPS) {
|
| - // CheckMap implicitly loads the map of |reg| into |map_reg|.
|
| - __ CheckMap(reg, map_reg, current_map, miss, DONT_DO_SMI_CHECK);
|
| - } else {
|
| - __ lw(map_reg, FieldMemOperand(reg, HeapObject::kMapOffset));
|
| + Handle<WeakCell> cell = Map::WeakCellForMap(current_map);
|
| + __ CmpWeakValue(scratch2, map_reg, cell);
|
| + __ Branch(miss, ne, scratch2, Operand(zero_reg));
|
| }
|
|
|
| // Check access rights to the global object. This has to happen after
|
| @@ -447,7 +447,10 @@ Register PropertyHandlerCompiler::CheckPrototypes(
|
|
|
| if (depth != 0 || check == CHECK_ALL_MAPS) {
|
| // Check the holder map.
|
| - __ CheckMap(reg, scratch1, current_map, miss, DONT_DO_SMI_CHECK);
|
| + __ lw(scratch1, FieldMemOperand(reg, HeapObject::kMapOffset));
|
| + Handle<WeakCell> cell = Map::WeakCellForMap(current_map);
|
| + __ CmpWeakValue(scratch2, scratch1, cell);
|
| + __ Branch(miss, ne, scratch2, Operand(zero_reg));
|
| }
|
|
|
| // Perform security check for access to the global object.
|
|
|