RFR 8219154 [lworld] C1 aastore of flattened array needs null check for L-types

Ioi Lam ioi.lam at oracle.com
Sun Feb 17 01:37:51 UTC 2019


https://bugs.openjdk.java.net/browse/JDK-8219154
http://cr.openjdk.java.net/~iklam/valhalla/8219154-aastore-null-check-for-l-type.v01/

I added a new method Instruction::is_never_null(), and set it whenever 
we have add a new object value into the IR

   - Local
   - NewValueTypeInstance
     This covers aaload, getfield, withfield, newobject.
   - Invoke
   - CheckCast

Note that I haven't handled getstatic yet. The default behavior is to 
emit the null check, so it will be safe, just slower. I will fix that as 
part of JDK-8219155.

I added ciObjectFactory::make_never_null_wrapper, so that the ident will 
be set properly. Otherwise printing ciWrappers inside gdb would cause an 
assert.

Also, I have a question of the lifetime of the ciWrappers allocated 
inside the original ciSignature::ciSignature code. Will these get freed 
when the current compilation finishes, or will they stick forever until 
the current compiler thread is terminated? If it's the latter, then 
maybe we should cache them in ciType::_never_null_wrapper?

Thanks

- Ioi



More information about the valhalla-dev mailing list