| Index: src/ic/x64/handler-compiler-x64.cc
|
| diff --git a/src/ic/x64/handler-compiler-x64.cc b/src/ic/x64/handler-compiler-x64.cc
|
| index 0117a96978aa9eebd72470fe1b6593e2d04a1b64..d332bb43fececc0aa559b83d12513f59d4400674 100644
|
| --- a/src/ic/x64/handler-compiler-x64.cc
|
| +++ b/src/ic/x64/handler-compiler-x64.cc
|
| @@ -8,6 +8,7 @@
|
|
|
| #include "src/ic/call-optimization.h"
|
| #include "src/ic/handler-compiler.h"
|
| +#include "src/ic/ic.h"
|
|
|
| namespace v8 {
|
| namespace internal {
|
| @@ -319,6 +320,41 @@ void ElementHandlerCompiler::GenerateLoadDictionaryElement(
|
| }
|
|
|
|
|
| +static void StoreIC_PushArgs(MacroAssembler* masm) {
|
| + Register receiver = StoreIC::ReceiverRegister();
|
| + Register name = StoreIC::NameRegister();
|
| + Register value = StoreIC::ValueRegister();
|
| +
|
| + DCHECK(!rbx.is(receiver) && !rbx.is(name) && !rbx.is(value));
|
| +
|
| + __ PopReturnAddressTo(rbx);
|
| + __ Push(receiver);
|
| + __ Push(name);
|
| + __ Push(value);
|
| + __ PushReturnAddressFrom(rbx);
|
| +}
|
| +
|
| +
|
| +void NamedStoreHandlerCompiler::GenerateSlow(MacroAssembler* masm) {
|
| + // Return address is on the stack.
|
| + StoreIC_PushArgs(masm);
|
| +
|
| + // Do tail-call to runtime routine.
|
| + ExternalReference ref(IC_Utility(IC::kStoreIC_Slow), masm->isolate());
|
| + __ TailCallExternalReference(ref, 3, 1);
|
| +}
|
| +
|
| +
|
| +void ElementHandlerCompiler::GenerateStoreSlow(MacroAssembler* masm) {
|
| + // Return address is on the stack.
|
| + StoreIC_PushArgs(masm);
|
| +
|
| + // Do tail-call to runtime routine.
|
| + ExternalReference ref(IC_Utility(IC::kKeyedStoreIC_Slow), masm->isolate());
|
| + __ TailCallExternalReference(ref, 3, 1);
|
| +}
|
| +
|
| +
|
| #undef __
|
| #define __ ACCESS_MASM((masm()))
|
|
|
|
|