Index: src/preparser.h |
diff --git a/src/preparser.h b/src/preparser.h |
index 5e37d632fdb8bffbf9e767da466a1eff34ec3c1e..e2929b827d238d120528f2393a0160b1b3c4aaa0 100644 |
--- a/src/preparser.h |
+++ b/src/preparser.h |
@@ -68,9 +68,9 @@ class ParserBase : public Traits { |
typedef typename Traits::Type::Literal LiteralT; |
typedef typename Traits::Type::ObjectLiteralProperty ObjectLiteralPropertyT; |
- ParserBase(Scanner* scanner, uintptr_t stack_limit, v8::Extension* extension, |
- ParserRecorder* log, typename Traits::Type::Zone* zone, |
- typename Traits::Type::Parser this_object) |
+ ParserBase(Isolate* isolate, typename Traits::Type::Zone* zone, |
+ Scanner* scanner, uintptr_t stack_limit, v8::Extension* extension, |
+ ParserRecorder* log, typename Traits::Type::Parser this_object) |
: Traits(this_object), |
parenthesized_function_(false), |
scope_(NULL), |
@@ -80,6 +80,8 @@ class ParserBase : public Traits { |
log_(log), |
mode_(PARSE_EAGERLY), // Lazy mode must be set explicitly. |
stack_limit_(stack_limit), |
+ isolate_(isolate), |
+ zone_(zone), |
scanner_(scanner), |
stack_overflow_(false), |
allow_lazy_(false), |
@@ -87,8 +89,7 @@ class ParserBase : public Traits { |
allow_harmony_arrow_functions_(false), |
allow_harmony_object_literals_(false), |
allow_harmony_sloppy_(false), |
- allow_harmony_computed_property_names_(false), |
- zone_(zone) {} |
+ allow_harmony_computed_property_names_(false) {} |
// Getters that indicate whether certain syntactical constructs are |
// allowed to be parsed by this instance of the parser. |
@@ -296,6 +297,7 @@ class ParserBase : public Traits { |
Mode old_mode_; |
}; |
+ Isolate* isolate() const { return isolate_; } |
Scanner* scanner() const { return scanner_; } |
int position() { return scanner_->location().beg_pos; } |
int peek_position() { return scanner_->peek_location().beg_pos; } |
@@ -608,6 +610,9 @@ class ParserBase : public Traits { |
uintptr_t stack_limit_; |
private: |
+ Isolate* isolate_; |
+ typename Traits::Type::Zone* zone_; // Only used by Parser. |
+ |
Scanner* scanner_; |
bool stack_overflow_; |
@@ -617,8 +622,6 @@ class ParserBase : public Traits { |
bool allow_harmony_object_literals_; |
bool allow_harmony_sloppy_; |
bool allow_harmony_computed_property_names_; |
- |
- typename Traits::Type::Zone* zone_; // Only used by Parser. |
}; |
@@ -1494,9 +1497,10 @@ class PreParser : public ParserBase<PreParserTraits> { |
kPreParseSuccess |
}; |
- PreParser(Scanner* scanner, ParserRecorder* log, uintptr_t stack_limit) |
- : ParserBase<PreParserTraits>(scanner, stack_limit, NULL, log, NULL, |
- this) {} |
+ PreParser(Isolate* isolate, Scanner* scanner, ParserRecorder* log, |
+ uintptr_t stack_limit) |
+ : ParserBase<PreParserTraits>(isolate, NULL, scanner, stack_limit, NULL, |
+ log, this) {} |
// Pre-parse the program from the character stream; returns true on |
// success (even if parsing failed, the pre-parse data successfully |
@@ -2807,9 +2811,10 @@ ParserBase<Traits>::ParseMemberExpressionContinuation(ExpressionT expression, |
template <class Traits> |
-typename ParserBase<Traits>::ExpressionT ParserBase< |
- Traits>::ParseArrowFunctionLiteral(int start_pos, ExpressionT params_ast, |
- bool* ok) { |
+typename ParserBase<Traits>::ExpressionT |
+ParserBase<Traits>::ParseArrowFunctionLiteral(int start_pos, |
+ ExpressionT params_ast, |
+ bool* ok) { |
typename Traits::Type::ScopePtr scope = this->NewScope(scope_, ARROW_SCOPE); |
typename Traits::Type::StatementList body; |
int num_parameters = -1; |