Commit graph

12 commits

Author SHA1 Message Date
Andrew McCallum
54acc69932 Make NSAutoreleasePools co-exist with exceptions, safely and without
leaks.  Also improve efficiency by using a linked list of arrays
instead of realloc when more space is needed, and by using a cache of
pools that helps avoid the allocation/deallocation of pools.
(push_pool_to_cache): New function.
(pop_pool_from_cache): New function.
([NSAutoreleasePool +initialize]): New method.
([NSAutoreleasePool +allocWithZone:]): New method.
([NSAutoreleasePool -init]): Method overhauled to initialize new ivar
for handling exceptions, _child; also use pool cache.
(total_autoreleased_objects_count): New static variable.
(BEGINNING_POOL_SIZE): Macro renamed from DEFAULT_SIZE.
(autorelease_pool_cache, autorelease_pool_cache_size,
autorelease_pool_cache_count): New static variables.
([NSAutoreleasePool -_setChildPool:]): New method, handling stack and
dealing with exceptions.
([NSAutoreleasePool -addObject:]): Deal with linked list of arrays.
([NSAutoreleasePool -dealloc]): Deal with exceptions by releasing
child pools.  Place self into the pool cache instead of deallocating.
([NSAutoreleasePool +resetTotalAutoreleasedObjects]): New method.
([NSAutoreleasePool +totalAutoreleasedObjects]): New method.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1311 72102866-910b-0410-8b05-ffd578937521
1996-03-30 22:39:48 +00:00
Andrew McCallum
647f080875 Fix typos.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1276 72102866-910b-0410-8b05-ffd578937521
1996-03-26 20:59:42 +00:00
Andrew McCallum
5aae0eafb3 Use NSException instead of sending -error: in all methods.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1273 72102866-910b-0410-8b05-ffd578937521
1996-03-26 19:35:47 +00:00
Andrew McCallum
7bc19d4b5b ([NSAutoreleasePool -dealloc]): Set CURRENT_POOL to PARENT, even if
PARENT is nil.  This is correct behavior.  Old behavior could cause
infinite loops in the PARENT pointers.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1197 72102866-910b-0410-8b05-ffd578937521
1996-03-18 21:43:14 +00:00
Andrew McCallum
9312eb0466 ([NSAutoreleasePool -parentAutoreleasePool]): Remove inclusion of
eltfuncs.h and collhash.h.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1164 72102866-910b-0410-8b05-ffd578937521
1996-03-18 13:54:29 +00:00
Andrew McCallum
9713d6ab6e ([NSAutoreleasePool -dealloc]): Removed question comment.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@572 72102866-910b-0410-8b05-ffd578937521
1995-08-23 15:07:17 +00:00
Andrew McCallum
bbd87c3bb0 ([NSAutoreleasePool -dealloc]): Use object_get_class() instead of
->isa.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@533 72102866-910b-0410-8b05-ffd578937521
1995-08-08 15:38:02 +00:00
Andrew McCallum
e3689458b8 ([NSAutoreleasePool -addObject:]):
Remove double_release checking. Increment released_count after
setting released array.
([NSAutoreleasePool -dealloc]): Catch release errors.
([NSAutoreleasePool -enableDoubleReleaseCheck:]): Removed method.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@528 72102866-910b-0410-8b05-ffd578937521
1995-08-04 20:51:19 +00:00
Andrew McCallum
829722ea98 ([NSAutoreleasePool +autoreleaseCountForObject:]): Initialize count to 0.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@511 72102866-910b-0410-8b05-ffd578937521
1995-08-02 15:40:33 +00:00
Andrew McCallum
7699a66d17 Include from <Foundation/...>, not <foundation/...>.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@391 72102866-910b-0410-8b05-ffd578937521
1995-04-17 21:13:20 +00:00
Andrew McCallum
03659389e9 (+enableRelease:, +enableDoubleReleaseCheck:,
+setPoolCountThreshhold:): New methods.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@354 72102866-910b-0410-8b05-ffd578937521
1995-04-14 15:01:24 +00:00
Andrew McCallum
270c996fa0 Initial revision
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@92 72102866-910b-0410-8b05-ffd578937521
1995-03-12 19:35:17 +00:00