Chromium Code Reviews| Index: runtime/vm/class_finalizer.cc |
| =================================================================== |
| --- runtime/vm/class_finalizer.cc (revision 15471) |
| +++ runtime/vm/class_finalizer.cc (working copy) |
| @@ -104,6 +104,22 @@ |
| } |
| +static void MarkImplementedClasses(const GrowableObjectArray& class_array) { |
| + Class& cls = Class::Handle(); |
| + Array& interfaces_array = Array::Handle(); |
| + Type& type = Type::Handle(); |
| + for (intptr_t i = 0; i < class_array.Length(); i++) { |
| + cls ^= class_array.At(i); |
| + interfaces_array = cls.interfaces(); |
| + for (intptr_t k = 0; k < interfaces_array.Length(); k++) { |
| + type ^= interfaces_array.At(k); |
| + cls = type.type_class(); |
| + cls.set_is_implemented(); |
| + } |
| + } |
| +} |
| + |
| + |
| // Class finalization occurs: |
| // a) when bootstrap process completes (VerifyBootstrapClasses). |
| // b) after the user classes are loaded (dart_api). |
| @@ -156,6 +172,7 @@ |
| PrintClassInformation(cls); |
| } |
| } |
| + MarkImplementedClasses(class_array); |
|
regis
2012/11/28 22:32:17
Instead of adding another pass, you could mark int
srdjan
2012/11/28 22:43:50
Done.
|
| // Clear pending classes array. |
| class_array = GrowableObjectArray::New(); |
| object_store->set_pending_classes(class_array); |