| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 108 enum PreParseResult { | 108 enum PreParseResult { |
| 109 kPreParseStackOverflow, | 109 kPreParseStackOverflow, |
| 110 kPreParseSuccess | 110 kPreParseSuccess |
| 111 }; | 111 }; |
| 112 | 112 |
| 113 | 113 |
| 114 PreParser(i::Scanner* scanner, | 114 PreParser(i::Scanner* scanner, |
| 115 i::ParserRecorder* log, | 115 i::ParserRecorder* log, |
| 116 uintptr_t stack_limit, | 116 uintptr_t stack_limit, |
| 117 bool allow_lazy, | 117 bool allow_lazy, |
| 118 bool allow_natives_syntax) | 118 bool allow_natives_syntax, |
| 119 bool allow_modules) |
| 119 : scanner_(scanner), | 120 : scanner_(scanner), |
| 120 log_(log), | 121 log_(log), |
| 121 scope_(NULL), | 122 scope_(NULL), |
| 122 stack_limit_(stack_limit), | 123 stack_limit_(stack_limit), |
| 123 strict_mode_violation_location_(i::Scanner::Location::invalid()), | 124 strict_mode_violation_location_(i::Scanner::Location::invalid()), |
| 124 strict_mode_violation_type_(NULL), | 125 strict_mode_violation_type_(NULL), |
| 125 stack_overflow_(false), | 126 stack_overflow_(false), |
| 126 allow_lazy_(allow_lazy), | 127 allow_lazy_(allow_lazy), |
| 128 allow_modules_(allow_modules), |
| 127 allow_natives_syntax_(allow_natives_syntax), | 129 allow_natives_syntax_(allow_natives_syntax), |
| 128 parenthesized_function_(false), | 130 parenthesized_function_(false), |
| 129 harmony_scoping_(scanner->HarmonyScoping()) { } | 131 harmony_scoping_(scanner->HarmonyScoping()) { } |
| 130 | 132 |
| 131 ~PreParser() {} | 133 ~PreParser() {} |
| 132 | 134 |
| 133 // Pre-parse the program from the character stream; returns true on | 135 // Pre-parse the program from the character stream; returns true on |
| 134 // success (even if parsing failed, the pre-parse data successfully | 136 // success (even if parsing failed, the pre-parse data successfully |
| 135 // captured the syntax error), and false if a stack-overflow happened | 137 // captured the syntax error), and false if a stack-overflow happened |
| 136 // during parsing. | 138 // during parsing. |
| 137 static PreParseResult PreParseProgram(i::Scanner* scanner, | 139 static PreParseResult PreParseProgram(i::Scanner* scanner, |
| 138 i::ParserRecorder* log, | 140 i::ParserRecorder* log, |
| 139 int flags, | 141 int flags, |
| 140 uintptr_t stack_limit) { | 142 uintptr_t stack_limit) { |
| 141 bool allow_lazy = (flags & i::kAllowLazy) != 0; | 143 bool allow_lazy = (flags & i::kAllowLazy) != 0; |
| 142 bool allow_natives_syntax = (flags & i::kAllowNativesSyntax) != 0; | 144 bool allow_natives_syntax = (flags & i::kAllowNativesSyntax) != 0; |
| 143 return PreParser(scanner, log, stack_limit, | 145 bool allow_modules = (flags & i::kAllowModules) != 0; |
| 144 allow_lazy, allow_natives_syntax).PreParse(); | 146 return PreParser(scanner, log, stack_limit, allow_lazy, |
| 147 allow_natives_syntax, allow_modules).PreParse(); |
| 145 } | 148 } |
| 146 | 149 |
| 147 // Parses a single function literal, from the opening parentheses before | 150 // Parses a single function literal, from the opening parentheses before |
| 148 // parameters to the closing brace after the body. | 151 // parameters to the closing brace after the body. |
| 149 // Returns a FunctionEntry describing the body of the funciton in enough | 152 // Returns a FunctionEntry describing the body of the funciton in enough |
| 150 // detail that it can be lazily compiled. | 153 // detail that it can be lazily compiled. |
| 151 // The scanner is expected to have matched the "function" keyword and | 154 // The scanner is expected to have matched the "function" keyword and |
| 152 // parameters, and have consumed the initial '{'. | 155 // parameters, and have consumed the initial '{'. |
| 153 // At return, unless an error occured, the scanner is positioned before the | 156 // At return, unless an error occured, the scanner is positioned before the |
| 154 // the final '}'. | 157 // the final '}'. |
| (...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 640 bool* ok); | 643 bool* ok); |
| 641 | 644 |
| 642 i::Scanner* scanner_; | 645 i::Scanner* scanner_; |
| 643 i::ParserRecorder* log_; | 646 i::ParserRecorder* log_; |
| 644 Scope* scope_; | 647 Scope* scope_; |
| 645 uintptr_t stack_limit_; | 648 uintptr_t stack_limit_; |
| 646 i::Scanner::Location strict_mode_violation_location_; | 649 i::Scanner::Location strict_mode_violation_location_; |
| 647 const char* strict_mode_violation_type_; | 650 const char* strict_mode_violation_type_; |
| 648 bool stack_overflow_; | 651 bool stack_overflow_; |
| 649 bool allow_lazy_; | 652 bool allow_lazy_; |
| 653 bool allow_modules_; |
| 650 bool allow_natives_syntax_; | 654 bool allow_natives_syntax_; |
| 651 bool parenthesized_function_; | 655 bool parenthesized_function_; |
| 652 bool harmony_scoping_; | 656 bool harmony_scoping_; |
| 653 }; | 657 }; |
| 654 } } // v8::preparser | 658 } } // v8::preparser |
| 655 | 659 |
| 656 #endif // V8_PREPARSER_H | 660 #endif // V8_PREPARSER_H |
| OLD | NEW |