Index: src/builtins/builtins-handler.cc |
diff --git a/src/builtins/builtins-handler.cc b/src/builtins/builtins-handler.cc |
index 16070de4bee9378b1c0f9e7edcc6c76ddcba5885..88597f8add9afc32824c39405d3d7661ae5495d7 100644 |
--- a/src/builtins/builtins-handler.cc |
+++ b/src/builtins/builtins-handler.cc |
@@ -2,10 +2,11 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "src/builtins/builtins.h" |
#include "src/builtins/builtins-utils.h" |
+#include "src/builtins/builtins.h" |
#include "src/ic/handler-compiler.h" |
#include "src/ic/ic.h" |
+#include "src/ic/keyed-store-generic.h" |
namespace v8 { |
namespace internal { |
@@ -40,6 +41,32 @@ void Builtins::Generate_KeyedStoreIC_Megamorphic_Strict(MacroAssembler* masm) { |
KeyedStoreIC::GenerateMegamorphic(masm, STRICT); |
} |
+void KeyedStoreICMegamorphic(CodeStubAssembler* assembler, LanguageMode mode) { |
+ typedef compiler::Node Node; |
+ typedef StoreWithVectorDescriptor Descriptor; |
+ |
+ Node* receiver = assembler->Parameter(Descriptor::kReceiver); |
+ Node* name = assembler->Parameter(Descriptor::kName); |
+ Node* value = assembler->Parameter(Descriptor::kValue); |
+ Node* slot = assembler->Parameter(Descriptor::kSlot); |
+ Node* vector = assembler->Parameter(Descriptor::kVector); |
+ Node* context = assembler->Parameter(Descriptor::kContext); |
+ |
+ CodeStubAssembler::StoreICParameters p(context, receiver, name, value, slot, |
+ vector); |
+ KeyedStoreGenericGenerator::Generate(assembler, &p, mode); |
+} |
+ |
+void Builtins::Generate_KeyedStoreIC_Megamorphic_TF( |
+ CodeStubAssembler* assembler) { |
+ KeyedStoreICMegamorphic(assembler, SLOPPY); |
+} |
+ |
+void Builtins::Generate_KeyedStoreIC_Megamorphic_Strict_TF( |
+ CodeStubAssembler* assembler) { |
+ KeyedStoreICMegamorphic(assembler, STRICT); |
+} |
+ |
void Builtins::Generate_KeyedStoreIC_Miss(MacroAssembler* masm) { |
KeyedStoreIC::GenerateMiss(masm); |
} |