| Index: src/ast/ast.h
|
| diff --git a/src/ast/ast.h b/src/ast/ast.h
|
| index a89fc24fa0364887c572ae129c4da263c79ed370..7bcbffca92b7aad611b4b8196d7675f2bce6fc36 100644
|
| --- a/src/ast/ast.h
|
| +++ b/src/ast/ast.h
|
| @@ -87,7 +87,6 @@ namespace internal {
|
| PROPERTY_NODE_LIST(V) \
|
| CALL_NODE_LIST(V) \
|
| V(FunctionLiteral) \
|
| - V(ClassLiteral) \
|
| V(NativeFunctionLiteral) \
|
| V(Conditional) \
|
| V(VariableProxy) \
|
| @@ -479,10 +478,19 @@ class DoExpression final : public Expression {
|
| void set_block(Block* b) { block_ = b; }
|
| VariableProxy* result() { return result_; }
|
| void set_result(VariableProxy* v) { result_ = v; }
|
| + FunctionLiteral* represented_function() { return represented_function_; }
|
| + void set_represented_function(FunctionLiteral* f) {
|
| + represented_function_ = f;
|
| + }
|
| +
|
| + bool IsAnonymousFunctionDefinition() const;
|
|
|
| protected:
|
| DoExpression(Zone* zone, Block* block, VariableProxy* result, int pos)
|
| - : Expression(zone, pos), block_(block), result_(result) {
|
| + : Expression(zone, pos),
|
| + block_(block),
|
| + result_(result),
|
| + represented_function_(nullptr) {
|
| DCHECK_NOT_NULL(block_);
|
| DCHECK_NOT_NULL(result_);
|
| }
|
| @@ -493,6 +501,7 @@ class DoExpression final : public Expression {
|
|
|
| Block* block_;
|
| VariableProxy* result_;
|
| + FunctionLiteral* represented_function_;
|
| };
|
|
|
|
|
| @@ -2735,81 +2744,6 @@ class FunctionLiteral final : public Expression {
|
| };
|
|
|
|
|
| -class ClassLiteral final : public Expression {
|
| - public:
|
| - typedef ObjectLiteralProperty Property;
|
| -
|
| - DECLARE_NODE_TYPE(ClassLiteral)
|
| -
|
| - Scope* scope() const { return scope_; }
|
| - VariableProxy* class_variable_proxy() const { return class_variable_proxy_; }
|
| - Expression* extends() const { return extends_; }
|
| - void set_extends(Expression* e) { extends_ = e; }
|
| - FunctionLiteral* constructor() const { return constructor_; }
|
| - void set_constructor(FunctionLiteral* f) { constructor_ = f; }
|
| - ZoneList<Property*>* properties() const { return properties_; }
|
| - int start_position() const { return position(); }
|
| - int end_position() const { return end_position_; }
|
| -
|
| - BailoutId EntryId() const { return BailoutId(local_id(0)); }
|
| - BailoutId DeclsId() const { return BailoutId(local_id(1)); }
|
| - BailoutId ExitId() { return BailoutId(local_id(2)); }
|
| - BailoutId CreateLiteralId() const { return BailoutId(local_id(3)); }
|
| - BailoutId PrototypeId() { return BailoutId(local_id(4)); }
|
| -
|
| - // Return an AST id for a property that is used in simulate instructions.
|
| - BailoutId GetIdForProperty(int i) { return BailoutId(local_id(i + 5)); }
|
| -
|
| - // Unlike other AST nodes, this number of bailout IDs allocated for an
|
| - // ClassLiteral can vary, so num_ids() is not a static method.
|
| - int num_ids() const { return parent_num_ids() + 5 + properties()->length(); }
|
| -
|
| - // Object literals need one feedback slot for each non-trivial value, as well
|
| - // as some slots for home objects.
|
| - void AssignFeedbackVectorSlots(Isolate* isolate, FeedbackVectorSpec* spec,
|
| - FeedbackVectorSlotCache* cache);
|
| -
|
| - bool NeedsProxySlot() const {
|
| - return class_variable_proxy() != nullptr &&
|
| - class_variable_proxy()->var()->IsUnallocated();
|
| - }
|
| -
|
| - FeedbackVectorSlot PrototypeSlot() const { return prototype_slot_; }
|
| - FeedbackVectorSlot ProxySlot() const { return proxy_slot_; }
|
| -
|
| - bool IsAnonymousFunctionDefinition() const {
|
| - return constructor()->raw_name()->length() == 0;
|
| - }
|
| -
|
| - protected:
|
| - ClassLiteral(Zone* zone, Scope* scope, VariableProxy* class_variable_proxy,
|
| - Expression* extends, FunctionLiteral* constructor,
|
| - ZoneList<Property*>* properties, int start_position,
|
| - int end_position)
|
| - : Expression(zone, start_position),
|
| - scope_(scope),
|
| - class_variable_proxy_(class_variable_proxy),
|
| - extends_(extends),
|
| - constructor_(constructor),
|
| - properties_(properties),
|
| - end_position_(end_position) {}
|
| -
|
| - static int parent_num_ids() { return Expression::num_ids(); }
|
| -
|
| - private:
|
| - int local_id(int n) const { return base_id() + parent_num_ids() + n; }
|
| -
|
| - Scope* scope_;
|
| - VariableProxy* class_variable_proxy_;
|
| - Expression* extends_;
|
| - FunctionLiteral* constructor_;
|
| - ZoneList<Property*>* properties_;
|
| - int end_position_;
|
| - FeedbackVectorSlot prototype_slot_;
|
| - FeedbackVectorSlot proxy_slot_;
|
| -};
|
| -
|
| -
|
| class NativeFunctionLiteral final : public Expression {
|
| public:
|
| DECLARE_NODE_TYPE(NativeFunctionLiteral)
|
| @@ -3432,16 +3366,6 @@ class AstNodeFactory final BASE_EMBEDDED {
|
| false);
|
| }
|
|
|
| - ClassLiteral* NewClassLiteral(Scope* scope, VariableProxy* proxy,
|
| - Expression* extends,
|
| - FunctionLiteral* constructor,
|
| - ZoneList<ObjectLiteral::Property*>* properties,
|
| - int start_position, int end_position) {
|
| - return new (parser_zone_)
|
| - ClassLiteral(parser_zone_, scope, proxy, extends, constructor,
|
| - properties, start_position, end_position);
|
| - }
|
| -
|
| NativeFunctionLiteral* NewNativeFunctionLiteral(const AstRawString* name,
|
| v8::Extension* extension,
|
| int pos) {
|
|
|