Fix fast-path test to work with subclasses correctly.

This commit is contained in:
theraven 2011-07-03 15:29:52 +00:00
parent 81131acfbc
commit e34be81404

View File

@ -51,26 +51,25 @@ static void checkARCAccessors(Class cls)
autorelease = sel_registerName("autorelease");
isARC = sel_registerName("_ARCCompliantRetainRelease");
}
if (ownsMethod(cls, isARC))
{
objc_set_class_flag(cls, objc_class_flag_fast_arc);
return;
}
struct objc_slot *slot = objc_get_slot(cls, retain);
if (!ownsMethod(slot->owner, isARC))
{
objc_clear_class_flag(cls, objc_class_flag_fast_arc);
return;
}
slot = objc_get_slot(cls, release);
if (!ownsMethod(slot->owner, isARC))
{
objc_clear_class_flag(cls, objc_class_flag_fast_arc);
return;
}
slot = objc_get_slot(cls, autorelease);
if (!ownsMethod(slot->owner, isARC))
{
objc_clear_class_flag(cls, objc_class_flag_fast_arc);
return;
}
objc_set_class_flag(cls, objc_class_flag_fast_arc);
}
static void collectMethodsForMethodListToSparseArray(