Chromium Code Reviews| Index: vm/object.cc |
| =================================================================== |
| --- vm/object.cc (revision 1465) |
| +++ vm/object.cc (working copy) |
| @@ -422,6 +422,8 @@ |
| ASSERT(!core_lib.IsNull()); |
| Library& core_impl_lib = Library::Handle(Library::CoreImplLibrary()); |
| ASSERT(!core_impl_lib.IsNull()); |
| + Library::InitNativeFieldsLibrary(isolate); |
| + ASSERT(isolate->object_store()->native_fields_library() != Library::null()); |
| // Allocate pre-initialized values. |
| Bool& bool_value = Bool::Handle(); |
| @@ -4090,6 +4092,30 @@ |
| } |
| +void Library::InitNativeFieldsLibrary(Isolate* isolate) { |
| + static const int kNumNativeFieldClasses = 4; |
| + ASSERT(kNumNativeFieldClasses > 0 && kNumNativeFieldClasses < 10); |
| + const String& native_flds_lib_url = String::Handle( |
| + String::NewSymbol("dart:core_native_fields")); |
|
Anton Muhin
2011/11/13 16:19:32
somehow reuse kCoreNativeFieldsLibURL?
siva
2011/11/15 02:16:52
Agree, would be nice, we need to expose thse throu
|
| + Library& native_flds_lib = Library::Handle( |
| + Library::NewLibraryHelper(native_flds_lib_url, false)); |
| + native_flds_lib.Register(); |
| + isolate->object_store()->set_native_fields_library(native_flds_lib); |
| + const String& name = String::Handle(String::New("NativeFieldWrapperClass")); |
| + String& index_str = String::Handle(); |
| + String& cls_name = String::Handle(); |
| + static const int kBufferSize = 2; |
| + char chars[kBufferSize]; |
| + for (int fld_cnt = 1; fld_cnt <= kNumNativeFieldClasses; fld_cnt++) { |
| + OS::SNPrint(chars, kBufferSize, "%d", fld_cnt); |
|
Anton Muhin
2011/11/13 16:19:32
up to you, but for me something like below would b
siva
2011/11/15 02:16:52
Done.
|
| + index_str = String::New(chars); |
| + cls_name = String::Concat(name, index_str); |
| + cls_name = String::NewSymbol(cls_name); |
| + Class::NewNativeWrapper(&native_flds_lib, cls_name, fld_cnt); |
| + } |
| +} |
| + |
| + |
| RawLibrary* Library::LookupLibrary(const String &url) { |
| Library& lib = Library::Handle(); |
| String& lib_url = String::Handle(); |
| @@ -4160,6 +4186,11 @@ |
| } |
| +RawLibrary* Library::NativeFieldsLibrary() { |
| + return Isolate::Current()->object_store()->native_fields_library(); |
| +} |
| + |
| + |
| const char* Library::ToCString() const { |
| const char* kFormat = "Library:'%s'"; |
| const String& name = String::Handle(url()); |