--- a/hotspot/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp Mon Dec 19 02:33:30 2016 -0800
+++ b/hotspot/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp Mon Dec 19 06:25:12 2016 -0800
@@ -282,7 +282,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:
@@ -303,7 +303,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 {
@@ -840,7 +840,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:
@@ -862,7 +862,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());
} else {