On 2/23/14, 6:05 PM, Walter Bright wrote:
4. I don't see that users really are asking for inlining or not. They
are asking for the fastest code. As such, providing hints about usage
frequencies are entirely appropriate. Micromanaging the method used is
not so appropriate. After all, the reason one uses a compiler in the
first place rather than assembler is to not micromanage the actual
instructions.

In HHVM we plainly ask for specific decisions on inlining or not. We have a reasonably good understanding of how and where our code has trouble with ICache misses, and adjust our inline decisions and validate using experiments.

A decision to force inlining or against it already indicates a failure of the compiler's heuristics to address the situation. Keeping it an option is insisting on failing.

Perhaps the lesson is the word 'inline' carries certain expectations
with it, and the feature would be better positioned as something like:

     pragma(usage, often);
     pragma(usage, rare);

That's an interesting unrelated idea. But if we defined pragmas to "force inline" and "never inline" we must damn sure make sure the compiler always does that. It's "listen to your customers" as plainly as it gets.


Andrei

Reply via email to