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

Side by Side Diff: runtime/bin/main.cc

Issue 1162033005: Fix http://dartbug.com/23578: (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Update to ToT. Created 5 years, 6 months 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
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include <stdlib.h> 5 #include <stdlib.h>
6 #include <string.h> 6 #include <string.h>
7 #include <stdio.h> 7 #include <stdio.h>
8 8
9 #include "include/dart_api.h" 9 #include "include/dart_api.h"
10 #include "include/dart_debugger_api.h" 10 #include "include/dart_debugger_api.h"
(...skipping 561 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 Dart_ExitScope(); \ 572 Dart_ExitScope(); \
573 Dart_ShutdownIsolate(); \ 573 Dart_ShutdownIsolate(); \
574 return NULL; \ 574 return NULL; \
575 } \ 575 } \
576 576
577 577
578 // Returns true on success, false on failure. 578 // Returns true on success, false on failure.
579 static Dart_Isolate CreateIsolateAndSetupHelper(const char* script_uri, 579 static Dart_Isolate CreateIsolateAndSetupHelper(const char* script_uri,
580 const char* main, 580 const char* main,
581 const char* package_root, 581 const char* package_root,
582 Dart_IsolateFlags* flags,
582 char** error, 583 char** error,
583 int* exit_code) { 584 int* exit_code) {
584 ASSERT(script_uri != NULL); 585 ASSERT(script_uri != NULL);
585 IsolateData* isolate_data = new IsolateData(script_uri, package_root); 586 IsolateData* isolate_data = new IsolateData(script_uri, package_root);
586 Dart_Isolate isolate = NULL; 587 Dart_Isolate isolate = NULL;
587 588
588 isolate = Dart_CreateIsolate(script_uri, 589 isolate = Dart_CreateIsolate(script_uri,
589 main, 590 main,
590 isolate_snapshot_buffer, 591 isolate_snapshot_buffer,
592 flags,
591 isolate_data, 593 isolate_data,
592 error); 594 error);
593 595
594 if (isolate == NULL) { 596 if (isolate == NULL) {
595 return NULL; 597 return NULL;
596 } 598 }
597 599
598 Dart_EnterScope(); 600 Dart_EnterScope();
599 601
600 if (isolate_snapshot_buffer != NULL) { 602 if (isolate_snapshot_buffer != NULL) {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
666 } 668 }
667 669
668 return isolate; 670 return isolate;
669 } 671 }
670 672
671 #undef CHECK_RESULT 673 #undef CHECK_RESULT
672 674
673 static Dart_Isolate CreateIsolateAndSetup(const char* script_uri, 675 static Dart_Isolate CreateIsolateAndSetup(const char* script_uri,
674 const char* main, 676 const char* main,
675 const char* package_root, 677 const char* package_root,
678 Dart_IsolateFlags* flags,
676 void* data, char** error) { 679 void* data, char** error) {
680 // The VM should never call the isolate helper with a NULL flags.
681 ASSERT(flags != NULL);
682 ASSERT(flags->version == DART_FLAGS_CURRENT_VERSION);
677 IsolateData* parent_isolate_data = reinterpret_cast<IsolateData*>(data); 683 IsolateData* parent_isolate_data = reinterpret_cast<IsolateData*>(data);
678 int exit_code = 0; 684 int exit_code = 0;
679 if (script_uri == NULL) { 685 if (script_uri == NULL) {
680 if (data == NULL) { 686 if (data == NULL) {
681 *error = strdup("Invalid 'callback_data' - Unable to spawn new isolate"); 687 *error = strdup("Invalid 'callback_data' - Unable to spawn new isolate");
682 return NULL; 688 return NULL;
683 } 689 }
684 script_uri = parent_isolate_data->script_url; 690 script_uri = parent_isolate_data->script_url;
685 if (script_uri == NULL) { 691 if (script_uri == NULL) {
686 *error = strdup("Invalid 'callback_data' - Unable to spawn new isolate"); 692 *error = strdup("Invalid 'callback_data' - Unable to spawn new isolate");
687 return NULL; 693 return NULL;
688 } 694 }
689 } 695 }
690 if (package_root == NULL) { 696 if (package_root == NULL) {
691 if (parent_isolate_data != NULL) { 697 if (parent_isolate_data != NULL) {
692 package_root = parent_isolate_data->package_root; 698 package_root = parent_isolate_data->package_root;
693 } else { 699 } else {
694 package_root = "."; 700 package_root = ".";
695 } 701 }
696 } 702 }
697 return CreateIsolateAndSetupHelper(script_uri, 703 return CreateIsolateAndSetupHelper(script_uri,
698 main, 704 main,
699 package_root, 705 package_root,
706 flags,
700 error, 707 error,
701 &exit_code); 708 &exit_code);
702 } 709 }
703 710
704 711
705 static void PrintVersion() { 712 static void PrintVersion() {
706 Log::PrintErr("Dart VM version: %s\n", Dart_VersionString()); 713 Log::PrintErr("Dart VM version: %s\n", Dart_VersionString());
707 } 714 }
708 715
709 716
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
960 "getIO", &ServiceGetIOHandler, NULL); 967 "getIO", &ServiceGetIOHandler, NULL);
961 968
962 // Call CreateIsolateAndSetup which creates an isolate and loads up 969 // Call CreateIsolateAndSetup which creates an isolate and loads up
963 // the specified application script. 970 // the specified application script.
964 char* error = NULL; 971 char* error = NULL;
965 int exit_code = 0; 972 int exit_code = 0;
966 char* isolate_name = BuildIsolateName(script_name, "main"); 973 char* isolate_name = BuildIsolateName(script_name, "main");
967 Dart_Isolate isolate = CreateIsolateAndSetupHelper(script_name, 974 Dart_Isolate isolate = CreateIsolateAndSetupHelper(script_name,
968 "main", 975 "main",
969 commandline_package_root, 976 commandline_package_root,
977 NULL,
970 &error, 978 &error,
971 &exit_code); 979 &exit_code);
972 if (isolate == NULL) { 980 if (isolate == NULL) {
973 Log::PrintErr("%s\n", error); 981 Log::PrintErr("%s\n", error);
974 free(error); 982 free(error);
975 delete [] isolate_name; 983 delete [] isolate_name;
976 exit((exit_code != 0) ? exit_code : kErrorExitCode); 984 exit((exit_code != 0) ? exit_code : kErrorExitCode);
977 } 985 }
978 delete [] isolate_name; 986 delete [] isolate_name;
979 987
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
1094 exit(Process::GlobalExitCode()); 1102 exit(Process::GlobalExitCode());
1095 } 1103 }
1096 1104
1097 } // namespace bin 1105 } // namespace bin
1098 } // namespace dart 1106 } // namespace dart
1099 1107
1100 int main(int argc, char** argv) { 1108 int main(int argc, char** argv) {
1101 dart::bin::main(argc, argv); 1109 dart::bin::main(argc, argv);
1102 UNREACHABLE(); 1110 UNREACHABLE();
1103 } 1111 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698