8054492: compiler/intrinsics/classcast/NullCheckDroppingsTest.java is an invalid test
Vladimir Kozlov
vladimir.kozlov at oracle.com
Sat Jun 6 02:06:57 UTC 2015
> We either need some code in WhiteBox to check for a deoptimization
> event properly or we should just remove this altogether.
> So, thoughts? Just delete the check?
No, we have to check that uncommon trap was hit. This is the main
purpose of that test.
May be we should add an other method WHITE_BOX.wasMethodDeopted(method)
which checks if method was deoptimized at least once.
Vladimir
On 5/21/15 3:03 AM, Andrew Haley wrote:
> On 05/20/2015 11:02 PM, Vladimir Kozlov wrote:
>> testVarClassCast tests deoptimization for javaMirror == null:
>>
>> void testVarClassCast(String s) {
>> Class cl = (s == null) ? null : String.class;
>> try {
>> ssink = (String)cl.cast(svalue);
>>
>> Which is done in LibraryCallKit::inline_Class_cast() by:
>>
>> mirror = null_check(mirror);
>>
>> which has Deoptimization::Action_make_not_entrant.
>>
>> Unfortunately currently the test also pass because unstable_if is
>> generated for the first line:
>>
>> (s == null) ? null : String.class;
>>
>> If you run the test with TraceDoptimization (or LogCompilation) you will
>> see:
>>
>> Uncommon trap occurred in NullCheckDroppingsTest::testVarClassCast
>> (@0x000000010b0670d8) thread=26883 reason=unstable_if action=reinterpret
>> unloaded_class_index=-1
>
> Not quite the same. I get a reason=null_check:
>
> Uncommon trap occurred in NullCheckDroppingsTest::testVarClassCast (@0x000003ff8d253e54) thread=4396243677696 reason=null_check action=maybe_recompile unloaded_class_index=-1
>
> Which comes from a SEGV here:
>
> 0x000003ff89253ca4: ldr x0, [x10,#72] ; implicit exception: dispatches to 0x000003ff89253e40
>
> which is the line
>
> ssink = (String)cl.cast(svalue);
>
> I don't get a trap for unstable_if because there isn't one. I just get
>
> 0x000003ff89253c90: cbz x2, 0x000003ff89253e00 (this is java/lang/String s)
>
> -->
>
> 0x000003ff89253e00: mov x10, xzr
> 0x000003ff89253e04: b 0x000003ff89253ca0
>
> -->
>
> 0x000003ff89253ca0: lsl x11, x11, #3 ;*getstatic svalue
> ; - NullCheckDroppingsTest::testVarClassCast at 13 (line 181)
> 0x000003ff89253ca4: ldr x0, [x10,#72] ; implicit exception: dispatches to 0x000003ff89253e40
>
> ... and then the trap for the null pointer exception.
>
> Andrew.
>
More information about the hotspot-compiler-dev
mailing list