| Index: runtime/vm/bootstrap.cc | 
| diff --git a/runtime/vm/bootstrap.cc b/runtime/vm/bootstrap.cc | 
| index 562392ff15aefa52fcb84c88187dfab2f12c0509..c445f4ab7c33708c25f7b17f5fbab31879ecdf22 100644 | 
| --- a/runtime/vm/bootstrap.cc | 
| +++ b/runtime/vm/bootstrap.cc | 
| @@ -161,28 +161,30 @@ static RawError* Compile(const Library& library, const Script& script) { | 
| } | 
|  | 
|  | 
| -static Dart_Handle LoadPartSource(Isolate* isolate, | 
| +static Dart_Handle LoadPartSource(Thread* thread, | 
| const Library& lib, | 
| const String& uri) { | 
| +  Zone* zone = thread->zone(); | 
| +  Isolate* isolate = thread->isolate(); | 
| const String& part_source = String::Handle( | 
| -      isolate, GetLibrarySource(lib, uri, false)); | 
| -  const String& lib_uri = String::Handle(isolate, lib.url()); | 
| +      zone, GetLibrarySource(lib, uri, false)); | 
| +  const String& lib_uri = String::Handle(zone, lib.url()); | 
| if (part_source.IsNull()) { | 
| return Api::NewError("Unable to read part file '%s' of library '%s'", | 
| uri.ToCString(), lib_uri.ToCString()); | 
| } | 
|  | 
| // Prepend the library URI to form a unique script URI for the part. | 
| -  const Array& strings = Array::Handle(isolate, Array::New(3)); | 
| +  const Array& strings = Array::Handle(zone, Array::New(3)); | 
| strings.SetAt(0, lib_uri); | 
| strings.SetAt(1, Symbols::Slash()); | 
| strings.SetAt(2, uri); | 
| -  const String& part_uri = String::Handle(isolate, String::ConcatAll(strings)); | 
| +  const String& part_uri = String::Handle(zone, String::ConcatAll(strings)); | 
|  | 
| // Create a script object and compile the part. | 
| const Script& part_script = Script::Handle( | 
| -      isolate, Script::New(part_uri, part_source, RawScript::kSourceTag)); | 
| -  const Error& error = Error::Handle(isolate, Compile(lib, part_script)); | 
| +      zone, Script::New(part_uri, part_source, RawScript::kSourceTag)); | 
| +  const Error& error = Error::Handle(zone, Compile(lib, part_script)); | 
| return Api::NewHandle(isolate, error.raw()); | 
| } | 
|  | 
| @@ -190,7 +192,8 @@ static Dart_Handle LoadPartSource(Isolate* isolate, | 
| static Dart_Handle BootstrapLibraryTagHandler(Dart_LibraryTag tag, | 
| Dart_Handle library, | 
| Dart_Handle uri) { | 
| -  Isolate* isolate = Isolate::Current(); | 
| +  Thread* thread = Thread::Current(); | 
| +  Zone* zone = thread->zone(); | 
| if (!Dart_IsLibrary(library)) { | 
| return Api::NewError("not a library"); | 
| } | 
| @@ -201,7 +204,7 @@ static Dart_Handle BootstrapLibraryTagHandler(Dart_LibraryTag tag, | 
| // In the bootstrap loader we do not try and do any canonicalization. | 
| return uri; | 
| } | 
| -  const String& uri_str = Api::UnwrapStringHandle(isolate, uri); | 
| +  const String& uri_str = Api::UnwrapStringHandle(zone, uri); | 
| ASSERT(!uri_str.IsNull()); | 
| if (tag == Dart_kImportTag) { | 
| // We expect the core bootstrap libraries to only import other | 
| @@ -213,21 +216,21 @@ static Dart_Handle BootstrapLibraryTagHandler(Dart_LibraryTag tag, | 
| uri_str.ToCString()); | 
| } | 
| ASSERT(tag == Dart_kSourceTag); | 
| -  const Library& lib = Api::UnwrapLibraryHandle(isolate, library); | 
| +  const Library& lib = Api::UnwrapLibraryHandle(zone, library); | 
| ASSERT(!lib.IsNull()); | 
| -  return LoadPartSource(isolate, lib, uri_str); | 
| +  return LoadPartSource(thread, lib, uri_str); | 
| } | 
|  | 
|  | 
| -static RawError* LoadPatchFiles(Isolate* isolate, | 
| +static RawError* LoadPatchFiles(Zone* zone, | 
| const Library& lib, | 
| const String& patch_uri, | 
| const char** patch_files) { | 
| -  String& patch_file_uri = String::Handle(isolate); | 
| -  String& source = String::Handle(isolate); | 
| -  Script& script = Script::Handle(isolate); | 
| -  Error& error = Error::Handle(isolate); | 
| -  const Array& strings = Array::Handle(isolate, Array::New(3)); | 
| +  String& patch_file_uri = String::Handle(zone); | 
| +  String& source = String::Handle(zone); | 
| +  Script& script = Script::Handle(zone); | 
| +  Error& error = Error::Handle(zone); | 
| +  const Array& strings = Array::Handle(zone, Array::New(3)); | 
| strings.SetAt(0, patch_uri); | 
| strings.SetAt(1, Symbols::Slash()); | 
| for (intptr_t j = 0; patch_files[j] != NULL; j += 2) { | 
| @@ -255,12 +258,13 @@ static RawError* LoadPatchFiles(Isolate* isolate, | 
| RawError* Bootstrap::LoadandCompileScripts() { | 
| Thread* thread = Thread::Current(); | 
| Isolate* isolate = thread->isolate(); | 
| -  String& uri = String::Handle(isolate); | 
| -  String& patch_uri = String::Handle(isolate); | 
| -  String& source = String::Handle(isolate); | 
| -  Script& script = Script::Handle(isolate); | 
| -  Library& lib = Library::Handle(isolate); | 
| -  Error& error = Error::Handle(isolate); | 
| +  Zone* zone = thread->zone(); | 
| +  String& uri = String::Handle(zone); | 
| +  String& patch_uri = String::Handle(zone); | 
| +  String& source = String::Handle(zone); | 
| +  Script& script = Script::Handle(zone); | 
| +  Library& lib = Library::Handle(zone); | 
| +  Error& error = Error::Handle(zone); | 
| Dart_LibraryTagHandler saved_tag_handler = isolate->library_tag_handler(); | 
|  | 
| // Set the library tag handler for the isolate to the bootstrap | 
| @@ -307,7 +311,7 @@ RawError* Bootstrap::LoadandCompileScripts() { | 
| // If a patch exists, load and patch the script. | 
| if (bootstrap_libraries[i].patch_paths_ != NULL) { | 
| patch_uri = Symbols::New(bootstrap_libraries[i].patch_uri_); | 
| -      error = LoadPatchFiles(isolate, | 
| +      error = LoadPatchFiles(zone, | 
| lib, | 
| patch_uri, | 
| bootstrap_libraries[i].patch_paths_); | 
| @@ -320,12 +324,12 @@ RawError* Bootstrap::LoadandCompileScripts() { | 
| SetupNativeResolver(); | 
| ClassFinalizer::ProcessPendingClasses(); | 
|  | 
| -    Class& cls = Class::Handle(isolate); | 
| +    Class& cls = Class::Handle(zone); | 
| // Eagerly compile the function implementation class as it is the super | 
| // class of signature classes. This allows us to just finalize signature | 
| // classes without going through the hoops of trying to compile them. | 
| const Type& type = | 
| -        Type::Handle(isolate, isolate->object_store()->function_impl_type()); | 
| +        Type::Handle(zone, isolate->object_store()->function_impl_type()); | 
| cls = type.type_class(); | 
| Compiler::CompileClass(cls); | 
| } | 
|  |