| OLD | NEW |
| 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 "bin/dartutils.h" | 5 #include "bin/dartutils.h" |
| 6 | 6 |
| 7 #include "include/dart_api.h" | 7 #include "include/dart_api.h" |
| 8 #include "include/dart_tools_api.h" | 8 #include "include/dart_tools_api.h" |
| 9 #include "include/dart_native_api.h" | 9 #include "include/dart_native_api.h" |
| 10 | 10 |
| (...skipping 619 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 630 Dart_PropagateError(err); | 630 Dart_PropagateError(err); |
| 631 } | 631 } |
| 632 } | 632 } |
| 633 | 633 |
| 634 | 634 |
| 635 Dart_Handle DartUtils::PrepareBuiltinLibrary(Dart_Handle builtin_lib, | 635 Dart_Handle DartUtils::PrepareBuiltinLibrary(Dart_Handle builtin_lib, |
| 636 Dart_Handle internal_lib, | 636 Dart_Handle internal_lib, |
| 637 bool is_service_isolate, | 637 bool is_service_isolate, |
| 638 bool trace_loading, | 638 bool trace_loading, |
| 639 const char* package_root, | 639 const char* package_root, |
| 640 const char** package_map, |
| 640 const char* packages_file) { | 641 const char* packages_file) { |
| 641 // Setup the internal library's 'internalPrint' function. | 642 // Setup the internal library's 'internalPrint' function. |
| 642 Dart_Handle print = Dart_Invoke( | 643 Dart_Handle print = Dart_Invoke( |
| 643 builtin_lib, NewString("_getPrintClosure"), 0, NULL); | 644 builtin_lib, NewString("_getPrintClosure"), 0, NULL); |
| 644 RETURN_IF_ERROR(print); | 645 RETURN_IF_ERROR(print); |
| 645 Dart_Handle result = | 646 Dart_Handle result = |
| 646 Dart_SetField(internal_lib, NewString("_printClosure"), print); | 647 Dart_SetField(internal_lib, NewString("_printClosure"), print); |
| 647 RETURN_IF_ERROR(result); | 648 RETURN_IF_ERROR(result); |
| 648 | 649 |
| 649 if (!is_service_isolate) { | 650 if (!is_service_isolate) { |
| (...skipping 13 matching lines...) Expand all Loading... |
| 663 Dart_Port load_port = Dart_ServiceWaitForLoadPort(); | 664 Dart_Port load_port = Dart_ServiceWaitForLoadPort(); |
| 664 if (load_port == ILLEGAL_PORT) { | 665 if (load_port == ILLEGAL_PORT) { |
| 665 return NewDartUnsupportedError("Service did not return load port."); | 666 return NewDartUnsupportedError("Service did not return load port."); |
| 666 } | 667 } |
| 667 result = Builtin::SetLoadPort(load_port); | 668 result = Builtin::SetLoadPort(load_port); |
| 668 RETURN_IF_ERROR(result); | 669 RETURN_IF_ERROR(result); |
| 669 } | 670 } |
| 670 | 671 |
| 671 // Set up package root if specified. | 672 // Set up package root if specified. |
| 672 if (package_root != NULL) { | 673 if (package_root != NULL) { |
| 674 ASSERT(package_map == NULL); |
| 673 ASSERT(packages_file == NULL); | 675 ASSERT(packages_file == NULL); |
| 674 result = NewString(package_root); | 676 result = NewString(package_root); |
| 675 RETURN_IF_ERROR(result); | 677 RETURN_IF_ERROR(result); |
| 676 const int kNumArgs = 1; | 678 const int kNumArgs = 1; |
| 677 Dart_Handle dart_args[kNumArgs]; | 679 Dart_Handle dart_args[kNumArgs]; |
| 678 dart_args[0] = result; | 680 dart_args[0] = result; |
| 679 result = Dart_Invoke(builtin_lib, | 681 result = Dart_Invoke(builtin_lib, |
| 680 NewString("_setPackageRoot"), | 682 NewString("_setPackageRoot"), |
| 681 kNumArgs, | 683 kNumArgs, |
| 682 dart_args); | 684 dart_args); |
| 683 RETURN_IF_ERROR(result); | 685 RETURN_IF_ERROR(result); |
| 686 } else if (package_map != NULL) { |
| 687 ASSERT(packages_file == NULL); |
| 688 Dart_Handle func_name = NewString("_addPackageMapEntry"); |
| 689 RETURN_IF_ERROR(func_name); |
| 690 |
| 691 for (int i = 0; package_map[i] != NULL; i +=2) { |
| 692 const int kNumArgs = 2; |
| 693 Dart_Handle dart_args[kNumArgs]; |
| 694 // Get the key. |
| 695 result = NewString(package_map[i]); |
| 696 RETURN_IF_ERROR(result); |
| 697 dart_args[0] = result; |
| 698 if (package_map[i + 1] == NULL) { |
| 699 return Dart_NewUnhandledExceptionError( |
| 700 NewDartArgumentError("Adding package map entry without value.")); |
| 701 } |
| 702 // Get the value. |
| 703 result = NewString(package_map[i + 1]); |
| 704 RETURN_IF_ERROR(result); |
| 705 dart_args[1] = result; |
| 706 // Setup the next package map entry. |
| 707 result = Dart_Invoke(builtin_lib, |
| 708 func_name, |
| 709 kNumArgs, |
| 710 dart_args); |
| 711 RETURN_IF_ERROR(result); |
| 712 } |
| 684 } else if (packages_file != NULL) { | 713 } else if (packages_file != NULL) { |
| 685 result = NewString(packages_file); | 714 result = NewString(packages_file); |
| 686 RETURN_IF_ERROR(result); | 715 RETURN_IF_ERROR(result); |
| 687 const int kNumArgs = 1; | 716 const int kNumArgs = 1; |
| 688 Dart_Handle dart_args[kNumArgs]; | 717 Dart_Handle dart_args[kNumArgs]; |
| 689 dart_args[0] = result; | 718 dart_args[0] = result; |
| 690 result = Dart_Invoke(builtin_lib, | 719 result = Dart_Invoke(builtin_lib, |
| 691 NewString("_loadPackagesMap"), | 720 NewString("_loadPackagesMap"), |
| 692 kNumArgs, | 721 kNumArgs, |
| 693 dart_args); | 722 dart_args); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 731 return Dart_Invoke(io_lib, NewString("_setupHooks"), 0, NULL); | 760 return Dart_Invoke(io_lib, NewString("_setupHooks"), 0, NULL); |
| 732 } | 761 } |
| 733 | 762 |
| 734 | 763 |
| 735 Dart_Handle DartUtils::PrepareIsolateLibrary(Dart_Handle isolate_lib) { | 764 Dart_Handle DartUtils::PrepareIsolateLibrary(Dart_Handle isolate_lib) { |
| 736 return Dart_Invoke(isolate_lib, NewString("_setupHooks"), 0, NULL); | 765 return Dart_Invoke(isolate_lib, NewString("_setupHooks"), 0, NULL); |
| 737 } | 766 } |
| 738 | 767 |
| 739 | 768 |
| 740 Dart_Handle DartUtils::PrepareForScriptLoading(const char* package_root, | 769 Dart_Handle DartUtils::PrepareForScriptLoading(const char* package_root, |
| 770 const char** package_map, |
| 741 const char* packages_file, | 771 const char* packages_file, |
| 742 bool is_service_isolate, | 772 bool is_service_isolate, |
| 743 bool trace_loading, | 773 bool trace_loading, |
| 744 Dart_Handle builtin_lib) { | 774 Dart_Handle builtin_lib) { |
| 745 // First ensure all required libraries are available. | 775 // First ensure all required libraries are available. |
| 746 Dart_Handle url = NewString(kCoreLibURL); | 776 Dart_Handle url = NewString(kCoreLibURL); |
| 747 RETURN_IF_ERROR(url); | 777 RETURN_IF_ERROR(url); |
| 748 Dart_Handle core_lib = Dart_LookupLibrary(url); | 778 Dart_Handle core_lib = Dart_LookupLibrary(url); |
| 749 RETURN_IF_ERROR(core_lib); | 779 RETURN_IF_ERROR(core_lib); |
| 750 url = NewString(kAsyncLibURL); | 780 url = NewString(kAsyncLibURL); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 765 // We need to ensure that all the scripts loaded so far are finalized | 795 // We need to ensure that all the scripts loaded so far are finalized |
| 766 // as we are about to invoke some Dart code below to setup closures. | 796 // as we are about to invoke some Dart code below to setup closures. |
| 767 Dart_Handle result = Dart_FinalizeLoading(false); | 797 Dart_Handle result = Dart_FinalizeLoading(false); |
| 768 RETURN_IF_ERROR(result); | 798 RETURN_IF_ERROR(result); |
| 769 | 799 |
| 770 result = PrepareBuiltinLibrary(builtin_lib, | 800 result = PrepareBuiltinLibrary(builtin_lib, |
| 771 internal_lib, | 801 internal_lib, |
| 772 is_service_isolate, | 802 is_service_isolate, |
| 773 trace_loading, | 803 trace_loading, |
| 774 package_root, | 804 package_root, |
| 805 package_map, |
| 775 packages_file); | 806 packages_file); |
| 776 RETURN_IF_ERROR(result); | 807 RETURN_IF_ERROR(result); |
| 777 | 808 |
| 778 RETURN_IF_ERROR(PrepareAsyncLibrary(async_lib, isolate_lib)); | 809 RETURN_IF_ERROR(PrepareAsyncLibrary(async_lib, isolate_lib)); |
| 779 RETURN_IF_ERROR(PrepareCoreLibrary( | 810 RETURN_IF_ERROR(PrepareCoreLibrary( |
| 780 core_lib, builtin_lib, is_service_isolate)); | 811 core_lib, builtin_lib, is_service_isolate)); |
| 781 RETURN_IF_ERROR(PrepareIsolateLibrary(isolate_lib)); | 812 RETURN_IF_ERROR(PrepareIsolateLibrary(isolate_lib)); |
| 782 RETURN_IF_ERROR(PrepareIOLibrary(io_lib)); | 813 RETURN_IF_ERROR(PrepareIOLibrary(io_lib)); |
| 783 return result; | 814 return result; |
| 784 } | 815 } |
| (...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1240 new CObjectString(CObject::NewString(os_error->message())); | 1271 new CObjectString(CObject::NewString(os_error->message())); |
| 1241 CObjectArray* result = new CObjectArray(CObject::NewArray(3)); | 1272 CObjectArray* result = new CObjectArray(CObject::NewArray(3)); |
| 1242 result->SetAt(0, new CObjectInt32(CObject::NewInt32(kOSError))); | 1273 result->SetAt(0, new CObjectInt32(CObject::NewInt32(kOSError))); |
| 1243 result->SetAt(1, new CObjectInt32(CObject::NewInt32(os_error->code()))); | 1274 result->SetAt(1, new CObjectInt32(CObject::NewInt32(os_error->code()))); |
| 1244 result->SetAt(2, error_message); | 1275 result->SetAt(2, error_message); |
| 1245 return result; | 1276 return result; |
| 1246 } | 1277 } |
| 1247 | 1278 |
| 1248 } // namespace bin | 1279 } // namespace bin |
| 1249 } // namespace dart | 1280 } // namespace dart |
| OLD | NEW |