75 {
76
77
78
79
80 if (include_abstract_ || !klass.is_abstract()) {
81 cids_->
Add(klass.id());
82 }
83
84 ScopedHandle<GrowableObjectArray> array(&array_handles_);
85 ScopedHandle<Class> subclass_or_implementor(&class_handles_);
86
87 *array = klass.direct_subclasses();
88 if (!array->IsNull()) {
89 for (intptr_t i = 0; i < array->Length(); ++i) {
90 *subclass_or_implementor ^= (*array).At(i);
92 }
93 }
94 *array = klass.direct_implementors();
95 if (!array->IsNull()) {
96 for (intptr_t i = 0; i < array->Length(); ++i) {
97 *subclass_or_implementor ^= (*array).At(i);
99 }
100 }
101 }
void ScanImplementorClasses(const Class &klass)