Index: src/ic/arm/handler-compiler-arm.cc |
diff --git a/src/ic/arm/handler-compiler-arm.cc b/src/ic/arm/handler-compiler-arm.cc |
index 5314d48ff62256d042f1c7293d78fa18f66e6f06..7aa155c4c0d7786af6760e1894d466ccb73a29b8 100644 |
--- a/src/ic/arm/handler-compiler-arm.cc |
+++ b/src/ic/arm/handler-compiler-arm.cc |
@@ -396,14 +396,13 @@ void NamedStoreHandlerCompiler::GenerateStoreTransition( |
if (details.type() == FIELD && |
Map::cast(transition->GetBackPointer())->unused_property_fields() == 0) { |
// The properties must be extended before we can store the value. |
- // We jump to a runtime call that extends the properties array. |
- __ push(receiver_reg); |
- __ mov(r2, Operand(transition)); |
- __ Push(r2, r0); |
- __ TailCallExternalReference( |
- ExternalReference(IC_Utility(IC::kSharedStoreIC_ExtendStorage), |
- isolate()), |
- 3, 1); |
+ __ mov(ExtendStorageDescriptor::NameRegister(), Operand(name)); |
+ __ mov(ExtendStorageDescriptor::MapRegister(), Operand(transition)); |
+ |
+ ExtendStorageStub stub(isolate(), |
+ FieldIndex::ForDescriptor(*transition, descriptor), |
+ representation); |
+ GenerateTailCall(masm(), stub.GetCode()); |
return; |
} |