提交 ed243887 编写于 作者: P poonam

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
上级 3a774fb1
...@@ -1696,6 +1696,9 @@ void InterpreterMacroAssembler::profile_virtual_call(Register receiver, ...@@ -1696,6 +1696,9 @@ void InterpreterMacroAssembler::profile_virtual_call(Register receiver,
void InterpreterMacroAssembler::record_klass_in_profile_helper( void InterpreterMacroAssembler::record_klass_in_profile_helper(
Register receiver, Register scratch, Register receiver, Register scratch,
int start_row, Label& done) { int start_row, Label& done) {
if (TypeProfileWidth == 0)
return;
int last_row = VirtualCallData::row_limit() - 1; int last_row = VirtualCallData::row_limit() - 1;
assert(start_row <= last_row, "must be work left to do"); assert(start_row <= last_row, "must be work left to do");
// Test this row for both the receiver and for null. // Test this row for both the receiver and for null.
......
...@@ -1262,6 +1262,9 @@ void InterpreterMacroAssembler::record_klass_in_profile_helper( ...@@ -1262,6 +1262,9 @@ void InterpreterMacroAssembler::record_klass_in_profile_helper(
Register receiver, Register mdp, Register receiver, Register mdp,
Register reg2, Register reg2,
int start_row, Label& done) { int start_row, Label& done) {
if (TypeProfileWidth == 0)
return;
int last_row = VirtualCallData::row_limit() - 1; int last_row = VirtualCallData::row_limit() - 1;
assert(start_row <= last_row, "must be work left to do"); assert(start_row <= last_row, "must be work left to do");
// Test this row for both the receiver and for null. // Test this row for both the receiver and for null.
......
...@@ -1272,6 +1272,9 @@ void InterpreterMacroAssembler::record_klass_in_profile_helper( ...@@ -1272,6 +1272,9 @@ void InterpreterMacroAssembler::record_klass_in_profile_helper(
Register receiver, Register mdp, Register receiver, Register mdp,
Register reg2, Register reg2,
int start_row, Label& done) { int start_row, Label& done) {
if (TypeProfileWidth == 0)
return;
int last_row = VirtualCallData::row_limit() - 1; int last_row = VirtualCallData::row_limit() - 1;
assert(start_row <= last_row, "must be work left to do"); assert(start_row <= last_row, "must be work left to do");
// Test this row for both the receiver and for null. // Test this row for both the receiver and for null.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册