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

Unified Diff: src/parser.cc

Issue 661367: Refactor the scanner interface... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 10 years, 10 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
« no previous file with comments | « src/objects.cc ('k') | src/scanner.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/parser.cc
===================================================================
--- src/parser.cc (revision 3995)
+++ src/parser.cc (working copy)
@@ -107,13 +107,13 @@
// Returns NULL if parsing failed.
FunctionLiteral* ParseProgram(Handle<String> source,
- unibrow::CharacterStream* stream,
bool in_global_context);
FunctionLiteral* ParseLazy(Handle<String> source,
Handle<String> name,
- int start_position, bool is_expression);
- FunctionLiteral* ParseJson(Handle<String> source,
- unibrow::CharacterStream* stream);
+ int start_position,
+ int end_position,
+ bool is_expression);
+ FunctionLiteral* ParseJson(Handle<String> source);
// The minimum number of contiguous assignment that will
// be treated as an initialization block. Benchmarks show that
@@ -1212,7 +1212,7 @@
AssertNoZoneAllocation assert_no_zone_allocation;
AssertNoAllocation assert_no_allocation;
NoHandleAllocation no_handle_allocation;
- scanner_.Init(source, stream, 0, JAVASCRIPT);
+ scanner_.Initialize(source, stream, JAVASCRIPT);
ASSERT(target_stack_ == NULL);
mode_ = PARSE_EAGERLY;
DummyScope top_scope;
@@ -1226,7 +1226,6 @@
FunctionLiteral* Parser::ParseProgram(Handle<String> source,
- unibrow::CharacterStream* stream,
bool in_global_context) {
CompilationZoneScope zone_scope(DONT_DELETE_ON_EXIT);
@@ -1235,7 +1234,7 @@
// Initialize parser state.
source->TryFlatten();
- scanner_.Init(source, stream, 0, JAVASCRIPT);
+ scanner_.Initialize(source, JAVASCRIPT);
ASSERT(target_stack_ == NULL);
// Compute the parsing mode.
@@ -1286,15 +1285,15 @@
FunctionLiteral* Parser::ParseLazy(Handle<String> source,
Handle<String> name,
int start_position,
+ int end_position,
bool is_expression) {
CompilationZoneScope zone_scope(DONT_DELETE_ON_EXIT);
HistogramTimerScope timer(&Counters::parse_lazy);
- source->TryFlatten();
Counters::total_parse_size.Increment(source->length());
- SafeStringInputBuffer buffer(source.location());
// Initialize parser state.
- scanner_.Init(source, &buffer, start_position, JAVASCRIPT);
+ source->TryFlatten();
+ scanner_.Initialize(source, start_position, end_position, JAVASCRIPT);
ASSERT(target_stack_ == NULL);
mode_ = PARSE_EAGERLY;
@@ -1330,8 +1329,7 @@
return result;
}
-FunctionLiteral* Parser::ParseJson(Handle<String> source,
- unibrow::CharacterStream* stream) {
+FunctionLiteral* Parser::ParseJson(Handle<String> source) {
CompilationZoneScope zone_scope(DONT_DELETE_ON_EXIT);
HistogramTimerScope timer(&Counters::parse);
@@ -1339,7 +1337,7 @@
// Initialize parser state.
source->TryFlatten(TENURED);
- scanner_.Init(source, stream, 0, JSON);
+ scanner_.Initialize(source, JSON);
ASSERT(target_stack_ == NULL);
FunctionLiteral* result = NULL;
@@ -5065,13 +5063,12 @@
return NULL;
}
Handle<String> source = Handle<String>(String::cast(script->source()));
- SafeStringInputBuffer input(source.location());
FunctionLiteral* result;
if (is_json) {
ASSERT(compile_in_global_context);
- result = parser.ParseJson(source, &input);
+ result = parser.ParseJson(source);
} else {
- result = parser.ParseProgram(source, &input, compile_in_global_context);
+ result = parser.ParseProgram(source, compile_in_global_context);
}
return result;
}
@@ -5086,12 +5083,11 @@
always_allow_natives_syntax = true;
AstBuildingParser parser(script, true, NULL, NULL); // always allow
always_allow_natives_syntax = allow_natives_syntax_before;
- // Parse the function by pulling the function source from the script source.
+ // Parse the function by pointing to the function source in the script source.
Handle<String> script_source(String::cast(script->source()));
- Handle<String> function_source =
- SubString(script_source, start_position, end_position, TENURED);
FunctionLiteral* result =
- parser.ParseLazy(function_source, name, start_position, is_expression);
+ parser.ParseLazy(script_source, name,
+ start_position, end_position, is_expression);
return result;
}
« no previous file with comments | « src/objects.cc ('k') | src/scanner.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698