| Index: src/arm/lithium-codegen-arm.cc
|
| diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc
|
| index 09a0e9c066fcc671526ee5dd344a2cd6016c2691..ee8aac98158ec37be3c72a17114212dcc6ef5444 100644
|
| --- a/src/arm/lithium-codegen-arm.cc
|
| +++ b/src/arm/lithium-codegen-arm.cc
|
| @@ -4905,6 +4905,17 @@ void LCodeGen::DoSmiUntag(LSmiUntag* instr) {
|
| // If the input is a HeapObject, SmiUntag will set the carry flag.
|
| __ SmiUntag(result, input, SetCC);
|
| DeoptimizeIf(cs, instr->environment());
|
| + } else if (instr->hydrogen()->value()->IsLoadKeyed()) {
|
| + HLoadKeyed* load = HLoadKeyed::cast(instr->hydrogen()->value());
|
| + if (load->UsesMustHandleHole()) {
|
| + Label done;
|
| + __ SmiUntag(result, input, SetCC);
|
| + __ b(cc, &done);
|
| + __ mov(result, Operand(Smi::FromInt(0)));
|
| + __ bind(&done);
|
| + } else {
|
| + __ SmiUntag(result, input);
|
| + }
|
| } else {
|
| __ SmiUntag(result, input);
|
| }
|
|
|