RFR 8216327 [lworld][c1] checkcast for value type should throw NullPointerException with null operand

Tobias Hartmann tobias.hartmann at oracle.com
Wed Jan 9 09:06:11 UTC 2019


Hi Ioi,

this looks good, thanks for the refactoring!

You don't need to pass "/* deoptimize */ false" because false is the default (no new webrev required).

Best regards,
Tobias


On 08.01.19 23:28, Ioi Lam wrote:
> Hi Tobias,
> 
> Thanks for the review. The reason I was deoptimizing was I didn't know how to distinguish between
> the Point.box vs Point.val case, so I let the interpreter decide whether to throw or not.
> 
> Anyway, I've fixed it so that the C1 code can properly decide whether to throw NPE, so there's no
> need to deoptimize.
> 
> I also renamed get_never_null() to is_klass_never_null(), so it's more apparent what this function
> does.
> 
> What do you think?
> 
> http://cr.openjdk.java.net/~iklam/valhalla/8216327-c1-checkcast-null.v02/
> 
> 
> On 1/8/19 8:29 AM, Tobias Hartmann wrote:
>> Hi Ioi,
>>
>> what about Point.box? No null check is needed in that case.
>>
>> Also, why do you need to deoptimize?
>>
>> Best regards,
>> Tobias
>>
>> On 08.01.19 06:29, Ioi Lam wrote:
>>> https://bugs.openjdk.java.net/browse/JDK-8216327
>>> http://cr.openjdk.java.net/~iklam/valhalla/8216327-c1-checkcast-null.v01/
>>>
>>> Please review this small fix.
>>>
>>> When we have something like this:
>>>
>>> static Point test() {
>>>      Object o = null;
>>>      Point p = (Point)o;
>>>      return p;
>>> }
>>>
>>> Deoptimize and let the interpreter generate the NPE.
>>>
>>> Thanks
>>> - Ioi
>>>
>>>
>>>
>>>
>>>
>>>


More information about the valhalla-dev mailing list