227
226
zone = NSDefaultMallocZone();
228
227
return zone->name;
231
#include <objc/objc-auto.h>
234
NSAllocateCollectable(NSUInteger size, NSUInteger options)
236
if (!objc_collecting_enabled())
238
return calloc(1, size);
240
id obj = objc_gc_allocate_collectable(size,
241
((options & NSScannedOption) == NSScannedOption));
242
if ((options & NSCollectorDisabledOption) == NSCollectorDisabledOption)
244
obj = objc_gc_retain(obj);
250
NSReallocateCollectable(void *ptr, NSUInteger size, NSUInteger options)
252
if (!objc_collecting_enabled())
254
return realloc(ptr, size);
256
return objc_gc_reallocate_collectable(ptr, size,
257
((options & NSScannedOption) == NSScannedOption));
260
id NSMakeCollectable(id obj)
262
if (objc_collecting_enabled())
264
objc_gc_release(obj);
270
NSCreateZone (NSUInteger start, NSUInteger gran, BOOL canFree)
272
return &default_zone;
276
NSDefaultMallocZone (void)
278
return &default_zone;
282
NSZoneFromPointer (void *ptr)
284
return &default_zone;
288
NSRecycleZone (NSZone *zone) { }
291
NSZoneCheck (NSZone *zone)
297
NSZoneStats NSZoneStats (NSZone *zone)
299
struct NSZoneStats stats = { 0 };
304
GSMakeWeakPointer(Class theClass, const char *iVarName) { }
307
GSAssignZeroingWeakPointer(void **destination, void *source)
309
objc_assign_weak(source, (id*)destination);
314
NSZoneMalloc (NSZone *zone, NSUInteger size)
316
return NSZoneCalloc(zone, 1, size);
320
NSZoneCalloc (NSZone *zone, NSUInteger elems, NSUInteger bytes)
322
if (objc_collecting_enabled())
324
// FIXME: Overflow checking
325
size_t size = elems * bytes;
326
return objc_gc_allocate_collectable(size, YES);
328
return calloc(elems, bytes);
332
NSZoneRealloc (NSZone *zone, void *ptr, NSUInteger size)
334
if (objc_collecting_enabled())
336
return objc_gc_reallocate_collectable(ptr, size, YES);
338
return realloc(ptr, size);
341
void NSZoneFree (NSZone *zone, void *ptr) { }
233
345
#if defined(DEBUG)
234
346
#define GC_DEBUG 1