Tidyups for garbage collection

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@4952 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-MacDonald 1999-09-28 10:25:42 +00:00
parent 0294d782e8
commit c315156563
6 changed files with 57 additions and 58 deletions

View file

@ -281,42 +281,37 @@ static void
GSFinalize(void* object, void* data)
{
[(id)object gcFinalize];
/* Set the class of anObject to FREED_OBJECT. The further messages to this
object will cause an error to occur. */
((id)object)->class_pointer = __freedObjectClass;
#ifndef NDEBUG
GSDebugAllocationRemove(((id)object)->class_pointer);
#endif
((id)object)->class_pointer = (void*) 0xdeadface;
((id)object)->class_pointer = (void*)0xdeadface;
}
inline NSObject *
NSAllocateObject (Class aClass, unsigned extraBytes, NSZone *zone)
NSAllocateObject(Class aClass, unsigned extraBytes, NSZone *zone)
{
id new = nil;
int size = aClass->instance_size + extraBytes;
if (CLS_ISCLASS (aClass))
new = NSZoneMalloc (zone, size);
id new = nil;
int size = aClass->instance_size + extraBytes;
if (CLS_ISCLASS(aClass))
new = NSZoneMalloc(zone, size);
if (new != nil)
{
memset (new, 0, size);
memset(new, 0, size);
new->class_pointer = aClass;
}
if ([new respondsToSelector: @selector(gcFinalize)])
{
if (__objc_responds_to(new, @selector(gcFinalize)))
{
#ifndef NDEBUG
/*
* We only do allocation counting for objects that can be
* finalised - for other objects we have no way of decrementing
* the count when the object is collected.
*/
GSDebugAllocationAdd(aClass);
/*
* We only do allocation counting for objects that can be
* finalised - for other objects we have no way of decrementing
* the count when the object is collected.
*/
GSDebugAllocationAdd(aClass);
#endif
GC_REGISTER_FINALIZER (new, GSFinalize, NULL, NULL, NULL);
GC_REGISTER_FINALIZER (new, GSFinalize, NULL, NULL, NULL);
}
}
return new;
}