Index: src/ast/ast.h |
diff --git a/src/ast/ast.h b/src/ast/ast.h |
index e6e2a368631409e5c14143d4752477afc2a1fc7c..05f8de5a63ba5c641dd906d7a534f2bfc5bf6584 100644 |
--- a/src/ast/ast.h |
+++ b/src/ast/ast.h |
@@ -2800,6 +2800,12 @@ class ClassLiteral final : public Expression { |
ZoneList<Property*>* properties() const { return properties_; } |
int start_position() const { return position(); } |
int end_position() const { return end_position_; } |
+ bool has_name_static_property() const { |
+ return HasNameStaticProperty::decode(bit_field_); |
+ } |
+ bool has_static_computed_names() const { |
+ return HasStaticComputedNames::decode(bit_field_); |
+ } |
VariableProxy* static_initializer_proxy() const { |
return static_initializer_proxy_; |
@@ -2836,14 +2842,19 @@ class ClassLiteral final : public Expression { |
ClassLiteral(VariableProxy* class_variable_proxy, Expression* extends, |
FunctionLiteral* constructor, ZoneList<Property*>* properties, |
- int start_position, int end_position) |
+ int start_position, int end_position, |
+ bool has_name_static_property, bool has_static_computed_names) |
: Expression(start_position, kClassLiteral), |
end_position_(end_position), |
class_variable_proxy_(class_variable_proxy), |
extends_(extends), |
constructor_(constructor), |
properties_(properties), |
- static_initializer_proxy_(nullptr) {} |
+ static_initializer_proxy_(nullptr) { |
+ bit_field_ |= |
+ HasNameStaticProperty::update(bit_field_, has_name_static_property) | |
Toon Verwaest
2016/11/29 12:27:47
HasNameStaticProperty::encode(has_name_static_prop
|
+ HasStaticComputedNames::update(bit_field_, has_static_computed_names); |
+ } |
static int parent_num_ids() { return Expression::num_ids(); } |
int local_id(int n) const { return base_id() + parent_num_ids() + n; } |
@@ -2856,6 +2867,11 @@ class ClassLiteral final : public Expression { |
FunctionLiteral* constructor_; |
ZoneList<Property*>* properties_; |
VariableProxy* static_initializer_proxy_; |
+ |
+ class HasNameStaticProperty |
+ : public BitField<bool, Expression::kNextBitFieldIndex, 1> {}; |
+ class HasStaticComputedNames |
+ : public BitField<bool, HasNameStaticProperty::kNext, 1> {}; |
}; |
@@ -3492,9 +3508,12 @@ class AstNodeFactory final BASE_EMBEDDED { |
ClassLiteral* NewClassLiteral(VariableProxy* proxy, Expression* extends, |
FunctionLiteral* constructor, |
ZoneList<ClassLiteral::Property*>* properties, |
- int start_position, int end_position) { |
- return new (zone_) ClassLiteral(proxy, extends, constructor, properties, |
- start_position, end_position); |
+ int start_position, int end_position, |
+ bool has_name_static_property, |
+ bool has_static_computed_names) { |
+ return new (zone_) ClassLiteral( |
+ proxy, extends, constructor, properties, start_position, end_position, |
+ has_name_static_property, has_static_computed_names); |
} |
NativeFunctionLiteral* NewNativeFunctionLiteral(const AstRawString* name, |