In order to compile dynamically typed languages, the JVM needs to collect more dynamic typing profile information, and use the information it collects more completely.
Specifically:
- existing profiles on instanceof bytecodes need to be used (they are currently ignored)
- existing profiles on invocation receivers need to be used (they are currently used only in conjunction with inlining optimizations)
- certain type comparisons which appear monomorphic should be compiled to fail on uncommon traps, rather than normal slow path code
The following additional steps are requested by 6919064:
- profiles need to be collected on invokedynamic instructions
- profiles should also be collected on selected non-receiver arguments of method calls