Chromium Code Reviews| Index: bin/builtin_in.cc |
| =================================================================== |
| --- bin/builtin_in.cc (revision 1520) |
| +++ bin/builtin_in.cc (working copy) |
| @@ -92,51 +92,54 @@ |
| } |
| -void Builtin_LoadLibrary() { |
| - Dart_Handle url = Dart_NewString(DartUtils::kBuiltinLibURL); |
| - Dart_Handle result = Dart_LookupLibrary(url); |
| - if (!Dart_IsError(result)) { |
| - // Builtin library already loaded. |
| - return; |
| - } |
| - |
| - // Load the library. |
| - Dart_Handle source = Dart_NewString(Builtin_source_); |
| - Dart_Handle builtin_lib = Dart_LoadLibrary(url, source); |
| - ASSERT(!Dart_IsError(builtin_lib)); |
| - |
| - // Lookup the core libraries and inject the builtin library into them. |
| - Dart_Handle core_lib = Dart_LookupLibrary(Dart_NewString("dart:core")); |
| +static void SetupCorelibImports(Dart_Handle builtin_lib) { |
| + // Lookup the core libraries and import the builtin library into them. |
| + Dart_Handle url = Dart_NewString(DartUtils::kCoreLibURL); |
| + Dart_Handle core_lib = Dart_LookupLibrary(url); |
| ASSERT(!Dart_IsError(core_lib)); |
| - result = Dart_LibraryImportLibrary(core_lib, builtin_lib); |
| + Dart_Handle result = Dart_LibraryImportLibrary(core_lib, builtin_lib); |
| ASSERT(!Dart_IsError(result)); |
| - Dart_Handle coreimpl_lib = |
| - Dart_LookupLibrary(Dart_NewString("dart:coreimpl")); |
| + url = Dart_NewString(DartUtils::kCoreImplLibURL); |
| + Dart_Handle coreimpl_lib = Dart_LookupLibrary(url); |
| ASSERT(!Dart_IsError(coreimpl_lib)); |
| result = Dart_LibraryImportLibrary(coreimpl_lib, builtin_lib); |
| ASSERT(!Dart_IsError(result)); |
| result = Dart_LibraryImportLibrary(builtin_lib, coreimpl_lib); |
| ASSERT(!Dart_IsError(result)); |
| +} |
| - // Create a native wrapper "EventHandlerNativeWrapper" so that we can add a |
| - // native field to store the event handle for implementing all |
| - // event operations. |
| - Dart_Handle name = Dart_NewString("EventHandlerNativeWrapper"); |
| - const int kNumEventHandlerFields = 1; |
| - result = Dart_CreateNativeWrapperClass(builtin_lib, |
| - name, |
| - kNumEventHandlerFields); |
| - ASSERT(!Dart_IsError(result)); |
| + |
| +Dart_Handle Builtin_LoadLibrary() { |
| + Dart_Handle url = Dart_NewString(DartUtils::kBuiltinLibURL); |
| + Dart_Handle source = Dart_NewString(Builtin_source_); |
| + Dart_Handle builtin_lib = Dart_LoadLibrary(url, source); |
| + if (!Dart_IsError(builtin_lib)) { |
| + // Setup core lib, builtin import structure. |
| + SetupCorelibImports(builtin_lib); |
| + // Setup the native resolver for built in library functions. |
| + Dart_Handle result = Dart_SetNativeResolver(builtin_lib, native_lookup); |
| + ASSERT(!Dart_IsError(result)); |
| + } |
| + return builtin_lib; |
| } |
| void Builtin_ImportLibrary(Dart_Handle library) { |
| - Builtin_LoadLibrary(); |
| - |
| Dart_Handle url = Dart_NewString(DartUtils::kBuiltinLibURL); |
| Dart_Handle builtin_lib = Dart_LookupLibrary(url); |
| - ASSERT(!Dart_IsError(builtin_lib)); |
| + if (Dart_IsError(builtin_lib)) { |
|
Anton Muhin
2011/11/15 12:22:23
this then clause looks pretty much like a copy of
siva
2011/11/15 19:42:49
Yes, the helper is needed as it is called from the
|
| + // Load the Builtin library. |
| + Dart_Handle source = Dart_NewString(Builtin_source_); |
| + builtin_lib = Dart_LoadLibrary(url, source); |
| + ASSERT(!Dart_IsError(builtin_lib)); |
| + // Setup core lib, builtin import structure. |
| + SetupCorelibImports(builtin_lib); |
| + // Setup the native resolver for built in library functions. |
| + Dart_Handle result = Dart_SetNativeResolver(builtin_lib, native_lookup); |
| + ASSERT(!Dart_IsError(result)); |
| + } |
| + // Import the builtin library into current library. |
| Dart_Handle result = Dart_LibraryImportLibrary(library, builtin_lib); |
| ASSERT(!Dart_IsError(result)); |
| } |
| @@ -146,6 +149,7 @@ |
| Dart_Handle url = Dart_NewString(DartUtils::kBuiltinLibURL); |
| Dart_Handle builtin_lib = Dart_LookupLibrary(url); |
| ASSERT(!Dart_IsError(builtin_lib)); |
| + // Setup the native resolver for built in library functions. |
| Dart_Handle result = Dart_SetNativeResolver(builtin_lib, native_lookup); |
| ASSERT(!Dart_IsError(result)); |
| } |