| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index cf9f65dcf6ccb5496cb91d0cb5bcd86e46b974b9..aa9984000086e372087aeb1adc52613d5fcff29b 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -4441,8 +4441,6 @@ Handle<NormalizedMapCache> NormalizedMapCache::New(Isolate* isolate) {
|
|
|
| MaybeHandle<Map> NormalizedMapCache::Get(Handle<Map> fast_map,
|
| PropertyNormalizationMode mode) {
|
| - // Only use the cache once it is initialized.
|
| - if (!IsNormalizedMapCache(this)) return MaybeHandle<Map>();
|
| DisallowHeapAllocation no_gc;
|
| Object* value = FixedArray::get(GetIndex(fast_map));
|
| if (!value->IsMap() ||
|
| @@ -4455,8 +4453,6 @@ MaybeHandle<Map> NormalizedMapCache::Get(Handle<Map> fast_map,
|
|
|
| void NormalizedMapCache::Set(Handle<Map> fast_map,
|
| Handle<Map> normalized_map) {
|
| - // Only use the cache once it is initialized.
|
| - if (!IsNormalizedMapCache(this)) return;
|
| DisallowHeapAllocation no_gc;
|
| DCHECK(normalized_map->is_dictionary_map());
|
| FixedArray::set(GetIndex(fast_map), *normalized_map);
|
| @@ -6980,11 +6976,14 @@ Handle<Map> Map::Normalize(Handle<Map> fast_map,
|
| DCHECK(!fast_map->is_dictionary_map());
|
|
|
| Isolate* isolate = fast_map->GetIsolate();
|
| - Handle<NormalizedMapCache> cache(
|
| - isolate->context()->native_context()->normalized_map_cache());
|
| + Handle<Object> maybe_cache(isolate->native_context()->normalized_map_cache(),
|
| + isolate);
|
| + bool use_cache = !maybe_cache->IsUndefined();
|
| + Handle<NormalizedMapCache> cache;
|
| + if (use_cache) cache = Handle<NormalizedMapCache>::cast(maybe_cache);
|
|
|
| Handle<Map> new_map;
|
| - if (cache->Get(fast_map, mode).ToHandle(&new_map)) {
|
| + if (use_cache && cache->Get(fast_map, mode).ToHandle(&new_map)) {
|
| #ifdef VERIFY_HEAP
|
| if (FLAG_verify_heap) new_map->DictionaryMapVerify();
|
| #endif
|
| @@ -7008,8 +7007,10 @@ Handle<Map> Map::Normalize(Handle<Map> fast_map,
|
| #endif
|
| } else {
|
| new_map = Map::CopyNormalized(fast_map, mode);
|
| - cache->Set(fast_map, new_map);
|
| - isolate->counters()->normalized_maps()->Increment();
|
| + if (use_cache) {
|
| + cache->Set(fast_map, new_map);
|
| + isolate->counters()->normalized_maps()->Increment();
|
| + }
|
| }
|
| fast_map->NotifyLeafMapLayoutChange();
|
| return new_map;
|
|
|