Index: src/code-stubs.cc |
diff --git a/src/code-stubs.cc b/src/code-stubs.cc |
index c8f47886cfb6f5d5e6a817845475fd36592d58bf..a0fcbaea6850a728e557674e26d2413b2af0994f 100644 |
--- a/src/code-stubs.cc |
+++ b/src/code-stubs.cc |
@@ -5123,13 +5123,6 @@ CallInterfaceDescriptor HandlerStub::GetCallInterfaceDescriptor() const { |
} |
-void StoreFastElementStub::InitializeDescriptor( |
- CodeStubDescriptor* descriptor) { |
- descriptor->Initialize( |
- FUNCTION_ADDR(Runtime_KeyedStoreIC_MissFromStubFailure)); |
-} |
- |
- |
void ElementsTransitionAndStoreStub::InitializeDescriptor( |
CodeStubDescriptor* descriptor) { |
descriptor->Initialize( |
@@ -5683,6 +5676,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->StoreObjectElement(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) { |