Manual delegates

Jacob Carlborg doob at me.com
Wed Sep 19 18:39:57 UTC 2018


On 2018-09-16 16:12, Guillaume Piolat wrote:
> Anyone has any information about the ABI of delegates?
> 
> In particular how to call them with a particular "this"/frame pointer?

You can explicitly set the context pointer of a delegate using the 
".ptr" property:

class Foo
{
     void bar() { }
}

void main()
{
     auto a = new Foo;
     void delegate () dg;
     dg.ptr = cast(void*) a;
     dg.funcptr = &Foo.bar;
     dg();
}

> To solve a hairy problem I need a delegate with a synthesized frame 
> pointer.
> https://dpaste.dzfl.pl/cf44417c98f9
> 
> The problem is that delegate forwarding seems to require GC closures. I 
> want manually-managed closures.


-- 
/Jacob Carlborg


More information about the Digitalmars-d-learn mailing list