Index: src/ast/ast.cc |
diff --git a/src/ast/ast.cc b/src/ast/ast.cc |
index 352ed8306d22a570d23107f6e438439eb2ba39fd..f8cc2459bf69b9737664542cd8ce251f2af6bea7 100644 |
--- a/src/ast/ast.cc |
+++ b/src/ast/ast.cc |
@@ -162,12 +162,11 @@ bool Statement::IsJump() const { |
VariableProxy::VariableProxy(Variable* var, int start_position, |
int end_position) |
: Expression(start_position, kVariableProxy), |
- bit_field_(IsThisField::encode(var->is_this()) | |
- IsAssignedField::encode(false) | |
- IsResolvedField::encode(false)), |
end_position_(end_position), |
raw_name_(var->raw_name()), |
next_unresolved_(nullptr) { |
+ bit_field_ |= IsThisField::encode(var->is_this()) | |
+ IsAssignedField::encode(false) | IsResolvedField::encode(false); |
BindTo(var); |
} |
@@ -175,18 +174,18 @@ VariableProxy::VariableProxy(const AstRawString* name, |
VariableKind variable_kind, int start_position, |
int end_position) |
: Expression(start_position, kVariableProxy), |
- bit_field_(IsThisField::encode(variable_kind == THIS_VARIABLE) | |
- IsAssignedField::encode(false) | |
- IsResolvedField::encode(false)), |
end_position_(end_position), |
raw_name_(name), |
- next_unresolved_(nullptr) {} |
+ next_unresolved_(nullptr) { |
+ bit_field_ |= IsThisField::encode(variable_kind == THIS_VARIABLE) | |
+ IsAssignedField::encode(false) | IsResolvedField::encode(false); |
+} |
VariableProxy::VariableProxy(const VariableProxy* copy_from) |
: Expression(copy_from->position(), kVariableProxy), |
- bit_field_(copy_from->bit_field_), |
end_position_(copy_from->end_position_), |
next_unresolved_(nullptr) { |
+ bit_field_ = copy_from->bit_field_; |
if (copy_from->is_resolved()) { |
var_ = copy_from->var_; |
} else { |
@@ -249,12 +248,13 @@ void ForInStatement::AssignFeedbackVectorSlots(Isolate* isolate, |
Assignment::Assignment(Token::Value op, Expression* target, Expression* value, |
int pos) |
: Expression(pos, kAssignment), |
- bit_field_( |
- IsUninitializedField::encode(false) | KeyTypeField::encode(ELEMENT) | |
- StoreModeField::encode(STANDARD_STORE) | TokenField::encode(op)), |
target_(target), |
value_(value), |
- binary_operation_(NULL) {} |
+ binary_operation_(NULL) { |
+ bit_field_ |= IsUninitializedField::encode(false) | |
+ KeyTypeField::encode(ELEMENT) | |
+ StoreModeField::encode(STANDARD_STORE) | TokenField::encode(op); |
+} |
void Assignment::AssignFeedbackVectorSlots(Isolate* isolate, |
FeedbackVectorSpec* spec, |
@@ -538,7 +538,7 @@ void ObjectLiteral::BuildConstantProperties(Isolate* isolate) { |
// TODO(verwaest): Remove once we can store them inline. |
if (FLAG_track_double_fields && |
(value->IsNumber() || value->IsUninitialized(isolate))) { |
- may_store_doubles_ = true; |
+ bit_field_ = MayStoreDoublesField::update(bit_field_, true); |
} |
is_simple = is_simple && !value->IsUninitialized(isolate); |
@@ -565,9 +565,11 @@ void ObjectLiteral::BuildConstantProperties(Isolate* isolate) { |
} |
constant_properties_ = constant_properties; |
- fast_elements_ = |
- (max_element_index <= 32) || ((2 * elements) >= max_element_index); |
- has_elements_ = elements > 0; |
+ bit_field_ = FastElementsField::update( |
+ bit_field_, |
+ (max_element_index <= 32) || ((2 * elements) >= max_element_index)); |
+ bit_field_ = HasElementsField::update(bit_field_, elements > 0); |
+ |
set_is_simple(is_simple); |
set_depth(depth_acc); |
} |
@@ -759,8 +761,8 @@ static bool MatchLiteralCompareTypeof(Expression* left, |
bool CompareOperation::IsLiteralCompareTypeof(Expression** expr, |
Handle<String>* check) { |
- return MatchLiteralCompareTypeof(left_, op_, right_, expr, check) || |
- MatchLiteralCompareTypeof(right_, op_, left_, expr, check); |
+ return MatchLiteralCompareTypeof(left_, op(), right_, expr, check) || |
+ MatchLiteralCompareTypeof(right_, op(), left_, expr, check); |
} |
@@ -790,8 +792,8 @@ static bool MatchLiteralCompareUndefined(Expression* left, |
} |
bool CompareOperation::IsLiteralCompareUndefined(Expression** expr) { |
- return MatchLiteralCompareUndefined(left_, op_, right_, expr) || |
- MatchLiteralCompareUndefined(right_, op_, left_, expr); |
+ return MatchLiteralCompareUndefined(left_, op(), right_, expr) || |
+ MatchLiteralCompareUndefined(right_, op(), left_, expr); |
} |
@@ -809,8 +811,8 @@ static bool MatchLiteralCompareNull(Expression* left, |
bool CompareOperation::IsLiteralCompareNull(Expression** expr) { |
- return MatchLiteralCompareNull(left_, op_, right_, expr) || |
- MatchLiteralCompareNull(right_, op_, left_, expr); |
+ return MatchLiteralCompareNull(left_, op(), right_, expr) || |
+ MatchLiteralCompareNull(right_, op(), left_, expr); |
} |