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