Index: src/parser.h |
diff --git a/src/parser.h b/src/parser.h |
index fd24e8d4e952b4d33408f3fc03c0fcb83ec3bf43..b04f1dade12b38ea2110a7a28254d8283d34041c 100644 |
--- a/src/parser.h |
+++ b/src/parser.h |
@@ -339,6 +339,23 @@ class RegExpParser BASE_EMBEDDED { |
// ---------------------------------------------------------------------------- |
// JAVASCRIPT PARSING |
+ |
+class ParserCheckpoint BASE_EMBEDDED { |
+ public: |
+ template <typename Parser> |
+ explicit ParserCheckpoint(Parser* parser) { |
+ isolate_ = parser->zone()->isolate(); |
+ saved_ast_node_id_ = isolate_->ast_node_id(); |
+ } |
+ |
+ void Restore() { isolate_->set_ast_node_id(saved_ast_node_id_); } |
+ |
+ private: |
+ Isolate* isolate_; |
+ int saved_ast_node_id_; |
+}; |
+ |
+ |
class Parser; |
class SingletonLogger; |
@@ -354,6 +371,7 @@ class ParserTraits { |
typedef v8::internal::Scope* ScopePtr; |
typedef Variable GeneratorVariable; |
typedef v8::internal::Zone Zone; |
+ typedef ParserCheckpoint Checkpoint; |
typedef v8::internal::AstProperties AstProperties; |
typedef Vector<VariableProxy*> ParameterIdentifierVector; |