OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 "vm/precompiler.h" | 5 #include "vm/precompiler.h" |
6 | 6 |
7 #include "vm/aot_optimizer.h" | 7 #include "vm/aot_optimizer.h" |
8 #include "vm/assembler.h" | 8 #include "vm/assembler.h" |
9 #include "vm/ast_printer.h" | 9 #include "vm/ast_printer.h" |
10 #include "vm/branch_optimizer.h" | 10 #include "vm/branch_optimizer.h" |
(...skipping 635 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
646 if ((cid == kDynamicCid) || (cid == kVoidCid) || | 646 if ((cid == kDynamicCid) || (cid == kVoidCid) || |
647 (cid == kFreeListElement) || (cid == kForwardingCorpse)) { | 647 (cid == kFreeListElement) || (cid == kForwardingCorpse)) { |
648 continue; | 648 continue; |
649 } | 649 } |
650 cls = isolate()->class_table()->At(cid); | 650 cls = isolate()->class_table()->At(cid); |
651 AddInstantiatedClass(cls); | 651 AddInstantiatedClass(cls); |
652 } | 652 } |
653 | 653 |
654 Dart_QualifiedFunctionName vm_entry_points[] = { | 654 Dart_QualifiedFunctionName vm_entry_points[] = { |
655 // Functions | 655 // Functions |
656 {"dart:async", "::", "_setScheduleImmediateClosure"}, | |
657 {"dart:core", "::", "_completeDeferredLoads"}, | 656 {"dart:core", "::", "_completeDeferredLoads"}, |
658 {"dart:core", "AbstractClassInstantiationError", | 657 {"dart:core", "AbstractClassInstantiationError", |
659 "AbstractClassInstantiationError._create"}, | 658 "AbstractClassInstantiationError._create"}, |
660 {"dart:core", "ArgumentError", "ArgumentError."}, | 659 {"dart:core", "ArgumentError", "ArgumentError."}, |
661 {"dart:core", "CyclicInitializationError", "CyclicInitializationError."}, | 660 {"dart:core", "CyclicInitializationError", "CyclicInitializationError."}, |
662 {"dart:core", "FallThroughError", "FallThroughError._create"}, | 661 {"dart:core", "FallThroughError", "FallThroughError._create"}, |
663 {"dart:core", "FormatException", "FormatException."}, | 662 {"dart:core", "FormatException", "FormatException."}, |
664 {"dart:core", "NoSuchMethodError", "NoSuchMethodError._withType"}, | 663 {"dart:core", "NoSuchMethodError", "NoSuchMethodError._withType"}, |
665 {"dart:core", "NullThrownError", "NullThrownError."}, | 664 {"dart:core", "NullThrownError", "NullThrownError."}, |
666 {"dart:core", "OutOfMemoryError", "OutOfMemoryError."}, | 665 {"dart:core", "OutOfMemoryError", "OutOfMemoryError."}, |
667 {"dart:core", "RangeError", "RangeError."}, | 666 {"dart:core", "RangeError", "RangeError."}, |
668 {"dart:core", "RangeError", "RangeError.range"}, | 667 {"dart:core", "RangeError", "RangeError.range"}, |
669 {"dart:core", "StackOverflowError", "StackOverflowError."}, | 668 {"dart:core", "StackOverflowError", "StackOverflowError."}, |
670 {"dart:core", "UnsupportedError", "UnsupportedError."}, | 669 {"dart:core", "UnsupportedError", "UnsupportedError."}, |
671 {"dart:core", "_AssertionError", "_AssertionError._create"}, | 670 {"dart:core", "_AssertionError", "_AssertionError._create"}, |
672 {"dart:core", "_CastError", "_CastError._create"}, | 671 {"dart:core", "_CastError", "_CastError._create"}, |
673 {"dart:core", "_InternalError", "_InternalError."}, | 672 {"dart:core", "_InternalError", "_InternalError."}, |
674 {"dart:core", "_InvocationMirror", "_allocateInvocationMirror"}, | 673 {"dart:core", "_InvocationMirror", "_allocateInvocationMirror"}, |
675 {"dart:core", "_TypeError", "_TypeError._create"}, | 674 {"dart:core", "_TypeError", "_TypeError._create"}, |
676 {"dart:isolate", "IsolateSpawnException", "IsolateSpawnException."}, | 675 {"dart:isolate", "IsolateSpawnException", "IsolateSpawnException."}, |
677 {"dart:isolate", "::", "_getIsolateScheduleImmediateClosure"}, | |
678 {"dart:isolate", "::", "_setupHooks"}, | |
679 {"dart:isolate", "::", "_startMainIsolate"}, | |
680 {"dart:isolate", "::", "_startIsolate"}, | 676 {"dart:isolate", "::", "_startIsolate"}, |
681 {"dart:isolate", "_RawReceivePortImpl", "_handleMessage"}, | 677 {"dart:isolate", "_RawReceivePortImpl", "_handleMessage"}, |
682 {"dart:isolate", "_RawReceivePortImpl", "_lookupHandler"}, | 678 {"dart:isolate", "_RawReceivePortImpl", "_lookupHandler"}, |
683 {"dart:isolate", "_SendPortImpl", "send"}, | 679 {"dart:isolate", "_SendPortImpl", "send"}, |
684 {"dart:typed_data", "ByteData", "ByteData."}, | 680 {"dart:typed_data", "ByteData", "ByteData."}, |
685 {"dart:typed_data", "ByteData", "ByteData._view"}, | 681 {"dart:typed_data", "ByteData", "ByteData._view"}, |
686 {"dart:typed_data", "_ByteBuffer", "_ByteBuffer._New"}, | 682 {"dart:typed_data", "_ByteBuffer", "_ByteBuffer._New"}, |
687 {"dart:_vmservice", "::", "boot"}, | 683 {"dart:_vmservice", "::", "boot"}, |
688 #if !defined(PRODUCT) | 684 #if !defined(PRODUCT) |
689 {"dart:_vmservice", "::", "_registerIsolate"}, | 685 {"dart:_vmservice", "::", "_registerIsolate"}, |
(...skipping 19 matching lines...) Expand all Loading... |
709 Field& field = Field::Handle(Z); | 705 Field& field = Field::Handle(Z); |
710 String& library_uri = String::Handle(Z); | 706 String& library_uri = String::Handle(Z); |
711 String& class_name = String::Handle(Z); | 707 String& class_name = String::Handle(Z); |
712 String& function_name = String::Handle(Z); | 708 String& function_name = String::Handle(Z); |
713 | 709 |
714 for (intptr_t i = 0; entry_points[i].library_uri != NULL; i++) { | 710 for (intptr_t i = 0; entry_points[i].library_uri != NULL; i++) { |
715 library_uri = Symbols::New(thread(), entry_points[i].library_uri); | 711 library_uri = Symbols::New(thread(), entry_points[i].library_uri); |
716 class_name = Symbols::New(thread(), entry_points[i].class_name); | 712 class_name = Symbols::New(thread(), entry_points[i].class_name); |
717 function_name = Symbols::New(thread(), entry_points[i].function_name); | 713 function_name = Symbols::New(thread(), entry_points[i].function_name); |
718 | 714 |
719 lib = Library::LookupLibrary(T, library_uri); | 715 if (library_uri.raw() == Symbols::TopLevel().raw()) { |
| 716 lib = I->object_store()->root_library(); |
| 717 } else { |
| 718 lib = Library::LookupLibrary(T, library_uri); |
| 719 } |
720 if (lib.IsNull()) { | 720 if (lib.IsNull()) { |
721 String& msg = | 721 String& msg = |
722 String::Handle(Z, String::NewFormatted("Cannot find entry point %s\n", | 722 String::Handle(Z, String::NewFormatted("Cannot find entry point %s\n", |
723 entry_points[i].library_uri)); | 723 entry_points[i].library_uri)); |
724 Jump(Error::Handle(Z, ApiError::New(msg))); | 724 Jump(Error::Handle(Z, ApiError::New(msg))); |
725 UNREACHABLE(); | 725 UNREACHABLE(); |
726 } | 726 } |
727 | 727 |
728 if (class_name.raw() == Symbols::TopLevel().raw()) { | 728 if (class_name.raw() == Symbols::TopLevel().raw()) { |
729 if (Library::IsPrivate(function_name)) { | 729 if (Library::IsPrivate(function_name)) { |
(...skipping 2835 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3565 | 3565 |
3566 ASSERT(FLAG_precompiled_mode); | 3566 ASSERT(FLAG_precompiled_mode); |
3567 const bool optimized = function.IsOptimizable(); // False for natives. | 3567 const bool optimized = function.IsOptimizable(); // False for natives. |
3568 DartPrecompilationPipeline pipeline(zone, field_type_map); | 3568 DartPrecompilationPipeline pipeline(zone, field_type_map); |
3569 return PrecompileFunctionHelper(precompiler, &pipeline, function, optimized); | 3569 return PrecompileFunctionHelper(precompiler, &pipeline, function, optimized); |
3570 } | 3570 } |
3571 | 3571 |
3572 #endif // DART_PRECOMPILER | 3572 #endif // DART_PRECOMPILER |
3573 | 3573 |
3574 } // namespace dart | 3574 } // namespace dart |
OLD | NEW |