diff options
Diffstat (limited to 'deps/v8/src/ic/x64/handler-compiler-x64.cc')
-rw-r--r-- | deps/v8/src/ic/x64/handler-compiler-x64.cc | 56 |
1 files changed, 20 insertions, 36 deletions
diff --git a/deps/v8/src/ic/x64/handler-compiler-x64.cc b/deps/v8/src/ic/x64/handler-compiler-x64.cc index ba4daed32c..f386fc5b65 100644 --- a/deps/v8/src/ic/x64/handler-compiler-x64.cc +++ b/deps/v8/src/ic/x64/handler-compiler-x64.cc @@ -20,15 +20,21 @@ namespace internal { void PropertyHandlerCompiler::PushVectorAndSlot(Register vector, Register slot) { MacroAssembler* masm = this->masm(); - __ Push(vector); + STATIC_ASSERT(LoadWithVectorDescriptor::kSlot < + LoadWithVectorDescriptor::kVector); + STATIC_ASSERT(StoreWithVectorDescriptor::kSlot < + StoreWithVectorDescriptor::kVector); + STATIC_ASSERT(StoreTransitionDescriptor::kSlot < + StoreTransitionDescriptor::kVector); __ Push(slot); + __ Push(vector); } void PropertyHandlerCompiler::PopVectorAndSlot(Register vector, Register slot) { MacroAssembler* masm = this->masm(); - __ Pop(slot); __ Pop(vector); + __ Pop(slot); } @@ -38,6 +44,15 @@ void PropertyHandlerCompiler::DiscardVectorAndSlot() { __ addp(rsp, Immediate(2 * kPointerSize)); } +void PropertyHandlerCompiler::PushReturnAddress(Register tmp) { + MacroAssembler* masm = this->masm(); + __ Push(tmp); +} + +void PropertyHandlerCompiler::PopReturnAddress(Register tmp) { + MacroAssembler* masm = this->masm(); + __ Pop(tmp); +} void PropertyHandlerCompiler::GenerateDictionaryNegativeLookup( MacroAssembler* masm, Label* miss_label, Register receiver, @@ -321,34 +336,6 @@ void NamedLoadHandlerCompiler::GenerateLoadViaGetter( __ ret(0); } - -static void StoreIC_PushArgs(MacroAssembler* masm) { - Register receiver = StoreDescriptor::ReceiverRegister(); - Register name = StoreDescriptor::NameRegister(); - Register value = StoreDescriptor::ValueRegister(); - - Register slot = StoreWithVectorDescriptor::SlotRegister(); - Register vector = StoreWithVectorDescriptor::VectorRegister(); - - __ PopReturnAddressTo(r11); - __ Push(receiver); - __ Push(name); - __ Push(value); - __ Push(slot); - __ Push(vector); - __ PushReturnAddressFrom(r11); -} - - -void ElementHandlerCompiler::GenerateStoreSlow(MacroAssembler* masm) { - // Return address is on the stack. - StoreIC_PushArgs(masm); - - // Do tail-call to runtime routine. - __ TailCallRuntime(Runtime::kKeyedStoreIC_Slow); -} - - #undef __ #define __ ACCESS_MASM((masm())) @@ -367,12 +354,6 @@ void NamedStoreHandlerCompiler::GenerateRestoreName(Handle<Name> name) { } -void NamedStoreHandlerCompiler::RearrangeVectorAndSlot( - Register current_map, Register destination_map) { - DCHECK(false); // Not implemented. -} - - void NamedStoreHandlerCompiler::GenerateRestoreMap(Handle<Map> transition, Register map_reg, Register scratch, @@ -638,6 +619,9 @@ void NamedLoadHandlerCompiler::GenerateLoadInterceptor(Register holder_reg) { __ TailCallRuntime(Runtime::kLoadPropertyWithInterceptor); } +void NamedStoreHandlerCompiler::ZapStackArgumentsRegisterAliases() { + STATIC_ASSERT(!StoreWithVectorDescriptor::kPassLastArgsOnStack); +} Handle<Code> NamedStoreHandlerCompiler::CompileStoreCallback( Handle<JSObject> object, Handle<Name> name, Handle<AccessorInfo> callback, |