java
имеет аргумент -XX:MaxInlineLevel
(со значением по умолчанию 9), который управляет максимальным количеством вложенных вызовов в строку. Почему существует такой предел? Почему не обычные эвристики, основанные на частоте и размере кода, достаточные для того, чтобы JVM сама решала, насколько глубоко встроена?
(это вызвано JitWatch, показывающим, что глубоко вложенный вызов Guava checkArgument
не был встроен из-за глубины)