Index: src/code-stubs.cc |
diff --git a/src/code-stubs.cc b/src/code-stubs.cc |
index 016d40770208e395f8cd60aa7c845580333ff78a..8a6da764bc84d43ab0c315af941c82265f8174df 100644 |
--- a/src/code-stubs.cc |
+++ b/src/code-stubs.cc |
@@ -5122,13 +5122,6 @@ CallInterfaceDescriptor HandlerStub::GetCallInterfaceDescriptor() const { |
} |
-void StoreFastElementStub::InitializeDescriptor( |
- CodeStubDescriptor* descriptor) { |
- descriptor->Initialize( |
- FUNCTION_ADDR(Runtime_KeyedStoreIC_MissFromStubFailure)); |
-} |
- |
- |
void ElementsTransitionAndStoreStub::InitializeDescriptor( |
CodeStubDescriptor* descriptor) { |
descriptor->Initialize( |
@@ -5680,6 +5673,35 @@ void StoreElementStub::Generate(MacroAssembler* masm) { |
ElementHandlerCompiler::GenerateStoreSlow(masm); |
} |
+void StoreFastElementStub::GenerateAssembly( |
+ CodeStubAssembler* assembler) const { |
+ typedef CodeStubAssembler::Label Label; |
+ typedef compiler::Node Node; |
+ |
+ assembler->Comment( |
+ "StoreFastElementStub: js_array=%d, elements_kind=%s, store_mode=%d", |
+ is_js_array(), ElementsKindToString(elements_kind()), store_mode()); |
+ |
+ Node* receiver = assembler->Parameter(Descriptor::kReceiver); |
+ Node* key = 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); |
+ |
+ Label miss(assembler); |
+ |
+ assembler->EmitElementStore(receiver, key, value, is_js_array(), |
+ elements_kind(), store_mode(), &miss); |
+ assembler->Return(value); |
+ |
+ assembler->Bind(&miss); |
+ { |
+ assembler->Comment("Miss"); |
+ assembler->TailCallRuntime(Runtime::kKeyedStoreIC_Miss, context, receiver, |
+ key, value, slot, vector); |
+ } |
+} |
// static |
void StoreFastElementStub::GenerateAheadOfTime(Isolate* isolate) { |