Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(311)

Side by Side Diff: src/x64/code-stubs-x64.cc

Issue 2147043002: Cleanup interface descriptors to reflect that vectors are part of stores. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@rename-store-ic
Patch Set: Rebasing Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/s390/interface-descriptors-s390.cc ('k') | src/x64/interface-descriptors-x64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #if V8_TARGET_ARCH_X64 5 #if V8_TARGET_ARCH_X64
6 6
7 #include "src/code-stubs.h" 7 #include "src/code-stubs.h"
8 #include "src/api-arguments.h" 8 #include "src/api-arguments.h"
9 #include "src/bootstrapper.h" 9 #include "src/bootstrapper.h"
10 #include "src/codegen.h" 10 #include "src/codegen.h"
(...skipping 3454 matching lines...) Expand 10 before | Expand all | Expand 10 after
3465 3465
3466 __ bind(&miss); 3466 __ bind(&miss);
3467 KeyedLoadIC::GenerateMiss(masm); 3467 KeyedLoadIC::GenerateMiss(masm);
3468 3468
3469 __ bind(&load_smi_map); 3469 __ bind(&load_smi_map);
3470 __ LoadRoot(receiver_map, Heap::kHeapNumberMapRootIndex); 3470 __ LoadRoot(receiver_map, Heap::kHeapNumberMapRootIndex);
3471 __ jmp(&compare_map); 3471 __ jmp(&compare_map);
3472 } 3472 }
3473 3473
3474 void StoreICTrampolineStub::Generate(MacroAssembler* masm) { 3474 void StoreICTrampolineStub::Generate(MacroAssembler* masm) {
3475 __ EmitLoadTypeFeedbackVector(VectorStoreICDescriptor::VectorRegister()); 3475 __ EmitLoadTypeFeedbackVector(StoreWithVectorDescriptor::VectorRegister());
3476 StoreICStub stub(isolate(), state()); 3476 StoreICStub stub(isolate(), state());
3477 stub.GenerateForTrampoline(masm); 3477 stub.GenerateForTrampoline(masm);
3478 } 3478 }
3479 3479
3480 void KeyedStoreICTrampolineStub::Generate(MacroAssembler* masm) { 3480 void KeyedStoreICTrampolineStub::Generate(MacroAssembler* masm) {
3481 __ EmitLoadTypeFeedbackVector(VectorStoreICDescriptor::VectorRegister()); 3481 __ EmitLoadTypeFeedbackVector(StoreWithVectorDescriptor::VectorRegister());
3482 KeyedStoreICStub stub(isolate(), state()); 3482 KeyedStoreICStub stub(isolate(), state());
3483 stub.GenerateForTrampoline(masm); 3483 stub.GenerateForTrampoline(masm);
3484 } 3484 }
3485 3485
3486 void StoreICStub::Generate(MacroAssembler* masm) { GenerateImpl(masm, false); } 3486 void StoreICStub::Generate(MacroAssembler* masm) { GenerateImpl(masm, false); }
3487 3487
3488 void StoreICStub::GenerateForTrampoline(MacroAssembler* masm) { 3488 void StoreICStub::GenerateForTrampoline(MacroAssembler* masm) {
3489 GenerateImpl(masm, true); 3489 GenerateImpl(masm, true);
3490 } 3490 }
3491 3491
3492 void StoreICStub::GenerateImpl(MacroAssembler* masm, bool in_frame) { 3492 void StoreICStub::GenerateImpl(MacroAssembler* masm, bool in_frame) {
3493 Register receiver = VectorStoreICDescriptor::ReceiverRegister(); // rdx 3493 Register receiver = StoreWithVectorDescriptor::ReceiverRegister(); // rdx
3494 Register key = VectorStoreICDescriptor::NameRegister(); // rcx 3494 Register key = StoreWithVectorDescriptor::NameRegister(); // rcx
3495 Register vector = VectorStoreICDescriptor::VectorRegister(); // rbx 3495 Register vector = StoreWithVectorDescriptor::VectorRegister(); // rbx
3496 Register slot = VectorStoreICDescriptor::SlotRegister(); // rdi 3496 Register slot = StoreWithVectorDescriptor::SlotRegister(); // rdi
3497 DCHECK(VectorStoreICDescriptor::ValueRegister().is(rax)); // rax 3497 DCHECK(StoreWithVectorDescriptor::ValueRegister().is(rax)); // rax
3498 Register feedback = r8; 3498 Register feedback = r8;
3499 Register integer_slot = r9; 3499 Register integer_slot = r9;
3500 Register receiver_map = r11; 3500 Register receiver_map = r11;
3501 DCHECK(!AreAliased(feedback, integer_slot, vector, slot, receiver_map)); 3501 DCHECK(!AreAliased(feedback, integer_slot, vector, slot, receiver_map));
3502 3502
3503 __ SmiToInteger32(integer_slot, slot); 3503 __ SmiToInteger32(integer_slot, slot);
3504 __ movp(feedback, FieldOperand(vector, integer_slot, times_pointer_size, 3504 __ movp(feedback, FieldOperand(vector, integer_slot, times_pointer_size,
3505 FixedArray::kHeaderSize)); 3505 FixedArray::kHeaderSize));
3506 3506
3507 // Try to quickly handle the monomorphic case without knowing for sure 3507 // Try to quickly handle the monomorphic case without knowing for sure
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
3589 __ bind(&prepare_next); 3589 __ bind(&prepare_next);
3590 __ addl(counter, Immediate(3)); 3590 __ addl(counter, Immediate(3));
3591 __ cmpl(counter, length); 3591 __ cmpl(counter, length);
3592 __ j(less, &next_loop); 3592 __ j(less, &next_loop);
3593 3593
3594 // We exhausted our array of map handler pairs. 3594 // We exhausted our array of map handler pairs.
3595 __ jmp(miss); 3595 __ jmp(miss);
3596 } 3596 }
3597 3597
3598 void KeyedStoreICStub::GenerateImpl(MacroAssembler* masm, bool in_frame) { 3598 void KeyedStoreICStub::GenerateImpl(MacroAssembler* masm, bool in_frame) {
3599 Register receiver = VectorStoreICDescriptor::ReceiverRegister(); // rdx 3599 Register receiver = StoreWithVectorDescriptor::ReceiverRegister(); // rdx
3600 Register key = VectorStoreICDescriptor::NameRegister(); // rcx 3600 Register key = StoreWithVectorDescriptor::NameRegister(); // rcx
3601 Register vector = VectorStoreICDescriptor::VectorRegister(); // rbx 3601 Register vector = StoreWithVectorDescriptor::VectorRegister(); // rbx
3602 Register slot = VectorStoreICDescriptor::SlotRegister(); // rdi 3602 Register slot = StoreWithVectorDescriptor::SlotRegister(); // rdi
3603 DCHECK(VectorStoreICDescriptor::ValueRegister().is(rax)); // rax 3603 DCHECK(StoreWithVectorDescriptor::ValueRegister().is(rax)); // rax
3604 Register feedback = r8; 3604 Register feedback = r8;
3605 Register integer_slot = r9; 3605 Register integer_slot = r9;
3606 Register receiver_map = r11; 3606 Register receiver_map = r11;
3607 DCHECK(!AreAliased(feedback, integer_slot, vector, slot, receiver_map)); 3607 DCHECK(!AreAliased(feedback, integer_slot, vector, slot, receiver_map));
3608 3608
3609 __ SmiToInteger32(integer_slot, slot); 3609 __ SmiToInteger32(integer_slot, slot);
3610 __ movp(feedback, FieldOperand(vector, integer_slot, times_pointer_size, 3610 __ movp(feedback, FieldOperand(vector, integer_slot, times_pointer_size,
3611 FixedArray::kHeaderSize)); 3611 FixedArray::kHeaderSize));
3612 3612
3613 // Try to quickly handle the monomorphic case without knowing for sure 3613 // Try to quickly handle the monomorphic case without knowing for sure
(...skipping 1591 matching lines...) Expand 10 before | Expand all | Expand 10 after
5205 kStackUnwindSpace, nullptr, return_value_operand, 5205 kStackUnwindSpace, nullptr, return_value_operand,
5206 NULL); 5206 NULL);
5207 } 5207 }
5208 5208
5209 #undef __ 5209 #undef __
5210 5210
5211 } // namespace internal 5211 } // namespace internal
5212 } // namespace v8 5212 } // namespace v8
5213 5213
5214 #endif // V8_TARGET_ARCH_X64 5214 #endif // V8_TARGET_ARCH_X64
OLDNEW
« no previous file with comments | « src/s390/interface-descriptors-s390.cc ('k') | src/x64/interface-descriptors-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698