| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index 258390c4d5cb2b62ff079e31d90de3e5595b6fcb..96c92a7e71846f3ab9cebeafab273eada75191cb 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -14899,16 +14899,19 @@ Handle<CompilationCacheTable> CompilationCacheTable::Put(
|
| Handle<SharedFunctionInfo> shared(context->closure()->shared());
|
| StringSharedKey key(src, shared, FLAG_use_strict ? STRICT : SLOPPY,
|
| RelocInfo::kNoPosition);
|
| - int entry = cache->FindEntry(&key);
|
| - if (entry != kNotFound) {
|
| + {
|
| Handle<Object> k = key.AsHandle(isolate);
|
| - cache->set(EntryToIndex(entry), *k);
|
| - cache->set(EntryToIndex(entry) + 1, *value);
|
| - return cache;
|
| + DisallowHeapAllocation no_allocation_scope;
|
| + int entry = cache->FindEntry(&key);
|
| + if (entry != kNotFound) {
|
| + cache->set(EntryToIndex(entry), *k);
|
| + cache->set(EntryToIndex(entry) + 1, *value);
|
| + return cache;
|
| + }
|
| }
|
|
|
| cache = EnsureCapacity(cache, 1, &key);
|
| - entry = cache->FindInsertionEntry(key.Hash());
|
| + int entry = cache->FindInsertionEntry(key.Hash());
|
| Handle<Object> k =
|
| isolate->factory()->NewNumber(static_cast<double>(key.Hash()));
|
| cache->set(EntryToIndex(entry), *k);
|
| @@ -14924,16 +14927,19 @@ Handle<CompilationCacheTable> CompilationCacheTable::PutEval(
|
| int scope_position) {
|
| Isolate* isolate = cache->GetIsolate();
|
| StringSharedKey key(src, outer_info, value->strict_mode(), scope_position);
|
| - int entry = cache->FindEntry(&key);
|
| - if (entry != kNotFound) {
|
| + {
|
| Handle<Object> k = key.AsHandle(isolate);
|
| - cache->set(EntryToIndex(entry), *k);
|
| - cache->set(EntryToIndex(entry) + 1, *value);
|
| - return cache;
|
| + DisallowHeapAllocation no_allocation_scope;
|
| + int entry = cache->FindEntry(&key);
|
| + if (entry != kNotFound) {
|
| + cache->set(EntryToIndex(entry), *k);
|
| + cache->set(EntryToIndex(entry) + 1, *value);
|
| + return cache;
|
| + }
|
| }
|
|
|
| cache = EnsureCapacity(cache, 1, &key);
|
| - entry = cache->FindInsertionEntry(key.Hash());
|
| + int entry = cache->FindInsertionEntry(key.Hash());
|
| Handle<Object> k =
|
| isolate->factory()->NewNumber(static_cast<double>(key.Hash()));
|
| cache->set(EntryToIndex(entry), *k);
|
|
|