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 "vm/object.h" | 5 #include "vm/object.h" |
6 | 6 |
7 #include "platform/assert.h" | 7 #include "platform/assert.h" |
8 #include "vm/assembler.h" | 8 #include "vm/assembler.h" |
9 #include "vm/bigint_operations.h" | 9 #include "vm/bigint_operations.h" |
10 #include "vm/bootstrap.h" | 10 #include "vm/bootstrap.h" |
(...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
656 Error& error = Error::Handle(); | 656 Error& error = Error::Handle(); |
657 error = Bootstrap::Compile(core_lib, script); | 657 error = Bootstrap::Compile(core_lib, script); |
658 if (!error.IsNull()) { | 658 if (!error.IsNull()) { |
659 return error.raw(); | 659 return error.raw(); |
660 } | 660 } |
661 error = Bootstrap::Compile(core_impl_lib, impl_script); | 661 error = Bootstrap::Compile(core_impl_lib, impl_script); |
662 if (!error.IsNull()) { | 662 if (!error.IsNull()) { |
663 return error.raw(); | 663 return error.raw(); |
664 } | 664 } |
665 | 665 |
| 666 const Script& isolate_script = Script::Handle(Bootstrap::LoadIsolateScript()); |
| 667 Library::InitIsolateLibrary(isolate); |
| 668 Library& isolate_lib = Library::Handle(Library::IsolateLibrary()); |
| 669 ASSERT(!isolate_lib.IsNull()); |
| 670 error = Bootstrap::Compile(isolate_lib, isolate_script); |
| 671 if (!error.IsNull()) { |
| 672 return error.raw(); |
| 673 } |
| 674 |
666 Bootstrap::SetupNativeResolver(); | 675 Bootstrap::SetupNativeResolver(); |
667 | 676 |
668 // Remove the Object superclass cycle by setting the super type to null (not | 677 // Remove the Object superclass cycle by setting the super type to null (not |
669 // to the type of null). | 678 // to the type of null). |
670 cls = object_store->object_class(); | 679 cls = object_store->object_class(); |
671 cls.set_super_type(Type::Handle()); | 680 cls.set_super_type(Type::Handle()); |
672 | 681 |
673 ClassFinalizer::VerifyBootstrapClasses(); | 682 ClassFinalizer::VerifyBootstrapClasses(); |
674 return Error::null(); | 683 return Error::null(); |
675 } | 684 } |
(...skipping 3944 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4620 const Library& core_impl_lib = | 4629 const Library& core_impl_lib = |
4621 Library::Handle(Library::NewLibraryHelper(core_impl_lib_url, false)); | 4630 Library::Handle(Library::NewLibraryHelper(core_impl_lib_url, false)); |
4622 isolate->object_store()->set_core_impl_library(core_impl_lib); | 4631 isolate->object_store()->set_core_impl_library(core_impl_lib); |
4623 core_impl_lib.Register(); | 4632 core_impl_lib.Register(); |
4624 core_lib.AddImport(core_impl_lib); | 4633 core_lib.AddImport(core_impl_lib); |
4625 core_impl_lib.AddImport(core_lib); | 4634 core_impl_lib.AddImport(core_lib); |
4626 isolate->object_store()->set_root_library(Library::Handle()); | 4635 isolate->object_store()->set_root_library(Library::Handle()); |
4627 } | 4636 } |
4628 | 4637 |
4629 | 4638 |
| 4639 void Library::InitIsolateLibrary(Isolate* isolate) { |
| 4640 const String& url = String::Handle(String::NewSymbol("dart:isolate")); |
| 4641 const Library& lib = Library::Handle(Library::New(url)); |
| 4642 lib.Register(); |
| 4643 isolate->object_store()->set_isolate_library(lib); |
| 4644 } |
| 4645 |
| 4646 |
4630 void Library::InitNativeWrappersLibrary(Isolate* isolate) { | 4647 void Library::InitNativeWrappersLibrary(Isolate* isolate) { |
4631 static const int kNumNativeWrappersClasses = 4; | 4648 static const int kNumNativeWrappersClasses = 4; |
4632 ASSERT(kNumNativeWrappersClasses > 0 && kNumNativeWrappersClasses < 10); | 4649 ASSERT(kNumNativeWrappersClasses > 0 && kNumNativeWrappersClasses < 10); |
4633 const String& native_flds_lib_url = String::Handle( | 4650 const String& native_flds_lib_url = String::Handle( |
4634 String::NewSymbol("dart:nativewrappers")); | 4651 String::NewSymbol("dart:nativewrappers")); |
4635 Library& native_flds_lib = Library::Handle( | 4652 Library& native_flds_lib = Library::Handle( |
4636 Library::NewLibraryHelper(native_flds_lib_url, false)); | 4653 Library::NewLibraryHelper(native_flds_lib_url, false)); |
4637 native_flds_lib.Register(); | 4654 native_flds_lib.Register(); |
4638 isolate->object_store()->set_native_wrappers_library(native_flds_lib); | 4655 isolate->object_store()->set_native_wrappers_library(native_flds_lib); |
4639 static const char* const kNativeWrappersClass = "NativeFieldWrapperClass"; | 4656 static const char* const kNativeWrappersClass = "NativeFieldWrapperClass"; |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4727 RawLibrary* Library::CoreLibrary() { | 4744 RawLibrary* Library::CoreLibrary() { |
4728 return Isolate::Current()->object_store()->core_library(); | 4745 return Isolate::Current()->object_store()->core_library(); |
4729 } | 4746 } |
4730 | 4747 |
4731 | 4748 |
4732 RawLibrary* Library::CoreImplLibrary() { | 4749 RawLibrary* Library::CoreImplLibrary() { |
4733 return Isolate::Current()->object_store()->core_impl_library(); | 4750 return Isolate::Current()->object_store()->core_impl_library(); |
4734 } | 4751 } |
4735 | 4752 |
4736 | 4753 |
| 4754 RawLibrary* Library::IsolateLibrary() { |
| 4755 return Isolate::Current()->object_store()->isolate_library(); |
| 4756 } |
| 4757 |
| 4758 |
4737 RawLibrary* Library::NativeWrappersLibrary() { | 4759 RawLibrary* Library::NativeWrappersLibrary() { |
4738 return Isolate::Current()->object_store()->native_wrappers_library(); | 4760 return Isolate::Current()->object_store()->native_wrappers_library(); |
4739 } | 4761 } |
4740 | 4762 |
4741 | 4763 |
4742 const char* Library::ToCString() const { | 4764 const char* Library::ToCString() const { |
4743 const char* kFormat = "Library:'%s'"; | 4765 const char* kFormat = "Library:'%s'"; |
4744 const String& name = String::Handle(url()); | 4766 const String& name = String::Handle(url()); |
4745 intptr_t len = OS::SNPrint(NULL, 0, kFormat, name.ToCString()) + 1; | 4767 intptr_t len = OS::SNPrint(NULL, 0, kFormat, name.ToCString()) + 1; |
4746 char* chars = reinterpret_cast<char*>( | 4768 char* chars = reinterpret_cast<char*>( |
(...skipping 3556 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8303 result.set_num_args_tested(num_args_tested); | 8325 result.set_num_args_tested(num_args_tested); |
8304 // Number of array elements in one test entry (num_args_tested + 1) | 8326 // Number of array elements in one test entry (num_args_tested + 1) |
8305 intptr_t len = num_args_tested + 1; | 8327 intptr_t len = num_args_tested + 1; |
8306 // IC data array must be null terminated (sentinel entry). | 8328 // IC data array must be null terminated (sentinel entry). |
8307 Array& ic_data = Array::Handle(Array::New(len, Heap::kOld)); | 8329 Array& ic_data = Array::Handle(Array::New(len, Heap::kOld)); |
8308 result.set_ic_data(ic_data); | 8330 result.set_ic_data(ic_data); |
8309 return result.raw(); | 8331 return result.raw(); |
8310 } | 8332 } |
8311 | 8333 |
8312 } // namespace dart | 8334 } // namespace dart |
OLD | NEW |