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

Unified Diff: test/cctest/test-parsing.cc

Issue 376223002: Refactor ScriptData class for cached compile data. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 5 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: test/cctest/test-parsing.cc
diff --git a/test/cctest/test-parsing.cc b/test/cctest/test-parsing.cc
index b12098a85a19e5352471686389ca8387a1789031..c1972e0f267205bf1610f931eddc95a3d6952531 100644
--- a/test/cctest/test-parsing.cc
+++ b/test/cctest/test-parsing.cc
@@ -108,6 +108,14 @@ TEST(ScanKeywords) {
}
+bool ParseDataHasError(i::ScriptData* sd) {
+ i::ParseData pd(sd);
+ bool result = pd.HasError();
+ delete sd;
+ return result;
+}
+
+
TEST(ScanHTMLEndComments) {
v8::V8::Initialize();
v8::Isolate* isolate = CcTest::isolate();
@@ -157,8 +165,7 @@ TEST(ScanHTMLEndComments) {
preparser.set_allow_lazy(true);
i::PreParser::PreParseResult result = preparser.PreParseProgram();
CHECK_EQ(i::PreParser::kPreParseSuccess, result);
- i::ScriptData data(log.ExtractData());
- CHECK(!data.has_error());
+ CHECK(!ParseDataHasError(log.GetScriptData()));
}
for (int i = 0; fail_tests[i]; i++) {
@@ -173,8 +180,7 @@ TEST(ScanHTMLEndComments) {
i::PreParser::PreParseResult result = preparser.PreParseProgram();
// Even in the case of a syntax error, kPreParseSuccess is returned.
CHECK_EQ(i::PreParser::kPreParseSuccess, result);
- i::ScriptData data(log.ExtractData());
- CHECK(data.has_error());
+ CHECK(ParseDataHasError(log.GetScriptData()));
}
}
@@ -306,8 +312,9 @@ TEST(StandAlonePreParser) {
preparser.set_allow_natives_syntax(true);
i::PreParser::PreParseResult result = preparser.PreParseProgram();
CHECK_EQ(i::PreParser::kPreParseSuccess, result);
- i::ScriptData data(log.ExtractData());
- CHECK(!data.has_error());
+ i::ScriptData* data = log.GetScriptData();
+ CHECK(!i::ParseData(data).HasError());
+ delete data;
}
}
@@ -339,9 +346,10 @@ TEST(StandAlonePreParserNoNatives) {
preparser.set_allow_lazy(true);
i::PreParser::PreParseResult result = preparser.PreParseProgram();
CHECK_EQ(i::PreParser::kPreParseSuccess, result);
- i::ScriptData data(log.ExtractData());
+ i::ScriptData* data = log.GetScriptData();
// Data contains syntax error.
- CHECK(data.has_error());
+ CHECK(i::ParseData(data).HasError());
+ delete data;
}
}
@@ -407,8 +415,7 @@ TEST(RegressChromium62639) {
i::PreParser::PreParseResult result = preparser.PreParseProgram();
// Even in the case of a syntax error, kPreParseSuccess is returned.
CHECK_EQ(i::PreParser::kPreParseSuccess, result);
- i::ScriptData data(log.ExtractData());
- CHECK(data.has_error());
+ CHECK(ParseDataHasError(log.GetScriptData()));
}
@@ -438,15 +445,16 @@ TEST(Regress928) {
preparser.set_allow_lazy(true);
i::PreParser::PreParseResult result = preparser.PreParseProgram();
CHECK_EQ(i::PreParser::kPreParseSuccess, result);
- i::ScriptData data(log.ExtractData());
- CHECK(!data.has_error());
- data.Initialize();
+ i::ScriptData* sd = log.GetScriptData();
+ i::ParseData pd(sd);
+ CHECK(!pd.HasError());
+ pd.Initialize();
int first_function =
static_cast<int>(strstr(program, "function") - program);
int first_lbrace = first_function + i::StrLength("function () ");
CHECK_EQ('{', program[first_lbrace]);
- i::FunctionEntry entry1 = data.GetFunctionEntry(first_lbrace);
+ i::FunctionEntry entry1 = pd.GetFunctionEntry(first_lbrace);
CHECK(!entry1.is_valid());
int second_function =
@@ -454,9 +462,10 @@ TEST(Regress928) {
int second_lbrace =
second_function + i::StrLength("function () ");
CHECK_EQ('{', program[second_lbrace]);
- i::FunctionEntry entry2 = data.GetFunctionEntry(second_lbrace);
+ i::FunctionEntry entry2 = pd.GetFunctionEntry(second_lbrace);
CHECK(entry2.is_valid());
CHECK_EQ('}', program[entry2.end_pos() - 1]);
+ delete sd;
}
@@ -1134,13 +1143,13 @@ TEST(ScopePositions) {
}
-i::Handle<i::String> FormatMessage(i::ScriptData* data) {
+i::Handle<i::String> FormatMessage(i::ParseData* pd) {
i::Isolate* isolate = CcTest::i_isolate();
i::Factory* factory = isolate->factory();
- const char* message = data->BuildMessage();
+ const char* message = pd->BuildMessage();
i::Handle<i::String> format = v8::Utils::OpenHandle(
*v8::String::NewFromUtf8(CcTest::isolate(), message));
- const char* arg = data->BuildArg();
+ const char* arg = pd->BuildArg();
i::Handle<i::JSArray> args_array = factory->NewJSArray(arg == NULL ? 0 : 1);
if (arg != NULL) {
i::JSArray::SetElement(
@@ -1211,7 +1220,9 @@ void TestParserSyncWithFlags(i::Handle<i::String> source,
i::PreParser::PreParseResult result = preparser.PreParseProgram();
CHECK_EQ(i::PreParser::kPreParseSuccess, result);
}
- i::ScriptData data(log.ExtractData());
+
+ i::ScriptData* sd = log.GetScriptData();
marja 2014/07/09 17:28:51 Btw, in these tests, would it be possible to extra
Yang 2014/07/10 08:28:46 Done. Also got rid of a bunch of methods from Pars
+ i::ParseData pd(sd);
// Parse the data
i::FunctionLiteral* function;
@@ -1246,7 +1257,7 @@ void TestParserSyncWithFlags(i::Handle<i::String> source,
CHECK(false);
}
- if (!data.has_error()) {
+ if (!pd.HasError()) {
marja 2014/07/09 14:42:30 Alright, now I remember why I didn't remove the "S
Yang 2014/07/10 08:28:46 Changed to use the log.
v8::base::OS::Print(
"Parser failed on:\n"
"\t%s\n"
@@ -1257,7 +1268,7 @@ void TestParserSyncWithFlags(i::Handle<i::String> source,
CHECK(false);
}
// Check that preparser and parser produce the same error.
- i::Handle<i::String> preparser_message = FormatMessage(&data);
+ i::Handle<i::String> preparser_message = FormatMessage(&pd);
if (!i::String::Equals(message_string, preparser_message)) {
v8::base::OS::Print(
"Expected parser and preparser to produce the same error on:\n"
@@ -1270,14 +1281,14 @@ void TestParserSyncWithFlags(i::Handle<i::String> source,
preparser_message->ToCString().get());
CHECK(false);
}
- } else if (data.has_error()) {
+ } else if (pd.HasError()) {
v8::base::OS::Print(
"Preparser failed on:\n"
"\t%s\n"
"with error:\n"
"\t%s\n"
"However, the parser succeeded",
- source->ToCString().get(), FormatMessage(&data)->ToCString().get());
+ source->ToCString().get(), FormatMessage(&pd)->ToCString().get());
CHECK(false);
} else if (result == kError) {
v8::base::OS::Print(
@@ -1287,6 +1298,8 @@ void TestParserSyncWithFlags(i::Handle<i::String> source,
source->ToCString().get());
CHECK(false);
}
+
+ delete sd;
}
@@ -2165,22 +2178,21 @@ TEST(DontRegressPreParserDataSizes) {
factory->NewStringFromUtf8(i::CStrVector(program)).ToHandleChecked();
i::Handle<i::Script> script = factory->NewScript(source);
i::CompilationInfoWithZone info(script);
- i::ScriptData* data = NULL;
- info.SetCachedData(&data, i::PRODUCE_CACHED_DATA);
+ i::ScriptData* sd = NULL;
+ info.SetCachedData(&sd, i::PRODUCE_CACHED_DATA);
i::Parser::Parse(&info, true);
- CHECK(data);
- CHECK(!data->HasError());
+ i::ParseData pd(sd);
+ CHECK(!pd.HasError());
- if (data->function_count() != test_cases[i].functions) {
+ if (pd.FunctionCount() != test_cases[i].functions) {
v8::base::OS::Print(
"Expected preparse data for program:\n"
"\t%s\n"
"to contain %d functions, however, received %d functions.\n",
- program, test_cases[i].functions,
- data->function_count());
+ program, test_cases[i].functions, pd.FunctionCount());
CHECK(false);
}
- delete data;
+ delete sd;
}
}

Powered by Google App Engine
This is Rietveld 408576698