| Index: src/a64/lithium-codegen-a64.cc
|
| diff --git a/src/a64/lithium-codegen-a64.cc b/src/a64/lithium-codegen-a64.cc
|
| index 48a0e902cb61538ac2e688f120880fb1a613b5a6..c85de4d5f2ee734d2c917fa724ae0f8a5fab309d 100644
|
| --- a/src/a64/lithium-codegen-a64.cc
|
| +++ b/src/a64/lithium-codegen-a64.cc
|
| @@ -3492,10 +3492,11 @@ void LCodeGen::DoMathAbs(LMathAbs* instr) {
|
| DoubleRegister input = ToDoubleRegister(instr->value());
|
| DoubleRegister result = ToDoubleRegister(instr->result());
|
| __ Fabs(result, input);
|
| - } else {
|
| - ASSERT(r.IsInteger32());
|
| - Register input = ToRegister32(instr->value());
|
| - Register result = ToRegister32(instr->result());
|
| + } else if (r.IsSmi() || r.IsInteger32()) {
|
| + Register input = r.IsSmi() ? ToRegister(instr->value())
|
| + : ToRegister32(instr->value());
|
| + Register result = r.IsSmi() ? ToRegister(instr->result())
|
| + : ToRegister32(instr->result());
|
| Label done;
|
| __ Abs(result, input, NULL, &done);
|
| Deoptimize(instr->environment());
|
|
|