Index: src/compiler/ast-graph-builder.cc |
diff --git a/src/compiler/ast-graph-builder.cc b/src/compiler/ast-graph-builder.cc |
index 87a57bff2f8db069c2cc589cd28c9eb8df23e5f8..5da7af34b1fd7aca23d102fc33133a265bb6a4a9 100644 |
--- a/src/compiler/ast-graph-builder.cc |
+++ b/src/compiler/ast-graph-builder.cc |
@@ -1376,7 +1376,7 @@ void AstGraphBuilder::VisitObjectLiteral(ObjectLiteral* expr) { |
AccessorTable accessor_table(local_zone()); |
for (; property_index < expr->properties()->length(); property_index++) { |
ObjectLiteral::Property* property = expr->properties()->at(property_index); |
- if (property->is_computed_name()) break; |
+ DCHECK(!property->is_computed_name()); |
if (property->IsCompileTimeValue()) continue; |
Literal* key = property->key()->AsLiteral(); |
@@ -1471,67 +1471,6 @@ void AstGraphBuilder::VisitObjectLiteral(ObjectLiteral* expr) { |
Node* call = NewNode(op, literal, name, getter, setter, attr); |
PrepareFrameState(call, it->second->bailout_id); |
} |
- |
- // Object literals have two parts. The "static" part on the left contains no |
- // computed property names, and so we can compute its map ahead of time; see |
- // Runtime_CreateObjectLiteralBoilerplate. The second "dynamic" part starts |
- // with the first computed property name and continues with all properties to |
- // its right. All the code from above initializes the static component of the |
- // object literal, and arranges for the map of the result to reflect the |
- // static order in which the keys appear. For the dynamic properties, we |
- // compile them into a series of "SetOwnProperty" runtime calls. This will |
- // preserve insertion order. |
- for (; property_index < expr->properties()->length(); property_index++) { |
- ObjectLiteral::Property* property = expr->properties()->at(property_index); |
- |
- if (property->kind() == ObjectLiteral::Property::PROTOTYPE) { |
- environment()->Push(environment()->Top()); // Duplicate receiver. |
- VisitForValue(property->value()); |
- Node* value = environment()->Pop(); |
- Node* receiver = environment()->Pop(); |
- const Operator* op = |
- javascript()->CallRuntime(Runtime::kInternalSetPrototype); |
- Node* call = NewNode(op, receiver, value); |
- PrepareFrameState(call, expr->GetIdForPropertySet(property_index)); |
- continue; |
- } |
- |
- environment()->Push(environment()->Top()); // Duplicate receiver. |
- VisitForValue(property->key()); |
- Node* name = BuildToName(environment()->Pop(), |
- expr->GetIdForPropertyName(property_index)); |
- environment()->Push(name); |
- VisitForValue(property->value()); |
- Node* value = environment()->Pop(); |
- Node* key = environment()->Pop(); |
- Node* receiver = environment()->Pop(); |
- BuildSetHomeObject(value, receiver, property); |
- switch (property->kind()) { |
- case ObjectLiteral::Property::CONSTANT: |
- case ObjectLiteral::Property::COMPUTED: |
- case ObjectLiteral::Property::MATERIALIZED_LITERAL: |
- case ObjectLiteral::Property::PROTOTYPE: |
- UNREACHABLE(); // Handled specially above. |
- break; |
- case ObjectLiteral::Property::GETTER: { |
- Node* attr = jsgraph()->Constant(NONE); |
- const Operator* op = javascript()->CallRuntime( |
- Runtime::kDefineGetterPropertyUnchecked, 4); |
- Node* call = NewNode(op, receiver, key, value, attr); |
- PrepareFrameState(call, BailoutId::None()); |
- break; |
- } |
- case ObjectLiteral::Property::SETTER: { |
- Node* attr = jsgraph()->Constant(NONE); |
- const Operator* op = javascript()->CallRuntime( |
- Runtime::kDefineSetterPropertyUnchecked, 4); |
- Node* call = NewNode(op, receiver, key, value, attr); |
- PrepareFrameState(call, BailoutId::None()); |
- break; |
- } |
- } |
- } |
- |
ast_context()->ProduceValue(expr, environment()->Pop()); |
} |
@@ -3069,14 +3008,6 @@ Node* AstGraphBuilder::BuildToBoolean(Node* input, TypeFeedbackId feedback_id) { |
} |
-Node* AstGraphBuilder::BuildToName(Node* input, BailoutId bailout_id) { |
- if (Node* node = TryFastToName(input)) return node; |
- Node* name = NewNode(javascript()->ToName(), input); |
- PrepareFrameState(name, bailout_id, OutputFrameStateCombine::Push()); |
- return name; |
-} |
- |
- |
Node* AstGraphBuilder::BuildToObject(Node* input, BailoutId bailout_id) { |
Node* object = NewNode(javascript()->ToObject(), input); |
PrepareFrameState(object, bailout_id, OutputFrameStateCombine::Push()); |
@@ -3245,24 +3176,6 @@ Node* AstGraphBuilder::TryFastToBoolean(Node* input) { |
} |
-Node* AstGraphBuilder::TryFastToName(Node* input) { |
- switch (input->opcode()) { |
- case IrOpcode::kHeapConstant: { |
- Handle<HeapObject> object = HeapObjectMatcher(input).Value(); |
- if (object->IsName()) return input; |
- break; |
- } |
- case IrOpcode::kJSToString: |
- case IrOpcode::kJSToName: |
- case IrOpcode::kJSTypeOf: |
- return input; |
- default: |
- break; |
- } |
- return nullptr; |
-} |
- |
- |
bool AstGraphBuilder::CheckOsrEntry(IterationStatement* stmt) { |
if (info()->osr_ast_id() == stmt->OsrEntryId()) { |
DCHECK_EQ(-1, info()->osr_expr_stack_height()); |