Index: src/parsing/parser.h |
diff --git a/src/parsing/parser.h b/src/parsing/parser.h |
index 2fef7738c2ff8c37289a26e2116539458a8defc3..69398364204a158d6875f27b31c06ce8fec9ad2c 100644 |
--- a/src/parsing/parser.h |
+++ b/src/parsing/parser.h |
@@ -175,38 +175,6 @@ class ParserBaseTraits<Parser> { |
return reinterpret_cast<const Parser*>(this); |
} |
- // Producing data during the recursive descent. |
- const AstRawString* GetSymbol(Scanner* scanner) const; |
- const AstRawString* GetNextSymbol(Scanner* scanner) const; |
- const AstRawString* GetNumberAsSymbol(Scanner* scanner) const; |
- |
- Expression* ThisExpression(int pos = kNoSourcePosition); |
- Expression* NewSuperPropertyReference(AstNodeFactory* factory, int pos); |
- Expression* NewSuperCallReference(AstNodeFactory* factory, int pos); |
- Expression* NewTargetExpression(int pos); |
- Expression* FunctionSentExpression(AstNodeFactory* factory, int pos) const; |
- Literal* ExpressionFromLiteral(Token::Value token, int pos, Scanner* scanner, |
- AstNodeFactory* factory) const; |
- Expression* ExpressionFromIdentifier(const AstRawString* name, |
- int start_position, int end_position, |
- InferName = InferName::kYes); |
- Expression* ExpressionFromString(int pos, Scanner* scanner, |
- AstNodeFactory* factory) const; |
- Expression* GetIterator(Expression* iterable, AstNodeFactory* factory, |
- int pos); |
- ZoneList<v8::internal::Expression*>* NewExpressionList(int size, |
- Zone* zone) const { |
- return new(zone) ZoneList<v8::internal::Expression*>(size, zone); |
- } |
- ZoneList<ObjectLiteral::Property*>* NewPropertyList(int size, |
- Zone* zone) const { |
- return new(zone) ZoneList<ObjectLiteral::Property*>(size, zone); |
- } |
- ZoneList<v8::internal::Statement*>* NewStatementList(int size, |
- Zone* zone) const { |
- return new(zone) ZoneList<v8::internal::Statement*>(size, zone); |
- } |
- |
V8_INLINE void AddParameterInitializationBlock( |
const ParserFormalParameters& parameters, |
ZoneList<v8::internal::Statement*>* body, bool is_async, bool* ok); |
@@ -543,6 +511,7 @@ class Parser : public ParserBase<Parser> { |
Expression* BuildIteratorNextResult(Expression* iterator, Variable* result, |
int pos); |
+ Expression* GetIterator(Expression* iterable, int pos); |
// Initialize the components of a for-in / for-of statement. |
Statement* InitializeForEachStatement(ForEachStatement* stmt, |
@@ -977,6 +946,64 @@ class Parser : public ParserBase<Parser> { |
return factory()->NewTheHoleLiteral(kNoSourcePosition); |
} |
+ // Producing data during the recursive descent. |
+ V8_INLINE const AstRawString* GetSymbol() const { |
+ const AstRawString* result = scanner()->CurrentSymbol(ast_value_factory()); |
+ DCHECK(result != NULL); |
+ return result; |
+ } |
+ |
+ V8_INLINE const AstRawString* GetNextSymbol() const { |
+ return scanner()->NextSymbol(ast_value_factory()); |
+ } |
+ |
+ V8_INLINE const AstRawString* GetNumberAsSymbol() const { |
+ double double_value = scanner()->DoubleValue(); |
+ char array[100]; |
+ const char* string = DoubleToCString(double_value, ArrayVector(array)); |
+ return ast_value_factory()->GetOneByteString(string); |
+ } |
+ |
+ V8_INLINE Expression* ThisExpression(int pos = kNoSourcePosition) { |
+ return NewUnresolved(ast_value_factory()->this_string(), pos, pos + 4, |
+ Variable::THIS); |
+ } |
+ |
+ Expression* NewSuperPropertyReference(int pos); |
+ Expression* NewSuperCallReference(int pos); |
+ Expression* NewTargetExpression(int pos); |
+ Expression* FunctionSentExpression(int pos); |
+ |
+ Literal* ExpressionFromLiteral(Token::Value token, int pos); |
+ |
+ V8_INLINE Expression* ExpressionFromIdentifier( |
+ const AstRawString* name, int start_position, int end_position, |
+ InferName infer = InferName::kYes) { |
+ if (infer == InferName::kYes && fni_ != NULL) { |
+ fni_->PushVariableName(name); |
+ } |
+ return NewUnresolved(name, start_position, end_position); |
+ } |
+ |
+ V8_INLINE Expression* ExpressionFromString(int pos) { |
+ const AstRawString* symbol = GetSymbol(); |
+ if (fni_ != NULL) fni_->PushLiteralName(symbol); |
+ return factory()->NewStringLiteral(symbol, pos); |
+ } |
+ |
+ V8_INLINE ZoneList<v8::internal::Expression*>* NewExpressionList( |
+ int size) const { |
+ return new (zone()) ZoneList<v8::internal::Expression*>(size, zone()); |
+ } |
+ V8_INLINE ZoneList<ObjectLiteral::Property*>* NewPropertyList( |
+ int size) const { |
+ return new (zone()) ZoneList<ObjectLiteral::Property*>(size, zone()); |
+ } |
+ V8_INLINE ZoneList<v8::internal::Statement*>* NewStatementList( |
+ int size) const { |
+ return new (zone()) ZoneList<v8::internal::Statement*>(size, zone()); |
+ } |
+ |
// Parser's private field members. |
Scanner scanner_; |