On Sunday, 16 September 2018 at 14:45:08 UTC, Vladimir Panteleev
wrote:
On Sunday, 16 September 2018 at 14:12:27 UTC, Guillaume Piolat
wrote:
Anyone has any information about the ABI of delegates?
In particular how to call them with a particular "this"/frame
pointer?
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.
Have a look at the implementation of toDelegate, which does
exactly this:
https://github.com/dlang/phobos/blob/v2.082.0/std/functional.d#L1463
Thanks.
I ended up using toDelegate internally, and enclosing the
resulting delegate with code returning a struct with `opCall`.
The conclusion is that "struct with `opCall`" is much easier to
implement that faking delegate ABI, this is less brittle ; and
doesn't add a lifetime of a trampoline context to extend the
input delegate.