| Index: src/ic/arm/handler-compiler-arm.cc
|
| diff --git a/src/ic/arm/handler-compiler-arm.cc b/src/ic/arm/handler-compiler-arm.cc
|
| index 3a0756a77b24d9fe1542c2ca9912b56a1fa58634..8827d36bf26fa50d13601de6b2c212b80fd081c4 100644
|
| --- a/src/ic/arm/handler-compiler-arm.cc
|
| +++ b/src/ic/arm/handler-compiler-arm.cc
|
| @@ -416,11 +416,11 @@ Register PropertyHandlerCompiler::CheckPrototypes(
|
| __ ldr(reg, FieldMemOperand(scratch1, Map::kPrototypeOffset));
|
| } else {
|
| Register map_reg = scratch1;
|
| + __ ldr(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 {
|
| - __ ldr(map_reg, FieldMemOperand(reg, HeapObject::kMapOffset));
|
| + Handle<WeakCell> cell = Map::WeakCellForMap(current_map);
|
| + __ CmpWeakValue(map_reg, cell, scratch2);
|
| + __ b(ne, miss);
|
| }
|
|
|
| // Check access rights to the global object. This has to happen after
|
| @@ -451,7 +451,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);
|
| + __ ldr(scratch1, FieldMemOperand(reg, HeapObject::kMapOffset));
|
| + Handle<WeakCell> cell = Map::WeakCellForMap(current_map);
|
| + __ CmpWeakValue(scratch1, cell, scratch2);
|
| + __ b(ne, miss);
|
| }
|
|
|
| // Perform security check for access to the global object.
|
|
|