| Index: src/ast.h
|
| ===================================================================
|
| --- src/ast.h (revision 1510)
|
| +++ src/ast.h (working copy)
|
| @@ -95,7 +95,6 @@
|
|
|
| // Forward declarations
|
| class TargetCollector;
|
| -class MaterializedLiteral;
|
|
|
| #define DEF_FORWARD_DECLARATION(type) class type;
|
| NODE_LIST(DEF_FORWARD_DECLARATION)
|
| @@ -130,9 +129,6 @@
|
| virtual BinaryOperation* AsBinaryOperation() { return NULL; }
|
| virtual Assignment* AsAssignment() { return NULL; }
|
| virtual FunctionLiteral* AsFunctionLiteral() { return NULL; }
|
| - virtual MaterializedLiteral* AsMaterializedLiteral() { return NULL; }
|
| - virtual ObjectLiteral* AsObjectLiteral() { return NULL; }
|
| - virtual ArrayLiteral* AsArrayLiteral() { return NULL; }
|
|
|
| void set_statement_pos(int statement_pos) { statement_pos_ = statement_pos; }
|
| int statement_pos() const { return statement_pos_; }
|
| @@ -640,20 +636,11 @@
|
| // Base class for literals that needs space in the corresponding JSFunction.
|
| class MaterializedLiteral: public Expression {
|
| public:
|
| - explicit MaterializedLiteral(int literal_index, bool is_simple)
|
| - : literal_index_(literal_index), is_simple_(is_simple) {}
|
| -
|
| - virtual MaterializedLiteral* AsMaterializedLiteral() { return this; }
|
| -
|
| + explicit MaterializedLiteral(int literal_index)
|
| + : literal_index_(literal_index) {}
|
| int literal_index() { return literal_index_; }
|
| -
|
| - // A materialized literal is simple if the values consist of only
|
| - // constants and simple object and array literals.
|
| - bool is_simple() const { return is_simple_; }
|
| -
|
| private:
|
| int literal_index_;
|
| - bool is_simple_;
|
| };
|
|
|
|
|
| @@ -668,11 +655,10 @@
|
| public:
|
|
|
| enum Kind {
|
| - CONSTANT, // Property with constant value (compile time).
|
| - COMPUTED, // Property with computed value (execution time).
|
| - MATERIALIZED_LITERAL, // Property value is a materialized literal.
|
| - GETTER, SETTER, // Property is an accessor function.
|
| - PROTOTYPE // Property is __proto__.
|
| + CONSTANT, // Property with constant value (at compile time).
|
| + COMPUTED, // Property with computed value (at execution time).
|
| + GETTER, SETTER, // Property is an accessor function.
|
| + PROTOTYPE // Property is __proto__.
|
| };
|
|
|
| Property(Literal* key, Expression* value);
|
| @@ -690,13 +676,12 @@
|
|
|
| ObjectLiteral(Handle<FixedArray> constant_properties,
|
| ZoneList<Property*>* properties,
|
| - int literal_index,
|
| - bool is_simple)
|
| - : MaterializedLiteral(literal_index, is_simple),
|
| + int literal_index)
|
| + : MaterializedLiteral(literal_index),
|
| constant_properties_(constant_properties),
|
| - properties_(properties) {}
|
| + properties_(properties) {
|
| + }
|
|
|
| - virtual ObjectLiteral* AsObjectLiteral() { return this; }
|
| virtual void Accept(AstVisitor* v);
|
|
|
| Handle<FixedArray> constant_properties() const {
|
| @@ -716,7 +701,7 @@
|
| RegExpLiteral(Handle<String> pattern,
|
| Handle<String> flags,
|
| int literal_index)
|
| - : MaterializedLiteral(literal_index, false),
|
| + : MaterializedLiteral(literal_index),
|
| pattern_(pattern),
|
| flags_(flags) {}
|
|
|
| @@ -732,18 +717,14 @@
|
|
|
| // An array literal has a literals object that is used
|
| // for minimizing the work when constructing it at runtime.
|
| -class ArrayLiteral: public MaterializedLiteral {
|
| +class ArrayLiteral: public Expression {
|
| public:
|
| ArrayLiteral(Handle<FixedArray> literals,
|
| - ZoneList<Expression*>* values,
|
| - int literal_index,
|
| - bool is_simple)
|
| - : MaterializedLiteral(literal_index, is_simple),
|
| - literals_(literals),
|
| - values_(values) {}
|
| + ZoneList<Expression*>* values)
|
| + : literals_(literals), values_(values) {
|
| + }
|
|
|
| virtual void Accept(AstVisitor* v);
|
| - virtual ArrayLiteral* AsArrayLiteral() { return this; }
|
|
|
| Handle<FixedArray> literals() const { return literals_; }
|
| ZoneList<Expression*>* values() const { return values_; }
|
|
|