Index: src/ast.h |
diff --git a/src/ast.h b/src/ast.h |
index 368ff81c733996ba36c0a5ab3e5bde7d1ec5f60a..b43e5bfd58e485f21ba62bbb56ef9564dbb360da 100644 |
--- a/src/ast.h |
+++ b/src/ast.h |
@@ -1467,10 +1467,7 @@ class ObjectLiteralProperty FINAL : public ZoneObject { |
PROTOTYPE // Property is __proto__. |
}; |
- ObjectLiteralProperty(Zone* zone, AstValueFactory* ast_value_factory, |
- Literal* key, Expression* value, bool is_static); |
- |
- Literal* key() { return key_; } |
+ Expression* key() { return key_; } |
Expression* value() { return value_; } |
Kind kind() { return kind_; } |
@@ -1485,20 +1482,26 @@ class ObjectLiteralProperty FINAL : public ZoneObject { |
bool emit_store(); |
bool is_static() const { return is_static_; } |
+ bool is_computed_name() const { return is_computed_name_; } |
protected: |
friend class AstNodeFactory; |
- ObjectLiteralProperty(Zone* zone, bool is_getter, FunctionLiteral* value, |
- bool is_static); |
- void set_key(Literal* key) { key_ = key; } |
+ ObjectLiteralProperty(Zone* zone, AstValueFactory* ast_value_factory, |
+ Expression* key, Expression* value, bool is_static, |
+ bool is_computed_name); |
+ |
+ ObjectLiteralProperty(Zone* zone, bool is_getter, Expression* key, |
+ FunctionLiteral* value, bool is_static, |
+ bool is_computed_name); |
private: |
- Literal* key_; |
+ Expression* key_; |
Expression* value_; |
Kind kind_; |
bool emit_store_; |
bool is_static_; |
+ bool is_computed_name_; |
Handle<Map> receiver_type_; |
}; |
@@ -3374,20 +3377,21 @@ class AstNodeFactory FINAL BASE_EMBEDDED { |
boilerplate_properties, has_function, pos); |
} |
- ObjectLiteral::Property* NewObjectLiteralProperty(Literal* key, |
+ ObjectLiteral::Property* NewObjectLiteralProperty(Expression* key, |
Expression* value, |
- bool is_static) { |
- return new (zone_) ObjectLiteral::Property(zone_, ast_value_factory_, key, |
- value, is_static); |
+ bool is_static, |
+ bool is_computed_name) { |
+ return new (zone_) ObjectLiteral::Property( |
+ zone_, ast_value_factory_, key, value, is_static, is_computed_name); |
} |
ObjectLiteral::Property* NewObjectLiteralProperty(bool is_getter, |
+ Expression* key, |
FunctionLiteral* value, |
- int pos, bool is_static) { |
- ObjectLiteral::Property* prop = |
- new (zone_) ObjectLiteral::Property(zone_, is_getter, value, is_static); |
- prop->set_key(NewStringLiteral(value->raw_name(), pos)); |
- return prop; |
+ int pos, bool is_static, |
+ bool is_computed_name) { |
+ return new (zone_) ObjectLiteral::Property(zone_, is_getter, key, value, |
+ is_static, is_computed_name); |
} |
RegExpLiteral* NewRegExpLiteral(const AstRawString* pattern, |