Overview
Comment: | Further optimize OFObject. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
c6ee6a2870205b5c576ab85346a1eb5a |
User & Date: | js on 2008-11-08 21:52:54 |
Other Links: | manifest | tags |
Context
2008-11-18
| ||
20:20 | Also symlink libobjfw.so.1.0 for the tests. check-in: 7d335829dc user: js tags: trunk | |
2008-11-08
| ||
21:52 | Further optimize OFObject. check-in: c6ee6a2870 user: js tags: trunk | |
20:28 | Optimize OFObject. check-in: 14ba9e517b user: js tags: trunk | |
Changes
Modified src/OFObject.m from [9ea6f8965e] to [c0fb34ec43].
︙ | ︙ | |||
30 31 32 33 34 35 36 | __memchunks_size = 0; } return self; } - free { | | | | | 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | __memchunks_size = 0; } return self; } - free { void **iter = __memchunks + __memchunks_size; while (iter-- > __memchunks) free(*iter); if (__memchunks != NULL) free(__memchunks); free(self); return nil; |
︙ | ︙ | |||
93 94 95 96 97 98 99 | memsize = nitems * size; return [self getMemWithSize: memsize]; } - (void*)resizeMem: (void*)ptr toSize: (size_t)size { | | > | > | | | 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 121 122 123 124 125 | memsize = nitems * size; return [self getMemWithSize: memsize]; } - (void*)resizeMem: (void*)ptr toSize: (size_t)size { void **iter; if (ptr == NULL) return [self getMemWithSize: size]; if (size == 0) { [self freeMem: ptr]; return NULL; } iter = __memchunks + __memchunks_size; while (iter-- > __memchunks) { if (*iter == ptr) { if ((ptr = realloc(ptr, size)) == NULL) [[OFNoMemException newWithObject: self andSize: size] raise]; *iter = ptr; return ptr; } } [[OFMemNotPartOfObjException newWithObject: self andPointer: ptr] raise]; return NULL; /* never reached, but makes gcc happy */ |
︙ | ︙ | |||
144 145 146 147 148 149 150 | memsize = nitems * size; return [self resizeMem: ptr toSize: memsize]; } - freeMem: (void*)ptr; { | | > | > > > > | | 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 | memsize = nitems * size; return [self resizeMem: ptr toSize: memsize]; } - freeMem: (void*)ptr; { void **iter, *last, **memchunks; size_t i, memchunks_size; iter = __memchunks + __memchunks_size; i = __memchunks_size; while (iter-- > __memchunks) { i--; if (*iter == ptr) { memchunks_size = __memchunks_size - 1; last = __memchunks[memchunks_size]; if (__memchunks_size == 0 || memchunks_size > SIZE_MAX / sizeof(void*)) [[OFOutOfRangeException newWithObject: self] raise]; |
︙ | ︙ |