efficiency vs. immutability of inline classes

Brian Goetz brian.goetz at oracle.com
Fri Aug 21 16:18:53 UTC 2020


> Quick follow-up question: If the InlineType ctor contains a check that 
> y is valid - will the JIT omit that check if it sees that y hasn't 
> been mentioned in the `with` block?

Yes, we've discussed this.  Currently that is not the case, but it is 
the sort of targeted optimization that could be considered if it becomes 
a problem.   It requires putting together a number of things, none of 
which are impossible, but optimizations of this sort can be brittle in 
that they can exhibit "fall off the cliff" behaviors, where they work 
great for simple cases, but once you cross some threshold (such as 
inlining limits, or reordering the statements in the ctor), they start 
failing.

This is an example of work that the compiler has to "undo" because the 
code is working with over-large building blocks (like constructors) for 
reasons of human factors, not unlike previous generations of compilers 
had to struggle with identifying when loops could be vectorized.




More information about the valhalla-dev mailing list