Igor Stasenko writes:
Hi Bryce, can you explain, please, what you mean is 'failed to compile'? What blocking Exupery to compile them? Primitives, special bytecodes?
The two main causes are missing primitives and bytecodes. The main bytecode missing is the dup bytecode used to implement cascades. There isn't a strong case for compiling most primitives as they're already optimised by the C compiler. There are a few frequently called primitives that provide oportunity to optimise such as the #at: primitive.
It's only when compiling the method which contains the primitive that a missing primitive will cause Exupery to fail to compile. It deals gracefully with a failure to inline a primitive which is much more common.
Another problem with the current code to drive the background compiler is the profiler may queue a method to compile that's already in the queue. This is wasteful but doesn't seem to happen a lot.
Bryce