| Index: runtime/vm/object.cc
|
| diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
|
| index ae36909cd43394ef04314361a052e13b29b92242..faa7773abf8c2cac6e27c4aaf770d9bfe48b86b2 100644
|
| --- a/runtime/vm/object.cc
|
| +++ b/runtime/vm/object.cc
|
| @@ -687,110 +687,113 @@ RawError* Object::Init(Isolate* isolate) {
|
| RegisterPrivateClass(cls, name, core_lib);
|
| pending_classes.Add(cls, Heap::kOld);
|
|
|
| + cls = Class::New<WeakProperty>();
|
| + object_store->set_weak_property_class(cls);
|
| + name = Symbols::_WeakProperty();
|
| + RegisterPrivateClass(cls, name, core_lib);
|
| +
|
| + Library::InitScalarlistLibrary(isolate);
|
| + Library& scalarlist_lib = Library::Handle(Library::ScalarlistLibrary());
|
| +
|
| cls = Class::New<Int8Array>();
|
| object_store->set_int8_array_class(cls);
|
| name = Symbols::_Int8Array();
|
| - RegisterPrivateClass(cls, name, core_lib);
|
| + RegisterPrivateClass(cls, name, scalarlist_lib);
|
|
|
| cls = Class::New<Uint8Array>();
|
| object_store->set_uint8_array_class(cls);
|
| name = Symbols::_Uint8Array();
|
| - RegisterPrivateClass(cls, name, core_lib);
|
| + RegisterPrivateClass(cls, name, scalarlist_lib);
|
|
|
| cls = Class::New<Int16Array>();
|
| object_store->set_int16_array_class(cls);
|
| name = Symbols::_Int16Array();
|
| - RegisterPrivateClass(cls, name, core_lib);
|
| + RegisterPrivateClass(cls, name, scalarlist_lib);
|
|
|
| cls = Class::New<Uint16Array>();
|
| object_store->set_uint16_array_class(cls);
|
| name = Symbols::_Uint16Array();
|
| - RegisterPrivateClass(cls, name, core_lib);
|
| + RegisterPrivateClass(cls, name, scalarlist_lib);
|
|
|
| cls = Class::New<Int32Array>();
|
| object_store->set_int32_array_class(cls);
|
| name = Symbols::_Int32Array();
|
| - RegisterPrivateClass(cls, name, core_lib);
|
| + RegisterPrivateClass(cls, name, scalarlist_lib);
|
|
|
| cls = Class::New<Uint32Array>();
|
| object_store->set_uint32_array_class(cls);
|
| name = Symbols::_Uint32Array();
|
| - RegisterPrivateClass(cls, name, core_lib);
|
| + RegisterPrivateClass(cls, name, scalarlist_lib);
|
|
|
| cls = Class::New<Int64Array>();
|
| object_store->set_int64_array_class(cls);
|
| name = Symbols::_Int64Array();
|
| - RegisterPrivateClass(cls, name, core_lib);
|
| + RegisterPrivateClass(cls, name, scalarlist_lib);
|
|
|
| cls = Class::New<Uint64Array>();
|
| object_store->set_uint64_array_class(cls);
|
| name = Symbols::_Uint64Array();
|
| - RegisterPrivateClass(cls, name, core_lib);
|
| + RegisterPrivateClass(cls, name, scalarlist_lib);
|
|
|
| cls = Class::New<Float32Array>();
|
| object_store->set_float32_array_class(cls);
|
| name = Symbols::_Float32Array();
|
| - RegisterPrivateClass(cls, name, core_lib);
|
| + RegisterPrivateClass(cls, name, scalarlist_lib);
|
|
|
| cls = Class::New<Float64Array>();
|
| object_store->set_float64_array_class(cls);
|
| name = Symbols::_Float64Array();
|
| - RegisterPrivateClass(cls, name, core_lib);
|
| + RegisterPrivateClass(cls, name, scalarlist_lib);
|
|
|
| cls = Class::New<ExternalInt8Array>();
|
| object_store->set_external_int8_array_class(cls);
|
| name = Symbols::_ExternalInt8Array();
|
| - RegisterPrivateClass(cls, name, core_lib);
|
| + RegisterPrivateClass(cls, name, scalarlist_lib);
|
|
|
| cls = Class::New<ExternalUint8Array>();
|
| object_store->set_external_uint8_array_class(cls);
|
| name = Symbols::_ExternalUint8Array();
|
| - RegisterPrivateClass(cls, name, core_lib);
|
| + RegisterPrivateClass(cls, name, scalarlist_lib);
|
|
|
| cls = Class::New<ExternalInt16Array>();
|
| object_store->set_external_int16_array_class(cls);
|
| name = Symbols::_ExternalInt16Array();
|
| - RegisterPrivateClass(cls, name, core_lib);
|
| + RegisterPrivateClass(cls, name, scalarlist_lib);
|
|
|
| cls = Class::New<ExternalUint16Array>();
|
| object_store->set_external_uint16_array_class(cls);
|
| name = Symbols::_ExternalUint16Array();
|
| - RegisterPrivateClass(cls, name, core_lib);
|
| + RegisterPrivateClass(cls, name, scalarlist_lib);
|
|
|
| cls = Class::New<ExternalInt32Array>();
|
| object_store->set_external_int32_array_class(cls);
|
| name = Symbols::_ExternalInt32Array();
|
| - RegisterPrivateClass(cls, name, core_lib);
|
| + RegisterPrivateClass(cls, name, scalarlist_lib);
|
|
|
| cls = Class::New<ExternalUint32Array>();
|
| object_store->set_external_uint32_array_class(cls);
|
| name = Symbols::_ExternalUint32Array();
|
| - RegisterPrivateClass(cls, name, core_lib);
|
| + RegisterPrivateClass(cls, name, scalarlist_lib);
|
|
|
| cls = Class::New<ExternalInt64Array>();
|
| object_store->set_external_int64_array_class(cls);
|
| name = Symbols::_ExternalInt64Array();
|
| - RegisterPrivateClass(cls, name, core_lib);
|
| + RegisterPrivateClass(cls, name, scalarlist_lib);
|
|
|
| cls = Class::New<ExternalUint64Array>();
|
| object_store->set_external_uint64_array_class(cls);
|
| name = Symbols::_ExternalUint64Array();
|
| - RegisterPrivateClass(cls, name, core_lib);
|
| + RegisterPrivateClass(cls, name, scalarlist_lib);
|
|
|
| cls = Class::New<ExternalFloat32Array>();
|
| object_store->set_external_float32_array_class(cls);
|
| name = Symbols::_ExternalFloat32Array();
|
| - RegisterPrivateClass(cls, name, core_lib);
|
| + RegisterPrivateClass(cls, name, scalarlist_lib);
|
|
|
| cls = Class::New<ExternalFloat64Array>();
|
| object_store->set_external_float64_array_class(cls);
|
| name = Symbols::_ExternalFloat64Array();
|
| - RegisterPrivateClass(cls, name, core_lib);
|
| -
|
| - cls = Class::New<WeakProperty>();
|
| - object_store->set_weak_property_class(cls);
|
| - name = Symbols::_WeakProperty();
|
| - RegisterPrivateClass(cls, name, core_lib);
|
| + RegisterPrivateClass(cls, name, scalarlist_lib);
|
|
|
| // Set the super type of class Stacktrace to Object type so that the
|
| // 'toString' method is implemented.
|
| @@ -947,6 +950,18 @@ RawError* Object::Init(Isolate* isolate) {
|
| if (!error.IsNull()) {
|
| return error.raw();
|
| }
|
| + const Script& scalarlist_script = Script::Handle(
|
| + Bootstrap::LoadScalarlistScript(false));
|
| + ASSERT(!scalarlist_lib.IsNull());
|
| + error = Bootstrap::Compile(scalarlist_lib, scalarlist_script);
|
| + if (!error.IsNull()) {
|
| + return error.raw();
|
| + }
|
| + patch_script = Bootstrap::LoadScalarlistScript(true);
|
| + error = scalarlist_lib.Patch(patch_script);
|
| + if (!error.IsNull()) {
|
| + return error.raw();
|
| + }
|
| Bootstrap::SetupNativeResolver();
|
|
|
| // Remove the Object superclass cycle by setting the super type to null (not
|
| @@ -6606,6 +6621,16 @@ void Library::InitMirrorsLibrary(Isolate* isolate) {
|
| }
|
|
|
|
|
| +void Library::InitScalarlistLibrary(Isolate* isolate) {
|
| + const String& url = String::Handle(Symbols::New("dart:scalarlist"));
|
| + const Library& lib = Library::Handle(Library::New(url));
|
| + lib.Register();
|
| + const Library& core_impl_lib = Library::Handle(Library::CoreImplLibrary());
|
| + lib.AddImport(core_impl_lib);
|
| + isolate->object_store()->set_scalarlist_library(lib);
|
| +}
|
| +
|
| +
|
| void Library::InitNativeWrappersLibrary(Isolate* isolate) {
|
| static const int kNumNativeWrappersClasses = 4;
|
| ASSERT(kNumNativeWrappersClasses > 0 && kNumNativeWrappersClasses < 10);
|
| @@ -6734,6 +6759,11 @@ RawLibrary* Library::MirrorsLibrary() {
|
| }
|
|
|
|
|
| +RawLibrary* Library::ScalarlistLibrary() {
|
| + return Isolate::Current()->object_store()->scalarlist_library();
|
| +}
|
| +
|
| +
|
| RawLibrary* Library::NativeWrappersLibrary() {
|
| return Isolate::Current()->object_store()->native_wrappers_library();
|
| }
|
|
|