ObjFW  History of src/OFAutoreleasePool.m of 0bb3fc850aa6e14a

History of file src/OFAutoreleasePool.m at check-in 0bb3fc850aa6e14a

2019-09-29
15:58
Deleted: Remove OFAutoreleasePool

OFAutoreleasePools have long been discouraged in favor of the runtime's
autorelease pools. check-in: [09be825f88] user: js, branch: trunk, size: 0

2019-08-01
20:14
Split threading.[hm] into multiple files

This allows the runtime to only link against the parts it needs, without
pulling in unnecessary parts like thread spawning, TLS and conditions. file: [966b634bbb] check-in: [5358e9ea6a] user: js, branch: trunk, size: 3388 [annotate] [blame] [check-ins using] [diff]

2019-01-03
19:13
Update copyright file: [8f3a2dc0ae] check-in: [0509d7a844] user: js, branch: trunk, size: 3391 [annotate] [blame] [check-ins using] [diff]
2018-01-03
19:49
Update copyright notice file: [dc1cdf1574] check-in: [7e5c81e186] user: js, branch: trunk, size: 3385 [annotate] [blame] [check-ins using] [diff]
2017-10-17
00:33
Do not use implicit method return types

Instead, explicitly declare them, as OF_ASSUME_NONNULL_{BEGIN,END} does
not apply to implicit return types. This means that after this commit,
all init methods have a nonnull return type, as they should have. file: [ae2a82f384] check-in: [2f4e0df8be] user: js, branch: trunk, size: 3362 [annotate] [blame] [check-ins using] [diff]

2017-05-21
21:28
Prefix private methods with of_ instead of OF_

This matches Apple's style. file: [e9bf9ceb4f] check-in: [6b77a5dd8b] user: js, branch: trunk, size: 3306 [annotate] [blame] [check-ins using] [diff]

2017-05-07
20:10
Small code style change

Casts are now written like types in variable declarations. file: [d441366c61] check-in: [4af49a13c3] user: js, branch: trunk, size: 3306 [annotate] [blame] [check-ins using] [diff]

2017-01-09
17:36
Update copyright

Forgot to add 2017, even though I already did quite some changes in
2017. file: [88fd4d2a1a] check-in: [44f45c2e35] user: js, branch: trunk, size: 3305 [annotate] [blame] [check-ins using] [diff]

2016-02-21
15:37
Make use of C99-style for loops file: [98e7771e8f] check-in: [e0b9167693] user: js, branch: trunk, size: 3299 [annotate] [blame] [check-ins using] [diff]
2016-01-03
00:41
Update copyright

While at it, also update the mail address. file: [f48e2b8969] check-in: [2a27cf3000] user: js, branch: trunk, size: 3319 [annotate] [blame] [check-ins using] [diff]

2015-01-03
20:57
Update copyright file: [4ad3cb8fc5] check-in: [cfd374b906] user: js, branch: trunk, size: 3315 [annotate] [blame] [check-ins using] [diff]
2014-06-21
21:43
Move all macros from OFObject.h to macros.h

This means that OFObject.h imports macros.h now, making it unnecessary
to manually import macros.h in almost every file. And while at it, also
import autorelease.h in OFObject.h, so that this doesn't need to be
manually imported in almost every file as well. file: [0f577bcb9a] check-in: [13ee56edf3] user: js, branch: trunk, size: 3309 [annotate] [blame] [check-ins using] [diff]

2014-05-14
20:19
Use thread_local instead of __thread

If threads.h exists, the thread_local from there is used. If it doesn't,
but _Thread_local exists, it's defined to that. As a last fallback, it
is defined to __thread. file: [c6736b8348] check-in: [c701e89b83] user: js, branch: trunk, size: 3352 [annotate] [blame] [check-ins using] [diff]

