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

Side by Side Diff: src/ic/arm64/ic-arm64.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/ic/arm64/handler-compiler-arm64.cc ('k') | src/ic/arm64/stub-cache-arm64.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_ARM64 5 #if V8_TARGET_ARCH_ARM64
6 6
7 #include "src/codegen.h" 7 #include "src/codegen.h"
8 #include "src/ic/ic.h" 8 #include "src/ic/ic.h"
9 #include "src/ic/ic-compiler.h" 9 #include "src/ic/ic-compiler.h"
10 #include "src/ic/stub-cache.h" 10 #include "src/ic/stub-cache.h"
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 __ Bind(&index_name); 440 __ Bind(&index_name);
441 __ IndexFromHash(x3, key); 441 __ IndexFromHash(x3, key);
442 // Now jump to the place where smi keys are handled. 442 // Now jump to the place where smi keys are handled.
443 __ B(&index_smi); 443 __ B(&index_smi);
444 } 444 }
445 445
446 446
447 static void StoreIC_PushArgs(MacroAssembler* masm) { 447 static void StoreIC_PushArgs(MacroAssembler* masm) {
448 __ Push(StoreDescriptor::ReceiverRegister(), StoreDescriptor::NameRegister(), 448 __ Push(StoreDescriptor::ReceiverRegister(), StoreDescriptor::NameRegister(),
449 StoreDescriptor::ValueRegister(), 449 StoreDescriptor::ValueRegister(),
450 VectorStoreICDescriptor::SlotRegister(), 450 StoreWithVectorDescriptor::SlotRegister(),
451 VectorStoreICDescriptor::VectorRegister()); 451 StoreWithVectorDescriptor::VectorRegister());
452 } 452 }
453 453
454 454
455 void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) { 455 void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) {
456 ASM_LOCATION("KeyedStoreIC::GenerateMiss"); 456 ASM_LOCATION("KeyedStoreIC::GenerateMiss");
457 StoreIC_PushArgs(masm); 457 StoreIC_PushArgs(masm);
458 __ TailCallRuntime(Runtime::kKeyedStoreIC_Miss); 458 __ TailCallRuntime(Runtime::kKeyedStoreIC_Miss);
459 } 459 }
460 460
461 461
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
652 PropertyICCompiler::GenerateRuntimeSetProperty(masm, language_mode); 652 PropertyICCompiler::GenerateRuntimeSetProperty(masm, language_mode);
653 // Never returns to here. 653 // Never returns to here.
654 654
655 __ bind(&maybe_name_key); 655 __ bind(&maybe_name_key);
656 __ Ldr(x10, FieldMemOperand(key, HeapObject::kMapOffset)); 656 __ Ldr(x10, FieldMemOperand(key, HeapObject::kMapOffset));
657 __ Ldrb(x10, FieldMemOperand(x10, Map::kInstanceTypeOffset)); 657 __ Ldrb(x10, FieldMemOperand(x10, Map::kInstanceTypeOffset));
658 __ JumpIfNotUniqueNameInstanceType(x10, &slow); 658 __ JumpIfNotUniqueNameInstanceType(x10, &slow);
659 659
660 // The handlers in the stub cache expect a vector and slot. Since we won't 660 // The handlers in the stub cache expect a vector and slot. Since we won't
661 // change the IC from any downstream misses, a dummy vector can be used. 661 // change the IC from any downstream misses, a dummy vector can be used.
662 Register vector = VectorStoreICDescriptor::VectorRegister(); 662 Register vector = StoreWithVectorDescriptor::VectorRegister();
663 Register slot = VectorStoreICDescriptor::SlotRegister(); 663 Register slot = StoreWithVectorDescriptor::SlotRegister();
664 DCHECK(!AreAliased(vector, slot, x5, x6, x7, x8)); 664 DCHECK(!AreAliased(vector, slot, x5, x6, x7, x8));
665 Handle<TypeFeedbackVector> dummy_vector = 665 Handle<TypeFeedbackVector> dummy_vector =
666 TypeFeedbackVector::DummyVector(masm->isolate()); 666 TypeFeedbackVector::DummyVector(masm->isolate());
667 int slot_index = dummy_vector->GetIndex( 667 int slot_index = dummy_vector->GetIndex(
668 FeedbackVectorSlot(TypeFeedbackVector::kDummyKeyedStoreICSlot)); 668 FeedbackVectorSlot(TypeFeedbackVector::kDummyKeyedStoreICSlot));
669 __ LoadRoot(vector, Heap::kDummyVectorRootIndex); 669 __ LoadRoot(vector, Heap::kDummyVectorRootIndex);
670 __ Mov(slot, Operand(Smi::FromInt(slot_index))); 670 __ Mov(slot, Operand(Smi::FromInt(slot_index)));
671 671
672 masm->isolate()->store_stub_cache()->GenerateProbe(masm, receiver, key, x5, 672 masm->isolate()->store_stub_cache()->GenerateProbe(masm, receiver, key, x5,
673 x6, x7, x8); 673 x6, x7, x8);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
727 } 727 }
728 728
729 729
730 void StoreIC::GenerateNormal(MacroAssembler* masm) { 730 void StoreIC::GenerateNormal(MacroAssembler* masm) {
731 Label miss; 731 Label miss;
732 Register value = StoreDescriptor::ValueRegister(); 732 Register value = StoreDescriptor::ValueRegister();
733 Register receiver = StoreDescriptor::ReceiverRegister(); 733 Register receiver = StoreDescriptor::ReceiverRegister();
734 Register name = StoreDescriptor::NameRegister(); 734 Register name = StoreDescriptor::NameRegister();
735 Register dictionary = x5; 735 Register dictionary = x5;
736 DCHECK(!AreAliased(value, receiver, name, 736 DCHECK(!AreAliased(value, receiver, name,
737 VectorStoreICDescriptor::SlotRegister(), 737 StoreWithVectorDescriptor::SlotRegister(),
738 VectorStoreICDescriptor::VectorRegister(), x5, x6, x7)); 738 StoreWithVectorDescriptor::VectorRegister(), x5, x6, x7));
739 739
740 __ Ldr(dictionary, FieldMemOperand(receiver, JSObject::kPropertiesOffset)); 740 __ Ldr(dictionary, FieldMemOperand(receiver, JSObject::kPropertiesOffset));
741 741
742 GenerateDictionaryStore(masm, &miss, dictionary, name, value, x6, x7); 742 GenerateDictionaryStore(masm, &miss, dictionary, name, value, x6, x7);
743 Counters* counters = masm->isolate()->counters(); 743 Counters* counters = masm->isolate()->counters();
744 __ IncrementCounter(counters->ic_store_normal_hit(), 1, x6, x7); 744 __ IncrementCounter(counters->ic_store_normal_hit(), 1, x6, x7);
745 __ Ret(); 745 __ Ret();
746 746
747 // Cache miss: Jump to runtime. 747 // Cache miss: Jump to runtime.
748 __ Bind(&miss); 748 __ Bind(&miss);
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
835 } else { 835 } else {
836 DCHECK(to_patch->Mask(TestBranchMask) == TBNZ); 836 DCHECK(to_patch->Mask(TestBranchMask) == TBNZ);
837 // This is JumpIfSmi(smi_reg, branch_imm). 837 // This is JumpIfSmi(smi_reg, branch_imm).
838 patcher.tbz(smi_reg, 0, branch_imm); 838 patcher.tbz(smi_reg, 0, branch_imm);
839 } 839 }
840 } 840 }
841 } // namespace internal 841 } // namespace internal
842 } // namespace v8 842 } // namespace v8
843 843
844 #endif // V8_TARGET_ARCH_ARM64 844 #endif // V8_TARGET_ARCH_ARM64
OLDNEW
« no previous file with comments | « src/ic/arm64/handler-compiler-arm64.cc ('k') | src/ic/arm64/stub-cache-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698