Index: src/ic/arm64/handler-compiler-arm64.cc |
diff --git a/src/ic/arm64/handler-compiler-arm64.cc b/src/ic/arm64/handler-compiler-arm64.cc |
index 9e1b55b82c1d137e8516f65fada5678a78533702..8571faec714fa05b8a250b4d88310d21aa15cb6b 100644 |
--- a/src/ic/arm64/handler-compiler-arm64.cc |
+++ b/src/ic/arm64/handler-compiler-arm64.cc |
@@ -461,7 +461,9 @@ Register PropertyHandlerCompiler::CheckPrototypes( |
__ Ldr(map_reg, FieldMemOperand(reg, HeapObject::kMapOffset)); |
if (depth != 1 || check == CHECK_ALL_MAPS) { |
- __ CheckMap(map_reg, current_map, miss, DONT_DO_SMI_CHECK); |
+ 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 |
@@ -494,7 +496,10 @@ Register PropertyHandlerCompiler::CheckPrototypes( |
// Check the holder map. |
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. |