Index: runtime/vm/bootstrap.cc |
=================================================================== |
--- runtime/vm/bootstrap.cc (revision 4295) |
+++ runtime/vm/bootstrap.cc (working copy) |
@@ -38,6 +38,40 @@ |
} |
+static RawObject* InitLibrary(const char* url_str, |
+ const char* source_str) { |
+ const String& url = String::Handle(String::NewSymbol(url_str)); |
+ const String& source = String::Handle(String::New(source_str, |
+ Heap::kOld)); |
+ const Library& lib = Library::Handle(Library::New(url)); |
+ lib.Register(); |
+ const Script& script = |
+ Script::Handle(Script::New(url, source, RawScript::kSource)); |
+ const Error& error = Error::Handle(Bootstrap::Compile(lib, script)); |
+ if (!error.IsNull()) { |
+ return error.raw(); |
+ } else { |
+ return lib.raw(); |
+ } |
+} |
+ |
+ |
+RawError* Bootstrap::InitAdditionalLibraries() { |
+ Object& result = Object::Handle(); |
+ result = InitLibrary("dart:mirrors", mirrors_source_); |
+ if (result.IsError()) { |
+ Error& error = Error::Handle(); |
+ error ^= result.raw(); |
+ return error.raw(); |
siva
2012/02/18 01:25:55
Instead of defining functions to return RawError*
turnidge
2012/03/07 20:00:14
This function went away in refactor. Point taken
|
+ } else { |
+ Library& lib = Library::Handle(); |
+ lib ^= result.raw(); |
+ Isolate::Current()->object_store()->set_mirrors_library(lib); |
+ } |
+ return Error::null(); |
+} |
+ |
+ |
RawError* Bootstrap::Compile(const Library& library, const Script& script) { |
if (FLAG_print_bootstrap) { |
OS::Print("Bootstrap source '%s':\n%s\n", |
@@ -48,6 +82,8 @@ |
const Error& error = Error::Handle(Compiler::Compile(library, script)); |
if (error.IsNull()) { |
library.SetLoaded(); |
+ } else { |
+ library.SetLoadError(); |
} |
return error.raw(); |
} |