31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
size_t retain_count;
};
/* 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))
@implementation OFObject
#ifndef __objc_INCLUDE_GNU
+ load
{
return self;
}
#endif
|
>
>
>
>
|
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
size_t retain_count;
};
/* 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 {
Class isa;
} alloc_failed_exception;
@implementation OFObject
#ifndef __objc_INCLUDE_GNU
+ load
{
return self;
}
#endif
|
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
OFObject *instance;
#ifdef __objc_INCLUDE_GNU
size_t isize = class_get_instance_size(self);
#else
size_t isize = class_getInstanceSize(self);
#endif
if ((instance = malloc(isize + PRE_IVAR_ALIGN)) == NULL)
return nil;
((struct pre_ivar*)instance)->memchunks = NULL;
((struct pre_ivar*)instance)->memchunks_size = 0;
((struct pre_ivar*)instance)->retain_count = 1;
instance = (OFObject*)((char*)instance + PRE_IVAR_ALIGN);
memset(instance, 0, isize);
|
|
|
>
>
|
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
OFObject *instance;
#ifdef __objc_INCLUDE_GNU
size_t isize = class_get_instance_size(self);
#else
size_t isize = class_getInstanceSize(self);
#endif
if ((instance = malloc(isize + PRE_IVAR_ALIGN)) == NULL) {
alloc_failed_exception.isa = [OFAllocFailedException class];
@throw (OFAllocFailedException*)&alloc_failed_exception;
}
((struct pre_ivar*)instance)->memchunks = NULL;
((struct pre_ivar*)instance)->memchunks_size = 0;
((struct pre_ivar*)instance)->retain_count = 1;
instance = (OFObject*)((char*)instance + PRE_IVAR_ALIGN);
memset(instance, 0, isize);
|