| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_PARSER_H_ | 5 #ifndef V8_PARSER_H_ |
| 6 #define V8_PARSER_H_ | 6 #define V8_PARSER_H_ |
| 7 | 7 |
| 8 #include "src/allocation.h" | 8 #include "src/allocation.h" |
| 9 #include "src/ast.h" | 9 #include "src/ast.h" |
| 10 #include "src/compiler.h" // For CachedDataMode | 10 #include "src/compiler.h" // For CachedDataMode |
| (...skipping 641 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 652 kHasInitializers, | 652 kHasInitializers, |
| 653 kHasNoInitializers | 653 kHasNoInitializers |
| 654 }; | 654 }; |
| 655 | 655 |
| 656 // Returns NULL if parsing failed. | 656 // Returns NULL if parsing failed. |
| 657 FunctionLiteral* ParseProgram(); | 657 FunctionLiteral* ParseProgram(); |
| 658 | 658 |
| 659 FunctionLiteral* ParseLazy(); | 659 FunctionLiteral* ParseLazy(); |
| 660 FunctionLiteral* ParseLazy(Utf16CharacterStream* source); | 660 FunctionLiteral* ParseLazy(Utf16CharacterStream* source); |
| 661 | 661 |
| 662 Isolate* isolate() { return isolate_; } | 662 Isolate* isolate() { return info_->isolate(); } |
| 663 CompilationInfo* info() const { return info_; } | 663 CompilationInfo* info() const { return info_; } |
| 664 Handle<Script> script() const { return info_->script(); } |
| 665 AstValueFactory* ast_value_factory() const { |
| 666 return info_->ast_value_factory(); |
| 667 } |
| 664 | 668 |
| 665 // Called by ParseProgram after setting up the scanner. | 669 // Called by ParseProgram after setting up the scanner. |
| 666 FunctionLiteral* DoParseProgram(CompilationInfo* info, | 670 FunctionLiteral* DoParseProgram(CompilationInfo* info, |
| 667 Handle<String> source); | 671 Handle<String> source); |
| 668 | 672 |
| 669 void SetCachedData(); | 673 void SetCachedData(); |
| 670 | 674 |
| 671 bool inside_with() const { return scope_->inside_with(); } | 675 bool inside_with() const { return scope_->inside_with(); } |
| 672 ScriptCompiler::CompileOptions compile_options() const { | 676 ScriptCompiler::CompileOptions compile_options() const { |
| 673 return info_->compile_options(); | 677 return info_->compile_options(); |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 806 Token::Value fvar_init_op, bool is_generator, bool* ok); | 810 Token::Value fvar_init_op, bool is_generator, bool* ok); |
| 807 | 811 |
| 808 void HandleSourceURLComments(); | 812 void HandleSourceURLComments(); |
| 809 | 813 |
| 810 void ThrowPendingError(); | 814 void ThrowPendingError(); |
| 811 | 815 |
| 812 // Handle errors detected during parsing, move statistics to Isolate, | 816 // Handle errors detected during parsing, move statistics to Isolate, |
| 813 // internalize strings (move them to the heap). | 817 // internalize strings (move them to the heap). |
| 814 void Internalize(); | 818 void Internalize(); |
| 815 | 819 |
| 816 Isolate* isolate_; | |
| 817 | |
| 818 Handle<Script> script_; | |
| 819 Scanner scanner_; | 820 Scanner scanner_; |
| 820 PreParser* reusable_preparser_; | 821 PreParser* reusable_preparser_; |
| 821 Scope* original_scope_; // for ES5 function declarations in sloppy eval | 822 Scope* original_scope_; // for ES5 function declarations in sloppy eval |
| 822 Target* target_stack_; // for break, continue statements | 823 Target* target_stack_; // for break, continue statements |
| 823 ParseData* cached_parse_data_; | 824 ParseData* cached_parse_data_; |
| 824 AstValueFactory* ast_value_factory_; | |
| 825 | 825 |
| 826 CompilationInfo* info_; | 826 CompilationInfo* info_; |
| 827 | 827 |
| 828 // Pending errors. | 828 // Pending errors. |
| 829 bool has_pending_error_; | 829 bool has_pending_error_; |
| 830 Scanner::Location pending_error_location_; | 830 Scanner::Location pending_error_location_; |
| 831 const char* pending_error_message_; | 831 const char* pending_error_message_; |
| 832 const AstRawString* pending_error_arg_; | 832 const AstRawString* pending_error_arg_; |
| 833 const char* pending_error_char_arg_; | 833 const char* pending_error_char_arg_; |
| 834 bool pending_error_is_reference_error_; | 834 bool pending_error_is_reference_error_; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 847 parser_->scanner()->IdentifierIsFutureStrictReserved(identifier); | 847 parser_->scanner()->IdentifierIsFutureStrictReserved(identifier); |
| 848 } | 848 } |
| 849 | 849 |
| 850 | 850 |
| 851 Scope* ParserTraits::NewScope(Scope* parent_scope, ScopeType scope_type) { | 851 Scope* ParserTraits::NewScope(Scope* parent_scope, ScopeType scope_type) { |
| 852 return parser_->NewScope(parent_scope, scope_type); | 852 return parser_->NewScope(parent_scope, scope_type); |
| 853 } | 853 } |
| 854 | 854 |
| 855 | 855 |
| 856 const AstRawString* ParserTraits::EmptyIdentifierString() { | 856 const AstRawString* ParserTraits::EmptyIdentifierString() { |
| 857 return parser_->ast_value_factory_->empty_string(); | 857 return parser_->ast_value_factory()->empty_string(); |
| 858 } | 858 } |
| 859 | 859 |
| 860 | 860 |
| 861 void ParserTraits::SkipLazyFunctionBody(const AstRawString* function_name, | 861 void ParserTraits::SkipLazyFunctionBody(const AstRawString* function_name, |
| 862 int* materialized_literal_count, | 862 int* materialized_literal_count, |
| 863 int* expected_property_count, | 863 int* expected_property_count, |
| 864 bool* ok) { | 864 bool* ok) { |
| 865 return parser_->SkipLazyFunctionBody( | 865 return parser_->SkipLazyFunctionBody( |
| 866 function_name, materialized_literal_count, expected_property_count, ok); | 866 function_name, materialized_literal_count, expected_property_count, ok); |
| 867 } | 867 } |
| 868 | 868 |
| 869 | 869 |
| 870 ZoneList<Statement*>* ParserTraits::ParseEagerFunctionBody( | 870 ZoneList<Statement*>* ParserTraits::ParseEagerFunctionBody( |
| 871 const AstRawString* name, int pos, Variable* fvar, | 871 const AstRawString* name, int pos, Variable* fvar, |
| 872 Token::Value fvar_init_op, bool is_generator, bool* ok) { | 872 Token::Value fvar_init_op, bool is_generator, bool* ok) { |
| 873 return parser_->ParseEagerFunctionBody(name, pos, fvar, fvar_init_op, | 873 return parser_->ParseEagerFunctionBody(name, pos, fvar, fvar_init_op, |
| 874 is_generator, ok); | 874 is_generator, ok); |
| 875 } | 875 } |
| 876 | 876 |
| 877 void ParserTraits::CheckConflictingVarDeclarations(v8::internal::Scope* scope, | 877 void ParserTraits::CheckConflictingVarDeclarations(v8::internal::Scope* scope, |
| 878 bool* ok) { | 878 bool* ok) { |
| 879 parser_->CheckConflictingVarDeclarations(scope, ok); | 879 parser_->CheckConflictingVarDeclarations(scope, ok); |
| 880 } | 880 } |
| 881 | 881 |
| 882 | 882 |
| 883 AstValueFactory* ParserTraits::ast_value_factory() { | 883 AstValueFactory* ParserTraits::ast_value_factory() { |
| 884 return parser_->ast_value_factory_; | 884 return parser_->ast_value_factory(); |
| 885 } | 885 } |
| 886 | 886 |
| 887 | 887 |
| 888 // Support for handling complex values (array and object literals) that | 888 // Support for handling complex values (array and object literals) that |
| 889 // can be fully handled at compile time. | 889 // can be fully handled at compile time. |
| 890 class CompileTimeValue: public AllStatic { | 890 class CompileTimeValue: public AllStatic { |
| 891 public: | 891 public: |
| 892 enum LiteralType { | 892 enum LiteralType { |
| 893 OBJECT_LITERAL_FAST_ELEMENTS, | 893 OBJECT_LITERAL_FAST_ELEMENTS, |
| 894 OBJECT_LITERAL_SLOW_ELEMENTS, | 894 OBJECT_LITERAL_SLOW_ELEMENTS, |
| (...skipping 14 matching lines...) Expand all Loading... |
| 909 private: | 909 private: |
| 910 static const int kLiteralTypeSlot = 0; | 910 static const int kLiteralTypeSlot = 0; |
| 911 static const int kElementsSlot = 1; | 911 static const int kElementsSlot = 1; |
| 912 | 912 |
| 913 DISALLOW_IMPLICIT_CONSTRUCTORS(CompileTimeValue); | 913 DISALLOW_IMPLICIT_CONSTRUCTORS(CompileTimeValue); |
| 914 }; | 914 }; |
| 915 | 915 |
| 916 } } // namespace v8::internal | 916 } } // namespace v8::internal |
| 917 | 917 |
| 918 #endif // V8_PARSER_H_ | 918 #endif // V8_PARSER_H_ |
| OLD | NEW |