Some parts of the current JSR 292 implementation, such as MethodHandles.filterArguments, impose arbitrary small limits (around 10) on the number of arguments.
We need to remove these limits, allowing the full number of arguments. This number ranges up to 255, per JVM spec 4.3.3 and 4.11. Current implementation techniques which use "one class per arity" will need to be replaced by more generic techniques, since groups of 255 classes are not scalable, especially when the complexity is super-linear (as with descriptor polymorphism).
Other CRs have removed argument count limitations everywhere except for SPARC code and, and the now-obsolete common JDK code which works around the limitations of the SPARC port of JSR 292.
This is the SPARC change which updates the SPARC port to remove arguent count limitations (by implementing ricochet frames):
7045514: SPARC assembly code for JSR 292 ricochet frames
The present CR is a followup to that SPARC upgrade, and depends on it. It requests the removal of the obsolete common code in the JDK, as soon as there is no longer any need for it on SPARC.
It includes the complete removal of the following files, which were workarounds for the lack of ricochet frames:
FilterGeneric.java FilterOneArgument.java FromGeneric.java SpreadGeneric.java ToGeneric.java
Also, it removes obsolete test exclusions from MethodHandlesTest (key unit test), and extend argument counts of test cases past (obsolete) limits of about 10.
This change will help stabilize JSR 292 on JDK 7.
There is a tested patch for this change in the mlvm patch repository: