| Index: src/type-feedback-vector.cc
|
| diff --git a/src/type-feedback-vector.cc b/src/type-feedback-vector.cc
|
| index 79afa2dad2dc31d60d735eaf9f746b1c917159c2..2994cd40d11d7b90989f11f8e135b1a126d8d717 100644
|
| --- a/src/type-feedback-vector.cc
|
| +++ b/src/type-feedback-vector.cc
|
| @@ -393,7 +393,7 @@ int FeedbackNexus::ExtractMaps(int start_index, MapHandleList* maps) const {
|
| for (int i = start_index; i < array->length(); i += 2) {
|
| WeakCell* cell = WeakCell::cast(array->get(i));
|
| if (!cell->cleared()) {
|
| - Map* map = Map::cast(cell->value());
|
| + Map* map = Map::cast(cell->value(isolate->heap()));
|
| maps->Add(handle(map, isolate));
|
| found++;
|
| }
|
| @@ -413,7 +413,10 @@ MaybeHandle<Code> FeedbackNexus::FindHandlerForMap(int start_index,
|
| for (int i = start_index; i < array->length(); i += 2) {
|
| WeakCell* cell = WeakCell::cast(array->get(i));
|
| if (!cell->cleared()) {
|
| - Map* array_map = Map::cast(cell->value());
|
| + // Don't need a read barrier because we immediately
|
| + // discard the value unless we already had it from
|
| + // somewhere else.
|
| + Map* array_map = Map::cast(cell->ValueNoReadBarrier());
|
| if (array_map == *map) {
|
| Code* code = Code::cast(array->get(i + 1));
|
| DCHECK(code->kind() == Code::HANDLER);
|
|
|