| Index: test/cctest/test-parsing.cc | 
| diff --git a/test/cctest/test-parsing.cc b/test/cctest/test-parsing.cc | 
| index 48c4071087461489b6267896be70ec3ccebf011a..2a728c38e69ef07bb1ea133795663260ea912afa 100644 | 
| --- a/test/cctest/test-parsing.cc | 
| +++ b/test/cctest/test-parsing.cc | 
| @@ -168,36 +168,32 @@ TEST(ScanHTMLEndComments) { | 
| for (int i = 0; tests[i]; i++) { | 
| const char* source = tests[i]; | 
| auto stream = i::ScannerStream::ForTesting(source); | 
| -    i::CompleteParserRecorder log; | 
| i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); | 
| scanner.Initialize(stream.get()); | 
| i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); | 
| i::AstValueFactory ast_value_factory( | 
| &zone, CcTest::i_isolate()->heap()->HashSeed()); | 
| -    i::PreParser preparser(&zone, &scanner, &ast_value_factory, &log, | 
| -                           stack_limit); | 
| +    i::PreParser preparser(&zone, &scanner, &ast_value_factory, stack_limit); | 
| preparser.set_allow_lazy(true); | 
| i::PreParser::PreParseResult result = preparser.PreParseProgram(); | 
| CHECK_EQ(i::PreParser::kPreParseSuccess, result); | 
| -    CHECK(!log.HasError()); | 
| +    CHECK(!preparser.logger()->has_error()); | 
| } | 
|  | 
| for (int i = 0; fail_tests[i]; i++) { | 
| const char* source = fail_tests[i]; | 
| auto stream = i::ScannerStream::ForTesting(source); | 
| -    i::CompleteParserRecorder log; | 
| i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); | 
| scanner.Initialize(stream.get()); | 
| i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); | 
| i::AstValueFactory ast_value_factory( | 
| &zone, CcTest::i_isolate()->heap()->HashSeed()); | 
| -    i::PreParser preparser(&zone, &scanner, &ast_value_factory, &log, | 
| -                           stack_limit); | 
| +    i::PreParser preparser(&zone, &scanner, &ast_value_factory, stack_limit); | 
| preparser.set_allow_lazy(true); | 
| i::PreParser::PreParseResult result = preparser.PreParseProgram(); | 
| // Even in the case of a syntax error, kPreParseSuccess is returned. | 
| CHECK_EQ(i::PreParser::kPreParseSuccess, result); | 
| -    CHECK(log.HasError()); | 
| +    CHECK(preparser.logger()->has_error()); | 
| } | 
| } | 
|  | 
| @@ -358,20 +354,18 @@ TEST(StandAlonePreParser) { | 
| uintptr_t stack_limit = CcTest::i_isolate()->stack_guard()->real_climit(); | 
| for (int i = 0; programs[i]; i++) { | 
| auto stream = i::ScannerStream::ForTesting(programs[i]); | 
| -    i::CompleteParserRecorder log; | 
| i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); | 
| scanner.Initialize(stream.get()); | 
|  | 
| i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); | 
| i::AstValueFactory ast_value_factory( | 
| &zone, CcTest::i_isolate()->heap()->HashSeed()); | 
| -    i::PreParser preparser(&zone, &scanner, &ast_value_factory, &log, | 
| -                           stack_limit); | 
| +    i::PreParser preparser(&zone, &scanner, &ast_value_factory, stack_limit); | 
| preparser.set_allow_lazy(true); | 
| preparser.set_allow_natives(true); | 
| i::PreParser::PreParseResult result = preparser.PreParseProgram(); | 
| CHECK_EQ(i::PreParser::kPreParseSuccess, result); | 
| -    CHECK(!log.HasError()); | 
| +    CHECK(!preparser.logger()->has_error()); | 
| } | 
| } | 
|  | 
| @@ -391,7 +385,6 @@ TEST(StandAlonePreParserNoNatives) { | 
| uintptr_t stack_limit = CcTest::i_isolate()->stack_guard()->real_climit(); | 
| for (int i = 0; programs[i]; i++) { | 
| auto stream = i::ScannerStream::ForTesting(programs[i]); | 
| -    i::CompleteParserRecorder log; | 
| i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); | 
| scanner.Initialize(stream.get()); | 
|  | 
| @@ -399,12 +392,11 @@ TEST(StandAlonePreParserNoNatives) { | 
| i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); | 
| i::AstValueFactory ast_value_factory( | 
| &zone, CcTest::i_isolate()->heap()->HashSeed()); | 
| -    i::PreParser preparser(&zone, &scanner, &ast_value_factory, &log, | 
| -                           stack_limit); | 
| +    i::PreParser preparser(&zone, &scanner, &ast_value_factory, stack_limit); | 
| preparser.set_allow_lazy(true); | 
| i::PreParser::PreParseResult result = preparser.PreParseProgram(); | 
| CHECK_EQ(i::PreParser::kPreParseSuccess, result); | 
| -    CHECK(log.HasError()); | 
| +    CHECK(preparser.logger()->has_error()); | 
| } | 
| } | 
|  | 
| @@ -460,19 +452,18 @@ TEST(RegressChromium62639) { | 
| // failed in debug mode, and sometimes crashed in release mode. | 
|  | 
| auto stream = i::ScannerStream::ForTesting(program); | 
| -  i::CompleteParserRecorder log; | 
| i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); | 
| scanner.Initialize(stream.get()); | 
| i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); | 
| i::AstValueFactory ast_value_factory(&zone, | 
| CcTest::i_isolate()->heap()->HashSeed()); | 
| -  i::PreParser preparser(&zone, &scanner, &ast_value_factory, &log, | 
| +  i::PreParser preparser(&zone, &scanner, &ast_value_factory, | 
| CcTest::i_isolate()->stack_guard()->real_climit()); | 
| preparser.set_allow_lazy(true); | 
| i::PreParser::PreParseResult result = preparser.PreParseProgram(); | 
| // Even in the case of a syntax error, kPreParseSuccess is returned. | 
| CHECK_EQ(i::PreParser::kPreParseSuccess, result); | 
| -  CHECK(log.HasError()); | 
| +  CHECK(preparser.logger()->has_error()); | 
| } | 
|  | 
|  | 
| @@ -533,15 +524,13 @@ TEST(PreParseOverflow) { | 
| uintptr_t stack_limit = CcTest::i_isolate()->stack_guard()->real_climit(); | 
|  | 
| auto stream = i::ScannerStream::ForTesting(program.get(), kProgramSize); | 
| -  i::CompleteParserRecorder log; | 
| i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); | 
| scanner.Initialize(stream.get()); | 
|  | 
| i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); | 
| i::AstValueFactory ast_value_factory(&zone, | 
| CcTest::i_isolate()->heap()->HashSeed()); | 
| -  i::PreParser preparser(&zone, &scanner, &ast_value_factory, &log, | 
| -                         stack_limit); | 
| +  i::PreParser preparser(&zone, &scanner, &ast_value_factory, stack_limit); | 
| preparser.set_allow_lazy(true); | 
| i::PreParser::PreParseResult result = preparser.PreParseProgram(); | 
| CHECK_EQ(i::PreParser::kPreParseStackOverflow, result); | 
| @@ -1360,13 +1349,18 @@ void TestParserSyncWithFlags(i::Handle<i::String> source, | 
| i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); | 
| i::AstValueFactory ast_value_factory( | 
| &zone, CcTest::i_isolate()->heap()->HashSeed()); | 
| -    i::PreParser preparser(&zone, &scanner, &ast_value_factory, &log, | 
| -                           stack_limit); | 
| +    i::PreParser preparser(&zone, &scanner, &ast_value_factory, stack_limit); | 
| SetParserFlags(&preparser, flags); | 
| scanner.Initialize(stream.get()); | 
| i::PreParser::PreParseResult result = | 
| preparser.PreParseProgram(&preparser_materialized_literals, is_module); | 
| CHECK_EQ(i::PreParser::kPreParseSuccess, result); | 
| +    i::SingletonLogger* logger = preparser.logger(); | 
| +    // Convert to complete log. | 
| +    if (logger->has_error()) { | 
| +      log.LogMessage(logger->start(), logger->end(), logger->message(), | 
| +                     logger->argument_opt(), logger->error_type()); | 
| +    } | 
| } | 
| bool preparse_error = log.HasError(); | 
|  | 
|  |