2014-01-04
00:24
Update copyright. file: [afda14705e] check-in: [3b97fc3cd9] user: js, branch: trunk, size: 3348 [annotate] [blame] [check-ins using] [diff]
2013-11-23
01:27
Add OF_UNRECOGNIZED_SELECTOR. file: [ce4907a277] check-in: [6e19bd47ee] user: js, branch: trunk, size: 3342 [annotate] [blame] [check-ins using] [diff]
2013-09-15
18:51
OFAutoreleasePool: Free pool cache on thread exit. file: [c1b6db103b] check-in: [29e4d00225] user: js, branch: trunk, size: 3411 [annotate] [blame] [check-ins using] [diff]
2013-03-04
17:20
Replace BOOL with bool.

The only places where BOOL is left are those where they are required by
the ABI. file: [06405e2bb2] check-in: [c5ef582958] user: js, branch: trunk, size: 3021 [annotate] [blame] [check-ins using] [diff]

2013-02-18
12:27
Add -[OFMutableArray initWithCapacity:]. file: [933769a877] check-in: [e0c9168dfc] user: js, branch: trunk, size: 3013 [annotate] [blame] [check-ins using] [diff]
2013-02-12
18:22
Prefix all ivars with an underscore. file: [d0fc457afc] check-in: [e40729d406] user: js, branch: trunk, size: 3033 [annotate] [blame] [check-ins using] [diff]
2013-01-12
20:53
Clean up the feature #ifdef mess. file: [b51231d742] check-in: [b8ce2359f3] user: js, branch: trunk, size: 3023 [annotate] [blame] [check-ins using] [diff]
20:21
Fix --disable-threads. file: [5c43e2c904] check-in: [85b8efadbc] user: js, branch: trunk, size: 2963 [annotate] [blame] [check-ins using] [diff]
2013-01-09
22:24
Update copyright. file: [ec3c376704] check-in: [813c00ccf0] user: js, branch: trunk, size: 2745 [annotate] [blame] [check-ins using] [diff]
2012-12-22
15:37
Add -[doesNotRecognizeSelector:]. file: [b1114f3a89] check-in: [917ce5754c] user: js, branch: trunk, size: 2739 [annotate] [blame] [check-ins using] [diff]
2012-09-17
09:30
Simplify autoreleasing. file: [b7dda03eca] check-in: [c9bea2982f] user: js, branch: trunk, size: 2868 [annotate] [blame] [check-ins using] [diff]
2012-09-16
22:16
Make sure an autorelease pool is always in place. file: [f049b285d4] check-in: [cc9601c228] user: js, branch: trunk, size: 3618 [annotate] [blame] [check-ins using] [diff]
15:27
Prefix all private methods with OF_. file: [ef9f34b1d7] check-in: [c137da5e5b] user: js, branch: trunk, size: 3552 [annotate] [blame] [check-ins using] [diff]
2012-08-09
15:37
Cache 32 autorelease pools per thread. file: [1a29185e97] check-in: [4ad6599390] user: js, branch: trunk, size: 3550 [annotate] [blame] [check-ins using] [diff]
2012-08-07
08:35
Add autorelease.h and export functions. file: [d255c7767f] check-in: [7fbf13845b] user: js, branch: trunk, size: 2636 [annotate] [blame] [check-ins using] [diff]
2012-07-16
23:49
Add OF_ENSURE.

This is to be used when the condition includes a statement that needs to
be executed, as with assert, this would not be executed anymore when
NDEBUG is defined. file: [6cf9fdd824] check-in: [417b213d41] user: js, branch: trunk, size: 2738 [annotate] [blame] [check-ins using] [diff]

12:19
Free memory when the last pool has been drained. file: [6326631fd1] check-in: [5abd9baa33] user: js, branch: trunk, size: 2734 [annotate] [blame] [check-ins using] [diff]
2012-07-14
22:21
Fall back to of_tlskey if __thread is unavailable. file: [20bd5ed7f7] check-in: [95b1b31aa5] user: js, branch: trunk, size: 2818 [annotate] [blame] [check-ins using] [diff]
20:00
New autorelease pools.

