| Index: runtime/vm/kernel_reader.cc
|
| diff --git a/runtime/vm/kernel_reader.cc b/runtime/vm/kernel_reader.cc
|
| index 4cc9e75d8331f912fd7533ece02ddc5f9ae0f544..c6894b5d2cc5047e809793a999191c92524478af 100644
|
| --- a/runtime/vm/kernel_reader.cc
|
| +++ b/runtime/vm/kernel_reader.cc
|
| @@ -103,8 +103,7 @@ Program* KernelReader::ReadPrecompiledProgram() {
|
| }
|
|
|
| Object& KernelReader::ReadProgram() {
|
| - ASSERT(!bootstrapping_);
|
| - Program* program = ReadPrecompiledProgram();
|
| + Program* program = ReadPrecompiledKernelFromBuffer(buffer_, buffer_length_);
|
| if (program == NULL) {
|
| const dart::String& error = H.DartString("Failed to read .kernell file");
|
| return Object::Handle(Z, ApiError::New(error));
|
| @@ -174,10 +173,6 @@ void KernelReader::ReadLibrary(Library* kernel_library) {
|
| TokenPosition::kNoSource));
|
| toplevel_class.set_is_cycle_free();
|
| library.set_toplevel_class(toplevel_class);
|
| - if (bootstrapping_) {
|
| - GrowableObjectArray::Handle(Z, I->object_store()->pending_classes())
|
| - .Add(toplevel_class, Heap::kOld);
|
| - }
|
|
|
| ActiveClassScope active_class_scope(&active_class_, NULL, &toplevel_class);
|
| // Load toplevel fields.
|
| @@ -215,6 +210,8 @@ void KernelReader::ReadLibrary(Library* kernel_library) {
|
| Class* kernel_klass = kernel_library->classes()[i];
|
| classes.Add(ReadClass(library, kernel_klass), Heap::kOld);
|
| }
|
| +
|
| + classes.Add(toplevel_class, Heap::kOld);
|
| }
|
|
|
|
|
| @@ -350,10 +347,8 @@ dart::Class& KernelReader::ReadClass(const dart::Library& library,
|
| ReadProcedure(library, klass, kernel_procedure, kernel_klass);
|
| }
|
|
|
| - if (bootstrapping_ && !klass.is_marked_for_parsing()) {
|
| + if (!klass.is_marked_for_parsing()) {
|
| klass.set_is_marked_for_parsing();
|
| - GrowableObjectArray::Handle(Z, I->object_store()->pending_classes())
|
| - .Add(klass, Heap::kOld);
|
| }
|
|
|
| return klass;
|
| @@ -672,7 +667,7 @@ dart::Class& KernelReader::LookupClass(Class* klass) {
|
| // we do not risk allocating the class again by calling LookupClass
|
| // recursively from ReadPreliminaryClass for the same class.
|
| classes_.Insert(klass, handle);
|
| - if (!handle->is_type_finalized()) {
|
| + if (!handle->is_cycle_free()) {
|
| ReadPreliminaryClass(handle, klass);
|
| }
|
| }
|
|
|