Index: src/mips/ic-mips.cc |
diff --git a/src/mips/ic-mips.cc b/src/mips/ic-mips.cc |
index 438a0eceed1b6d3839afcb40097ab9a66683b424..e891555c21985c75232c24bf5545d1f87f172393 100644 |
--- a/src/mips/ic-mips.cc |
+++ b/src/mips/ic-mips.cc |
@@ -1421,6 +1421,47 @@ void KeyedStoreIC::GenerateSlow(MacroAssembler* masm) { |
} |
+void KeyedStoreIC::GenerateTransitionElementsSmiToDouble(MacroAssembler* masm) { |
+ // ---------- S t a t e -------------- |
+ // -- a2 : receiver |
+ // -- a3 : target map |
+ // -- ra : return address |
+ // ----------------------------------- |
+ // Must return the modified receiver in v0. |
+ if (!FLAG_trace_elements_transitions) { |
+ Label fail; |
+ ElementsTransitionGenerator::GenerateSmiOnlyToDouble(masm, &fail); |
+ __ Ret(USE_DELAY_SLOT); |
+ __ mov(v0, a2); |
+ __ bind(&fail); |
+ } |
+ |
+ __ push(a2); |
+ __ TailCallRuntime(Runtime::kTransitionElementsSmiToDouble, 1, 1); |
+} |
+ |
+ |
+void KeyedStoreIC::GenerateTransitionElementsDoubleToObject( |
+ MacroAssembler* masm) { |
+ // ---------- S t a t e -------------- |
+ // -- a2 : receiver |
+ // -- a3 : target map |
+ // -- ra : return address |
+ // ----------------------------------- |
+ // Must return the modified receiver in v0. |
+ if (!FLAG_trace_elements_transitions) { |
+ Label fail; |
+ ElementsTransitionGenerator::GenerateDoubleToObject(masm, &fail); |
+ __ Ret(USE_DELAY_SLOT); |
+ __ mov(v0, a2); |
+ __ bind(&fail); |
+ } |
+ |
+ __ push(a2); |
+ __ TailCallRuntime(Runtime::kTransitionElementsDoubleToObject, 1, 1); |
+} |
+ |
+ |
void StoreIC::GenerateMegamorphic(MacroAssembler* masm, |
StrictModeFlag strict_mode) { |
// ----------- S t a t e ------------- |