| Index: src/ast/ast.h | 
| diff --git a/src/ast/ast.h b/src/ast/ast.h | 
| index 7f00955a644fcaeeeca1be192c67a5afa7ec0b70..54b5c4eca782ff616259a0bcce409b46dcf6fa0e 100644 | 
| --- a/src/ast/ast.h | 
| +++ b/src/ast/ast.h | 
| @@ -1683,6 +1683,19 @@ class ArrayLiteral final : public MaterializedLiteral { | 
| return flags; | 
| } | 
|  | 
| +  // Provide a mechanism for iterating through values to rewrite spreads. | 
| +  ZoneList<Expression*>::iterator FirstSpread() const { | 
| +    return (first_spread_index_ >= 0) ? values_->begin() + first_spread_index_ | 
| +                                      : values_->end(); | 
| +  } | 
| +  ZoneList<Expression*>::iterator EndValue() const { return values_->end(); } | 
| + | 
| +  // Rewind an array literal omitting everything from the first spread on. | 
| +  void RewindSpreads() { | 
| +    values_->Rewind(first_spread_index_); | 
| +    first_spread_index_ = -1; | 
| +  } | 
| + | 
| enum Flags { | 
| kNoFlags = 0, | 
| kShallowElements = 1, | 
|  |