| Index: test/cctest/test-parsing.cc
|
| diff --git a/test/cctest/test-parsing.cc b/test/cctest/test-parsing.cc
|
| index e0c21f449e628e32d5b842002c079495c8cf8052..58734d054e2d67ddb15d036213cc91ff7a3f2150 100644
|
| --- a/test/cctest/test-parsing.cc
|
| +++ b/test/cctest/test-parsing.cc
|
| @@ -277,56 +277,6 @@ TEST(PreparseFunctionDataIsUsed) {
|
| }
|
|
|
|
|
| -TEST(PreparseSymbolDataIsUsed) {
|
| - // This tests that we actually do use the symbol data generated by the
|
| - // preparser.
|
| -
|
| - // Only do one compilation pass in this test (otherwise we will parse the
|
| - // source code again without preparse data and it will fail).
|
| - i::FLAG_crankshaft = false;
|
| -
|
| - // Make preparsing work for short scripts.
|
| - i::FLAG_min_preparse_length = 0;
|
| -
|
| - v8::Isolate* isolate = CcTest::isolate();
|
| - v8::HandleScope handles(isolate);
|
| - v8::Local<v8::Context> context = v8::Context::New(isolate);
|
| - v8::Context::Scope context_scope(context);
|
| - int marker;
|
| - CcTest::i_isolate()->stack_guard()->SetStackLimit(
|
| - reinterpret_cast<uintptr_t>(&marker) - 128 * 1024);
|
| -
|
| - // Note that the ( before function makes the function not lazily compiled.
|
| - const char* good_code =
|
| - "(function weird() { var foo = 26; return foo; })()";
|
| -
|
| - // Insert an undefined identifier. If the preparser data is used, the symbol
|
| - // stream is used instead, and this identifier resolves to "foo".
|
| - const char* bad_code =
|
| - "(function weird() { var foo = 26; return wut; })()";
|
| -
|
| - v8::ScriptCompiler::Source good_source(v8_str(good_code));
|
| - v8::ScriptCompiler::Compile(isolate, &good_source,
|
| - v8::ScriptCompiler::kProduceDataToCache);
|
| -
|
| - const v8::ScriptCompiler::CachedData* cached_data =
|
| - good_source.GetCachedData();
|
| - CHECK(cached_data->data != NULL);
|
| - CHECK_GT(cached_data->length, 0);
|
| -
|
| - // Now compile the erroneous code with the good preparse data. If the preparse
|
| - // data is used, we will see a second occurrence of "foo" instead of the
|
| - // unknown "wut".
|
| - v8::ScriptCompiler::Source bad_source(
|
| - v8_str(bad_code), new v8::ScriptCompiler::CachedData(
|
| - cached_data->data, cached_data->length));
|
| - v8::Local<v8::Value> result =
|
| - v8::ScriptCompiler::Compile(isolate, &bad_source)->Run();
|
| - CHECK(result->IsInt32());
|
| - CHECK_EQ(26, result->Int32Value());
|
| -}
|
| -
|
| -
|
| TEST(StandAlonePreParser) {
|
| v8::V8::Initialize();
|
|
|
| @@ -435,53 +385,6 @@ TEST(PreparsingObjectLiterals) {
|
| }
|
| }
|
|
|
| -namespace v8 {
|
| -namespace internal {
|
| -
|
| -struct CompleteParserRecorderFriend {
|
| - static void FakeWritingSymbolIdInPreParseData(CompleteParserRecorder* log,
|
| - int number) {
|
| - log->WriteNumber(number);
|
| - if (log->symbol_id_ < number + 1) {
|
| - log->symbol_id_ = number + 1;
|
| - }
|
| - }
|
| -};
|
| -
|
| -}
|
| -}
|
| -
|
| -
|
| -TEST(StoringNumbersInPreParseData) {
|
| - // Symbol IDs are split into chunks of 7 bits for storing. This is a
|
| - // regression test for a bug where a symbol id was incorrectly stored if some
|
| - // of the chunks in the middle were all zeros.
|
| - typedef i::CompleteParserRecorderFriend F;
|
| - i::CompleteParserRecorder log;
|
| - for (int i = 0; i < 18; ++i) {
|
| - F::FakeWritingSymbolIdInPreParseData(&log, 1 << i);
|
| - }
|
| - for (int i = 1; i < 18; ++i) {
|
| - F::FakeWritingSymbolIdInPreParseData(&log, (1 << i) + 1);
|
| - }
|
| - for (int i = 6; i < 18; ++i) {
|
| - F::FakeWritingSymbolIdInPreParseData(&log, (3 << i) + (5 << (i - 6)));
|
| - }
|
| - i::Vector<unsigned> store = log.ExtractData();
|
| - i::ScriptData script_data(store);
|
| - script_data.Initialize();
|
| - // Check that we get the same symbols back.
|
| - for (int i = 0; i < 18; ++i) {
|
| - CHECK_EQ(1 << i, script_data.GetSymbolIdentifier());
|
| - }
|
| - for (int i = 1; i < 18; ++i) {
|
| - CHECK_EQ((1 << i) + 1, script_data.GetSymbolIdentifier());
|
| - }
|
| - for (int i = 6; i < 18; ++i) {
|
| - CHECK_EQ((3 << i) + (5 << (i - 6)), script_data.GetSymbolIdentifier());
|
| - }
|
| -}
|
| -
|
|
|
| TEST(RegressChromium62639) {
|
| v8::V8::Initialize();
|
| @@ -2072,28 +1975,19 @@ TEST(DontRegressPreParserDataSizes) {
|
|
|
| struct TestCase {
|
| const char* program;
|
| - int symbols;
|
| int functions;
|
| } test_cases[] = {
|
| - // Labels and variables are recorded as symbols.
|
| - {"{label: 42}", 1, 0}, {"{label: 42; label2: 43}", 2, 0},
|
| - {"var x = 42;", 1, 0}, {"var x = 42, y = 43;", 2, 0},
|
| - {"var x = {y: 1};", 2, 0},
|
| - {"var x = {}; x.y = 1", 2, 0},
|
| - // "get" is recorded as a symbol too.
|
| - {"var x = {get foo(){} };", 3, 1},
|
| - // When keywords are used as identifiers, they're logged as symbols, too:
|
| - {"var x = {if: 1};", 2, 0},
|
| - {"var x = {}; x.if = 1", 2, 0},
|
| - {"var x = {get if(){} };", 3, 1},
|
| - // Functions
|
| - {"function foo() {}", 1, 1}, {"function foo() {} function bar() {}", 2, 2},
|
| - // Labels, variables and functions insize lazy functions are not recorded.
|
| - {"function lazy() { var a, b, c; }", 1, 1},
|
| - {"function lazy() { a: 1; b: 2; c: 3; }", 1, 1},
|
| - {"function lazy() { function a() {} function b() {} function c() {} }", 1,
|
| - 1},
|
| - {NULL, 0, 0}
|
| + // No functions.
|
| + {"var x = 42;", 0},
|
| + // Functions.
|
| + {"function foo() {}", 1}, {"function foo() {} function bar() {}", 2},
|
| + // Getter / setter functions are recorded as functions if they're on the top
|
| + // level.
|
| + {"var x = {get foo(){} };", 1},
|
| + // Functions insize lazy functions are not recorded.
|
| + {"function lazy() { function a() {} function b() {} function c() {} }", 1},
|
| + {"function lazy() { var x = {get foo(){} } }", 1},
|
| + {NULL, 0}
|
| };
|
|
|
| for (int i = 0; test_cases[i].program; i++) {
|
| @@ -2109,14 +2003,6 @@ TEST(DontRegressPreParserDataSizes) {
|
| CHECK(data);
|
| CHECK(!data->HasError());
|
|
|
| - if (data->symbol_count() != test_cases[i].symbols) {
|
| - i::OS::Print(
|
| - "Expected preparse data for program:\n"
|
| - "\t%s\n"
|
| - "to contain %d symbols, however, received %d symbols.\n",
|
| - program, test_cases[i].symbols, data->symbol_count());
|
| - CHECK(false);
|
| - }
|
| if (data->function_count() != test_cases[i].functions) {
|
| i::OS::Print(
|
| "Expected preparse data for program:\n"
|
|
|