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 3f97fddcd5d22d0811ffd27d3a7abd0cb3d2ed4c..efa96e2d25a354494ae5b2bc12848b7901355a4f 100644 |
--- a/src/ic/arm64/handler-compiler-arm64.cc |
+++ b/src/ic/arm64/handler-compiler-arm64.cc |
@@ -516,8 +516,9 @@ Register PropertyHandlerCompiler::CheckPrototypes( |
name) == NameDictionary::kNotFound)); |
if (depth > 1) { |
- // TODO(jkummerow): Cache and re-use weak cell. |
- __ LoadWeakValue(reg, isolate()->factory()->NewWeakCell(current), miss); |
+ Handle<WeakCell> weak_cell = |
+ Map::GetOrCreatePrototypeWeakCell(current, isolate()); |
+ __ LoadWeakValue(reg, weak_cell, miss); |
} |
GenerateDictionaryNegativeLookup(masm(), miss, reg, name, scratch1, |
scratch2); |
@@ -536,7 +537,9 @@ Register PropertyHandlerCompiler::CheckPrototypes( |
bool return_holder = return_what == RETURN_HOLDER; |
if (return_holder && depth != 0) { |
- __ LoadWeakValue(reg, isolate()->factory()->NewWeakCell(current), miss); |
+ Handle<WeakCell> weak_cell = |
+ Map::GetOrCreatePrototypeWeakCell(current, isolate()); |
+ __ LoadWeakValue(reg, weak_cell, miss); |
} |
// Return the register containing the holder. |