--- a/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp Mon Dec 19 02:33:30 2016 -0800
+++ b/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp Mon Dec 19 06:25:12 2016 -0800
@@ -474,7 +474,7 @@
regs[i].set_bad();
break;
case T_LONG:
- assert(sig_bt[i + 1] == T_VOID, "expecting half");
+ assert((i + 1) < total_args_passed && sig_bt[i + 1] == T_VOID, "expecting half");
// fall through
case T_OBJECT:
case T_ARRAY:
@@ -495,7 +495,7 @@
}
break;
case T_DOUBLE:
- assert(sig_bt[i + 1] == T_VOID, "expecting half");
+ assert((i + 1) < total_args_passed && sig_bt[i + 1] == T_VOID, "expecting half");
if (fp_args < Argument::n_float_register_parameters_j) {
regs[i].set2(FP_ArgReg[fp_args++]->as_VMReg());
} else {
@@ -1014,7 +1014,7 @@
}
break;
case T_LONG:
- assert(sig_bt[i + 1] == T_VOID, "expecting half");
+ assert((i + 1) < total_args_passed && sig_bt[i + 1] == T_VOID, "expecting half");
// fall through
case T_OBJECT:
case T_ARRAY:
@@ -1045,7 +1045,7 @@
}
break;
case T_DOUBLE:
- assert(sig_bt[i + 1] == T_VOID, "expecting half");
+ assert((i + 1) < total_args_passed && sig_bt[i + 1] == T_VOID, "expecting half");
if (fp_args < Argument::n_float_register_parameters_c) {
regs[i].set2(FP_ArgReg[fp_args++]->as_VMReg());
#ifdef _WIN64