[9] RFR (M): 8050877: Improve code for pairwise argument conversions and value boxing/unboxing

Vladimir Ivanov vladimir.x.ivanov at oracle.com
Wed Jul 16 16:28:26 UTC 2014


Improved MethodHandleImpl.makePairwiseConvert & ValueConversions.unbox 
and small cleanups in related code.

Also, improved method handle caching in ValueConversions.

-     * @param level which strength of conversion is allowed
+     * @param strict if true, only asType conversions are allowed; if 
false, explicitCastArguments conversions allowed
+     * @param monobox if true, unboxing conversions are assumed to be 
exactly typed (Integer to int only, not long or double)

-    private static MethodHandle unbox(Wrapper wrap, boolean cast) {
+    private static MethodHandle unbox(Wrapper wrap, int kind) {
+        // kind 0 -> strongly typed with NPE
+        // kind 1 -> strongly typed but zero for null,
+        // kind 2 -> asType rules: accept multiple box types but only 
widening conversions with NPE
+        // kind 3 -> explicitCastArguments rules: allow narrowing 
conversions, zero for null
+        WrapperCache cache = UNBOX_CONVERSIONS[kind];

Testing: jdk/java/lang/invoke, jdk/java/util/streams, nashorn, octane w/ 
"-ea -esa" and COMPILE_THRESHOLD={0,30}.

Reviewed-by: vlivanov, ?
Contributed-by: john.r.rose at oracle.com


Best regards,
Vladimir Ivanov

More information about the core-libs-dev mailing list