Index: src/type-feedback-vector.cc |
diff --git a/src/type-feedback-vector.cc b/src/type-feedback-vector.cc |
index 05f510e865128ddf65c7d936fc8ada6eec3bdef3..db7489391e2553bc33bc52f36a998087dcb2f38b 100644 |
--- a/src/type-feedback-vector.cc |
+++ b/src/type-feedback-vector.cc |
@@ -279,11 +279,19 @@ void TypeFeedbackVector::ClearAllKeyedStoreICs(Isolate* isolate) { |
int length = optimized_code_map->length(); |
for (int i = SharedFunctionInfo::kEntriesStart; i < length; |
i += SharedFunctionInfo::kEntryLength) { |
- WeakCell* cell = WeakCell::cast( |
- optimized_code_map->get(i + SharedFunctionInfo::kLiteralsOffset)); |
- if (cell->value()->IsLiteralsArray()) { |
- TypeFeedbackVector* vector = |
- LiteralsArray::cast(cell->value())->feedback_vector(); |
+ Object* lits = |
+ optimized_code_map->get(i + SharedFunctionInfo::kLiteralsOffset); |
+ TypeFeedbackVector* vector = NULL; |
Michael Starzinger
2016/06/07 09:41:37
nit: s/NULL/nullptr/
mvstanton
2016/06/07 11:35:33
Done.
|
+ if (lits->IsWeakCell()) { |
+ WeakCell* cell = WeakCell::cast(lits); |
+ if (cell->value()->IsLiteralsArray()) { |
+ vector = LiteralsArray::cast(cell->value())->feedback_vector(); |
+ } |
+ } else { |
+ DCHECK(lits->IsLiteralsArray()); |
+ vector = LiteralsArray::cast(lits)->feedback_vector(); |
+ } |
+ if (vector != NULL) { |
Michael Starzinger
2016/06/07 09:41:37
nit: s/NULL/nullptr/
mvstanton
2016/06/07 11:35:33
Done.
|
vector->ClearKeyedStoreICs(shared); |
} |
} |