On Thursday, 2 August 2018 at 12:57:02 UTC, Steven Schveighoffer wrote:
On 8/2/18 8:42 AM, Stefan Koch wrote:
On Monday, 30 July 2018 at 21:02:56 UTC, Steven Schveighoffer wrote:
Would it be a valid optimization to have D remove the requirement for allocation when it can determine that the entire data structure of the item in question is an rvalue, and would fit into the data pointer part of the delegate?

Don't do that. It's valid in simple cases.

Those are the cases I'm referring to.

I meant it seems valid in simple cases, and I doubt you can distinguish between cases that work and cases which don't work with 100% accuracy.
As soon as you want to chain delegate pointers it falls apart.

And so, don't do the skinny delegate optimization in that case?

Again the question is whether you can tell the cases apart with local information.
Also the delegate might require heap allocation to be memory correct.

Does the "might" depend on the caller or on the delegate implementation itself? The former would squash this idea.

I am not sure about that, it's just a gut feeling that skinny delegates will be breaking some invariant, I may be wrong.

Coming up with specific rules and throwing them at the wall until they don't break anymore, is fine for applications used in limited controlled circumstances, I would not want to do it with a compiler which is used by an unknown number of users.

Reply via email to