This uses the runtime's autorelease pools and implements autorelease
pools in the ObjFW runtime. It therefore uses ObjFW's autorelease pools
when using the ObjFW runtime and Apple's autorelease pools when using
the Apple runtime.

These new pools should be ARC-compatible now and finally, it should be
possible to mix OFAutoreleasePools and NSAutoreleasePools again, even
@autoreleasepool is allowed in the mix now. This also means the old
bridge to NSAutoreleasePool should not be required anymore, as both use
the runtime's autorelease pools now.

As a bonus, it's significantly faster to use the ObjFW runtime with
ObjFW's autorelease pools than to use Apple's runtime with Apple's
autorelease pools, as a quick benchmark using OFXMLParser on large files
showed. (Note: This is not only due to the different autorelease pools,
but also due to the fact that even with the same autorelease pools it is
faster using the ObjFW runtime, as can be seen in versions prior to this
commit.) file: [9b9e08d0f0] check-in: [f5927f8a84] user: js, branch: trunk, size: 1924 [annotate] [blame] [check-ins using] [diff]

2012-07-12
01:28
Don't access isa directly. file: [6d60b227fa] check-in: [8892ae9fcc] user: js, branch: trunk, size: 4246 [annotate] [blame] [check-ins using] [diff]
2012-06-10
13:28
More API improvements. file: [42c4c969f4] check-in: [11d3d69a22] user: js, branch: trunk, size: 4210 [annotate] [blame] [check-ins using] [diff]
2012-06-06
13:47
Slightly change the memory management API.

Also fix a bug where OFBigDataArray would waste memory. file: [bc3a0d2a2f] check-in: [f7576a66ce] user: js, branch: trunk, size: 4218 [annotate] [blame] [check-ins using] [diff]

2012-01-05
00:56
Update copyright. file: [9f23f6d996] check-in: [ce70e17b38] user: js, branch: trunk, size: 4219 [annotate] [blame] [check-ins using] [diff]
2011-09-22
23:25
Exceptions are now autoreleased.

This is safe as an "exception loop" can't happen, since if allocating
an exception fails, it throws an OFAllocFailedException which is
preallocated and can always be thrown.

So, the worst case would be that an autorelease of an exception fails,
triggering an OFOutOfMemoryException for which there is no memory,
resulting in an OFAllocFailedException to be thrown. file: [6cfd14d520] check-in: [e1e7ffa903] user: js, branch: trunk, size: 4213 [annotate] [blame] [check-ins using] [diff]

12:09
Make it impossible to add objects to arbitrary autorelease pools.

This is almost never done, and was made impossible in ARC-compatible
code. file: [74a7fa7b2d] check-in: [2e484248de] user: js, branch: trunk, size: 4167 [annotate] [blame] [check-ins using] [diff]

2011-09-19
16:34
Rename -[allocMemoryForNItems:withSize:] and friends.
It is now -[allocMemoryForNItems:ofSize:].
file: [5a81eccbfb] check-in: [f173477bef] user: js, branch: trunk, size: 4164 [annotate] [blame] [check-ins using] [diff]
2011-05-05
21:17
More documentation improvements. file: [9d07df10aa] check-in: [8490c927d2] user: js, branch: trunk, size: 4164 [annotate] [blame] [check-ins using] [diff]
2011-03-24
19:42
Get rid of OFExceptions.h. file: [152777f944] check-in: [cda44767f4] user: js, branch: trunk, size: 4006 [annotate] [blame] [check-ins using] [diff]
2011-01-01
20:19
Change license. file: [ed50e7f16a] check-in: [da6b3d26cb] user: js, branch: trunk, size: 3948 [annotate] [blame] [check-ins using] [diff]
2010-12-28
22:18
Make ObjFW work again without threads and without atomic ops. file: [201a88918f] check-in: [88c920bd62] user: js, branch: trunk, size: 3692 [annotate] [blame] [check-ins using] [diff]
2010-10-25
23:03
Clean up a lot of code (mostly init methods) and fix a missing rethrow. file: [2e10041b61] check-in: [8a7ca573c4] user: js, branch: trunk, size: 3693 [annotate] [blame] [check-ins using] [diff]
2010-09-07
09:10
Rename +[addObjectToTopmostPool:] to +[addObject:]. file: [4e90c8c96d] check-in: [eafb8d18ed] user: js, branch: trunk, size: 3810 [annotate] [blame] [check-ins using] [diff]
2010-09-05
23:19
Replace OFObject* with id in many places.

