| Index: src/runtime/runtime-literals.cc
|
| diff --git a/src/runtime/runtime-literals.cc b/src/runtime/runtime-literals.cc
|
| index c6efd02dbab4ed09d9ca6f7188d6d5363fd69bad..8bbe0eeddb0da455bc92903e026a81a558e11b4c 100644
|
| --- a/src/runtime/runtime-literals.cc
|
| +++ b/src/runtime/runtime-literals.cc
|
| @@ -17,53 +17,22 @@ namespace internal {
|
| static Handle<Map> ComputeObjectLiteralMap(
|
| Handle<Context> context, Handle<FixedArray> constant_properties,
|
| bool* is_result_from_cache) {
|
| - Isolate* isolate = context->GetIsolate();
|
| int properties_length = constant_properties->length();
|
| int number_of_properties = properties_length / 2;
|
| - // Check that there are only internal strings and array indices among keys.
|
| - int number_of_string_keys = 0;
|
| +
|
| for (int p = 0; p != properties_length; p += 2) {
|
| Object* key = constant_properties->get(p);
|
| uint32_t element_index = 0;
|
| - if (key->IsInternalizedString()) {
|
| - number_of_string_keys++;
|
| - } else if (key->ToArrayIndex(&element_index)) {
|
| + if (key->ToArrayIndex(&element_index)) {
|
| // An index key does not require space in the property backing store.
|
| number_of_properties--;
|
| - } else {
|
| - // Bail out as a non-internalized-string non-index key makes caching
|
| - // impossible.
|
| - // DCHECK to make sure that the if condition after the loop is false.
|
| - DCHECK(number_of_string_keys != number_of_properties);
|
| - break;
|
| - }
|
| - }
|
| - // If we only have internalized strings and array indices among keys then we
|
| - // can use the map cache in the native context.
|
| - const int kMaxKeys = 10;
|
| - if ((number_of_string_keys == number_of_properties) &&
|
| - (number_of_string_keys < kMaxKeys)) {
|
| - // Create the fixed array with the key.
|
| - Handle<FixedArray> keys =
|
| - isolate->factory()->NewFixedArray(number_of_string_keys);
|
| - if (number_of_string_keys > 0) {
|
| - int index = 0;
|
| - for (int p = 0; p < properties_length; p += 2) {
|
| - Object* key = constant_properties->get(p);
|
| - if (key->IsInternalizedString()) {
|
| - keys->set(index++, key);
|
| - }
|
| - }
|
| - DCHECK(index == number_of_string_keys);
|
| }
|
| - *is_result_from_cache = true;
|
| - return isolate->factory()->ObjectLiteralMapFromCache(context, keys);
|
| }
|
| - *is_result_from_cache = false;
|
| - return Map::Create(isolate, number_of_properties);
|
| + Isolate* isolate = context->GetIsolate();
|
| + return isolate->factory()->ObjectLiteralMapFromCache(
|
| + context, number_of_properties, is_result_from_cache);
|
| }
|
|
|
| -
|
| MUST_USE_RESULT static MaybeHandle<Object> CreateLiteralBoilerplate(
|
| Isolate* isolate, Handle<FixedArray> literals,
|
| Handle<FixedArray> constant_properties);
|
| @@ -169,7 +138,6 @@ MUST_USE_RESULT static MaybeHandle<Object> CreateObjectLiteralBoilerplate(
|
| boilerplate->map()->unused_property_fields(),
|
| "FastLiteral");
|
| }
|
| -
|
| return boilerplate;
|
| }
|
|
|
|
|