United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: 6457854 C2 assert(lo->lo() == min_jint,"initial range must exhaust Type::INT")
6457854 : C2 assert(lo->lo() == min_jint,"initial range must exhaust Type::INT")

Details
Type:
Bug
Submit Date:
2006-08-08
Status:
Resolved
Updated Date:
2012-02-01
Project Name:
JDK
Resolved Date:
2006-11-14
Component:
hotspot
OS:
solaris_9
Sub-Component:
compiler
CPU:
sparc
Priority:
P3
Resolution:
Fixed
Affected Versions:
6
Fixed Versions:
hs10

Related Reports
Backport:
Backport:

Sub Tasks

Description
Due to testbase update we got this new failure in C2 VM (both 32 and 64-bits VM):

foundation% hs_err --jvm=./libjvm.so hs_err_pid12619.log
#
# An unexpected error has been detected by Java Runtime Environment:
#
#  Internal Error (/net/prt-solx86-q1-4/PrtBuildDir/workspace/src/share/vm/opto/parse2.cpp, 448), pid=12619, tid=10
#
# Java VM: Java HotSpot(TM) Server VM (20060803141100.kvn.6454444-debug compiled mode)
#
# Error: assert(lo->lo() == min_jint,"initial range must exhaust Type::INT")
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#

---------------  T H R E A D  ---------------

Current thread (0x08179000):  JavaThread "CompilerThread1" daemon [_thread_in_native, id=10]

Stack: [0xb6c02000,0xb6c42000),  sp=0xb6c3f1c8,  free space=244k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0xaf9c8b] void VMError::report_and_die() + 0x517
V  [libjvm.so+0x319f3f] void report_assertion_failure(const char*,int,const char*) + 0x5f
V  [libjvm.so+0x8c80bd] void Parse::jump_switch_ranges(Node*,SwitchRange*,SwitchRange*,int) + 0xb65
V  [libjvm.so+0x8c66ad] void Parse::do_tableswitch() + 0x2e1
V  [libjvm.so+0x8cd44c] void Parse::do_one_bytecode() + 0x2c0
V  [libjvm.so+0x8be36d] void Parse::do_one_block() + 0x311
V  [libjvm.so+0x8b97a9] void Parse::visit_blocks() + 0xb1
V  [libjvm.so+0x8b94b3] void Parse::do_all_blocks() + 0x2f
V  [libjvm.so+0x8b8f23] Parse::Parse(JVMState*,ciMethod*,float) + 0x8c7
V  [libjvm.so+0x1a439f] JVMState*ParseGenerator::generate(JVMState*) + 0xd3
V  [libjvm.so+0x2ab1c0] Compile::Compile(ciEnv*,C2Compiler*,ciMethod*,int,bool)+ 0x8e0

                                    

Comments
SUGGESTED FIX

Use (lo_index != min_jint).

Webrev:                 http://analemma.sfbay.sun.com/net/prt-archiver.sfbay/data/archived_workspaces/main/c2_baseline/2006/20060816105856.kvn.6457854/workspace/webrevs/webrev-2006.08.16/index.html
                                     
2006-08-16
EVALUATION

The problem exists from day 1:

The default destination for tableswitch is not generated if
lo_index == min_jint+1:

  if (lo_index-1 != min_jint) {
    ranges[++rp].setRange(min_jint, lo_index-1, default_dest, -1);
  }
                                     
2006-08-08



Hardware and Software, Engineered to Work Together