We assume now that every object understands retain, release, etc. so
that we can weaken the type from OFObject* to id. This makes it
possible to use different root object classes. file: [0e3d14e495] check-in: [e2b06423e0] user: js, branch: trunk, size: 3823 [annotate] [blame] [check-ins using] [diff]

2010-07-08
09:20
Optimize OFAutoreleasePool.

It always allocates memory for 16 objects now. releaseObjects does not
free the memory allocated to store objects so that the same number of
objects can be stored in the autorelease pool again without the need to
allocate memory. This will give loops creating lots of objects a huge
performance boost. file: [14bd700788] check-in: [f92e1c77a0] user: js, branch: trunk, size: 3837 [annotate] [blame] [check-ins using] [diff]

2010-04-17
15:46
Don't return self where not necessary, return void or something useful. file: [e16884bf15] check-in: [062a052b50] user: js, branch: trunk, size: 3473 [annotate] [blame] [check-ins using] [diff]
2010-02-19
16:36
Update copyright. file: [86ca3a0b16] check-in: [42886185fd] user: js, branch: trunk, size: 3528 [annotate] [blame] [check-ins using] [diff]
2010-01-16
15:05
Reduce dependencies between headers. file: [25082e063b] check-in: [1433aef0d0] user: js, branch: trunk, size: 3528 [annotate] [blame] [check-ins using] [diff]
2009-12-11
12:52
Make it possible to build ObjFW without support for threads. file: [929d90108c] check-in: [6caac0826e] user: js, branch: trunk, size: 3527 [annotate] [blame] [check-ins using] [diff]
2009-11-22
16:33
Add -[drain] to OFAutoreleasePool. file: [3ea4e1ab45] check-in: [2f85ceeed7] user: js, branch: trunk, size: 3099 [annotate] [blame] [check-ins using] [diff]
2009-11-14
12:17
New solution for TLS key destructors that works on any OS. file: [8c6dcd3941] check-in: [12101c192f] user: js, branch: trunk, size: 3025 [annotate] [blame] [check-ins using] [diff]
2009-11-13
21:02
Fix one more FIXME. file: [7523e6d739] check-in: [d7d45d4b69] user: js, branch: trunk, size: 3209 [annotate] [blame] [check-ins using] [diff]
2009-11-09
22:45
Rename libobjfw to ObjFW. file: [c0583ef178] check-in: [a3cc34b139] user: js, branch: trunk, size: 2678 [annotate] [blame] [check-ins using] [diff]
2009-09-21
20:35
A few minor Win32 fixes. file: [5130372aa2] check-in: [59969f5450] user: js, branch: trunk, size: 2681 [annotate] [blame] [check-ins using] [diff]
11:15
Move platform-specific threading stuff to threading.h. file: [2c07550cc7] check-in: [15a67e8ee5] user: js, branch: trunk, size: 2731 [annotate] [blame] [check-ins using] [diff]
2009-09-16
17:23
A few very small mingw32 fixes. file: [992a58ee6a] check-in: [0375b1e0ea] user: js, branch: trunk, size: 3847 [annotate] [blame] [check-ins using] [diff]
16:22
Rework OFAutoreleasePool and remove now unnecessary hack from OFList. file: [b3f1509666] check-in: [a99f512a4a] user: js, branch: trunk, size: 3797 [annotate] [blame] [check-ins using] [diff]
2009-07-19
14:05
Rename andFoo: to foo: in all methods. file: [d23a1326bd] check-in: [4eae61a78f] user: js, branch: trunk, size: 3049 [annotate] [blame] [check-ins using] [diff]
2009-06-30
12:07
A few renames in OFObject, see details.

