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

Side by Side Diff: test/cctest/test-parsing.cc

Issue 2509683002: [counters] Use separate counters for background parsing (Closed)
Patch Set: using const arrays instead of two-level ternary syntax. Created 4 years, 1 month 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 unified diff | Download patch
« no previous file with comments | « src/parsing/preparser.cc ('k') | tools/callstats.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 for (int i = 0; tests[i]; i++) { 168 for (int i = 0; tests[i]; i++) {
169 const char* source = tests[i]; 169 const char* source = tests[i];
170 auto stream = i::ScannerStream::ForTesting(source); 170 auto stream = i::ScannerStream::ForTesting(source);
171 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); 171 i::Scanner scanner(CcTest::i_isolate()->unicode_cache());
172 scanner.Initialize(stream.get()); 172 scanner.Initialize(stream.get());
173 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); 173 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
174 i::AstValueFactory ast_value_factory( 174 i::AstValueFactory ast_value_factory(
175 &zone, CcTest::i_isolate()->heap()->HashSeed()); 175 &zone, CcTest::i_isolate()->heap()->HashSeed());
176 i::PendingCompilationErrorHandler pending_error_handler; 176 i::PendingCompilationErrorHandler pending_error_handler;
177 i::PreParser preparser( 177 i::PreParser preparser(
178 &zone, &scanner, &ast_value_factory, &pending_error_handler, 178 &zone, &scanner, stack_limit, &ast_value_factory,
179 CcTest::i_isolate()->counters()->runtime_call_stats(), stack_limit); 179 &pending_error_handler,
180 CcTest::i_isolate()->counters()->runtime_call_stats());
180 i::PreParser::PreParseResult result = preparser.PreParseProgram(); 181 i::PreParser::PreParseResult result = preparser.PreParseProgram();
181 CHECK_EQ(i::PreParser::kPreParseSuccess, result); 182 CHECK_EQ(i::PreParser::kPreParseSuccess, result);
182 CHECK(!pending_error_handler.has_pending_error()); 183 CHECK(!pending_error_handler.has_pending_error());
183 } 184 }
184 185
185 for (int i = 0; fail_tests[i]; i++) { 186 for (int i = 0; fail_tests[i]; i++) {
186 const char* source = fail_tests[i]; 187 const char* source = fail_tests[i];
187 auto stream = i::ScannerStream::ForTesting(source); 188 auto stream = i::ScannerStream::ForTesting(source);
188 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); 189 i::Scanner scanner(CcTest::i_isolate()->unicode_cache());
189 scanner.Initialize(stream.get()); 190 scanner.Initialize(stream.get());
190 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); 191 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
191 i::AstValueFactory ast_value_factory( 192 i::AstValueFactory ast_value_factory(
192 &zone, CcTest::i_isolate()->heap()->HashSeed()); 193 &zone, CcTest::i_isolate()->heap()->HashSeed());
193 i::PendingCompilationErrorHandler pending_error_handler; 194 i::PendingCompilationErrorHandler pending_error_handler;
194 i::PreParser preparser( 195 i::PreParser preparser(
195 &zone, &scanner, &ast_value_factory, &pending_error_handler, 196 &zone, &scanner, stack_limit, &ast_value_factory,
196 CcTest::i_isolate()->counters()->runtime_call_stats(), stack_limit); 197 &pending_error_handler,
198 CcTest::i_isolate()->counters()->runtime_call_stats());
197 i::PreParser::PreParseResult result = preparser.PreParseProgram(); 199 i::PreParser::PreParseResult result = preparser.PreParseProgram();
198 // Even in the case of a syntax error, kPreParseSuccess is returned. 200 // Even in the case of a syntax error, kPreParseSuccess is returned.
199 CHECK_EQ(i::PreParser::kPreParseSuccess, result); 201 CHECK_EQ(i::PreParser::kPreParseSuccess, result);
200 CHECK(pending_error_handler.has_pending_error()); 202 CHECK(pending_error_handler.has_pending_error());
201 } 203 }
202 } 204 }
203 205
204 206
205 class ScriptResource : public v8::String::ExternalOneByteStringResource { 207 class ScriptResource : public v8::String::ExternalOneByteStringResource {
206 public: 208 public:
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 for (int i = 0; programs[i]; i++) { 361 for (int i = 0; programs[i]; i++) {
360 auto stream = i::ScannerStream::ForTesting(programs[i]); 362 auto stream = i::ScannerStream::ForTesting(programs[i]);
361 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); 363 i::Scanner scanner(CcTest::i_isolate()->unicode_cache());
362 scanner.Initialize(stream.get()); 364 scanner.Initialize(stream.get());
363 365
364 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); 366 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
365 i::AstValueFactory ast_value_factory( 367 i::AstValueFactory ast_value_factory(
366 &zone, CcTest::i_isolate()->heap()->HashSeed()); 368 &zone, CcTest::i_isolate()->heap()->HashSeed());
367 i::PendingCompilationErrorHandler pending_error_handler; 369 i::PendingCompilationErrorHandler pending_error_handler;
368 i::PreParser preparser( 370 i::PreParser preparser(
369 &zone, &scanner, &ast_value_factory, &pending_error_handler, 371 &zone, &scanner, stack_limit, &ast_value_factory,
370 CcTest::i_isolate()->counters()->runtime_call_stats(), stack_limit); 372 &pending_error_handler,
373 CcTest::i_isolate()->counters()->runtime_call_stats());
371 preparser.set_allow_natives(true); 374 preparser.set_allow_natives(true);
372 i::PreParser::PreParseResult result = preparser.PreParseProgram(); 375 i::PreParser::PreParseResult result = preparser.PreParseProgram();
373 CHECK_EQ(i::PreParser::kPreParseSuccess, result); 376 CHECK_EQ(i::PreParser::kPreParseSuccess, result);
374 CHECK(!pending_error_handler.has_pending_error()); 377 CHECK(!pending_error_handler.has_pending_error());
375 } 378 }
376 } 379 }
377 380
378 381
379 TEST(StandAlonePreParserNoNatives) { 382 TEST(StandAlonePreParserNoNatives) {
380 v8::V8::Initialize(); 383 v8::V8::Initialize();
(...skipping 12 matching lines...) Expand all
393 for (int i = 0; programs[i]; i++) { 396 for (int i = 0; programs[i]; i++) {
394 auto stream = i::ScannerStream::ForTesting(programs[i]); 397 auto stream = i::ScannerStream::ForTesting(programs[i]);
395 i::Scanner scanner(isolate->unicode_cache()); 398 i::Scanner scanner(isolate->unicode_cache());
396 scanner.Initialize(stream.get()); 399 scanner.Initialize(stream.get());
397 400
398 // Preparser defaults to disallowing natives syntax. 401 // Preparser defaults to disallowing natives syntax.
399 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); 402 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
400 i::AstValueFactory ast_value_factory( 403 i::AstValueFactory ast_value_factory(
401 &zone, CcTest::i_isolate()->heap()->HashSeed()); 404 &zone, CcTest::i_isolate()->heap()->HashSeed());
402 i::PendingCompilationErrorHandler pending_error_handler; 405 i::PendingCompilationErrorHandler pending_error_handler;
403 i::PreParser preparser( 406 i::PreParser preparser(&zone, &scanner, stack_limit, &ast_value_factory,
404 &zone, &scanner, &ast_value_factory, &pending_error_handler, 407 &pending_error_handler,
405 isolate->counters()->runtime_call_stats(), stack_limit); 408 isolate->counters()->runtime_call_stats());
406 i::PreParser::PreParseResult result = preparser.PreParseProgram(); 409 i::PreParser::PreParseResult result = preparser.PreParseProgram();
407 CHECK_EQ(i::PreParser::kPreParseSuccess, result); 410 CHECK_EQ(i::PreParser::kPreParseSuccess, result);
408 CHECK(pending_error_handler.has_pending_error()); 411 CHECK(pending_error_handler.has_pending_error());
409 } 412 }
410 } 413 }
411 414
412 415
413 TEST(PreparsingObjectLiterals) { 416 TEST(PreparsingObjectLiterals) {
414 // Regression test for a bug where the symbol stream produced by PreParser 417 // Regression test for a bug where the symbol stream produced by PreParser
415 // didn't match what Parser wanted to consume. 418 // didn't match what Parser wanted to consume.
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 // and then used the invalid currently scanned literal. This always 463 // and then used the invalid currently scanned literal. This always
461 // failed in debug mode, and sometimes crashed in release mode. 464 // failed in debug mode, and sometimes crashed in release mode.
462 465
463 auto stream = i::ScannerStream::ForTesting(program); 466 auto stream = i::ScannerStream::ForTesting(program);
464 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); 467 i::Scanner scanner(CcTest::i_isolate()->unicode_cache());
465 scanner.Initialize(stream.get()); 468 scanner.Initialize(stream.get());
466 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); 469 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
467 i::AstValueFactory ast_value_factory(&zone, 470 i::AstValueFactory ast_value_factory(&zone,
468 CcTest::i_isolate()->heap()->HashSeed()); 471 CcTest::i_isolate()->heap()->HashSeed());
469 i::PendingCompilationErrorHandler pending_error_handler; 472 i::PendingCompilationErrorHandler pending_error_handler;
470 i::PreParser preparser(&zone, &scanner, &ast_value_factory, 473 i::PreParser preparser(&zone, &scanner,
471 &pending_error_handler, 474 CcTest::i_isolate()->stack_guard()->real_climit(),
472 isolate->counters()->runtime_call_stats(), 475 &ast_value_factory, &pending_error_handler,
473 CcTest::i_isolate()->stack_guard()->real_climit()); 476 isolate->counters()->runtime_call_stats());
474 i::PreParser::PreParseResult result = preparser.PreParseProgram(); 477 i::PreParser::PreParseResult result = preparser.PreParseProgram();
475 // Even in the case of a syntax error, kPreParseSuccess is returned. 478 // Even in the case of a syntax error, kPreParseSuccess is returned.
476 CHECK_EQ(i::PreParser::kPreParseSuccess, result); 479 CHECK_EQ(i::PreParser::kPreParseSuccess, result);
477 CHECK(pending_error_handler.has_pending_error()); 480 CHECK(pending_error_handler.has_pending_error());
478 } 481 }
479 482
480 483
481 TEST(Regress928) { 484 TEST(Regress928) {
482 // Test only applies when lazy parsing. 485 // Test only applies when lazy parsing.
483 if (!i::FLAG_lazy) return; 486 if (!i::FLAG_lazy) return;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 uintptr_t stack_limit = isolate->stack_guard()->real_climit(); 539 uintptr_t stack_limit = isolate->stack_guard()->real_climit();
537 540
538 auto stream = i::ScannerStream::ForTesting(program.get(), kProgramSize); 541 auto stream = i::ScannerStream::ForTesting(program.get(), kProgramSize);
539 i::Scanner scanner(isolate->unicode_cache()); 542 i::Scanner scanner(isolate->unicode_cache());
540 scanner.Initialize(stream.get()); 543 scanner.Initialize(stream.get());
541 544
542 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); 545 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
543 i::AstValueFactory ast_value_factory(&zone, 546 i::AstValueFactory ast_value_factory(&zone,
544 CcTest::i_isolate()->heap()->HashSeed()); 547 CcTest::i_isolate()->heap()->HashSeed());
545 i::PendingCompilationErrorHandler pending_error_handler; 548 i::PendingCompilationErrorHandler pending_error_handler;
546 i::PreParser preparser( 549 i::PreParser preparser(&zone, &scanner, stack_limit, &ast_value_factory,
547 &zone, &scanner, &ast_value_factory, &pending_error_handler, 550 &pending_error_handler,
548 isolate->counters()->runtime_call_stats(), stack_limit); 551 isolate->counters()->runtime_call_stats());
549 i::PreParser::PreParseResult result = preparser.PreParseProgram(); 552 i::PreParser::PreParseResult result = preparser.PreParseProgram();
550 CHECK_EQ(i::PreParser::kPreParseStackOverflow, result); 553 CHECK_EQ(i::PreParser::kPreParseStackOverflow, result);
551 } 554 }
552 555
553 556
554 void TestStreamScanner(i::Utf16CharacterStream* stream, 557 void TestStreamScanner(i::Utf16CharacterStream* stream,
555 i::Token::Value* expected_tokens, 558 i::Token::Value* expected_tokens,
556 int skip_pos = 0, // Zero means not skipping. 559 int skip_pos = 0, // Zero means not skipping.
557 int skip_to = 0) { 560 int skip_to = 0) {
558 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); 561 i::Scanner scanner(CcTest::i_isolate()->unicode_cache());
(...skipping 761 matching lines...) Expand 10 before | Expand all | Expand 10 after
1320 1323
1321 // Preparse the data. 1324 // Preparse the data.
1322 i::PendingCompilationErrorHandler pending_error_handler; 1325 i::PendingCompilationErrorHandler pending_error_handler;
1323 if (test_preparser) { 1326 if (test_preparser) {
1324 i::Scanner scanner(isolate->unicode_cache()); 1327 i::Scanner scanner(isolate->unicode_cache());
1325 std::unique_ptr<i::Utf16CharacterStream> stream( 1328 std::unique_ptr<i::Utf16CharacterStream> stream(
1326 i::ScannerStream::For(source)); 1329 i::ScannerStream::For(source));
1327 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); 1330 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
1328 i::AstValueFactory ast_value_factory( 1331 i::AstValueFactory ast_value_factory(
1329 &zone, CcTest::i_isolate()->heap()->HashSeed()); 1332 &zone, CcTest::i_isolate()->heap()->HashSeed());
1330 i::PreParser preparser( 1333 i::PreParser preparser(&zone, &scanner, stack_limit, &ast_value_factory,
1331 &zone, &scanner, &ast_value_factory, &pending_error_handler, 1334 &pending_error_handler,
1332 isolate->counters()->runtime_call_stats(), stack_limit); 1335 isolate->counters()->runtime_call_stats());
1333 SetParserFlags(&preparser, flags); 1336 SetParserFlags(&preparser, flags);
1334 scanner.Initialize(stream.get()); 1337 scanner.Initialize(stream.get());
1335 i::PreParser::PreParseResult result = 1338 i::PreParser::PreParseResult result =
1336 preparser.PreParseProgram(&preparser_materialized_literals, is_module); 1339 preparser.PreParseProgram(&preparser_materialized_literals, is_module);
1337 CHECK_EQ(i::PreParser::kPreParseSuccess, result); 1340 CHECK_EQ(i::PreParser::kPreParseSuccess, result);
1338 } 1341 }
1339 1342
1340 // Parse the data 1343 // Parse the data
1341 i::FunctionLiteral* function; 1344 i::FunctionLiteral* function;
1342 { 1345 {
(...skipping 6959 matching lines...) Expand 10 before | Expand all | Expand 10 after
8302 const char* data[] = { 8305 const char* data[] = {
8303 "const arguments = 1", 8306 "const arguments = 1",
8304 "let arguments", 8307 "let arguments",
8305 "var arguments", 8308 "var arguments",
8306 NULL 8309 NULL
8307 }; 8310 };
8308 // clang-format on 8311 // clang-format on
8309 RunParserSyncTest(context_data, data, kSuccess); 8312 RunParserSyncTest(context_data, data, kSuccess);
8310 } 8313 }
8311 } 8314 }
OLDNEW
« no previous file with comments | « src/parsing/preparser.cc ('k') | tools/callstats.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698