Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8367245

[lworld] C2 compilation fails with "Missed optimization opportunity in PhaseIterGVN"

XMLWordPrintable

      compiler/valhalla/inlinetypes/TestCallingConvention.java fails with "-XX:-TieredCompilation -XX:VerifyIterativeGVN=10":

      Missed Value optimization:
      dist dump
      ---------------------------------------------
         3 1423 CallStaticJava === 1585 1602 1923 8 1 (1482 1316 1314 1 1 1 1 1 1 270 1 1 1 1 1 1 1 1 1 1 ) [[ 1438 1439 1440 1452 1449 1450 ]] # Static java.lang.invoke.MethodHandle::invokeBasic(LL)L java/lang/Object * ( java/lang/invoke/MethodHandle (java/lang/constant/Constable):NotNull *, java/lang/Object *, java/lang/Object * ) Invokers$Holder::invokeExact_MT @ bci:20 DirectMethodHandleAccessor::invokeImpl @ bci:55 (line 155) DirectMethodHandleAccessor::invoke @ bci:23 (line 104) Method::invoke @ bci:102 (line 565) !jvms: Invokers$Holder::invokeExact_MT @ bci:20 DirectMethodHandleAccessor::invokeImpl @ bci:55 (line 155) DirectMethodHandleAccessor::invoke @ bci:23 (line 104) Method::invoke @ bci:102 (line 565)
         3 1657 CallStaticJava === 1818 1835 1926 8 1 (1715 1341 1 1 1 1 1 1 270 1 1 1 1 1 1 1 1 1 ) [[ 1671 1672 1673 1685 1682 1683 ]] # Static java.lang.invoke.MethodHandle::invokeBasic(L)L java/lang/Object * ( java/lang/invoke/MethodHandle (java/lang/constant/Constable):NotNull *, java/lang/Object * ) Invokers$Holder::invokeExact_MT @ bci:19 DirectMethodHandleAccessor::invokeImpl @ bci:41 (line 154) DirectMethodHandleAccessor::invoke @ bci:23 (line 104) Method::invoke @ bci:102 (line 565) !jvms: Invokers$Holder::invokeExact_MT @ bci:19 DirectMethodHandleAccessor::invokeImpl @ bci:41 (line 154) DirectMethodHandleAccessor::invoke @ bci:23 (line 104) Method::invoke @ bci:102 (line 565)
         3 1443 Catch === 1438 1439 [[ 1444 1445 ]] !jvms: Invokers$Holder::invokeExact_MT @ bci:20 DirectMethodHandleAccessor::invokeImpl @ bci:55 (line 155) DirectMethodHandleAccessor::invoke @ bci:23 (line 104) Method::invoke @ bci:102 (line 565)
         3 1676 Catch === 1671 1672 [[ 1677 1678 ]] !jvms: Invokers$Holder::invokeExact_MT @ bci:19 DirectMethodHandleAccessor::invokeImpl @ bci:41 (line 154) DirectMethodHandleAccessor::invoke @ bci:23 (line 104) Method::invoke @ bci:102 (line 565)
         2 1452 Proj === 1423 [[ 1453 ]] #5 Oop:java/lang/Object * !jvms: Invokers$Holder::invokeExact_MT @ bci:20 DirectMethodHandleAccessor::invokeImpl @ bci:55 (line 155) DirectMethodHandleAccessor::invoke @ bci:23 (line 104) Method::invoke @ bci:102 (line 565)
         2 1685 Proj === 1657 [[ 1686 ]] #5 Oop:java/lang/Object * !jvms: Invokers$Holder::invokeExact_MT @ bci:19 DirectMethodHandleAccessor::invokeImpl @ bci:41 (line 154) DirectMethodHandleAccessor::invoke @ bci:23 (line 104) Method::invoke @ bci:102 (line 565)
         2 1444 CatchProj === 1443 [[ 1336 1453 ]] #0@bci -1 !jvms: Invokers$Holder::invokeExact_MT @ bci:20 DirectMethodHandleAccessor::invokeImpl @ bci:55 (line 155) DirectMethodHandleAccessor::invoke @ bci:23 (line 104) Method::invoke @ bci:102 (line 565)
         2 1677 CatchProj === 1676 [[ 1336 1686 ]] #0@bci -1 !jvms: Invokers$Holder::invokeExact_MT @ bci:19 DirectMethodHandleAccessor::invokeImpl @ bci:41 (line 154) DirectMethodHandleAccessor::invoke @ bci:23 (line 104) Method::invoke @ bci:102 (line 565)
         1 1453 CheckCastPP === 1444 1452 [[ 1367 ]] #java/lang/Object * (speculative=null) Oop:java/lang/Object * (speculative=null) !orig=[1333] !jvms: Invokers$Holder::invokeExact_MT @ bci:20 DirectMethodHandleAccessor::invokeImpl @ bci:55 (line 155) DirectMethodHandleAccessor::invoke @ bci:23 (line 104) Method::invoke @ bci:102 (line 565)
         1 1686 CheckCastPP === 1677 1685 [[ 1367 ]] #java/lang/Object * (speculative=compiler/valhalla/inlinetypes/MyValue2 (compiler/valhalla/inlinetypes/MyInterface):exact * (inline_depth=4)) Oop:java/lang/Object * (speculative=compiler/valhalla/inlinetypes/MyValue2 (compiler/valhalla/inlinetypes/MyInterface):exact * (inline_depth=4)) !orig=[1358] !jvms: Invokers$Holder::invokeExact_MT @ bci:19 DirectMethodHandleAccessor::invokeImpl @ bci:41 (line 154) DirectMethodHandleAccessor::invoke @ bci:23 (line 104) Method::invoke @ bci:102 (line 565)
         1 1336 Region === 1336 1677 1444 [[ 1336 303 1365 1366 1367 ]] !jvms: DirectMethodHandleAccessor::invokeImpl @ bci:107 (line 153) DirectMethodHandleAccessor::invoke @ bci:23 (line 104) Method::invoke @ bci:102 (line 565)
         0 1367 Phi === 1336 1686 1453 [[ 303 ]] #java/lang/Object * Oop:java/lang/Object * !jvms: DirectMethodHandleAccessor::invokeImpl @ bci:44 (line 154) DirectMethodHandleAccessor::invoke @ bci:23 (line 104) Method::invoke @ bci:102 (line 565)
      Current type:
      java/lang/Object *
      Optimized type:
      java/lang/Object * (speculative=compiler/valhalla/inlinetypes/MyValue2 (compiler/valhalla/inlinetypes/MyInterface):exact *)
      #
      # A fatal error has been detected by the Java Runtime Environment:
      #
      # Internal Error (/workspace/open/src/hotspot/share/opto/phaseX.cpp:1098), pid=114265, tid=114281
      # assert(!failure) failed: Missed optimization opportunity in PhaseIterGVN
      #
      # JRE version: Java(TM) SE Runtime Environment (25.0) (fastdebug build 25-lworld5ea-LTS-2025-09-03-1302536.marc.chevalier.jdk)
      # Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 25-lworld5ea-LTS-2025-09-03-1302536.marc.chevalier.jdk, mixed mode, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
      # Problematic frame:
      # V [libjvm.so+0x187b374] PhaseIterGVN::verify_optimize() [clone .part.0]+0x9a4
      #

      Current CompileTask:
      C2:6110 641 b java.lang.reflect.Method::invoke (108 bytes)

      Stack: [0x000000016ebb8000,0x000000016edbb000], sp=0x000000016edb6d50, free space=2043k
      Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
      V [libjvm.dylib+0x12f851c] VMError::report(outputStream*, bool)+0x1b00 (phaseX.cpp:1098)
      V [libjvm.dylib+0x12fbdbc] VMError::report_and_die(int, char const*, char const*, char*, Thread*, unsigned char*, void const*, void const*, char const*, int, unsigned long)+0x55c
      V [libjvm.dylib+0x5deb88] print_error_for_unit_test(char const*, char const*, char*)+0x0
      V [libjvm.dylib+0xfbcb64] PhaseIterGVN::verify_optimize()+0x4f8
      V [libjvm.dylib+0xfbd014] PhaseIterGVN::optimize()+0x34c
      V [libjvm.dylib+0x538d60] Compile::inline_incrementally_cleanup(PhaseIterGVN&)+0x194
      V [libjvm.dylib+0x5395d0] Compile::inline_incrementally(PhaseIterGVN&)+0x23c
      V [libjvm.dylib+0x52e5bc] Compile::Optimize()+0x2f8
      V [libjvm.dylib+0x52ce20] Compile::Compile(ciEnv*, ciMethod*, int, Options, DirectiveSet*)+0x15ec
      V [libjvm.dylib+0x3d48f0] C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x1e4
      V [libjvm.dylib+0x550aac] CompileBroker::invoke_compiler_on_method(CompileTask*)+0x98c
      V [libjvm.dylib+0x54fdcc] CompileBroker::compiler_thread_loop()+0x390
      V [libjvm.dylib+0x988ae4] JavaThread::thread_main_inner()+0x1d0
      V [libjvm.dylib+0x122a1c4] Thread::call_run()+0xf0
      V [libjvm.dylib+0xf5dbb0] thread_native_entry(Thread*)+0x138
      C [libsystem_pthread.dylib+0x7240] _pthread_start+0x94
      Lock stack of current Java thread (top to bottom):

            mchevalier Marc Chevalier
            thartmann Tobias Hartmann
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: