| Index: runtime/vm/class_table.cc
|
| ===================================================================
|
| --- runtime/vm/class_table.cc (revision 11096)
|
| +++ runtime/vm/class_table.cc (working copy)
|
| @@ -96,91 +96,4 @@
|
| }
|
| }
|
|
|
| -
|
| -bool ClassTable::HasSubclasses(intptr_t cid) const {
|
| - const Class& cls = Class::Handle(At(cid));
|
| - ASSERT(!cls.IsNull());
|
| - // TODO(regis): Replace assert below with ASSERT(cid > kDartObjectCid).
|
| - ASSERT(!cls.IsObjectClass());
|
| - const GrowableObjectArray& cls_direct_subclasses =
|
| - GrowableObjectArray::Handle(cls.direct_subclasses());
|
| - return
|
| - !cls_direct_subclasses.IsNull() && (cls_direct_subclasses.Length() > 0);
|
| -}
|
| -
|
| -
|
| -// Returns true if the given array of cids contains the given cid.
|
| -static bool ContainsCid(ZoneGrowableArray<intptr_t>* cids, intptr_t cid) {
|
| - for (intptr_t i = 0; i < cids->length(); i++) {
|
| - if ((*cids)[i] == cid) {
|
| - return true;
|
| - }
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -
|
| -// Recursively collect direct and indirect subclass ids of cls.
|
| -static void CollectSubclassIds(ZoneGrowableArray<intptr_t>* cids,
|
| - const Class& cls) {
|
| - const GrowableObjectArray& cls_direct_subclasses =
|
| - GrowableObjectArray::Handle(cls.direct_subclasses());
|
| - if (cls_direct_subclasses.IsNull()) {
|
| - return;
|
| - }
|
| - Class& direct_subclass = Class::Handle();
|
| - for (intptr_t i = 0; i < cls_direct_subclasses.Length(); i++) {
|
| - direct_subclass ^= cls_direct_subclasses.At(i);
|
| - intptr_t direct_subclass_id = direct_subclass.id();
|
| - if (!ContainsCid(cids, direct_subclass_id)) {
|
| - cids->Add(direct_subclass_id);
|
| - CollectSubclassIds(cids, direct_subclass);
|
| - }
|
| - }
|
| -}
|
| -
|
| -
|
| -ZoneGrowableArray<intptr_t>* ClassTable::GetSubclassIdsOf(intptr_t cid) const {
|
| - const Class& cls = Class::Handle(At(cid));
|
| - ASSERT(!cls.IsNull());
|
| - // TODO(regis): Replace assert below with ASSERT(cid > kDartObjectCid).
|
| - ASSERT(!cls.IsObjectClass());
|
| - ZoneGrowableArray<intptr_t>* ids = new ZoneGrowableArray<intptr_t>();
|
| - CollectSubclassIds(ids, cls);
|
| - return ids;
|
| -}
|
| -
|
| -
|
| -ZoneGrowableArray<Function*>* ClassTable::GetNamedInstanceFunctionsOf(
|
| - const ZoneGrowableArray<intptr_t>& cids,
|
| - const String& function_name) const {
|
| - ASSERT(!function_name.IsNull());
|
| - ZoneGrowableArray<Function*>* functions = new ZoneGrowableArray<Function*>();
|
| - Class& cls = Class::Handle();
|
| - Function& cls_function = Function::Handle();
|
| - for (intptr_t i = 0; i < cids.length(); i++) {
|
| - const intptr_t cid = cids[i];
|
| - cls = At(cid);
|
| - // TODO(regis): Replace assert below with ASSERT(cid > kDartObjectCid).
|
| - ASSERT(!cls.IsObjectClass());
|
| - cls_function = cls.LookupDynamicFunction(function_name);
|
| - if (!cls_function.IsNull()) {
|
| - functions->Add(&Function::ZoneHandle(cls_function.raw()));
|
| - }
|
| - }
|
| - return functions;
|
| -}
|
| -
|
| -
|
| -ZoneGrowableArray<Function*>* ClassTable::GetOverridesOf(
|
| - const Function& function) const {
|
| - ASSERT(!function.IsNull());
|
| - ASSERT(function.IsDynamicFunction());
|
| - const Class& function_owner = Class::Handle(function.Owner());
|
| - const String& function_name = String::Handle(function.name());
|
| - ZoneGrowableArray<intptr_t>* cids = new ZoneGrowableArray<intptr_t>();
|
| - CollectSubclassIds(cids, function_owner);
|
| - return GetNamedInstanceFunctionsOf(*cids, function_name);
|
| -}
|
| -
|
| } // namespace dart
|
|
|