From e34be81404da444f21ee61522e80a2f35fdab003 Mon Sep 17 00:00:00 2001 From: theraven Date: Sun, 3 Jul 2011 15:29:52 +0000 Subject: [PATCH] Fix fast-path test to work with subclasses correctly. --- dtable.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/dtable.c b/dtable.c index 3183061..2fd0846 100644 --- a/dtable.c +++ b/dtable.c @@ -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(