Differences From Artifact [aa21105e0f]:
- File
src/OFBlock.m
— part of check-in
[3204ceeca0]
at
2014-02-21 17:19:40
on branch trunk
— Don't use objc_initializeClassPair on OS X/PPC64
OS X/PPC64 is limited to 10.5 and thus it does not exist there, even
though __OBJC2__ is defined. (user: js, size: 11311) [annotate] [blame] [check-ins using]
To Artifact [5efc26dc00]:
- File src/OFBlock.m — part of check-in [a92844520a] at 2014-05-05 01:08:47 on branch trunk — Improve atomics API (user: js, size: 11311) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
186 187 188 189 190 191 192 | block->descriptor->copy_helper(copy, block); return copy; } if (object_getClass((id)block) == (Class)&_NSConcreteMallocBlock) { #ifdef OF_HAVE_ATOMIC_OPS | | | 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 | block->descriptor->copy_helper(copy, block); return copy; } if (object_getClass((id)block) == (Class)&_NSConcreteMallocBlock) { #ifdef OF_HAVE_ATOMIC_OPS of_atomic_int_inc(&block->flags); #else unsigned hash = SPINLOCK_HASH(block); OF_ENSURE(of_spinlock_lock(&spinlocks[hash])); block->flags++; OF_ENSURE(of_spinlock_unlock(&spinlocks[hash])); #endif |
︙ | ︙ | |||
208 209 210 211 212 213 214 | { of_block_literal_t *block = (of_block_literal_t*)block_; if (object_getClass((id)block) != (Class)&_NSConcreteMallocBlock) return; #ifdef OF_HAVE_ATOMIC_OPS | | | 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 | { of_block_literal_t *block = (of_block_literal_t*)block_; if (object_getClass((id)block) != (Class)&_NSConcreteMallocBlock) return; #ifdef OF_HAVE_ATOMIC_OPS if ((of_atomic_int_dec(&block->flags) & OF_BLOCK_REFCOUNT_MASK) == 0) { if (block->flags & OF_BLOCK_HAS_COPY_DISPOSE) block->descriptor->dispose_helper(block); free(block); } #else unsigned hash = SPINLOCK_HASH(block); |
︙ | ︙ |