* +[conformsTo:] to +[conformsToProtocol:].
* -[isKindOf:] to -[isKindOfClass:].
* -[respondsTo:] to -[respondsToSelector:].
* -[conformsTo:] to -[conformsToProtocol:].
* -[methodFor:] to -[methodForSelector:]. file: [f5bf7ad9a3] check-in: [67bb344ba6] user: js, branch: trunk, size: 3049 [annotate] [blame] [check-ins using] [diff]

2009-06-02
20:15
No need to override -[release] in OFAutoreleasePool.

As we can't retain a pool, -[dealloc] will always be called when -[release]
is called. file: [bb48a7e604] check-in: [e6f6113b5c] user: js, branch: trunk, size: 3041 [annotate] [blame] [check-ins using] [diff]

2009-05-24
18:04
Always use #include "config.h" instead of #import "config.h". file: [8e1c79e9ad] check-in: [94ea6848a8] user: js, branch: trunk, size: 3218 [annotate] [blame] [check-ins using] [diff]
2009-05-23
21:53
A few renames.

OFArray:
* -[add:] to -[addObject:].
* -[last] to -[lastObject].

OFAutoreleasePool:
* +[addToPool:] to +[addObjectToTopmostPool:].
* -[addToPool:] to -[addObject:].

OFDataArray:
* -[add:] to -[addItem:].
* -[last] to -[lastItem].

OFObject:
* -[addToMemoryPool:] to -[addItemToMemoryPool:]. file: [bd25c897fc] check-in: [526d04018d] user: js, branch: trunk, size: 3217 [annotate] [blame] [check-ins using] [diff]

01:59
Prevent + initialize from being called twice. file: [2fd942db62] check-in: [e0163c30a9] user: js, branch: trunk, size: 3198 [annotate] [blame] [check-ins using] [diff]
2009-05-19
10:33
Better error handling for OFAutoreleasePools. file: [4359bf55c9] check-in: [e5efcb03ac] user: js, branch: trunk, size: 3147 [annotate] [blame] [check-ins using] [diff]
2009-05-18
17:50
Split OFArray into OFArray and OFMutableArray. file: [81f708f0c4] check-in: [163409967e] user: js, branch: trunk, size: 2731 [annotate] [blame] [check-ins using] [diff]
2009-05-15
22:59
As we memset our ivars to 0, get rid of some useless ivar inits. file: [c665c234c4] check-in: [4c6d6c56ac] user: js, branch: trunk, size: 2724 [annotate] [blame] [check-ins using] [diff]
2009-05-14
14:24
Get rid of OFNotInSetException. file: [3f9b8ad9ca] check-in: [bdc9b3219f] user: js, branch: trunk, size: 2741 [annotate] [blame] [check-ins using] [diff]
13:46
Two small fixes for OFAutoreleasePool.

First, when an OFAutoreleasePool is deallocated, it should always
release all the objects.

Second, releaseObject should also release the objects of the pools on
top of the current pool. file: [1d59e36e29] check-in: [af41efe079] user: js, branch: trunk, size: 2842 [annotate] [blame] [check-ins using] [diff]

2009-05-13
20:39
Let - release return void again.

If you want to know if it will be released, you can just get the retain
count and check it this way. file: [99c26c51d9] check-in: [6d589825cd] user: js, branch: trunk, size: 2746 [annotate] [blame] [check-ins using] [diff]

20:31
Rename - free to - (void)dealloc. file: [4d907e6ad8] check-in: [9e6dd00ef5] user: js, branch: trunk, size: 2748 [annotate] [blame] [check-ins using] [diff]
19:49
There's no need for + initialize to return anything. file: [5bcc5ee828] check-in: [917188fdcc] user: js, branch: trunk, size: 2737 [annotate] [blame] [check-ins using] [diff]
17:58
Also release pools that are on top of the pool being released. file: [82173abc64] check-in: [4f4f619d84] user: js, branch: trunk, size: 2746 [annotate] [blame] [check-ins using] [diff]
2009-05-05
12:05
Rename OFArray to OFDataArray and add a new OFArray which stores objects.
Additionally, change OFAutoreleasePool to use the new OFArray.

