ObjFW  Check-in [b725e983ae]

Overview
Comment:Make retain count int32_t.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: b725e983ae16ebbc8332187b8b2d89fc6e1881a14cf8b5917c29cb2365db10eb
User & Date: js on 2010-01-29 15:21:06
Other Links: manifest | tags
Context
2010-01-29
15:22
Add more atomic ops. check-in: 78537d6ff3 user: js tags: trunk
15:21
Make retain count int32_t. check-in: b725e983ae user: js tags: trunk
2010-01-25
22:40
Use spinlocks in objc_properties.m. check-in: 2be191ec57 user: js tags: trunk
Changes

Modified src/OFConstString.m from [69a22d8f6f] to [d39251187d].

134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
}

- autorelease
{
	return self;
}

- (uint32_t)retainCount
{
	return UINT32_MAX;
}

- (void)release
{
}

- (void)dealloc







|

|







134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
}

- autorelease
{
	return self;
}

- (int32_t)retainCount
{
	return INT32_MAX;
}

- (void)release
{
}

- (void)dealloc

Modified src/OFFile.m from [5dcf811aa9] to [f0b3a13578].

255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
	return self;
}

- (void)release
{
}

- (uint32_t)retainCount
{
	return UINT32_MAX;
}

- (void)dealloc
{
	@throw [OFNotImplementedException newWithClass: isa
					      selector: _cmd];
	[super dealloc];	/* Get rid of stupid warning */







|

|







255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
	return self;
}

- (void)release
{
}

- (int32_t)retainCount
{
	return INT32_MAX;
}

- (void)dealloc
{
	@throw [OFNotImplementedException newWithClass: isa
					      selector: _cmd];
	[super dealloc];	/* Get rid of stupid warning */

Modified src/OFObject.h from [b10aa6cbcf] to [58427ce6f5].

262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
 * object deallocated if it reaches 0.
 */
- retain;

/**
 * \return The retain count
 */
- (uint32_t)retainCount;

/**
 * Decreases the retain count.
 *
 * Each time an object is released, the retain count gets decreased and the
 * object deallocated if it reaches 0.
 */







|







262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
 * object deallocated if it reaches 0.
 */
- retain;

/**
 * \return The retain count
 */
- (int32_t)retainCount;

/**
 * Decreases the retain count.
 *
 * Each time an object is released, the retain count gets decreased and the
 * object deallocated if it reaches 0.
 */

Modified src/OFObject.m from [490f2fcff3] to [14884d461d].

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;
	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 {







|
|
|







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;
	int32_t	retain_count;	/* int32_t because atomic ops use int32_t */
};

/* 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
- retain
{
	of_atomic_inc32(&PRE_IVAR->retain_count);

	return self;
}

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

- (void)release
{
	if (!of_atomic_dec32(&PRE_IVAR->retain_count))







|







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;
}

- (int32_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
}

+ autorelease
{
	return self;
}

+ (uint32_t)retainCount
{
	return UINT32_MAX;
}

+ (void)release
{
}

+ (void)dealloc







|

|







580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
}

+ autorelease
{
	return self;
}

+ (int32_t)retainCount
{
	return INT32_MAX;
}

+ (void)release
{
}

+ (void)dealloc