RFR JDK-8207219: [lworld] C2 should not invoke a method if its signature has inconsistent use of ValueType

Ioi Lam ioi.lam at oracle.com
Sat Jul 14 20:14:36 UTC 2018


http://cr.openjdk.java.net/~iklam/valhalla/8207219_c2_invoke_vt_consistency.v01/
https://bugs.openjdk.java.net/browse/JDK-8207219

This patch prevents improper inlining: when you have programs like this

     class VT { // knows that Point is a ValueType
         void crasher() {
             NonVT.foo();
         }
     }

     class NonVT { // does NOT know that Point is a ValueType
         static Point x;
         static void foo() {
             x = bar(); // <-- cannot inline this call into VT.crasher
         }

         static Point bar() {
             return null;
         }
     }

If we inlined the bar() call into VT.crasher, it would break JDK-8206140 
[1],
which assumes that a callee will never return a NULL value back to a
compiled caller.

Thanks
- Ioi


[1] https://bugs.openjdk.java.net/browse/JDK-8206140
     [lworld] Move return value null checks into the callee




More information about the valhalla-dev mailing list