And while at it, change #import <config.h> in some files to
#import "config.h". file: [0e0d5e7d64] check-in: [2a4aa05a84] user: js, branch: trunk, size: 2184 [annotate] [blame] [check-ins using] [diff]

2009-05-04
13:01
Use OFThread's TLS in OFAutoreleasePool. file: [c9f95c0438] check-in: [2d09137a6b] user: js, branch: trunk, size: 2402 [annotate] [blame] [check-ins using] [diff]
2009-04-21
17:16
The if ((self = [super init])) construct isn't needed anymore. file: [f928f923c8] check-in: [d87df02e8b] user: js, branch: trunk, size: 2771 [annotate] [blame] [check-ins using] [diff]
2009-04-20
01:16
Fix forgotten change of - release in OFAutoreleasePool. file: [6c7114863d] check-in: [cc4fe36d83] user: js, branch: trunk, size: 2796 [annotate] [blame] [check-ins using] [diff]
2009-03-15
16:54
Fix missing #import "config.h". file: [c444fdcf51] check-in: [c9b6747306] user: js, branch: trunk, size: 2794 [annotate] [blame] [check-ins using] [diff]
2009-03-08
16:06
Rename initWithRetainAndReleaseEnabled to initWithoutRetainAndRelease. file: [3a1c237454] check-in: [43e4d25ca7] user: js, branch: trunk, size: 2774 [annotate] [blame] [check-ins using] [diff]
2009-03-04
20:49
- release should not be chained, might be free'd. Therefore return void. file: [c9b8f8d309] check-in: [e73e76e40f] user: js, branch: trunk, size: 2782 [annotate] [blame] [check-ins using] [diff]
2009-02-27
12:31
(void)initialize -> initialize. file: [69d36d4f2d] check-in: [3b62c10b6f] user: js, branch: trunk, size: 2784 [annotate] [blame] [check-ins using] [diff]
2009-02-14
17:26
Always use #include for libc headers due to glibc being broken.
Do the same for win32 headers, just in case. They should work with
#import, but you never know ;).
file: [94601c49b9] check-in: [029511474c] user: js, branch: trunk, size: 2775 [annotate] [blame] [check-ins using] [diff]
2009-01-24
15:24
Adjust API to introduction of OFAutoreleasePool. file: [6b8df1f839] check-in: [1496808b81] user: js, branch: trunk, size: 2772 [annotate] [blame] [check-ins using] [diff]
2009-01-20
14:53
Fix a bug causing an exception when autorelease was requested.
This happened when the last pool was released before.
file: [53c2a094cf] check-in: [cb9fd1e5dd] user: js, branch: trunk, size: 2763 [annotate] [blame] [check-ins using] [diff]
2009-01-07
17:10
Also release the pools when we release the pool list.
We need to do that manually as we disabled retain / release for the
list.
file: [d3843af4f8] check-in: [03618ea87b] user: js, branch: trunk, size: 2735 [annotate] [blame] [check-ins using] [diff]
2009-01-06
22:38
Use OFList and OFArray in OFAutoreleasePool.
This reduces code duplication and looks far better.
file: [8a91012795] check-in: [dfc10dbeb8] user: js, branch: trunk, size: 2480 [annotate] [blame] [check-ins using] [diff]
2009-01-05
00:59
Update copyright. file: [e28fa49a4f] check-in: [f1b749d113] user: js, branch: trunk, size: 4150 [annotate] [blame] [check-ins using] [diff]
00:56
Added: Initial OFAutoreleasePool - still needs a *lot* of testing. file: [801231f42a] check-in: [b412845664] user: js, branch: trunk, size: 4143 [annotate] [blame] [check-ins using]