| Index: bin/builtin.cc
 | 
| ===================================================================
 | 
| --- bin/builtin.cc	(revision 1955)
 | 
| +++ bin/builtin.cc	(working copy)
 | 
| @@ -9,29 +9,44 @@
 | 
|  #include "bin/builtin.h"
 | 
|  #include "bin/dartutils.h"
 | 
|  
 | 
| -// Implementation of native functions which are used for some
 | 
| -// test/debug functionality in standalone dart mode.
 | 
| +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);
 | 
| +  DART_CHECK_VALID(core_lib);
 | 
| +  DART_CHECK_VALID(Dart_LibraryImportLibrary(core_lib, builtin_lib));
 | 
|  
 | 
| -void PrintString(FILE* out, Dart_Handle str) {
 | 
| -  const char* cstring = NULL;
 | 
| -  Dart_Handle result = Dart_StringToCString(str, &cstring);
 | 
| -  if (Dart_IsError(result)) {
 | 
| -      cstring = Dart_GetError(result);
 | 
| -  }
 | 
| -  fprintf(out, "%s\n", cstring);
 | 
| -  fflush(out);
 | 
| +  url = Dart_NewString(DartUtils::kCoreImplLibURL);
 | 
| +  Dart_Handle coreimpl_lib = Dart_LookupLibrary(url);
 | 
| +  DART_CHECK_VALID(coreimpl_lib);
 | 
| +  DART_CHECK_VALID(Dart_LibraryImportLibrary(coreimpl_lib, builtin_lib));
 | 
|  }
 | 
|  
 | 
|  
 | 
| -void FUNCTION_NAME(Logger_PrintString)(Dart_NativeArguments args) {
 | 
| -  Dart_EnterScope();
 | 
| -  PrintString(stdout, Dart_GetNativeArgument(args, 0));
 | 
| -  Dart_ExitScope();
 | 
| +Dart_Handle Builtin::Source() {
 | 
| +  Dart_Handle source = Dart_NewString(Builtin::Builtin_source_);
 | 
| +  return source;
 | 
|  }
 | 
|  
 | 
| -void FUNCTION_NAME(Exit)(Dart_NativeArguments args) {
 | 
| -  Dart_EnterScope();
 | 
| -  int64_t status = DartUtils::GetIntegerValue(Dart_GetNativeArgument(args, 0));
 | 
| -  Dart_ExitScope();
 | 
| -  exit(status);
 | 
| +
 | 
| +void Builtin::SetupLibrary(Dart_Handle builtin_lib) {
 | 
| +  // Setup core lib, builtin import structure.
 | 
| +  SetupCorelibImports(builtin_lib);
 | 
| +  // Setup the native resolver for built in library functions.
 | 
| +  DART_CHECK_VALID(Dart_SetNativeResolver(builtin_lib, NativeLookup));
 | 
|  }
 | 
| +
 | 
| +
 | 
| +void Builtin::ImportLibrary(Dart_Handle library) {
 | 
| +  Dart_Handle url = Dart_NewString(DartUtils::kBuiltinLibURL);
 | 
| +  Dart_Handle builtin_lib = Dart_LookupLibrary(url);
 | 
| +  if (Dart_IsError(builtin_lib)) {
 | 
| +    builtin_lib = Dart_LoadLibrary(url, Source());
 | 
| +    if (!Dart_IsError(builtin_lib)) {
 | 
| +      SetupLibrary(builtin_lib);
 | 
| +    }
 | 
| +  }
 | 
| +  // Import the builtin library into current library.
 | 
| +  DART_CHECK_VALID(builtin_lib);
 | 
| +  DART_CHECK_VALID(Dart_LibraryImportLibrary(library, builtin_lib));
 | 
| +}
 | 
| 
 |