16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#import "OFObject.h"
#ifndef OF_COMPILER_TLS
# import "threading.h"
#endif
#import "macros.h"
#import "autorelease.h"
|
>
|
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#import "OFObject.h"
#import "OFSystemInfo.h"
#ifndef OF_COMPILER_TLS
# import "threading.h"
#endif
#import "macros.h"
#import "autorelease.h"
|
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
#ifndef OF_COMPILER_TLS
id *top = of_tlskey_get(topKey);
id *objects = of_tlskey_get(objectsKey);
size_t size = (size_t)(uintptr_t)of_tlskey_get(sizeKey);
#endif
if (objects == NULL) {
OF_ENSURE((objects = malloc(of_pagesize)) != NULL);
top = objects;
size = of_pagesize;
#ifndef OF_COMPILER_TLS
OF_ENSURE(of_tlskey_set(objectsKey, objects));
OF_ENSURE(of_tlskey_set(sizeKey, (void*)(uintptr_t)size));
#endif
}
if ((uintptr_t)top >= (uintptr_t)objects + size) {
ptrdiff_t diff = top - objects;
size += of_pagesize;
OF_ENSURE((objects = realloc(objects, size)) != NULL);
#ifndef OF_COMPILER_TLS
OF_ENSURE(of_tlskey_set(objectsKey, objects));
OF_ENSURE(of_tlskey_set(sizeKey, (void*)(uintptr_t)size));
#endif
|
>
>
|
<
|
|
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
#ifndef OF_COMPILER_TLS
id *top = of_tlskey_get(topKey);
id *objects = of_tlskey_get(objectsKey);
size_t size = (size_t)(uintptr_t)of_tlskey_get(sizeKey);
#endif
if (objects == NULL) {
size = [OFSystemInfo pageSize];
OF_ENSURE((objects = malloc(size)) != NULL);
top = objects;
#ifndef OF_COMPILER_TLS
OF_ENSURE(of_tlskey_set(objectsKey, objects));
OF_ENSURE(of_tlskey_set(sizeKey, (void*)(uintptr_t)size));
#endif
}
if ((uintptr_t)top >= (uintptr_t)objects + size) {
ptrdiff_t diff = top - objects;
size += [OFSystemInfo pageSize];
OF_ENSURE((objects = realloc(objects, size)) != NULL);
#ifndef OF_COMPILER_TLS
OF_ENSURE(of_tlskey_set(objectsKey, objects));
OF_ENSURE(of_tlskey_set(sizeKey, (void*)(uintptr_t)size));
#endif
|