www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 15370] New: Some way to manually allocate the closure for

https://issues.dlang.org/show_bug.cgi?id=15370

          Issue ID: 15370
           Summary: Some way to manually allocate the closure for
                    delegates to nested functions.
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: joeyemmons yahoo.com

There has been a strong push to move away from the GC, being able to allocate
closures with out it would be another step in that direction. As far as I can
tell there is no current way to manually allocate a closure. It would be great
if there was a solution that could work with allocators to be able to manually
allocate closures. 

Example:
auto foo(int x)
{
   int bar(){ return x; }
   return &bar; 
   // implicitly allocates a closure with the gc
   // No way to manually allocate it currently 
}

Maybe it could be something as simple as __traits(setClosureAllocator,
Mallocator.instance); to set the allocator for the closure of the current
function. 

Allocators then would need to handle the case of freeing the delegate closure
as well.

--
Nov 21 2015