| Index: src/ia32/lithium-codegen-ia32.cc
|
| diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc
|
| index edf1582816bad033d68a62acf7e754fd5d35428b..da003de2baaf7d44d2fe5143c9d98275c14b478b 100644
|
| --- a/src/ia32/lithium-codegen-ia32.cc
|
| +++ b/src/ia32/lithium-codegen-ia32.cc
|
| @@ -4107,7 +4107,9 @@ void LCodeGen::DoNumberTagI(LNumberTagI* instr) {
|
| DeferredNumberTagI(LCodeGen* codegen, LNumberTagI* instr)
|
| : LDeferredCode(codegen), instr_(instr) { }
|
| virtual void Generate() {
|
| - codegen()->DoDeferredNumberTagI(instr_, SIGNED_INT32);
|
| + codegen()->DoDeferredNumberTagI(instr_,
|
| + instr_->InputAt(0),
|
| + SIGNED_INT32);
|
| }
|
| virtual LInstruction* instr() { return instr_; }
|
| private:
|
| @@ -4131,7 +4133,9 @@ void LCodeGen::DoNumberTagU(LNumberTagU* instr) {
|
| DeferredNumberTagU(LCodeGen* codegen, LNumberTagU* instr)
|
| : LDeferredCode(codegen), instr_(instr) { }
|
| virtual void Generate() {
|
| - codegen()->DoDeferredNumberTagI(instr_, UNSIGNED_INT32);
|
| + codegen()->DoDeferredNumberTagI(instr_,
|
| + instr_->InputAt(0),
|
| + UNSIGNED_INT32);
|
| }
|
| virtual LInstruction* instr() { return instr_; }
|
| private:
|
| @@ -4151,9 +4155,10 @@ void LCodeGen::DoNumberTagU(LNumberTagU* instr) {
|
|
|
|
|
| void LCodeGen::DoDeferredNumberTagI(LInstruction* instr,
|
| + LOperand* value,
|
| IntegerSignedness signedness) {
|
| Label slow;
|
| - Register reg = ToRegister(instr->InputAt(0));
|
| + Register reg = ToRegister(value);
|
| Register tmp = reg.is(eax) ? ecx : eax;
|
|
|
| // Preserve the value of all registers.
|
|
|