| OLD | NEW |
| 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 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 164 // Parser/Scanner needs a stack limit. | 164 // Parser/Scanner needs a stack limit. |
| 165 CcTest::i_isolate()->stack_guard()->SetStackLimit( | 165 CcTest::i_isolate()->stack_guard()->SetStackLimit( |
| 166 i::GetCurrentStackPosition() - 128 * 1024); | 166 i::GetCurrentStackPosition() - 128 * 1024); |
| 167 uintptr_t stack_limit = CcTest::i_isolate()->stack_guard()->real_climit(); | 167 uintptr_t stack_limit = CcTest::i_isolate()->stack_guard()->real_climit(); |
| 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::CompleteParserRecorder log; | 171 i::CompleteParserRecorder log; |
| 172 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); | 172 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); |
| 173 scanner.Initialize(stream.get()); | 173 scanner.Initialize(stream.get()); |
| 174 i::Zone zone(CcTest::i_isolate()->allocator()); | 174 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); |
| 175 i::AstValueFactory ast_value_factory( | 175 i::AstValueFactory ast_value_factory( |
| 176 &zone, CcTest::i_isolate()->heap()->HashSeed()); | 176 &zone, CcTest::i_isolate()->heap()->HashSeed()); |
| 177 i::PreParser preparser(&zone, &scanner, &ast_value_factory, &log, | 177 i::PreParser preparser(&zone, &scanner, &ast_value_factory, &log, |
| 178 stack_limit); | 178 stack_limit); |
| 179 preparser.set_allow_lazy(true); | 179 preparser.set_allow_lazy(true); |
| 180 i::PreParser::PreParseResult result = preparser.PreParseProgram(); | 180 i::PreParser::PreParseResult result = preparser.PreParseProgram(); |
| 181 CHECK_EQ(i::PreParser::kPreParseSuccess, result); | 181 CHECK_EQ(i::PreParser::kPreParseSuccess, result); |
| 182 CHECK(!log.HasError()); | 182 CHECK(!log.HasError()); |
| 183 } | 183 } |
| 184 | 184 |
| 185 for (int i = 0; fail_tests[i]; i++) { | 185 for (int i = 0; fail_tests[i]; i++) { |
| 186 const char* source = fail_tests[i]; | 186 const char* source = fail_tests[i]; |
| 187 auto stream = i::ScannerStream::ForTesting(source); | 187 auto stream = i::ScannerStream::ForTesting(source); |
| 188 i::CompleteParserRecorder log; | 188 i::CompleteParserRecorder log; |
| 189 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); | 189 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); |
| 190 scanner.Initialize(stream.get()); | 190 scanner.Initialize(stream.get()); |
| 191 i::Zone zone(CcTest::i_isolate()->allocator()); | 191 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); |
| 192 i::AstValueFactory ast_value_factory( | 192 i::AstValueFactory ast_value_factory( |
| 193 &zone, CcTest::i_isolate()->heap()->HashSeed()); | 193 &zone, CcTest::i_isolate()->heap()->HashSeed()); |
| 194 i::PreParser preparser(&zone, &scanner, &ast_value_factory, &log, | 194 i::PreParser preparser(&zone, &scanner, &ast_value_factory, &log, |
| 195 stack_limit); | 195 stack_limit); |
| 196 preparser.set_allow_lazy(true); | 196 preparser.set_allow_lazy(true); |
| 197 i::PreParser::PreParseResult result = preparser.PreParseProgram(); | 197 i::PreParser::PreParseResult result = preparser.PreParseProgram(); |
| 198 // Even in the case of a syntax error, kPreParseSuccess is returned. | 198 // Even in the case of a syntax error, kPreParseSuccess is returned. |
| 199 CHECK_EQ(i::PreParser::kPreParseSuccess, result); | 199 CHECK_EQ(i::PreParser::kPreParseSuccess, result); |
| 200 CHECK(log.HasError()); | 200 CHECK(log.HasError()); |
| 201 } | 201 } |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 339 NULL | 339 NULL |
| 340 }; | 340 }; |
| 341 | 341 |
| 342 uintptr_t stack_limit = CcTest::i_isolate()->stack_guard()->real_climit(); | 342 uintptr_t stack_limit = CcTest::i_isolate()->stack_guard()->real_climit(); |
| 343 for (int i = 0; programs[i]; i++) { | 343 for (int i = 0; programs[i]; i++) { |
| 344 auto stream = i::ScannerStream::ForTesting(programs[i]); | 344 auto stream = i::ScannerStream::ForTesting(programs[i]); |
| 345 i::CompleteParserRecorder log; | 345 i::CompleteParserRecorder log; |
| 346 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); | 346 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); |
| 347 scanner.Initialize(stream.get()); | 347 scanner.Initialize(stream.get()); |
| 348 | 348 |
| 349 i::Zone zone(CcTest::i_isolate()->allocator()); | 349 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); |
| 350 i::AstValueFactory ast_value_factory( | 350 i::AstValueFactory ast_value_factory( |
| 351 &zone, CcTest::i_isolate()->heap()->HashSeed()); | 351 &zone, CcTest::i_isolate()->heap()->HashSeed()); |
| 352 i::PreParser preparser(&zone, &scanner, &ast_value_factory, &log, | 352 i::PreParser preparser(&zone, &scanner, &ast_value_factory, &log, |
| 353 stack_limit); | 353 stack_limit); |
| 354 preparser.set_allow_lazy(true); | 354 preparser.set_allow_lazy(true); |
| 355 preparser.set_allow_natives(true); | 355 preparser.set_allow_natives(true); |
| 356 i::PreParser::PreParseResult result = preparser.PreParseProgram(); | 356 i::PreParser::PreParseResult result = preparser.PreParseProgram(); |
| 357 CHECK_EQ(i::PreParser::kPreParseSuccess, result); | 357 CHECK_EQ(i::PreParser::kPreParseSuccess, result); |
| 358 CHECK(!log.HasError()); | 358 CHECK(!log.HasError()); |
| 359 } | 359 } |
| (...skipping 13 matching lines...) Expand all Loading... |
| 373 }; | 373 }; |
| 374 | 374 |
| 375 uintptr_t stack_limit = CcTest::i_isolate()->stack_guard()->real_climit(); | 375 uintptr_t stack_limit = CcTest::i_isolate()->stack_guard()->real_climit(); |
| 376 for (int i = 0; programs[i]; i++) { | 376 for (int i = 0; programs[i]; i++) { |
| 377 auto stream = i::ScannerStream::ForTesting(programs[i]); | 377 auto stream = i::ScannerStream::ForTesting(programs[i]); |
| 378 i::CompleteParserRecorder log; | 378 i::CompleteParserRecorder log; |
| 379 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); | 379 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); |
| 380 scanner.Initialize(stream.get()); | 380 scanner.Initialize(stream.get()); |
| 381 | 381 |
| 382 // Preparser defaults to disallowing natives syntax. | 382 // Preparser defaults to disallowing natives syntax. |
| 383 i::Zone zone(CcTest::i_isolate()->allocator()); | 383 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); |
| 384 i::AstValueFactory ast_value_factory( | 384 i::AstValueFactory ast_value_factory( |
| 385 &zone, CcTest::i_isolate()->heap()->HashSeed()); | 385 &zone, CcTest::i_isolate()->heap()->HashSeed()); |
| 386 i::PreParser preparser(&zone, &scanner, &ast_value_factory, &log, | 386 i::PreParser preparser(&zone, &scanner, &ast_value_factory, &log, |
| 387 stack_limit); | 387 stack_limit); |
| 388 preparser.set_allow_lazy(true); | 388 preparser.set_allow_lazy(true); |
| 389 i::PreParser::PreParseResult result = preparser.PreParseProgram(); | 389 i::PreParser::PreParseResult result = preparser.PreParseProgram(); |
| 390 CHECK_EQ(i::PreParser::kPreParseSuccess, result); | 390 CHECK_EQ(i::PreParser::kPreParseSuccess, result); |
| 391 CHECK(log.HasError()); | 391 CHECK(log.HasError()); |
| 392 } | 392 } |
| 393 } | 393 } |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 440 "escape: function() {}"; | 440 "escape: function() {}"; |
| 441 // Fails parsing expecting an identifier after "function". | 441 // Fails parsing expecting an identifier after "function". |
| 442 // Before fix, didn't check *ok after Expect(Token::Identifier, ok), | 442 // Before fix, didn't check *ok after Expect(Token::Identifier, ok), |
| 443 // and then used the invalid currently scanned literal. This always | 443 // and then used the invalid currently scanned literal. This always |
| 444 // failed in debug mode, and sometimes crashed in release mode. | 444 // failed in debug mode, and sometimes crashed in release mode. |
| 445 | 445 |
| 446 auto stream = i::ScannerStream::ForTesting(program); | 446 auto stream = i::ScannerStream::ForTesting(program); |
| 447 i::CompleteParserRecorder log; | 447 i::CompleteParserRecorder log; |
| 448 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); | 448 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); |
| 449 scanner.Initialize(stream.get()); | 449 scanner.Initialize(stream.get()); |
| 450 i::Zone zone(CcTest::i_isolate()->allocator()); | 450 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); |
| 451 i::AstValueFactory ast_value_factory(&zone, | 451 i::AstValueFactory ast_value_factory(&zone, |
| 452 CcTest::i_isolate()->heap()->HashSeed()); | 452 CcTest::i_isolate()->heap()->HashSeed()); |
| 453 i::PreParser preparser(&zone, &scanner, &ast_value_factory, &log, | 453 i::PreParser preparser(&zone, &scanner, &ast_value_factory, &log, |
| 454 CcTest::i_isolate()->stack_guard()->real_climit()); | 454 CcTest::i_isolate()->stack_guard()->real_climit()); |
| 455 preparser.set_allow_lazy(true); | 455 preparser.set_allow_lazy(true); |
| 456 i::PreParser::PreParseResult result = preparser.PreParseProgram(); | 456 i::PreParser::PreParseResult result = preparser.PreParseProgram(); |
| 457 // Even in the case of a syntax error, kPreParseSuccess is returned. | 457 // Even in the case of a syntax error, kPreParseSuccess is returned. |
| 458 CHECK_EQ(i::PreParser::kPreParseSuccess, result); | 458 CHECK_EQ(i::PreParser::kPreParseSuccess, result); |
| 459 CHECK(log.HasError()); | 459 CHECK(log.HasError()); |
| 460 } | 460 } |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 515 memset(program.get(), '(', kProgramSize); | 515 memset(program.get(), '(', kProgramSize); |
| 516 program[kProgramSize] = '\0'; | 516 program[kProgramSize] = '\0'; |
| 517 | 517 |
| 518 uintptr_t stack_limit = CcTest::i_isolate()->stack_guard()->real_climit(); | 518 uintptr_t stack_limit = CcTest::i_isolate()->stack_guard()->real_climit(); |
| 519 | 519 |
| 520 auto stream = i::ScannerStream::ForTesting(program.get(), kProgramSize); | 520 auto stream = i::ScannerStream::ForTesting(program.get(), kProgramSize); |
| 521 i::CompleteParserRecorder log; | 521 i::CompleteParserRecorder log; |
| 522 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); | 522 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); |
| 523 scanner.Initialize(stream.get()); | 523 scanner.Initialize(stream.get()); |
| 524 | 524 |
| 525 i::Zone zone(CcTest::i_isolate()->allocator()); | 525 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); |
| 526 i::AstValueFactory ast_value_factory(&zone, | 526 i::AstValueFactory ast_value_factory(&zone, |
| 527 CcTest::i_isolate()->heap()->HashSeed()); | 527 CcTest::i_isolate()->heap()->HashSeed()); |
| 528 i::PreParser preparser(&zone, &scanner, &ast_value_factory, &log, | 528 i::PreParser preparser(&zone, &scanner, &ast_value_factory, &log, |
| 529 stack_limit); | 529 stack_limit); |
| 530 preparser.set_allow_lazy(true); | 530 preparser.set_allow_lazy(true); |
| 531 i::PreParser::PreParseResult result = preparser.PreParseProgram(); | 531 i::PreParser::PreParseResult result = preparser.PreParseProgram(); |
| 532 CHECK_EQ(i::PreParser::kPreParseStackOverflow, result); | 532 CHECK_EQ(i::PreParser::kPreParseStackOverflow, result); |
| 533 } | 533 } |
| 534 | 534 |
| 535 | 535 |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 615 void TestScanRegExp(const char* re_source, const char* expected) { | 615 void TestScanRegExp(const char* re_source, const char* expected) { |
| 616 auto stream = i::ScannerStream::ForTesting(re_source); | 616 auto stream = i::ScannerStream::ForTesting(re_source); |
| 617 i::HandleScope scope(CcTest::i_isolate()); | 617 i::HandleScope scope(CcTest::i_isolate()); |
| 618 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); | 618 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); |
| 619 scanner.Initialize(stream.get()); | 619 scanner.Initialize(stream.get()); |
| 620 | 620 |
| 621 i::Token::Value start = scanner.peek(); | 621 i::Token::Value start = scanner.peek(); |
| 622 CHECK(start == i::Token::DIV || start == i::Token::ASSIGN_DIV); | 622 CHECK(start == i::Token::DIV || start == i::Token::ASSIGN_DIV); |
| 623 CHECK(scanner.ScanRegExpPattern()); | 623 CHECK(scanner.ScanRegExpPattern()); |
| 624 scanner.Next(); // Current token is now the regexp literal. | 624 scanner.Next(); // Current token is now the regexp literal. |
| 625 i::Zone zone(CcTest::i_isolate()->allocator()); | 625 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); |
| 626 i::AstValueFactory ast_value_factory(&zone, | 626 i::AstValueFactory ast_value_factory(&zone, |
| 627 CcTest::i_isolate()->heap()->HashSeed()); | 627 CcTest::i_isolate()->heap()->HashSeed()); |
| 628 const i::AstRawString* current_symbol = | 628 const i::AstRawString* current_symbol = |
| 629 scanner.CurrentSymbol(&ast_value_factory); | 629 scanner.CurrentSymbol(&ast_value_factory); |
| 630 ast_value_factory.Internalize(CcTest::i_isolate()); | 630 ast_value_factory.Internalize(CcTest::i_isolate()); |
| 631 i::Handle<i::String> val = current_symbol->string(); | 631 i::Handle<i::String> val = current_symbol->string(); |
| 632 i::DisallowHeapAllocation no_alloc; | 632 i::DisallowHeapAllocation no_alloc; |
| 633 i::String::FlatContent content = val->GetFlatContent(); | 633 i::String::FlatContent content = val->GetFlatContent(); |
| 634 CHECK(content.IsOneByte()); | 634 CHECK(content.IsOneByte()); |
| 635 i::Vector<const uint8_t> actual = content.ToOneByteVector(); | 635 i::Vector<const uint8_t> actual = content.ToOneByteVector(); |
| (...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 840 int kProgramByteSize = i::StrLength(surroundings[j].prefix) + | 840 int kProgramByteSize = i::StrLength(surroundings[j].prefix) + |
| 841 i::StrLength(surroundings[j].suffix) + | 841 i::StrLength(surroundings[j].suffix) + |
| 842 i::StrLength(source_data[i].body); | 842 i::StrLength(source_data[i].body); |
| 843 i::ScopedVector<char> program(kProgramByteSize + 1); | 843 i::ScopedVector<char> program(kProgramByteSize + 1); |
| 844 i::SNPrintF(program, "%s%s%s", surroundings[j].prefix, | 844 i::SNPrintF(program, "%s%s%s", surroundings[j].prefix, |
| 845 source_data[i].body, surroundings[j].suffix); | 845 source_data[i].body, surroundings[j].suffix); |
| 846 i::Handle<i::String> source = | 846 i::Handle<i::String> source = |
| 847 factory->NewStringFromUtf8(i::CStrVector(program.start())) | 847 factory->NewStringFromUtf8(i::CStrVector(program.start())) |
| 848 .ToHandleChecked(); | 848 .ToHandleChecked(); |
| 849 i::Handle<i::Script> script = factory->NewScript(source); | 849 i::Handle<i::Script> script = factory->NewScript(source); |
| 850 i::Zone zone(CcTest::i_isolate()->allocator()); | 850 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); |
| 851 i::ParseInfo info(&zone, script); | 851 i::ParseInfo info(&zone, script); |
| 852 i::Parser parser(&info); | 852 i::Parser parser(&info); |
| 853 CHECK(parser.Parse(&info)); | 853 CHECK(parser.Parse(&info)); |
| 854 CHECK(i::Rewriter::Rewrite(&info)); | 854 CHECK(i::Rewriter::Rewrite(&info)); |
| 855 i::DeclarationScope::Analyze(&info, i::AnalyzeMode::kRegular); | 855 i::DeclarationScope::Analyze(&info, i::AnalyzeMode::kRegular); |
| 856 CHECK(info.literal() != NULL); | 856 CHECK(info.literal() != NULL); |
| 857 | 857 |
| 858 i::DeclarationScope* script_scope = info.literal()->scope(); | 858 i::DeclarationScope* script_scope = info.literal()->scope(); |
| 859 CHECK(script_scope->is_script_scope()); | 859 CHECK(script_scope->is_script_scope()); |
| 860 | 860 |
| (...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1157 i::SNPrintF(program, "%s%s%s", | 1157 i::SNPrintF(program, "%s%s%s", |
| 1158 source_data[i].outer_prefix, | 1158 source_data[i].outer_prefix, |
| 1159 source_data[i].inner_source, | 1159 source_data[i].inner_source, |
| 1160 source_data[i].outer_suffix); | 1160 source_data[i].outer_suffix); |
| 1161 | 1161 |
| 1162 // Parse program source. | 1162 // Parse program source. |
| 1163 i::Handle<i::String> source = factory->NewStringFromUtf8( | 1163 i::Handle<i::String> source = factory->NewStringFromUtf8( |
| 1164 i::CStrVector(program.start())).ToHandleChecked(); | 1164 i::CStrVector(program.start())).ToHandleChecked(); |
| 1165 CHECK_EQ(source->length(), kProgramSize); | 1165 CHECK_EQ(source->length(), kProgramSize); |
| 1166 i::Handle<i::Script> script = factory->NewScript(source); | 1166 i::Handle<i::Script> script = factory->NewScript(source); |
| 1167 i::Zone zone(CcTest::i_isolate()->allocator()); | 1167 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); |
| 1168 i::ParseInfo info(&zone, script); | 1168 i::ParseInfo info(&zone, script); |
| 1169 i::Parser parser(&info); | 1169 i::Parser parser(&info); |
| 1170 parser.set_allow_lazy(true); | 1170 parser.set_allow_lazy(true); |
| 1171 info.set_language_mode(source_data[i].language_mode); | 1171 info.set_language_mode(source_data[i].language_mode); |
| 1172 parser.Parse(&info); | 1172 parser.Parse(&info); |
| 1173 CHECK(info.literal() != NULL); | 1173 CHECK(info.literal() != NULL); |
| 1174 | 1174 |
| 1175 // Check scope types and positions. | 1175 // Check scope types and positions. |
| 1176 i::Scope* scope = info.literal()->scope(); | 1176 i::Scope* scope = info.literal()->scope(); |
| 1177 CHECK(scope->is_script_scope()); | 1177 CHECK(scope->is_script_scope()); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 1206 i::Isolate* isolate = CcTest::i_isolate(); | 1206 i::Isolate* isolate = CcTest::i_isolate(); |
| 1207 i::Factory* factory = isolate->factory(); | 1207 i::Factory* factory = isolate->factory(); |
| 1208 v8::HandleScope handles(CcTest::isolate()); | 1208 v8::HandleScope handles(CcTest::isolate()); |
| 1209 i::FunctionLiteral* function; | 1209 i::FunctionLiteral* function; |
| 1210 | 1210 |
| 1211 for (int i = 0; discard_sources[i]; i++) { | 1211 for (int i = 0; discard_sources[i]; i++) { |
| 1212 const char* source = discard_sources[i]; | 1212 const char* source = discard_sources[i]; |
| 1213 i::Handle<i::String> source_code = | 1213 i::Handle<i::String> source_code = |
| 1214 factory->NewStringFromUtf8(i::CStrVector(source)).ToHandleChecked(); | 1214 factory->NewStringFromUtf8(i::CStrVector(source)).ToHandleChecked(); |
| 1215 i::Handle<i::Script> script = factory->NewScript(source_code); | 1215 i::Handle<i::Script> script = factory->NewScript(source_code); |
| 1216 i::Zone zone(CcTest::i_isolate()->allocator()); | 1216 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); |
| 1217 i::ParseInfo info(&zone, script); | 1217 i::ParseInfo info(&zone, script); |
| 1218 info.set_allow_lazy_parsing(); | 1218 info.set_allow_lazy_parsing(); |
| 1219 i::Parser parser(&info); | 1219 i::Parser parser(&info); |
| 1220 parser.Parse(&info); | 1220 parser.Parse(&info); |
| 1221 function = info.literal(); | 1221 function = info.literal(); |
| 1222 CHECK_NOT_NULL(function); | 1222 CHECK_NOT_NULL(function); |
| 1223 CHECK_NOT_NULL(function->body()); | 1223 CHECK_NOT_NULL(function->body()); |
| 1224 CHECK_EQ(1, function->body()->length()); | 1224 CHECK_EQ(1, function->body()->length()); |
| 1225 i::FunctionLiteral* inner = | 1225 i::FunctionLiteral* inner = |
| 1226 function->body()->first()->AsExpressionStatement()->expression()-> | 1226 function->body()->first()->AsExpressionStatement()->expression()-> |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1332 uintptr_t stack_limit = isolate->stack_guard()->real_climit(); | 1332 uintptr_t stack_limit = isolate->stack_guard()->real_climit(); |
| 1333 int preparser_materialized_literals = -1; | 1333 int preparser_materialized_literals = -1; |
| 1334 int parser_materialized_literals = -2; | 1334 int parser_materialized_literals = -2; |
| 1335 | 1335 |
| 1336 // Preparse the data. | 1336 // Preparse the data. |
| 1337 i::CompleteParserRecorder log; | 1337 i::CompleteParserRecorder log; |
| 1338 if (test_preparser) { | 1338 if (test_preparser) { |
| 1339 i::Scanner scanner(isolate->unicode_cache()); | 1339 i::Scanner scanner(isolate->unicode_cache()); |
| 1340 std::unique_ptr<i::Utf16CharacterStream> stream( | 1340 std::unique_ptr<i::Utf16CharacterStream> stream( |
| 1341 i::ScannerStream::For(source)); | 1341 i::ScannerStream::For(source)); |
| 1342 i::Zone zone(CcTest::i_isolate()->allocator()); | 1342 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); |
| 1343 i::AstValueFactory ast_value_factory( | 1343 i::AstValueFactory ast_value_factory( |
| 1344 &zone, CcTest::i_isolate()->heap()->HashSeed()); | 1344 &zone, CcTest::i_isolate()->heap()->HashSeed()); |
| 1345 i::PreParser preparser(&zone, &scanner, &ast_value_factory, &log, | 1345 i::PreParser preparser(&zone, &scanner, &ast_value_factory, &log, |
| 1346 stack_limit); | 1346 stack_limit); |
| 1347 SetParserFlags(&preparser, flags); | 1347 SetParserFlags(&preparser, flags); |
| 1348 scanner.Initialize(stream.get()); | 1348 scanner.Initialize(stream.get()); |
| 1349 i::PreParser::PreParseResult result = | 1349 i::PreParser::PreParseResult result = |
| 1350 preparser.PreParseProgram(&preparser_materialized_literals, is_module); | 1350 preparser.PreParseProgram(&preparser_materialized_literals, is_module); |
| 1351 CHECK_EQ(i::PreParser::kPreParseSuccess, result); | 1351 CHECK_EQ(i::PreParser::kPreParseSuccess, result); |
| 1352 } | 1352 } |
| 1353 bool preparse_error = log.HasError(); | 1353 bool preparse_error = log.HasError(); |
| 1354 | 1354 |
| 1355 // Parse the data | 1355 // Parse the data |
| 1356 i::FunctionLiteral* function; | 1356 i::FunctionLiteral* function; |
| 1357 { | 1357 { |
| 1358 i::Handle<i::Script> script = factory->NewScript(source); | 1358 i::Handle<i::Script> script = factory->NewScript(source); |
| 1359 i::Zone zone(CcTest::i_isolate()->allocator()); | 1359 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); |
| 1360 i::ParseInfo info(&zone, script); | 1360 i::ParseInfo info(&zone, script); |
| 1361 i::Parser parser(&info); | 1361 i::Parser parser(&info); |
| 1362 SetParserFlags(&parser, flags); | 1362 SetParserFlags(&parser, flags); |
| 1363 if (is_module) info.set_module(); | 1363 if (is_module) info.set_module(); |
| 1364 parser.Parse(&info); | 1364 parser.Parse(&info); |
| 1365 function = info.literal(); | 1365 function = info.literal(); |
| 1366 if (function) { | 1366 if (function) { |
| 1367 parser_materialized_literals = function->materialized_literal_count(); | 1367 parser_materialized_literals = function->materialized_literal_count(); |
| 1368 } | 1368 } |
| 1369 } | 1369 } |
| (...skipping 1109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2479 {"function lazy() { var x = {get foo(){} } }", 1}, | 2479 {"function lazy() { var x = {get foo(){} } }", 1}, |
| 2480 {NULL, 0} | 2480 {NULL, 0} |
| 2481 }; | 2481 }; |
| 2482 | 2482 |
| 2483 for (int i = 0; test_cases[i].program; i++) { | 2483 for (int i = 0; test_cases[i].program; i++) { |
| 2484 const char* program = test_cases[i].program; | 2484 const char* program = test_cases[i].program; |
| 2485 i::Factory* factory = CcTest::i_isolate()->factory(); | 2485 i::Factory* factory = CcTest::i_isolate()->factory(); |
| 2486 i::Handle<i::String> source = | 2486 i::Handle<i::String> source = |
| 2487 factory->NewStringFromUtf8(i::CStrVector(program)).ToHandleChecked(); | 2487 factory->NewStringFromUtf8(i::CStrVector(program)).ToHandleChecked(); |
| 2488 i::Handle<i::Script> script = factory->NewScript(source); | 2488 i::Handle<i::Script> script = factory->NewScript(source); |
| 2489 i::Zone zone(CcTest::i_isolate()->allocator()); | 2489 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); |
| 2490 i::ParseInfo info(&zone, script); | 2490 i::ParseInfo info(&zone, script); |
| 2491 i::ScriptData* sd = NULL; | 2491 i::ScriptData* sd = NULL; |
| 2492 info.set_cached_data(&sd); | 2492 info.set_cached_data(&sd); |
| 2493 info.set_compile_options(v8::ScriptCompiler::kProduceParserCache); | 2493 info.set_compile_options(v8::ScriptCompiler::kProduceParserCache); |
| 2494 info.set_allow_lazy_parsing(); | 2494 info.set_allow_lazy_parsing(); |
| 2495 i::Parser::ParseStatic(&info); | 2495 i::Parser::ParseStatic(&info); |
| 2496 i::ParseData* pd = i::ParseData::FromCachedData(sd); | 2496 i::ParseData* pd = i::ParseData::FromCachedData(sd); |
| 2497 | 2497 |
| 2498 if (pd->FunctionCount() != test_cases[i].functions) { | 2498 if (pd->FunctionCount() != test_cases[i].functions) { |
| 2499 v8::base::OS::Print( | 2499 v8::base::OS::Print( |
| (...skipping 685 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3185 " assertResult([2]);" | 3185 " assertResult([2]);" |
| 3186 " return f;" | 3186 " return f;" |
| 3187 "};" | 3187 "};" |
| 3188 "h();"; | 3188 "h();"; |
| 3189 | 3189 |
| 3190 i::ScopedVector<char> program(Utf8LengthHelper(src) + 1); | 3190 i::ScopedVector<char> program(Utf8LengthHelper(src) + 1); |
| 3191 i::SNPrintF(program, "%s", src); | 3191 i::SNPrintF(program, "%s", src); |
| 3192 i::Handle<i::String> source = factory->InternalizeUtf8String(program.start()); | 3192 i::Handle<i::String> source = factory->InternalizeUtf8String(program.start()); |
| 3193 source->PrintOn(stdout); | 3193 source->PrintOn(stdout); |
| 3194 printf("\n"); | 3194 printf("\n"); |
| 3195 i::Zone zone(CcTest::i_isolate()->allocator()); | 3195 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); |
| 3196 v8::Local<v8::Value> v = CompileRun(src); | 3196 v8::Local<v8::Value> v = CompileRun(src); |
| 3197 i::Handle<i::Object> o = v8::Utils::OpenHandle(*v); | 3197 i::Handle<i::Object> o = v8::Utils::OpenHandle(*v); |
| 3198 i::Handle<i::JSFunction> f = i::Handle<i::JSFunction>::cast(o); | 3198 i::Handle<i::JSFunction> f = i::Handle<i::JSFunction>::cast(o); |
| 3199 i::Context* context = f->context(); | 3199 i::Context* context = f->context(); |
| 3200 i::AstValueFactory avf(&zone, isolate->heap()->HashSeed()); | 3200 i::AstValueFactory avf(&zone, isolate->heap()->HashSeed()); |
| 3201 const i::AstRawString* name = avf.GetOneByteString("result"); | 3201 const i::AstRawString* name = avf.GetOneByteString("result"); |
| 3202 avf.Internalize(isolate); | 3202 avf.Internalize(isolate); |
| 3203 i::Handle<i::String> str = name->string(); | 3203 i::Handle<i::String> str = name->string(); |
| 3204 CHECK(str->IsInternalizedString()); | 3204 CHECK(str->IsInternalizedString()); |
| 3205 i::DeclarationScope* script_scope = | 3205 i::DeclarationScope* script_scope = |
| (...skipping 29 matching lines...) Expand all Loading... |
| 3235 " };" | 3235 " };" |
| 3236 " return g;" | 3236 " return g;" |
| 3237 " }" | 3237 " }" |
| 3238 "f(0);"; | 3238 "f(0);"; |
| 3239 | 3239 |
| 3240 i::ScopedVector<char> program(Utf8LengthHelper(src) + 1); | 3240 i::ScopedVector<char> program(Utf8LengthHelper(src) + 1); |
| 3241 i::SNPrintF(program, "%s", src); | 3241 i::SNPrintF(program, "%s", src); |
| 3242 i::Handle<i::String> source = factory->InternalizeUtf8String(program.start()); | 3242 i::Handle<i::String> source = factory->InternalizeUtf8String(program.start()); |
| 3243 source->PrintOn(stdout); | 3243 source->PrintOn(stdout); |
| 3244 printf("\n"); | 3244 printf("\n"); |
| 3245 i::Zone zone(CcTest::i_isolate()->allocator()); | 3245 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); |
| 3246 v8::Local<v8::Value> v = CompileRun(src); | 3246 v8::Local<v8::Value> v = CompileRun(src); |
| 3247 i::Handle<i::Object> o = v8::Utils::OpenHandle(*v); | 3247 i::Handle<i::Object> o = v8::Utils::OpenHandle(*v); |
| 3248 i::Handle<i::JSFunction> f = i::Handle<i::JSFunction>::cast(o); | 3248 i::Handle<i::JSFunction> f = i::Handle<i::JSFunction>::cast(o); |
| 3249 i::Context* context = f->context(); | 3249 i::Context* context = f->context(); |
| 3250 i::AstValueFactory avf(&zone, isolate->heap()->HashSeed()); | 3250 i::AstValueFactory avf(&zone, isolate->heap()->HashSeed()); |
| 3251 const i::AstRawString* name_x = avf.GetOneByteString("x"); | 3251 const i::AstRawString* name_x = avf.GetOneByteString("x"); |
| 3252 avf.Internalize(isolate); | 3252 avf.Internalize(isolate); |
| 3253 | 3253 |
| 3254 i::DeclarationScope* script_scope = | 3254 i::DeclarationScope* script_scope = |
| 3255 new (&zone) i::DeclarationScope(&zone, &avf); | 3255 new (&zone) i::DeclarationScope(&zone, &avf); |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3364 if (outers[i].strict && inners[j].with) continue; | 3364 if (outers[i].strict && inners[j].with) continue; |
| 3365 const char* inner = inners[j].source; | 3365 const char* inner = inners[j].source; |
| 3366 int inner_len = Utf8LengthHelper(inner); | 3366 int inner_len = Utf8LengthHelper(inner); |
| 3367 | 3367 |
| 3368 int len = prefix_len + outer_len + midfix_len + inner_len + suffix_len; | 3368 int len = prefix_len + outer_len + midfix_len + inner_len + suffix_len; |
| 3369 i::ScopedVector<char> program(len + 1); | 3369 i::ScopedVector<char> program(len + 1); |
| 3370 | 3370 |
| 3371 i::SNPrintF(program, "%s%s%s%s%s", prefix, outer, midfix, inner, | 3371 i::SNPrintF(program, "%s%s%s%s%s", prefix, outer, midfix, inner, |
| 3372 suffix); | 3372 suffix); |
| 3373 | 3373 |
| 3374 i::Zone zone(CcTest::i_isolate()->allocator()); | 3374 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); |
| 3375 std::unique_ptr<i::ParseInfo> info; | 3375 std::unique_ptr<i::ParseInfo> info; |
| 3376 if (lazy) { | 3376 if (lazy) { |
| 3377 printf("%s\n", program.start()); | 3377 printf("%s\n", program.start()); |
| 3378 v8::Local<v8::Value> v = CompileRun(program.start()); | 3378 v8::Local<v8::Value> v = CompileRun(program.start()); |
| 3379 i::Handle<i::Object> o = v8::Utils::OpenHandle(*v); | 3379 i::Handle<i::Object> o = v8::Utils::OpenHandle(*v); |
| 3380 i::Handle<i::JSFunction> f = i::Handle<i::JSFunction>::cast(o); | 3380 i::Handle<i::JSFunction> f = i::Handle<i::JSFunction>::cast(o); |
| 3381 i::Handle<i::SharedFunctionInfo> shared = i::handle(f->shared()); | 3381 i::Handle<i::SharedFunctionInfo> shared = i::handle(f->shared()); |
| 3382 info = std::unique_ptr<i::ParseInfo>(new i::ParseInfo(&zone, shared)); | 3382 info = std::unique_ptr<i::ParseInfo>(new i::ParseInfo(&zone, shared)); |
| 3383 } else { | 3383 } else { |
| 3384 i::Handle<i::String> source = | 3384 i::Handle<i::String> source = |
| (...skipping 2258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5643 isolate->stack_guard()->SetStackLimit(i::GetCurrentStackPosition() - | 5643 isolate->stack_guard()->SetStackLimit(i::GetCurrentStackPosition() - |
| 5644 128 * 1024); | 5644 128 * 1024); |
| 5645 | 5645 |
| 5646 for (unsigned i = 0; i < arraysize(kSources); ++i) { | 5646 for (unsigned i = 0; i < arraysize(kSources); ++i) { |
| 5647 i::Handle<i::String> source = | 5647 i::Handle<i::String> source = |
| 5648 factory->NewStringFromAsciiChecked(kSources[i]); | 5648 factory->NewStringFromAsciiChecked(kSources[i]); |
| 5649 | 5649 |
| 5650 // Show that parsing as a module works | 5650 // Show that parsing as a module works |
| 5651 { | 5651 { |
| 5652 i::Handle<i::Script> script = factory->NewScript(source); | 5652 i::Handle<i::Script> script = factory->NewScript(source); |
| 5653 i::Zone zone(CcTest::i_isolate()->allocator()); | 5653 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); |
| 5654 i::ParseInfo info(&zone, script); | 5654 i::ParseInfo info(&zone, script); |
| 5655 i::Parser parser(&info); | 5655 i::Parser parser(&info); |
| 5656 info.set_module(); | 5656 info.set_module(); |
| 5657 if (!parser.Parse(&info)) { | 5657 if (!parser.Parse(&info)) { |
| 5658 i::Handle<i::JSObject> exception_handle( | 5658 i::Handle<i::JSObject> exception_handle( |
| 5659 i::JSObject::cast(isolate->pending_exception())); | 5659 i::JSObject::cast(isolate->pending_exception())); |
| 5660 i::Handle<i::String> message_string = i::Handle<i::String>::cast( | 5660 i::Handle<i::String> message_string = i::Handle<i::String>::cast( |
| 5661 i::JSReceiver::GetProperty(isolate, exception_handle, "message") | 5661 i::JSReceiver::GetProperty(isolate, exception_handle, "message") |
| 5662 .ToHandleChecked()); | 5662 .ToHandleChecked()); |
| 5663 isolate->clear_pending_exception(); | 5663 isolate->clear_pending_exception(); |
| 5664 | 5664 |
| 5665 v8::base::OS::Print( | 5665 v8::base::OS::Print( |
| 5666 "Parser failed on:\n" | 5666 "Parser failed on:\n" |
| 5667 "\t%s\n" | 5667 "\t%s\n" |
| 5668 "with error:\n" | 5668 "with error:\n" |
| 5669 "\t%s\n" | 5669 "\t%s\n" |
| 5670 "However, we expected no error.", | 5670 "However, we expected no error.", |
| 5671 source->ToCString().get(), message_string->ToCString().get()); | 5671 source->ToCString().get(), message_string->ToCString().get()); |
| 5672 CHECK(false); | 5672 CHECK(false); |
| 5673 } | 5673 } |
| 5674 } | 5674 } |
| 5675 | 5675 |
| 5676 // And that parsing a script does not. | 5676 // And that parsing a script does not. |
| 5677 { | 5677 { |
| 5678 i::Handle<i::Script> script = factory->NewScript(source); | 5678 i::Handle<i::Script> script = factory->NewScript(source); |
| 5679 i::Zone zone(CcTest::i_isolate()->allocator()); | 5679 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); |
| 5680 i::ParseInfo info(&zone, script); | 5680 i::ParseInfo info(&zone, script); |
| 5681 i::Parser parser(&info); | 5681 i::Parser parser(&info); |
| 5682 CHECK(!parser.Parse(&info)); | 5682 CHECK(!parser.Parse(&info)); |
| 5683 isolate->clear_pending_exception(); | 5683 isolate->clear_pending_exception(); |
| 5684 } | 5684 } |
| 5685 } | 5685 } |
| 5686 } | 5686 } |
| 5687 | 5687 |
| 5688 | 5688 |
| 5689 TEST(ImportExportParsingErrors) { | 5689 TEST(ImportExportParsingErrors) { |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5761 v8::Context::Scope context_scope(context); | 5761 v8::Context::Scope context_scope(context); |
| 5762 | 5762 |
| 5763 isolate->stack_guard()->SetStackLimit(i::GetCurrentStackPosition() - | 5763 isolate->stack_guard()->SetStackLimit(i::GetCurrentStackPosition() - |
| 5764 128 * 1024); | 5764 128 * 1024); |
| 5765 | 5765 |
| 5766 for (unsigned i = 0; i < arraysize(kErrorSources); ++i) { | 5766 for (unsigned i = 0; i < arraysize(kErrorSources); ++i) { |
| 5767 i::Handle<i::String> source = | 5767 i::Handle<i::String> source = |
| 5768 factory->NewStringFromAsciiChecked(kErrorSources[i]); | 5768 factory->NewStringFromAsciiChecked(kErrorSources[i]); |
| 5769 | 5769 |
| 5770 i::Handle<i::Script> script = factory->NewScript(source); | 5770 i::Handle<i::Script> script = factory->NewScript(source); |
| 5771 i::Zone zone(CcTest::i_isolate()->allocator()); | 5771 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); |
| 5772 i::ParseInfo info(&zone, script); | 5772 i::ParseInfo info(&zone, script); |
| 5773 i::Parser parser(&info); | 5773 i::Parser parser(&info); |
| 5774 info.set_module(); | 5774 info.set_module(); |
| 5775 CHECK(!parser.Parse(&info)); | 5775 CHECK(!parser.Parse(&info)); |
| 5776 isolate->clear_pending_exception(); | 5776 isolate->clear_pending_exception(); |
| 5777 } | 5777 } |
| 5778 } | 5778 } |
| 5779 | 5779 |
| 5780 TEST(ModuleTopLevelFunctionDecl) { | 5780 TEST(ModuleTopLevelFunctionDecl) { |
| 5781 // clang-format off | 5781 // clang-format off |
| (...skipping 17 matching lines...) Expand all Loading... |
| 5799 v8::Context::Scope context_scope(context); | 5799 v8::Context::Scope context_scope(context); |
| 5800 | 5800 |
| 5801 isolate->stack_guard()->SetStackLimit(i::GetCurrentStackPosition() - | 5801 isolate->stack_guard()->SetStackLimit(i::GetCurrentStackPosition() - |
| 5802 128 * 1024); | 5802 128 * 1024); |
| 5803 | 5803 |
| 5804 for (unsigned i = 0; i < arraysize(kErrorSources); ++i) { | 5804 for (unsigned i = 0; i < arraysize(kErrorSources); ++i) { |
| 5805 i::Handle<i::String> source = | 5805 i::Handle<i::String> source = |
| 5806 factory->NewStringFromAsciiChecked(kErrorSources[i]); | 5806 factory->NewStringFromAsciiChecked(kErrorSources[i]); |
| 5807 | 5807 |
| 5808 i::Handle<i::Script> script = factory->NewScript(source); | 5808 i::Handle<i::Script> script = factory->NewScript(source); |
| 5809 i::Zone zone(CcTest::i_isolate()->allocator()); | 5809 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); |
| 5810 i::ParseInfo info(&zone, script); | 5810 i::ParseInfo info(&zone, script); |
| 5811 i::Parser parser(&info); | 5811 i::Parser parser(&info); |
| 5812 info.set_module(); | 5812 info.set_module(); |
| 5813 CHECK(!parser.Parse(&info)); | 5813 CHECK(!parser.Parse(&info)); |
| 5814 isolate->clear_pending_exception(); | 5814 isolate->clear_pending_exception(); |
| 5815 } | 5815 } |
| 5816 } | 5816 } |
| 5817 | 5817 |
| 5818 TEST(ModuleAwaitReserved) { | 5818 TEST(ModuleAwaitReserved) { |
| 5819 // clang-format off | 5819 // clang-format off |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5998 "import 'q.js';" | 5998 "import 'q.js';" |
| 5999 "let nonexport = 42;" | 5999 "let nonexport = 42;" |
| 6000 "import {m as mm} from 'm.js';" | 6000 "import {m as mm} from 'm.js';" |
| 6001 "import {aa} from 'm.js';" | 6001 "import {aa} from 'm.js';" |
| 6002 "export {aa as bb, x};" | 6002 "export {aa as bb, x};" |
| 6003 "import * as loo from 'bar.js';" | 6003 "import * as loo from 'bar.js';" |
| 6004 "import * as foob from 'bar.js';" | 6004 "import * as foob from 'bar.js';" |
| 6005 "export {foob};"; | 6005 "export {foob};"; |
| 6006 i::Handle<i::String> source = factory->NewStringFromAsciiChecked(kSource); | 6006 i::Handle<i::String> source = factory->NewStringFromAsciiChecked(kSource); |
| 6007 i::Handle<i::Script> script = factory->NewScript(source); | 6007 i::Handle<i::Script> script = factory->NewScript(source); |
| 6008 i::Zone zone(CcTest::i_isolate()->allocator()); | 6008 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); |
| 6009 i::ParseInfo info(&zone, script); | 6009 i::ParseInfo info(&zone, script); |
| 6010 i::Parser parser(&info); | 6010 i::Parser parser(&info); |
| 6011 info.set_module(); | 6011 info.set_module(); |
| 6012 CHECK(parser.Parse(&info)); | 6012 CHECK(parser.Parse(&info)); |
| 6013 CHECK(i::Compiler::Analyze(&info)); | 6013 CHECK(i::Compiler::Analyze(&info)); |
| 6014 i::FunctionLiteral* func = info.literal(); | 6014 i::FunctionLiteral* func = info.literal(); |
| 6015 i::ModuleScope* module_scope = func->scope()->AsModuleScope(); | 6015 i::ModuleScope* module_scope = func->scope()->AsModuleScope(); |
| 6016 i::Scope* outer_scope = module_scope->outer_scope(); | 6016 i::Scope* outer_scope = module_scope->outer_scope(); |
| 6017 CHECK(outer_scope->is_script_scope()); | 6017 CHECK(outer_scope->is_script_scope()); |
| 6018 CHECK_NULL(outer_scope->outer_scope()); | 6018 CHECK_NULL(outer_scope->outer_scope()); |
| (...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6247 i::Isolate* isolate = CcTest::i_isolate(); | 6247 i::Isolate* isolate = CcTest::i_isolate(); |
| 6248 i::Factory* factory = isolate->factory(); | 6248 i::Factory* factory = isolate->factory(); |
| 6249 v8::HandleScope handles(CcTest::isolate()); | 6249 v8::HandleScope handles(CcTest::isolate()); |
| 6250 v8::Local<v8::Context> context = v8::Context::New(CcTest::isolate()); | 6250 v8::Local<v8::Context> context = v8::Context::New(CcTest::isolate()); |
| 6251 v8::Context::Scope context_scope(context); | 6251 v8::Context::Scope context_scope(context); |
| 6252 isolate->stack_guard()->SetStackLimit(i::GetCurrentStackPosition() - | 6252 isolate->stack_guard()->SetStackLimit(i::GetCurrentStackPosition() - |
| 6253 128 * 1024); | 6253 128 * 1024); |
| 6254 | 6254 |
| 6255 i::Handle<i::Script> script = | 6255 i::Handle<i::Script> script = |
| 6256 factory->NewScript(factory->NewStringFromAsciiChecked(source)); | 6256 factory->NewScript(factory->NewStringFromAsciiChecked(source)); |
| 6257 i::Zone zone(CcTest::i_isolate()->allocator()); | 6257 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); |
| 6258 i::ParseInfo info(&zone, script); | 6258 i::ParseInfo info(&zone, script); |
| 6259 i::Parser parser(&info); | 6259 i::Parser parser(&info); |
| 6260 parser.Parse(&info); | 6260 parser.Parse(&info); |
| 6261 CHECK(info.literal() != NULL); | 6261 CHECK(info.literal() != NULL); |
| 6262 CHECK_EQ(expected_language_mode, info.literal()->language_mode()); | 6262 CHECK_EQ(expected_language_mode, info.literal()->language_mode()); |
| 6263 } | 6263 } |
| 6264 | 6264 |
| 6265 | 6265 |
| 6266 TEST(LanguageModeDirectives) { | 6266 TEST(LanguageModeDirectives) { |
| 6267 TestLanguageMode("\"use nothing\"", i::SLOPPY); | 6267 TestLanguageMode("\"use nothing\"", i::SLOPPY); |
| (...skipping 2057 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8325 const char* data[] = { | 8325 const char* data[] = { |
| 8326 "const arguments = 1", | 8326 "const arguments = 1", |
| 8327 "let arguments", | 8327 "let arguments", |
| 8328 "var arguments", | 8328 "var arguments", |
| 8329 NULL | 8329 NULL |
| 8330 }; | 8330 }; |
| 8331 // clang-format on | 8331 // clang-format on |
| 8332 RunParserSyncTest(context_data, data, kSuccess); | 8332 RunParserSyncTest(context_data, data, kSuccess); |
| 8333 } | 8333 } |
| 8334 } | 8334 } |
| OLD | NEW |