Index: src/full-codegen/s390/full-codegen-s390.cc |
diff --git a/src/full-codegen/s390/full-codegen-s390.cc b/src/full-codegen/s390/full-codegen-s390.cc |
index 9da10a512d883ca7a75c89fa189e76506177f7c7..13014df1143773bf92b38344c1ea01529a81bf6d 100644 |
--- a/src/full-codegen/s390/full-codegen-s390.cc |
+++ b/src/full-codegen/s390/full-codegen-s390.cc |
@@ -1597,7 +1597,9 @@ void FullCodeGenerator::EmitInlineSmiBinaryOp(BinaryOperation* expr, |
__ mr_z(scratch1, ip); // R4:R5 = R5 * ip |
// Check for overflowing the smi range - no overflow if higher 33 bits |
// of the result are identical. |
- __ TestIfInt32(scratch1, scratch2, ip); |
+ __ lr(ip, scratch2); // 32 bit load |
+ __ sra(ip, Operand(31)); |
+ __ cr_z(ip, scratch1); // 32 bit compare |
__ bne(&stub_call); |
#endif |
// Go slow on zero result to handle -0. |