JDK-6756768 : C1 generates invalid code
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: hs10,hs14
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2008-10-07
  • Updated: 2011-01-19
  • Resolved: 2008-12-10
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
6u12Fixed 7Fixed hs11.2Fixed
Related Reports
Duplicate :  
Relates :  
Description
Execution results with HS14 b05 (JDK 7 b35 ):
	-client -Xcomp -XX:-DontCompileHugeMethods:
[
Tester.var_114 = 0.0
Tester.var_118 = null
Tester.var_116 = null
Tester.var_113 = null
Tester.var_115 = null
Tester.var_117 = [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []]
]

	-Xint & -server:
[
Tester.var_114 = 0.0
Tester.var_118 = null
Tester.var_116 = null
Tester.var_113 = null
Tester.var_115 = null
Tester.var_117 = []
]

PS: in order to reproduce the bug, rename attached file to Tester.java.
Another one: 1.java 

-Xcomp -client -XX:-DontCompileHugeMethods:
[
Tester.var_16 = 1994208903
Tester.var_9 = crufxb
Tester.var_12 = crufxb
Tester.var_10 = false
Tester.var_13 = NaN
Tester.var_14 = 1.4247029484740196E308
Tester.var_15 = 0.0
Tester.var_8 = [
Tester_Class_0.var_1 = 386124292
Tester_Class_0.var_2 = false
Tester_Class_0.var_3 = false
]
Tester.var_11 =
]


Expected:
[
Tester.var_16 = 1994208903
Tester.var_9 = crufxb
Tester.var_12 = crufxb
Tester.var_10 = false
Tester.var_13 = Infinity
Tester.var_14 = 1.4247029484740196E308
Tester.var_15 = 0.0
Tester.var_8 = [
Tester_Class_0.var_1 = 386124292
Tester_Class_0.var_2 = false
Tester_Class_0.var_3 = true
]
Tester.var_11 = []
]
Another similar failure: 7.java
HS11-b05 (1.6.0_11-ea-b00) and HS14-b05 (7b36)

-client -Xcomp -XX:-DontCompileHugeMethods:
Tester.var_90 = 118
Tester.var_88 = 0.0
Tester.var_85 = 2.158589E38
Tester.var_84 = 0
Tester.var_87 = 0
Tester.var_86 = null
Tester.var_89 = null


Expected:
Tester.var_90 = 103
Tester.var_88 = 0.0
Tester.var_85 = 2.158589E38
Tester.var_84 = 0
Tester.var_87 = 0
Tester.var_86 = null
Tester.var_89 = null
Another similar failure: 01.java
HS11-b05 (1.6.0_11-ea-b00) and HS14-b05 (7b36)

-Xcomp -client -XX:-DontCompileHugeMethods:
...
Tester.var_77 = false
...

Expected results:
...
Tester.var_77 = true
...
Similar failure: 2.java

HS11-b05 (1.6.0_11-ea-b00) and HS14-b05 (7b36)
solaris-i586

-Xcomp -client -XX:-DontCompileHugeMethods:
...
Tester.var_92 = Infinity
...

Expected:
...
Tester.var_92 = -Infinity
...
Similar failure: 5.java

HS11-b05 (1.6.0_11-ea-b00) and HS14-b05 (7b36)

-Xcomp -client -XX:-DontCompileHugeMethods:
...
Tester.var_69 = 1
...

Expected result:
...
Tester.var_69 = 0
...
Similar failure: 6.java

HS11-b05 (1.6.0_11-ea-b00) and HS14-b05 (7b36)

-Xcomp -client -XX:-DontCompileHugeMethods:
...
Tester.var_142 = 44
...

Expected result:
...
Tester.var_142 = 186
...
Similar failure: 07.java

HS11-b05 (1.6.0_11-ea-b00) and HS14-b05 (7b36)

-Xcomp -client -XX:-DontCompileHugeMethods:
...
Tester.var_38 = -1
...

Expected result:
...
Tester.var_38 = -2
...
Similar failure: 8.java

HS11-b05 (1.6.0_11-ea-b00) and HS14-b05 (7b36)

-Xcomp -client -XX:-DontCompileHugeMethods:
...
Tester.var_142 = 44
...

Expected result:
...
Similar failure: 6.java

HS11-b05 (1.6.0_11-ea-b00) and HS14-b05 (7b36)

-Xcomp -client -XX:-DontCompileHugeMethods:
...
Tester.var_29 = true
...

Expected result:
...
Tester.var_29 = false
...

Comments
EVALUATION http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/3a86a8dcf27c
26-11-2008

EVALUATION A bug in GlobalValueNumbering optimization, where static field access of uninitialized class doesn't kill values loaded from memory.
17-10-2008

SUGGESTED FIX Modify ValueNumberingVisitor in c1_ValueMap.hpp as follows: void do_StoreField(StoreField* x) { if (!x->is_initialized()) { kill_memory(); } else { kill_field(x->field()); } } void do_LoadField(LoadField* x) { if (!x->is_initialized()) { kill_memory(); } }
17-10-2008