On 12 December 2013 13:45, Maxime Chevalier-Boisvert <
[email protected]> wrote:

> It only allocates a closure if (1) it thinks the delegate may escape the
>> scope and (2) uplevel references are used in the delegate.
>>
>
> The delegate will escape the enclosing scope. I'm wondering if there will
> still be some kind of scope object allocated to represent escaping values
> in the englobing stack frame, even when there are no escaping values.
>
> I don't mind paying the small cost of an extraneous null context pointer,
> but having a whole unnecessary context object allocated seems wasteful.


If you have no use for the context pointer, then it sounds like what you
want is a function pointer, not a delegate.

A delegate is just a function-ptr+context-ptr pair, it is a trivial struct
that is passed by value, the same as a dynamic array. The context pointer
may be to a stack frame (in case of a closure), or a class object (in the
case of a class method pointer).
If you intend a null context pointer (ie, function doesn't reference any
state), than what you really have is a function pointer, not a delegate.
You should use a function pointer instead.

Can you show your usage?

 I strongly suggest trying out a couple examples, and disassembling the
>> result to confirm.
>>
>
> I'll look into that.
>

Reply via email to