| OLD | NEW |
| 1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #if !defined(_WIN32) && !defined(_WIN64) | 5 #if !defined(_WIN32) && !defined(_WIN64) |
| 6 #include <unistd.h> // NOLINT | 6 #include <unistd.h> // NOLINT |
| 7 #endif // !defined(_WIN32) && !defined(_WIN64) | 7 #endif // !defined(_WIN32) && !defined(_WIN64) |
| 8 | 8 |
| 9 #include <locale.h> | 9 #include <locale.h> |
| 10 | 10 |
| (...skipping 571 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 582 int main(int argc, char* argv[]) { | 582 int main(int argc, char* argv[]) { |
| 583 v8::V8::InitializeICUDefaultLocation(argv[0]); | 583 v8::V8::InitializeICUDefaultLocation(argv[0]); |
| 584 v8::Platform* platform = v8::platform::CreateDefaultPlatform(); | 584 v8::Platform* platform = v8::platform::CreateDefaultPlatform(); |
| 585 v8::V8::InitializePlatform(platform); | 585 v8::V8::InitializePlatform(platform); |
| 586 v8::V8::SetFlagsFromCommandLine(&argc, argv, true); | 586 v8::V8::SetFlagsFromCommandLine(&argc, argv, true); |
| 587 v8::V8::InitializeExternalStartupData(argv[0]); | 587 v8::V8::InitializeExternalStartupData(argv[0]); |
| 588 v8::V8::Initialize(); | 588 v8::V8::Initialize(); |
| 589 | 589 |
| 590 v8::base::Semaphore ready_semaphore(0); | 590 v8::base::Semaphore ready_semaphore(0); |
| 591 | 591 |
| 592 v8::StartupData startup_data = {nullptr, 0}; |
| 593 for (int i = 1; i < argc; ++i) { |
| 594 if (strcmp(argv[i], "--embed") == 0) { |
| 595 argv[i++] = nullptr; |
| 596 printf("Embedding script '%s'\n", argv[i]); |
| 597 startup_data = v8::V8::CreateSnapshotDataBlob(argv[i]); |
| 598 argv[i] = nullptr; |
| 599 } |
| 600 } |
| 601 |
| 592 TaskRunner::SetupGlobalTasks backend_extensions; | 602 TaskRunner::SetupGlobalTasks backend_extensions; |
| 593 backend_extensions.emplace_back(new SetTimeoutExtension()); | 603 backend_extensions.emplace_back(new SetTimeoutExtension()); |
| 594 backend_extensions.emplace_back(new InspectorExtension()); | 604 backend_extensions.emplace_back(new InspectorExtension()); |
| 595 TaskRunner backend_runner(std::move(backend_extensions), false, | 605 TaskRunner backend_runner(std::move(backend_extensions), false, |
| 596 &ready_semaphore); | 606 &ready_semaphore, |
| 607 startup_data.data ? &startup_data : nullptr); |
| 597 ready_semaphore.Wait(); | 608 ready_semaphore.Wait(); |
| 598 SendMessageToBackendExtension::set_backend_task_runner(&backend_runner); | 609 SendMessageToBackendExtension::set_backend_task_runner(&backend_runner); |
| 599 UtilsExtension::set_backend_task_runner(&backend_runner); | 610 UtilsExtension::set_backend_task_runner(&backend_runner); |
| 600 | 611 |
| 601 TaskRunner::SetupGlobalTasks frontend_extensions; | 612 TaskRunner::SetupGlobalTasks frontend_extensions; |
| 602 frontend_extensions.emplace_back(new UtilsExtension()); | 613 frontend_extensions.emplace_back(new UtilsExtension()); |
| 603 frontend_extensions.emplace_back(new SendMessageToBackendExtension()); | 614 frontend_extensions.emplace_back(new SendMessageToBackendExtension()); |
| 604 TaskRunner frontend_runner(std::move(frontend_extensions), true, | 615 TaskRunner frontend_runner(std::move(frontend_extensions), true, |
| 605 &ready_semaphore); | 616 &ready_semaphore, nullptr); |
| 606 ready_semaphore.Wait(); | 617 ready_semaphore.Wait(); |
| 607 | 618 |
| 608 FrontendChannelImpl frontend_channel(&frontend_runner); | 619 FrontendChannelImpl frontend_channel(&frontend_runner); |
| 609 InspectorClientImpl inspector_client(&backend_runner, &frontend_channel, | 620 InspectorClientImpl inspector_client(&backend_runner, &frontend_channel, |
| 610 &ready_semaphore); | 621 &ready_semaphore); |
| 611 ready_semaphore.Wait(); | 622 ready_semaphore.Wait(); |
| 612 UtilsExtension::set_inspector_client(&inspector_client); | 623 UtilsExtension::set_inspector_client(&inspector_client); |
| 613 | 624 |
| 614 task_runners.push_back(&frontend_runner); | 625 task_runners.push_back(&frontend_runner); |
| 615 task_runners.push_back(&backend_runner); | 626 task_runners.push_back(&backend_runner); |
| 616 | 627 |
| 617 for (int i = 1; i < argc; ++i) { | 628 for (int i = 1; i < argc; ++i) { |
| 618 // Ignore unknown flags. | 629 // Ignore unknown flags. |
| 619 if (argv[i][0] == '-') continue; | 630 if (argv[i] == nullptr || argv[i][0] == '-') continue; |
| 620 | 631 |
| 621 bool exists = false; | 632 bool exists = false; |
| 622 v8::internal::Vector<const char> chars = | 633 v8::internal::Vector<const char> chars = |
| 623 v8::internal::ReadFile(argv[i], &exists, true); | 634 v8::internal::ReadFile(argv[i], &exists, true); |
| 624 if (!exists) { | 635 if (!exists) { |
| 625 fprintf(stderr, "Internal error: script file doesn't exists: %s\n", | 636 fprintf(stderr, "Internal error: script file doesn't exists: %s\n", |
| 626 argv[i]); | 637 argv[i]); |
| 627 Exit(); | 638 Exit(); |
| 628 } | 639 } |
| 629 frontend_runner.Append(new ExecuteStringTask(chars)); | 640 frontend_runner.Append(new ExecuteStringTask(chars)); |
| 630 } | 641 } |
| 631 | 642 |
| 632 frontend_runner.Join(); | 643 frontend_runner.Join(); |
| 633 backend_runner.Join(); | 644 backend_runner.Join(); |
| 645 |
| 646 delete startup_data.data; |
| 634 return 0; | 647 return 0; |
| 635 } | 648 } |
| OLD | NEW |