@@ -16,14 +16,13 @@ #include "config.h" #include -#include - #import "OFObject.h" +#import "macros.h" #ifdef OF_THREADS # import "threading.h" # define NUM_SPINLOCKS 8 /* needs to be a power of 2 */ # define SPINLOCK_HASH(p) ((unsigned)((uintptr_t)p >> 4) & (NUM_SPINLOCKS - 1)) static of_spinlock_t spinlocks[NUM_SPINLOCKS]; @@ -49,16 +48,15 @@ if (atomic) { id *ptr = (id*)(void*)((char*)self + offset); #ifdef OF_THREADS unsigned hash = SPINLOCK_HASH(ptr); - assert(of_spinlock_lock(&spinlocks[hash])); - + OF_ENSURE(of_spinlock_lock(&spinlocks[hash])); @try { return [[*ptr retain] autorelease]; } @finally { - assert(of_spinlock_unlock(&spinlocks[hash])); + OF_ENSURE(of_spinlock_unlock(&spinlocks[hash])); } #else return [[*ptr retain] autorelease]; #endif } @@ -73,12 +71,11 @@ if (atomic) { id *ptr = (id*)(void*)((char*)self + offset); #ifdef OF_THREADS unsigned hash = SPINLOCK_HASH(ptr); - assert(of_spinlock_lock(&spinlocks[hash])); - + OF_ENSURE(of_spinlock_lock(&spinlocks[hash])); @try { #endif id old = *ptr; switch (copy) { @@ -93,11 +90,11 @@ } [old release]; #ifdef OF_THREADS } @finally { - assert(of_spinlock_unlock(&spinlocks[hash])); + OF_ENSURE(of_spinlock_unlock(&spinlocks[hash])); } #endif return; } @@ -130,17 +127,15 @@ { if (atomic) { #ifdef OF_THREADS unsigned hash = SPINLOCK_HASH(src); - assert(of_spinlock_lock(&spinlocks[hash])); + OF_ENSURE(of_spinlock_lock(&spinlocks[hash])); #endif - memcpy(dest, src, size); - #ifdef OF_THREADS - assert(of_spinlock_unlock(&spinlocks[hash])); + OF_ENSURE(of_spinlock_unlock(&spinlocks[hash])); #endif return; } @@ -153,19 +148,17 @@ { if (atomic) { #ifdef OF_THREADS unsigned hash = SPINLOCK_HASH(src); - assert(of_spinlock_lock(&spinlocks[hash])); + OF_ENSURE(of_spinlock_lock(&spinlocks[hash])); #endif - memcpy(dest, src, size); - #ifdef OF_THREADS - assert(of_spinlock_unlock(&spinlocks[hash])); + OF_ENSURE(of_spinlock_unlock(&spinlocks[hash])); #endif return; } memcpy(dest, src, size); }