| Index: src/parser.h
 | 
| diff --git a/src/parser.h b/src/parser.h
 | 
| index c65a4ca5f3a46b08a91e139849301e736f3bd888..1a90d1b2f263866617b63f2821529c02d776d3e6 100644
 | 
| --- a/src/parser.h
 | 
| +++ b/src/parser.h
 | 
| @@ -163,17 +163,17 @@ class ScriptDataImpl : public ScriptData {
 | 
|  };
 | 
|  
 | 
|  
 | 
| -class ParserApi {
 | 
| +class PreParserApi {
 | 
|   public:
 | 
| -  // Parses the source code represented by the compilation info and sets its
 | 
| -  // function literal.  Returns false (and deallocates any allocated AST
 | 
| -  // nodes) if parsing failed.
 | 
| -  static bool Parse(CompilationInfo* info, int flags);
 | 
| -
 | 
| -  // Generic preparser generating full preparse data.
 | 
| +  // Pre-parse a character stream and return full preparse data.
 | 
| +  //
 | 
| +  // This interface is here instead of in preparser.h because it instantiates a
 | 
| +  // preparser recorder object that is suited to the parser's purposes.  Also,
 | 
| +  // the preparser doesn't know about ScriptDataImpl.
 | 
|    static ScriptDataImpl* PreParse(Utf16CharacterStream* source);
 | 
|  };
 | 
|  
 | 
| +
 | 
|  // ----------------------------------------------------------------------------
 | 
|  // REGEXP PARSING
 | 
|  
 | 
| @@ -425,18 +425,34 @@ class SingletonLogger;
 | 
|  
 | 
|  class Parser {
 | 
|   public:
 | 
| -  Parser(CompilationInfo* info,
 | 
| -         int parsing_flags,  // Combination of ParsingFlags
 | 
| -         v8::Extension* extension,
 | 
| -         ScriptDataImpl* pre_data);
 | 
| +  explicit Parser(CompilationInfo* info);
 | 
|    virtual ~Parser() {
 | 
|      delete reusable_preparser_;
 | 
|      reusable_preparser_ = NULL;
 | 
|    }
 | 
|  
 | 
| +  bool allow_natives_syntax() const { return allow_natives_syntax_; }
 | 
| +  bool allow_lazy() const { return allow_lazy_; }
 | 
| +  bool allow_modules() { return scanner().HarmonyModules(); }
 | 
| +  bool allow_harmony_scoping() { return scanner().HarmonyScoping(); }
 | 
| +  bool allow_generators() const { return allow_generators_; }
 | 
| +
 | 
| +  void set_allow_natives_syntax(bool allow) { allow_natives_syntax_ = allow; }
 | 
| +  void set_allow_lazy(bool allow) { allow_lazy_ = allow; }
 | 
| +  void set_allow_modules(bool allow) { scanner().SetHarmonyModules(allow); }
 | 
| +  void set_allow_harmony_scoping(bool allow) {
 | 
| +    scanner().SetHarmonyScoping(allow);
 | 
| +  }
 | 
| +  void set_allow_generators(bool allow) { allow_generators_ = allow; }
 | 
| +
 | 
| +  // Parses the source code represented by the compilation info and sets its
 | 
| +  // function literal.  Returns false (and deallocates any allocated AST
 | 
| +  // nodes) if parsing failed.
 | 
| +  static bool Parse(CompilationInfo* info) { return Parser(info).Parse(); }
 | 
| +  bool Parse();
 | 
| +
 | 
|    // Returns NULL if parsing failed.
 | 
|    FunctionLiteral* ParseProgram();
 | 
| -  FunctionLiteral* ParseLazy();
 | 
|  
 | 
|    void ReportMessageAt(Scanner::Location loc,
 | 
|                         const char* message,
 | 
| @@ -550,6 +566,7 @@ class Parser {
 | 
|      Mode old_mode_;
 | 
|    };
 | 
|  
 | 
| +  FunctionLiteral* ParseLazy();
 | 
|    FunctionLiteral* ParseLazy(Utf16CharacterStream* source,
 | 
|                               ZoneScope* zone_scope);
 | 
|  
 | 
| @@ -568,10 +585,15 @@ class Parser {
 | 
|    void ReportMessage(const char* message, Vector<const char*> args);
 | 
|    void ReportMessage(const char* message, Vector<Handle<String> > args);
 | 
|  
 | 
| +  void set_pre_parse_data(ScriptDataImpl *data) {
 | 
| +    pre_parse_data_ = data;
 | 
| +    symbol_cache_.Initialize(data ? data->symbol_count() : 0, zone());
 | 
| +  }
 | 
| +
 | 
|    bool inside_with() const { return top_scope_->inside_with(); }
 | 
|    Scanner& scanner()  { return scanner_; }
 | 
|    Mode mode() const { return mode_; }
 | 
| -  ScriptDataImpl* pre_data() const { return pre_data_; }
 | 
| +  ScriptDataImpl* pre_parse_data() const { return pre_parse_data_; }
 | 
|    bool is_extended_mode() {
 | 
|      ASSERT(top_scope_ != NULL);
 | 
|      return top_scope_->is_extended_mode();
 | 
| @@ -833,13 +855,13 @@ class Parser {
 | 
|    FunctionState* current_function_state_;
 | 
|    Target* target_stack_;  // for break, continue statements
 | 
|    v8::Extension* extension_;
 | 
| -  ScriptDataImpl* pre_data_;
 | 
| +  ScriptDataImpl* pre_parse_data_;
 | 
|    FuncNameInferrer* fni_;
 | 
|  
 | 
|    Mode mode_;
 | 
|    bool allow_natives_syntax_;
 | 
|    bool allow_lazy_;
 | 
| -  bool allow_modules_;
 | 
| +  bool allow_generators_;
 | 
|    bool stack_overflow_;
 | 
|    // If true, the next (and immediately following) function literal is
 | 
|    // preceded by a parenthesis.
 | 
| 
 |