Index: src/ast/ast.cc |
diff --git a/src/ast/ast.cc b/src/ast/ast.cc |
index ae2cd2955f75526bd3b386b50227f8d2c9559020..7e646e7410aff7b5594eb2af7370c14b6e479e8c 100644 |
--- a/src/ast/ast.cc |
+++ b/src/ast/ast.cc |
@@ -323,27 +323,16 @@ bool FunctionLiteral::NeedsHomeObject(Expression* expr) { |
return expr->AsFunctionLiteral()->scope()->NeedsHomeObject(); |
} |
- |
ObjectLiteralProperty::ObjectLiteralProperty(Expression* key, Expression* value, |
- Kind kind, bool is_static, |
- bool is_computed_name) |
- : key_(key), |
- value_(value), |
+ Kind kind, bool is_computed_name) |
+ : LiteralProperty(key, value, is_computed_name), |
kind_(kind), |
- emit_store_(true), |
- is_static_(is_static), |
- is_computed_name_(is_computed_name) {} |
- |
+ emit_store_(true) {} |
ObjectLiteralProperty::ObjectLiteralProperty(AstValueFactory* ast_value_factory, |
Expression* key, Expression* value, |
- bool is_static, |
bool is_computed_name) |
- : key_(key), |
- value_(value), |
- emit_store_(true), |
- is_static_(is_static), |
- is_computed_name_(is_computed_name) { |
+ : LiteralProperty(key, value, is_computed_name), emit_store_(true) { |
if (!is_computed_name && |
key->AsLiteral()->raw_value()->EqualsString( |
ast_value_factory->proto_string())) { |
@@ -357,13 +346,20 @@ ObjectLiteralProperty::ObjectLiteralProperty(AstValueFactory* ast_value_factory, |
} |
} |
-bool ObjectLiteralProperty::NeedsSetFunctionName() const { |
+bool LiteralProperty::NeedsSetFunctionName() const { |
return is_computed_name_ && |
(value_->IsAnonymousFunctionDefinition() || |
(value_->IsFunctionLiteral() && |
IsConciseMethod(value_->AsFunctionLiteral()->kind()))); |
} |
+ClassLiteralProperty::ClassLiteralProperty(Expression* key, Expression* value, |
+ Kind kind, bool is_static, |
+ bool is_computed_name) |
+ : LiteralProperty(key, value, is_computed_name), |
+ kind_(kind), |
+ is_static_(is_static) {} |
+ |
void ClassLiteral::AssignFeedbackVectorSlots(Isolate* isolate, |
FeedbackVectorSpec* spec, |
FeedbackVectorSlotCache* cache) { |
@@ -375,7 +371,7 @@ void ClassLiteral::AssignFeedbackVectorSlots(Isolate* isolate, |
} |
for (int i = 0; i < properties()->length(); i++) { |
- ObjectLiteral::Property* property = properties()->at(i); |
+ ClassLiteral::Property* property = properties()->at(i); |
Expression* value = property->value(); |
if (FunctionLiteral::NeedsHomeObject(value)) { |
property->SetSlot(spec->AddStoreICSlot()); |