GC for pure functions -- implementation ideas
dsimcha
dsimcha at yahoo.com
Fri Apr 15 17:16:26 PDT 2011
On 4/15/2011 5:01 PM, Sean Kelly wrote:
> On Apr 15, 2011, at 1:12 PM, Don wrote:
>>
>> Create a pure heap for each thread. This is a heap which can only be
>> used by pure functions. I present some simplistic code, with the
>> simplest possible implementation: just a big block of memory with a thread local 'stack pointer' which points to the first free slot.
>
> It's a good idea. dsimcha was already going to polish his TempAlloc, wasn't he? Seems like this is nearly the same thing.
Yeah, I never formalized it at all, but that's roughly what TempAlloc
accomplishes. My other concern is, what happens in the case of the
following code:
uint nonLeaky() pure {
foreach(i; 0..42) {
auto arr = new uint[666];
// do stuff
}
return 8675309;
}
In this case the arr instance from every loop iteration is retained
until nonLeaky() returns, whether it's referenced or not. Granted, this
is a silly example, but I imagine there are cases where stuff like this
happens in practice.
More information about the Digitalmars-d
mailing list