| Index: src/ast.h | 
| =================================================================== | 
| --- src/ast.h	(revision 1358) | 
| +++ src/ast.h	(working copy) | 
| @@ -1106,7 +1106,8 @@ | 
| class Assignment: public Expression { | 
| public: | 
| Assignment(Token::Value op, Expression* target, Expression* value, int pos) | 
| -      : op_(op), target_(target), value_(value), pos_(pos) { | 
| +      : op_(op), target_(target), value_(value), pos_(pos), | 
| +        block_start_(false), block_end_(false) { | 
| ASSERT(Token::IsAssignmentOp(op)); | 
| } | 
|  | 
| @@ -1120,11 +1121,22 @@ | 
| Expression* value() const { return value_; } | 
| int position() { return pos_; } | 
|  | 
| +  // 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; } | 
| + | 
| private: | 
| Token::Value op_; | 
| Expression* target_; | 
| Expression* value_; | 
| int pos_; | 
| +  bool block_start_; | 
| +  bool block_end_; | 
| }; | 
|  | 
|  | 
|  |