--- old/src/hotspot/share/c1/c1_LinearScan.cpp 2018-04-05 20:10:08.200007373 +0530 +++ new/src/hotspot/share/c1/c1_LinearScan.cpp 2018-04-05 20:10:07.948007362 +0530 @@ -1088,7 +1088,9 @@ // this operand is allowed to be on the stack in some cases BasicType opr_type = opr->type_register(); if (opr_type == T_FLOAT || opr_type == T_DOUBLE) { - if ((UseSSE == 1 && opr_type == T_FLOAT) || UseSSE >= 2 S390_ONLY(|| true)) { +#ifdef X86 + if ((UseSSE == 1 && opr_type == T_FLOAT) || UseSSE >= 2) { +#endif // SSE float instruction (T_DOUBLE only supported with SSE2) switch (op->code()) { case lir_cmp: @@ -1107,6 +1109,7 @@ default: break; } +#ifdef X86 } else { // FPU stack float instruction switch (op->code()) { @@ -1126,6 +1129,7 @@ break; } } +#endif // We want to sometimes use logical operations on pointers, in particular in GC barriers. // Since 64bit logical operations do not current support operands on stack, we have to make sure // T_OBJECT doesn't get spilled along with T_LONG.