Skip to content

Commit f3d2b70

Browse files
author
theraven
committed
Small object + ARC tweaks.
1 parent 2288ff5 commit f3d2b70

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

abi_version.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ PRIVATE BOOL objc_check_abi_version(struct objc_module_abi_8 *module)
137137
}
138138
// We can't mix GC_None and GC_Required code, but we can mix any other
139139
// combination
140-
FAIL_IF((gc_mode != GC_Optional) && (gc_mode != current_gc_mode),
140+
FAIL_IF((gc_mode == GC_Required) && (gc_mode != current_gc_mode),
141141
"Attempting to mix GC and non-GC code!");
142142
return YES;
143143
}

arc.m

+4-2
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,8 @@ static void cleanupPools(struct arc_tls* tls)
149149

150150
static inline id retain(id obj)
151151
{
152-
Class cls = classForObject(obj);
152+
if (isSmallObject(obj)) { return obj; }
153+
Class cls = obj->isa;
153154
if ((Class)&_NSConcreteStackBlock == cls)
154155
{
155156
return Block_copy(obj);
@@ -165,7 +166,8 @@ static inline id retain(id obj)
165166

166167
static inline void release(id obj)
167168
{
168-
Class cls = classForObject(obj);
169+
if (isSmallObject(obj)) { return; }
170+
Class cls = obj->isa;
169171
if (objc_test_class_flag(cls, objc_class_flag_fast_arc))
170172
{
171173
intptr_t *refCount = ((intptr_t*)obj) - 1;

0 commit comments

Comments
 (0)