Tue, 01 Sep 2009 23:34:08 -0700
6858208: jvm crash when specifying TypeProfileWidth=0 on jdk 6.0
Summary: Add an explicit check for TypeProfileWidth == 0 in record_klass_in_profile_helper() functions.
Reviewed-by: never, coleenp
1.1 --- a/src/cpu/sparc/vm/interp_masm_sparc.cpp Sun Aug 30 15:33:14 2009 -0700 1.2 +++ b/src/cpu/sparc/vm/interp_masm_sparc.cpp Tue Sep 01 23:34:08 2009 -0700 1.3 @@ -1696,6 +1696,9 @@ 1.4 void InterpreterMacroAssembler::record_klass_in_profile_helper( 1.5 Register receiver, Register scratch, 1.6 int start_row, Label& done) { 1.7 + if (TypeProfileWidth == 0) 1.8 + return; 1.9 + 1.10 int last_row = VirtualCallData::row_limit() - 1; 1.11 assert(start_row <= last_row, "must be work left to do"); 1.12 // Test this row for both the receiver and for null.
2.1 --- a/src/cpu/x86/vm/interp_masm_x86_32.cpp Sun Aug 30 15:33:14 2009 -0700 2.2 +++ b/src/cpu/x86/vm/interp_masm_x86_32.cpp Tue Sep 01 23:34:08 2009 -0700 2.3 @@ -1262,6 +1262,9 @@ 2.4 Register receiver, Register mdp, 2.5 Register reg2, 2.6 int start_row, Label& done) { 2.7 + if (TypeProfileWidth == 0) 2.8 + return; 2.9 + 2.10 int last_row = VirtualCallData::row_limit() - 1; 2.11 assert(start_row <= last_row, "must be work left to do"); 2.12 // Test this row for both the receiver and for null.
3.1 --- a/src/cpu/x86/vm/interp_masm_x86_64.cpp Sun Aug 30 15:33:14 2009 -0700 3.2 +++ b/src/cpu/x86/vm/interp_masm_x86_64.cpp Tue Sep 01 23:34:08 2009 -0700 3.3 @@ -1272,6 +1272,9 @@ 3.4 Register receiver, Register mdp, 3.5 Register reg2, 3.6 int start_row, Label& done) { 3.7 + if (TypeProfileWidth == 0) 3.8 + return; 3.9 + 3.10 int last_row = VirtualCallData::row_limit() - 1; 3.11 assert(start_row <= last_row, "must be work left to do"); 3.12 // Test this row for both the receiver and for null.