JDK-6823453 : DeoptimizeALot causes fastdebug server jvm to fail with assert(false,"unscheduable graph")
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: hs14
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2009-03-29
  • Updated: 2011-03-08
  • Resolved: 2011-03-08
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6 JDK 7 Other
6u18Fixed 7Fixed hs16Fixed
Related Reports
Relates :  
Description
DeoptimizeALot causes fastdebug server jvm to fail with different assertions.

> java -server -Xcomp -XX:+DeoptimizeALot Tester11a
!!! Unschedulable graph !!!
B7 idom=B6 depth= 5  69 Region  ===  69  4  [[ 69  68  63 ]]
B10 idom=B8 depth= 6  48        MachProj        ===  7  [[ 47  5  57  63 ]] #1/unmatched !jvms: Tester11a::main @ bci:10
Failing node:  63       CreateException ===  69  48  [[ 62 ]] java/lang/Throwable:NotNull *  Oop:java/lang/Throwable:NotNull * !jvms: Tester11a::main @ bci:10
# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=/gcm.cpp:107
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/BUILD_AREA/jdk7/hotspot/src/share/vm/opto/gcm.cpp:107), pid=9833, tid=15
#  Error: assert(false,"unscheduable graph")


Slightly modified version of Tester11a.java fails with:
> java -server -Xcomp -XX:+DeoptimizeALot Tester11b
#  Internal Error (/BUILD_AREA/jdk7/hotspot/src/share/vm/opto/loopnode.hpp:638), pid=9865, tid=15
#  Error: assert(n != 0,"Bad immediate dominator info.")


----- Tester11a.java -----
public class Tester11a
{
   static long var_1 = 1L;

   public static void main(String[] args) throws Exception
   {
      short var_2 = (byte) 1.0E10;

      for ( Object temp = new byte[(byte)1.0E10];  true ;
            var_2 = "1".equals("0") ? ((byte) var_1) : 1 )
      {}
   }
}
--------------------------

----- Tester11b.java -----
public class Tester11b
{
   public static void main(String[] args) throws Exception
   {
      long var_1 = -1L;

      short var_2 = (byte) 1.0E10;

      for ( Object temp = new byte[(byte)1.0E10];  true ;
            var_2 = "1".equals("0") ? ((byte) var_1) : 1 )
      {}
   }
}
--------------------------

Comments
EVALUATION http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/ad8c635e757e
04-04-2009