Chromium Code Reviews| 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(); |
| } |