Fix fast-path test to work with subclasses correctly.

main
theraven 15 years ago
parent 81131acfbc
commit e34be81404

@ -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(

Loading…
Cancel
Save