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

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

Issue 1314503003: VectorICs: Cleanup, remove unnecessary arguments from HandleArrayCases() (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 3 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/mips/code-stubs-mips.cc ('k') | src/x64/code-stubs-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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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_MIPS64 5 #if V8_TARGET_ARCH_MIPS64
6 6
7 #include "src/bootstrapper.h" 7 #include "src/bootstrapper.h"
8 #include "src/code-stubs.h" 8 #include "src/code-stubs.h"
9 #include "src/codegen.h" 9 #include "src/codegen.h"
10 #include "src/ic/handler-compiler.h" 10 #include "src/ic/handler-compiler.h"
(...skipping 4582 matching lines...) Expand 10 before | Expand all | Expand 10 after
4593 4593
4594 4594
4595 void LoadICStub::Generate(MacroAssembler* masm) { GenerateImpl(masm, false); } 4595 void LoadICStub::Generate(MacroAssembler* masm) { GenerateImpl(masm, false); }
4596 4596
4597 4597
4598 void LoadICStub::GenerateForTrampoline(MacroAssembler* masm) { 4598 void LoadICStub::GenerateForTrampoline(MacroAssembler* masm) {
4599 GenerateImpl(masm, true); 4599 GenerateImpl(masm, true);
4600 } 4600 }
4601 4601
4602 4602
4603 static void HandleArrayCases(MacroAssembler* masm, Register receiver, 4603 static void HandleArrayCases(MacroAssembler* masm, Register feedback,
4604 Register key, Register vector, Register slot, 4604 Register receiver_map, Register scratch1,
4605 Register feedback, Register receiver_map, 4605 Register scratch2, bool is_polymorphic,
4606 Register scratch1, Register scratch2, 4606 Label* miss) {
4607 bool is_polymorphic, Label* miss) {
4608 // feedback initially contains the feedback array 4607 // feedback initially contains the feedback array
4609 Label next_loop, prepare_next; 4608 Label next_loop, prepare_next;
4610 Label start_polymorphic; 4609 Label start_polymorphic;
4611 4610
4612 Register cached_map = scratch1; 4611 Register cached_map = scratch1;
4613 4612
4614 __ ld(cached_map, 4613 __ ld(cached_map,
4615 FieldMemOperand(feedback, FixedArray::OffsetOfElementAt(0))); 4614 FieldMemOperand(feedback, FixedArray::OffsetOfElementAt(0)));
4616 __ ld(cached_map, FieldMemOperand(cached_map, WeakCell::kValueOffset)); 4615 __ ld(cached_map, FieldMemOperand(cached_map, WeakCell::kValueOffset));
4617 __ Branch(&start_polymorphic, ne, receiver_map, Operand(cached_map)); 4616 __ Branch(&start_polymorphic, ne, receiver_map, Operand(cached_map));
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
4707 Label try_array, load_smi_map, compare_map; 4706 Label try_array, load_smi_map, compare_map;
4708 Label not_array, miss; 4707 Label not_array, miss;
4709 HandleMonomorphicCase(masm, receiver, receiver_map, feedback, vector, slot, 4708 HandleMonomorphicCase(masm, receiver, receiver_map, feedback, vector, slot,
4710 scratch1, &compare_map, &load_smi_map, &try_array); 4709 scratch1, &compare_map, &load_smi_map, &try_array);
4711 4710
4712 // Is it a fixed array? 4711 // Is it a fixed array?
4713 __ bind(&try_array); 4712 __ bind(&try_array);
4714 __ ld(scratch1, FieldMemOperand(feedback, HeapObject::kMapOffset)); 4713 __ ld(scratch1, FieldMemOperand(feedback, HeapObject::kMapOffset));
4715 __ LoadRoot(at, Heap::kFixedArrayMapRootIndex); 4714 __ LoadRoot(at, Heap::kFixedArrayMapRootIndex);
4716 __ Branch(&not_array, ne, scratch1, Operand(at)); 4715 __ Branch(&not_array, ne, scratch1, Operand(at));
4717 HandleArrayCases(masm, receiver, name, vector, slot, feedback, receiver_map, 4716 HandleArrayCases(masm, feedback, receiver_map, scratch1, a7, true, &miss);
4718 scratch1, a7, true, &miss);
4719 4717
4720 __ bind(&not_array); 4718 __ bind(&not_array);
4721 __ LoadRoot(at, Heap::kmegamorphic_symbolRootIndex); 4719 __ LoadRoot(at, Heap::kmegamorphic_symbolRootIndex);
4722 __ Branch(&miss, ne, feedback, Operand(at)); 4720 __ Branch(&miss, ne, feedback, Operand(at));
4723 Code::Flags code_flags = Code::RemoveTypeAndHolderFromFlags( 4721 Code::Flags code_flags = Code::RemoveTypeAndHolderFromFlags(
4724 Code::ComputeHandlerFlags(Code::LOAD_IC)); 4722 Code::ComputeHandlerFlags(Code::LOAD_IC));
4725 masm->isolate()->stub_cache()->GenerateProbe(masm, Code::LOAD_IC, code_flags, 4723 masm->isolate()->stub_cache()->GenerateProbe(masm, Code::LOAD_IC, code_flags,
4726 receiver, name, feedback, 4724 receiver, name, feedback,
4727 receiver_map, scratch1, a7); 4725 receiver_map, scratch1, a7);
4728 4726
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
4769 __ bind(&try_array); 4767 __ bind(&try_array);
4770 // Is it a fixed array? 4768 // Is it a fixed array?
4771 __ ld(scratch1, FieldMemOperand(feedback, HeapObject::kMapOffset)); 4769 __ ld(scratch1, FieldMemOperand(feedback, HeapObject::kMapOffset));
4772 __ LoadRoot(at, Heap::kFixedArrayMapRootIndex); 4770 __ LoadRoot(at, Heap::kFixedArrayMapRootIndex);
4773 __ Branch(&not_array, ne, scratch1, Operand(at)); 4771 __ Branch(&not_array, ne, scratch1, Operand(at));
4774 // We have a polymorphic element handler. 4772 // We have a polymorphic element handler.
4775 __ JumpIfNotSmi(key, &miss); 4773 __ JumpIfNotSmi(key, &miss);
4776 4774
4777 Label polymorphic, try_poly_name; 4775 Label polymorphic, try_poly_name;
4778 __ bind(&polymorphic); 4776 __ bind(&polymorphic);
4779 HandleArrayCases(masm, receiver, key, vector, slot, feedback, receiver_map, 4777 HandleArrayCases(masm, feedback, receiver_map, scratch1, a7, true, &miss);
4780 scratch1, a7, true, &miss);
4781 4778
4782 __ bind(&not_array); 4779 __ bind(&not_array);
4783 // Is it generic? 4780 // Is it generic?
4784 __ LoadRoot(at, Heap::kmegamorphic_symbolRootIndex); 4781 __ LoadRoot(at, Heap::kmegamorphic_symbolRootIndex);
4785 __ Branch(&try_poly_name, ne, feedback, Operand(at)); 4782 __ Branch(&try_poly_name, ne, feedback, Operand(at));
4786 Handle<Code> megamorphic_stub = 4783 Handle<Code> megamorphic_stub =
4787 KeyedLoadIC::ChooseMegamorphicStub(masm->isolate(), GetExtraICState()); 4784 KeyedLoadIC::ChooseMegamorphicStub(masm->isolate(), GetExtraICState());
4788 __ Jump(megamorphic_stub, RelocInfo::CODE_TARGET); 4785 __ Jump(megamorphic_stub, RelocInfo::CODE_TARGET);
4789 4786
4790 __ bind(&try_poly_name); 4787 __ bind(&try_poly_name);
4791 // We might have a name in feedback, and a fixed array in the next slot. 4788 // We might have a name in feedback, and a fixed array in the next slot.
4792 __ Branch(&miss, ne, key, Operand(feedback)); 4789 __ Branch(&miss, ne, key, Operand(feedback));
4793 // If the name comparison succeeded, we know we have a fixed array with 4790 // If the name comparison succeeded, we know we have a fixed array with
4794 // at least one map/handler pair. 4791 // at least one map/handler pair.
4795 __ SmiScale(feedback, slot, kPointerSizeLog2); 4792 __ SmiScale(feedback, slot, kPointerSizeLog2);
4796 __ Daddu(feedback, vector, Operand(feedback)); 4793 __ Daddu(feedback, vector, Operand(feedback));
4797 __ ld(feedback, 4794 __ ld(feedback,
4798 FieldMemOperand(feedback, FixedArray::kHeaderSize + kPointerSize)); 4795 FieldMemOperand(feedback, FixedArray::kHeaderSize + kPointerSize));
4799 HandleArrayCases(masm, receiver, key, vector, slot, feedback, receiver_map, 4796 HandleArrayCases(masm, feedback, receiver_map, scratch1, a7, false, &miss);
4800 scratch1, a7, false, &miss);
4801 4797
4802 __ bind(&miss); 4798 __ bind(&miss);
4803 KeyedLoadIC::GenerateMiss(masm); 4799 KeyedLoadIC::GenerateMiss(masm);
4804 4800
4805 __ bind(&load_smi_map); 4801 __ bind(&load_smi_map);
4806 __ LoadRoot(receiver_map, Heap::kHeapNumberMapRootIndex); 4802 __ LoadRoot(receiver_map, Heap::kHeapNumberMapRootIndex);
4807 __ Branch(&compare_map); 4803 __ Branch(&compare_map);
4808 } 4804 }
4809 4805
4810 4806
(...skipping 881 matching lines...) Expand 10 before | Expand all | Expand 10 after
5692 MemOperand(fp, 6 * kPointerSize), NULL); 5688 MemOperand(fp, 6 * kPointerSize), NULL);
5693 } 5689 }
5694 5690
5695 5691
5696 #undef __ 5692 #undef __
5697 5693
5698 } // namespace internal 5694 } // namespace internal
5699 } // namespace v8 5695 } // namespace v8
5700 5696
5701 #endif // V8_TARGET_ARCH_MIPS64 5697 #endif // V8_TARGET_ARCH_MIPS64
OLDNEW
« no previous file with comments | « src/mips/code-stubs-mips.cc ('k') | src/x64/code-stubs-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698