Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(322)

Unified Diff: src/parsing/parser.cc

Issue 2398023002: [wasm] asm.js - Parse and convert asm.js to wasm a function at a time. (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/parsing/parser.cc
diff --git a/src/parsing/parser.cc b/src/parsing/parser.cc
index 0ae1fb619a70ff1aa8bf224fa5a613ec99ebcea4..2e40b202654a800bac1766ec1899532734e54ec4 100644
--- a/src/parsing/parser.cc
+++ b/src/parsing/parser.cc
@@ -724,13 +724,20 @@ FunctionLiteral* Parser::ParseProgram(Isolate* isolate, ParseInfo* info) {
source = String::Flatten(source);
FunctionLiteral* result;
+ int start_position = info->start_position();
+ int end_position = info->end_position();
+ if (start_position == 0 && end_position == 0) {
+ end_position = source->length();
+ }
+
{
- std::unique_ptr<Utf16CharacterStream> stream(ScannerStream::For(source));
+ std::unique_ptr<Utf16CharacterStream> stream(
+ ScannerStream::For(source, start_position, end_position));
scanner_.Initialize(stream.get());
result = DoParseProgram(info);
}
if (result != NULL) {
- DCHECK_EQ(scanner_.peek_location().beg_pos, source->length());
+ DCHECK_EQ(scanner_.peek_location().beg_pos, end_position);
}
HandleSourceURLComments(isolate, info->script());
@@ -2622,16 +2629,9 @@ FunctionLiteral* Parser::ParseFunctionLiteral(
// FunctionExpression; even without enclosing parentheses it might be
// immediately invoked.
// - The function literal shouldn't be hinted to eagerly compile.
- // - For asm.js functions the body needs to be available when module
- // validation is active, because we examine the entire module at once.
-
- // Inner functions will be parsed using a temporary Zone. After parsing, we
- // will migrate unresolved variable into a Scope in the main Zone.
- // TODO(marja): Refactor parsing modes: simplify this.
bool use_temp_zone =
allow_lazy() && function_type == FunctionLiteral::kDeclaration &&
- eager_compile_hint != FunctionLiteral::kShouldEagerCompile &&
- !(FLAG_validate_asm && scope()->IsAsmModule());
+ eager_compile_hint != FunctionLiteral::kShouldEagerCompile;
bool is_lazy_inner_function =
use_temp_zone && FLAG_lazy_inner_functions && !is_lazy_top_level_function;

Powered by Google App Engine
This is Rietveld 408576698