Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4773)

Unified Diff: bin/builtin_in.cc

Issue 8537023: Implement automatic loading of dart:core_native_fields library (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: '' Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « bin/builtin.dart ('k') | bin/dartutils.h » ('j') | vm/class_finalizer.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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));
}
« no previous file with comments | « bin/builtin.dart ('k') | bin/dartutils.h » ('j') | vm/class_finalizer.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698