hg: valhalla/valhalla: 8198748: [lworld] Javac should insert null checks at casts to value types.
Srikanth
srikanth.adayapalam at oracle.com
Mon Mar 12 06:32:13 UTC 2018
On Monday 12 March 2018 11:51 AM, srikanth.adayapalam at oracle.com wrote:
> Changeset: 7c1c51c340e6
> Author: sadayapalam
> Date: 2018-03-12 11:46 +0530
> URL: http://hg.openjdk.java.net/valhalla/valhalla/rev/7c1c51c340e6
>
> 8198748: [lworld] Javac should insert null checks at casts to value types.
Notes:
Where Point is a value type, code generated for casting an object to
Point as in:
Object o = ...
Point p = (Point) o;
is:
2: aload_1
3: dup
4: invokestatic #2 // Method
java/util/Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
7: pop
8: checkcast #3 // class Point
11: astore_2
If the cast occurs in source code compiled at a level where value types
are not recognized as such, then there is no insertion of null check.
(FWIW, Javac is not in the business of nullness tracking, so these
checks will be inserted even where a cursory glance of source code
context could inform a reader that no null check would be needed)
Thanks
Srikanth
>
> ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java
> ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java
> + test/langtools/tools/javac/valhalla/lworld-values/CastNoNullCheckTest.java
> + test/langtools/tools/javac/valhalla/lworld-values/CastNullCheckTest.java
>
More information about the valhalla-dev
mailing list