|
Quick Lists
|
|
Bug ID:
|
6646019
|
|
Votes
|
0
|
|
Synopsis
|
array subscript expressions become top() with -d64
|
|
Category
|
hotspot:compiler2
|
|
Reported Against
|
b10
, b11
|
|
Release Fixed
|
hs13(b01),
6u14(b01) (Bug ID:2174894)
|
|
State
|
10-Fix Delivered,
bug
|
|
Priority:
|
3-Medium
|
|
Related Bugs
|
6589186
,
6646015
,
6646016
,
6646017
,
6646018
,
6646021
,
6663926
|
|
Submit Date
|
29-DEC-2007
|
|
Description
|
This assertion is observed at least on linux-i586/amd64 with both latest jdk6 (1.6.0_10-ea-b09) and jdk7 (1.7.0-ea-b24):
# Internal Error (/BUILD_AREA/jdk7/hotspot/src/share/vm/opto/matcher.cpp:1337), pid=16791, tid=1081244000
# Error: assert(false,"bad AD file")
It occurs only in -Xcomp mode.
Testcase and hs_err file are attached.
Posted Date : 2007-12-29 01:26:41.0
Also fails on sparc with -d64.
Posted Date : 2008-01-08 23:54:04.0
|
|
Work Around
|
N/A
|
|
Evaluation
|
For performance reasons, in 64 bit mode, C2 tries to narrow the type
of an array subscript expression to 32 bits. If at compile time, the
subscript, or the array length is deduced to be negative, the compiler
recognizes the impossibility of the value and the narrowing operation
uses a top() node to represent the expression.
At runtime, the array subscript operation is not reached because an
exception will be thrown first. However, the top() node
plays havoc with the C2 type system and should be avoided if the
conditions that generate it are recognized.
The sample program has code to allocate an array with a negative
length. Other tests show failures with negative array subscripts.
Posted Date : 2008-01-09 23:04:47.0
Bug was introduced by fix for 6589186.
Posted Date : 2008-01-14 18:50:37.0
|
|
Comments
|
PLEASE NOTE: JDK6 is formerly known as Project Mustang
|
|
|
 |