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; |
} |