| Index: src/runtime/runtime-literals.cc
|
| diff --git a/src/runtime/runtime-literals.cc b/src/runtime/runtime-literals.cc
|
| index 3e1c710e3b8e72ac48f195275712498989991343..836273c1c9658f5bdc49914ab1c69fdee7c26a1b 100644
|
| --- a/src/runtime/runtime-literals.cc
|
| +++ b/src/runtime/runtime-literals.cc
|
| @@ -39,8 +39,7 @@ MUST_USE_RESULT static MaybeHandle<Object> CreateLiteralBoilerplate(
|
|
|
| MUST_USE_RESULT static MaybeHandle<Object> CreateObjectLiteralBoilerplate(
|
| Isolate* isolate, Handle<LiteralsArray> literals,
|
| - Handle<FixedArray> constant_properties, bool should_have_fast_elements,
|
| - bool has_function_literal) {
|
| + Handle<FixedArray> constant_properties, bool should_have_fast_elements) {
|
| Handle<Context> context = isolate->native_context();
|
|
|
| // In case we have function literals, we want the object to be in
|
| @@ -48,10 +47,8 @@ MUST_USE_RESULT static MaybeHandle<Object> CreateObjectLiteralBoilerplate(
|
| // maps with constant functions can't be shared if the functions are
|
| // not the same (which is the common case).
|
| bool is_result_from_cache = false;
|
| - Handle<Map> map = has_function_literal
|
| - ? Handle<Map>(context->object_function()->initial_map())
|
| - : ComputeObjectLiteralMap(context, constant_properties,
|
| - &is_result_from_cache);
|
| + Handle<Map> map = ComputeObjectLiteralMap(context, constant_properties,
|
| + &is_result_from_cache);
|
|
|
| PretenureFlag pretenure_flag =
|
| isolate->heap()->InNewSpace(*literals) ? NOT_TENURED : TENURED;
|
| @@ -66,7 +63,7 @@ MUST_USE_RESULT static MaybeHandle<Object> CreateObjectLiteralBoilerplate(
|
| int length = constant_properties->length();
|
| bool should_transform =
|
| !is_result_from_cache && boilerplate->HasFastProperties();
|
| - bool should_normalize = should_transform || has_function_literal;
|
| + bool should_normalize = should_transform;
|
| if (should_normalize) {
|
| // TODO(verwaest): We might not want to ever normalize here.
|
| JSObject::NormalizeProperties(boilerplate, KEEP_INOBJECT_PROPERTIES,
|
| @@ -104,7 +101,7 @@ MUST_USE_RESULT static MaybeHandle<Object> CreateObjectLiteralBoilerplate(
|
| // containing function literals we defer this operation until after all
|
| // computed properties have been assigned so that we can generate
|
| // constant function properties.
|
| - if (should_transform && !has_function_literal) {
|
| + if (should_transform) {
|
| JSObject::MigrateSlowToFast(boilerplate,
|
| boilerplate->map()->unused_property_fields(),
|
| "FastLiteral");
|
| @@ -187,14 +184,11 @@ MUST_USE_RESULT static MaybeHandle<Object> CreateLiteralBoilerplate(
|
| Isolate* isolate, Handle<LiteralsArray> literals,
|
| Handle<FixedArray> array) {
|
| Handle<FixedArray> elements = CompileTimeValue::GetElements(array);
|
| - const bool kHasNoFunctionLiteral = false;
|
| switch (CompileTimeValue::GetLiteralType(array)) {
|
| case CompileTimeValue::OBJECT_LITERAL_FAST_ELEMENTS:
|
| - return CreateObjectLiteralBoilerplate(isolate, literals, elements, true,
|
| - kHasNoFunctionLiteral);
|
| + return CreateObjectLiteralBoilerplate(isolate, literals, elements, true);
|
| case CompileTimeValue::OBJECT_LITERAL_SLOW_ELEMENTS:
|
| - return CreateObjectLiteralBoilerplate(isolate, literals, elements, false,
|
| - kHasNoFunctionLiteral);
|
| + return CreateObjectLiteralBoilerplate(isolate, literals, elements, false);
|
| case CompileTimeValue::ARRAY_LITERAL:
|
| return Runtime::CreateArrayLiteralBoilerplate(isolate, literals,
|
| elements);
|
| @@ -233,7 +227,6 @@ RUNTIME_FUNCTION(Runtime_CreateObjectLiteral) {
|
| CONVERT_SMI_ARG_CHECKED(flags, 3);
|
| Handle<LiteralsArray> literals(closure->literals(), isolate);
|
| bool should_have_fast_elements = (flags & ObjectLiteral::kFastElements) != 0;
|
| - bool has_function_literal = (flags & ObjectLiteral::kHasFunction) != 0;
|
| bool enable_mementos = (flags & ObjectLiteral::kDisableMementos) == 0;
|
|
|
| RUNTIME_ASSERT(literals_index >= 0 &&
|
| @@ -248,8 +241,7 @@ RUNTIME_FUNCTION(Runtime_CreateObjectLiteral) {
|
| ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
| isolate, raw_boilerplate,
|
| CreateObjectLiteralBoilerplate(isolate, literals, constant_properties,
|
| - should_have_fast_elements,
|
| - has_function_literal));
|
| + should_have_fast_elements));
|
| boilerplate = Handle<JSObject>::cast(raw_boilerplate);
|
|
|
| AllocationSiteCreationContext creation_context(isolate);
|
|
|