Index: src/mips/stub-cache-mips.cc |
diff --git a/src/mips/stub-cache-mips.cc b/src/mips/stub-cache-mips.cc |
index cb65d88dd586e9361a52c915e843356db559d910..c1ae567abbad82d99450c9e654609a1ad6fc3969 100644 |
--- a/src/mips/stub-cache-mips.cc |
+++ b/src/mips/stub-cache-mips.cc |
@@ -3410,7 +3410,7 @@ MaybeObject* ExternalArrayStoreStubCompiler::CompileStore( |
a3, |
Handle<Map>(receiver->map()), |
Handle<Code>(stub), |
- DONT_DO_SMI_CHECK); |
+ DO_SMI_CHECK); |
Handle<Code> ic = isolate()->builtins()->KeyedStoreIC_Miss(); |
__ Jump(ic, RelocInfo::CODE_TARGET); |
@@ -3566,8 +3566,21 @@ void KeyedLoadStubCompiler::GenerateLoadExternalArray( |
__ sdc1(f0, MemOperand(v0, HeapNumber::kValueOffset - kHeapObjectTag)); |
__ Ret(); |
} else { |
- WriteInt32ToHeapNumberStub stub(value, v0, t2, t3); |
- __ TailCallStub(&stub); |
+ Register dst1 = t2; |
+ Register dst2 = t3; |
+ FloatingPointHelper::Destination dest = |
+ FloatingPointHelper::kCoreRegisters; |
+ FloatingPointHelper::ConvertIntToDouble(masm, |
+ value, |
+ dest, |
+ f0, |
+ dst1, |
+ dst2, |
+ t1, |
+ f2); |
+ __ sw(dst1, FieldMemOperand(v0, HeapNumber::kMantissaOffset)); |
+ __ sw(dst2, FieldMemOperand(v0, HeapNumber::kExponentOffset)); |
+ __ Ret(); |
} |
} else if (array_type == kExternalUnsignedIntArray) { |
// The test is different for unsigned int values. Since we need |