ObjFW  Diff

Differences From Artifact [1a2c0cda4c]:

To Artifact [490f2fcff3]:


29
30
31
32
33
34
35
36
37
38



39
40
41
42
43
44
45
29
30
31
32
33
34
35



36
37
38
39
40
41
42
43
44
45







-
-
-
+
+
+







#ifdef OF_GNU_RUNTIME
# import <objc/sarray.h>
#endif

#import "atomic.h"

struct pre_ivar {
	void   **memchunks;
	size_t memchunks_size;
	size_t retain_count;
	void	 **memchunks;
	size_t	 memchunks_size;
	uint32_t retain_count;	/* uint32_t because we use 32 bit atomic ops */
};

/* Hopefully no arch needs more than 16 bytes padding */
#define PRE_IVAR_ALIGN ((sizeof(struct pre_ivar) + 15) & ~15)
#define PRE_IVAR ((struct pre_ivar*)((char*)self - PRE_IVAR_ALIGN))

static struct {
476
477
478
479
480
481
482
483

484
485
486
487
488
489
490
476
477
478
479
480
481
482

483
484
485
486
487
488
489
490







-
+







- retain
{
	of_atomic_inc32(&PRE_IVAR->retain_count);

	return self;
}

- (size_t)retainCount
- (uint32_t)retainCount
{
	return PRE_IVAR->retain_count;
}

- (void)release
{
	if (!of_atomic_dec32(&PRE_IVAR->retain_count))
580
581
582
583
584
585
586
587

588
589

590
591
592
593
594
595
596
580
581
582
583
584
585
586

587
588

589
590
591
592
593
594
595
596







-
+

-
+







}

+ autorelease
{
	return self;
}

+ (size_t)retainCount
+ (uint32_t)retainCount
{
	return SIZE_MAX;
	return UINT32_MAX;
}

+ (void)release
{
}

+ (void)dealloc