8054492: compiler/intrinsics/classcast/NullCheckDroppingsTest.java is an invalid test (original) (raw)

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::inlineClasscast() by: mirror = nullcheck(mirror); which has Deoptimization::Actionmakenotentrant. Unfortunately currently the test also pass because unstableif 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=unstableif action=reinterpret unloadedclassindex=-1 Not quite the same. I get a reason=nullcheck: Uncommon trap occurred in NullCheckDroppingsTest::testVarClassCast (@0x000003ff8d253e54) thread=4396243677696 reason=nullcheck action=mayberecompile unloadedclassindex=-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 unstableif 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