On Sunday, 12 July 2015 at 09:03:25 UTC, Tofu Ninja wrote:
On Sunday, 12 July 2015 at 08:47:37 UTC, ketmar wrote:
On Sun, 12 Jul 2015 08:38:00 +0000, Tofu Ninja wrote:

Is it even possible?

what do you mean?

Sorry, thought the title was enough.

The context for a delegate(assuming not a method delegate) is allocated by the GC. Is there any way to allocate the context manually.

You can copy a delegate in a GC-free chunk but so far i think that the simple fact to get a delegate with "&" will allocate from the GC.

By the way i'd be interested to see the runtime function that creates a delegate.
i see nothing in druntime.

---
import std.stdio, std.c.stdlib, std.c.string;

class Foo {
    void bar(){writeln("bang");}
}

void main(string[] args) {
    auto foo = new Foo;
    auto dg0 = &foo.bar;
    auto dg1 = *cast(void delegate()*) malloc(size_t.sizeof * 2);
    memmove(cast(void*)&dg1, cast(void*)&dg0, size_t.sizeof * 2);
    dg1();
}
---

Reply via email to