Allegedly adding -XX:-DontCompileHugeMethods to the command line eliminates this limit.
In "current" versions of JVM which don't have the very new invokedynamic bytecode operation and languages implemented on top of the JVM like JRuby, I assume their implementation does all the dynamism as ordinary code. I assume then this means the bytecode sizes are artificially inflated and then possibly just missing out on this nice optimization.
Allegedly, this is one of those heuristics that moved Java from the "slow" category to "faster than C++".
Last year I found that MRI Ruby-1.9 and JRuby were equivalently fast as Perl 5 but now I wonder if the JRuby implementation I was using was missing out and possibly could go even *faster*.
FWIW, MRI Ruby-1.8 is 1/10 the speed of Perl 5.