Index: src/ast.h |
diff --git a/src/ast.h b/src/ast.h |
index 802ac65962501dfa47db0f43f4e4de95c984a145..e72296cff74baa0116c0a1d9aa7781f22c999966 100644 |
--- a/src/ast.h |
+++ b/src/ast.h |
@@ -1870,6 +1870,15 @@ class Assignment: public Expression { |
// This check relies on the definition order of token in token.h. |
bool is_compound() const { return op() > Token::ASSIGN; } |
+ // An initialization block is a series of statments of the form |
+ // x.y.z.a = ...; x.y.z.b = ...; etc. The parser marks the beginning and |
+ // ending of these blocks to allow for optimizations of initialization |
+ // blocks. |
+ bool starts_initialization_block() { return block_start_; } |
+ bool ends_initialization_block() { return block_end_; } |
+ void mark_block_start() { block_start_ = true; } |
+ void mark_block_end() { block_end_ = true; } |
+ |
BailoutId AssignmentId() const { return assignment_id_; } |
// Type feedback information. |
@@ -1902,6 +1911,9 @@ class Assignment: public Expression { |
BinaryOperation* binary_operation_; |
const BailoutId assignment_id_; |
+ bool block_start_; |
+ bool block_end_; |
+ |
bool is_monomorphic_; |
SmallMapList receiver_types_; |
}; |