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

Side by Side Diff: src/mips/code-stubs-mips.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/arm64/code-stubs-arm64.cc ('k') | src/mips64/code-stubs-mips64.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_MIPS 5 #if V8_TARGET_ARCH_MIPS
6 6
7 #include "src/base/bits.h" 7 #include "src/base/bits.h"
8 #include "src/bootstrapper.h" 8 #include "src/bootstrapper.h"
9 #include "src/code-stubs.h" 9 #include "src/code-stubs.h"
10 #include "src/codegen.h" 10 #include "src/codegen.h"
(...skipping 4549 matching lines...) Expand 10 before | Expand all | Expand 10 after
4560 4560
4561 4561
4562 void LoadICStub::Generate(MacroAssembler* masm) { GenerateImpl(masm, false); } 4562 void LoadICStub::Generate(MacroAssembler* masm) { GenerateImpl(masm, false); }
4563 4563
4564 4564
4565 void LoadICStub::GenerateForTrampoline(MacroAssembler* masm) { 4565 void LoadICStub::GenerateForTrampoline(MacroAssembler* masm) {
4566 GenerateImpl(masm, true); 4566 GenerateImpl(masm, true);
4567 } 4567 }
4568 4568
4569 4569
4570 static void HandleArrayCases(MacroAssembler* masm, Register receiver, 4570 static void HandleArrayCases(MacroAssembler* masm, Register feedback,
4571 Register key, Register vector, Register slot, 4571 Register receiver_map, Register scratch1,
4572 Register feedback, Register receiver_map, 4572 Register scratch2, bool is_polymorphic,
4573 Register scratch1, Register scratch2, 4573 Label* miss) {
4574 bool is_polymorphic, Label* miss) {
4575 // feedback initially contains the feedback array 4574 // feedback initially contains the feedback array
4576 Label next_loop, prepare_next; 4575 Label next_loop, prepare_next;
4577 Label start_polymorphic; 4576 Label start_polymorphic;
4578 4577
4579 Register cached_map = scratch1; 4578 Register cached_map = scratch1;
4580 4579
4581 __ lw(cached_map, 4580 __ lw(cached_map,
4582 FieldMemOperand(feedback, FixedArray::OffsetOfElementAt(0))); 4581 FieldMemOperand(feedback, FixedArray::OffsetOfElementAt(0)));
4583 __ lw(cached_map, FieldMemOperand(cached_map, WeakCell::kValueOffset)); 4582 __ lw(cached_map, FieldMemOperand(cached_map, WeakCell::kValueOffset));
4584 __ Branch(&start_polymorphic, ne, receiver_map, Operand(cached_map)); 4583 __ Branch(&start_polymorphic, ne, receiver_map, Operand(cached_map));
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
4676 Label try_array, load_smi_map, compare_map; 4675 Label try_array, load_smi_map, compare_map;
4677 Label not_array, miss; 4676 Label not_array, miss;
4678 HandleMonomorphicCase(masm, receiver, receiver_map, feedback, vector, slot, 4677 HandleMonomorphicCase(masm, receiver, receiver_map, feedback, vector, slot,
4679 scratch1, &compare_map, &load_smi_map, &try_array); 4678 scratch1, &compare_map, &load_smi_map, &try_array);
4680 4679
4681 // Is it a fixed array? 4680 // Is it a fixed array?
4682 __ bind(&try_array); 4681 __ bind(&try_array);
4683 __ lw(scratch1, FieldMemOperand(feedback, HeapObject::kMapOffset)); 4682 __ lw(scratch1, FieldMemOperand(feedback, HeapObject::kMapOffset));
4684 __ LoadRoot(at, Heap::kFixedArrayMapRootIndex); 4683 __ LoadRoot(at, Heap::kFixedArrayMapRootIndex);
4685 __ Branch(&not_array, ne, at, Operand(scratch1)); 4684 __ Branch(&not_array, ne, at, Operand(scratch1));
4686 HandleArrayCases(masm, receiver, name, vector, slot, feedback, receiver_map, 4685 HandleArrayCases(masm, feedback, receiver_map, scratch1, t5, true, &miss);
4687 scratch1, t5, true, &miss);
4688 4686
4689 __ bind(&not_array); 4687 __ bind(&not_array);
4690 __ LoadRoot(at, Heap::kmegamorphic_symbolRootIndex); 4688 __ LoadRoot(at, Heap::kmegamorphic_symbolRootIndex);
4691 __ Branch(&miss, ne, at, Operand(feedback)); 4689 __ Branch(&miss, ne, at, Operand(feedback));
4692 Code::Flags code_flags = Code::RemoveTypeAndHolderFromFlags( 4690 Code::Flags code_flags = Code::RemoveTypeAndHolderFromFlags(
4693 Code::ComputeHandlerFlags(Code::LOAD_IC)); 4691 Code::ComputeHandlerFlags(Code::LOAD_IC));
4694 masm->isolate()->stub_cache()->GenerateProbe(masm, Code::LOAD_IC, code_flags, 4692 masm->isolate()->stub_cache()->GenerateProbe(masm, Code::LOAD_IC, code_flags,
4695 receiver, name, feedback, 4693 receiver, name, feedback,
4696 receiver_map, scratch1, t5); 4694 receiver_map, scratch1, t5);
4697 4695
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
4738 __ bind(&try_array); 4736 __ bind(&try_array);
4739 // Is it a fixed array? 4737 // Is it a fixed array?
4740 __ lw(scratch1, FieldMemOperand(feedback, HeapObject::kMapOffset)); 4738 __ lw(scratch1, FieldMemOperand(feedback, HeapObject::kMapOffset));
4741 __ LoadRoot(at, Heap::kFixedArrayMapRootIndex); 4739 __ LoadRoot(at, Heap::kFixedArrayMapRootIndex);
4742 __ Branch(&not_array, ne, at, Operand(scratch1)); 4740 __ Branch(&not_array, ne, at, Operand(scratch1));
4743 // We have a polymorphic element handler. 4741 // We have a polymorphic element handler.
4744 __ JumpIfNotSmi(key, &miss); 4742 __ JumpIfNotSmi(key, &miss);
4745 4743
4746 Label polymorphic, try_poly_name; 4744 Label polymorphic, try_poly_name;
4747 __ bind(&polymorphic); 4745 __ bind(&polymorphic);
4748 HandleArrayCases(masm, receiver, key, vector, slot, feedback, receiver_map, 4746 HandleArrayCases(masm, feedback, receiver_map, scratch1, t5, true, &miss);
4749 scratch1, t5, true, &miss);
4750 4747
4751 __ bind(&not_array); 4748 __ bind(&not_array);
4752 // Is it generic? 4749 // Is it generic?
4753 __ LoadRoot(at, Heap::kmegamorphic_symbolRootIndex); 4750 __ LoadRoot(at, Heap::kmegamorphic_symbolRootIndex);
4754 __ Branch(&try_poly_name, ne, at, Operand(feedback)); 4751 __ Branch(&try_poly_name, ne, at, Operand(feedback));
4755 Handle<Code> megamorphic_stub = 4752 Handle<Code> megamorphic_stub =
4756 KeyedLoadIC::ChooseMegamorphicStub(masm->isolate(), GetExtraICState()); 4753 KeyedLoadIC::ChooseMegamorphicStub(masm->isolate(), GetExtraICState());
4757 __ Jump(megamorphic_stub, RelocInfo::CODE_TARGET); 4754 __ Jump(megamorphic_stub, RelocInfo::CODE_TARGET);
4758 4755
4759 __ bind(&try_poly_name); 4756 __ bind(&try_poly_name);
4760 // We might have a name in feedback, and a fixed array in the next slot. 4757 // We might have a name in feedback, and a fixed array in the next slot.
4761 __ Branch(&miss, ne, key, Operand(feedback)); 4758 __ Branch(&miss, ne, key, Operand(feedback));
4762 // If the name comparison succeeded, we know we have a fixed array with 4759 // If the name comparison succeeded, we know we have a fixed array with
4763 // at least one map/handler pair. 4760 // at least one map/handler pair.
4764 __ sll(at, slot, kPointerSizeLog2 - kSmiTagSize); 4761 __ sll(at, slot, kPointerSizeLog2 - kSmiTagSize);
4765 __ Addu(feedback, vector, Operand(at)); 4762 __ Addu(feedback, vector, Operand(at));
4766 __ lw(feedback, 4763 __ lw(feedback,
4767 FieldMemOperand(feedback, FixedArray::kHeaderSize + kPointerSize)); 4764 FieldMemOperand(feedback, FixedArray::kHeaderSize + kPointerSize));
4768 HandleArrayCases(masm, receiver, key, vector, slot, feedback, receiver_map, 4765 HandleArrayCases(masm, feedback, receiver_map, scratch1, t5, false, &miss);
4769 scratch1, t5, false, &miss);
4770 4766
4771 __ bind(&miss); 4767 __ bind(&miss);
4772 KeyedLoadIC::GenerateMiss(masm); 4768 KeyedLoadIC::GenerateMiss(masm);
4773 4769
4774 __ bind(&load_smi_map); 4770 __ bind(&load_smi_map);
4775 __ LoadRoot(receiver_map, Heap::kHeapNumberMapRootIndex); 4771 __ LoadRoot(receiver_map, Heap::kHeapNumberMapRootIndex);
4776 __ jmp(&compare_map); 4772 __ jmp(&compare_map);
4777 } 4773 }
4778 4774
4779 4775
(...skipping 880 matching lines...) Expand 10 before | Expand all | Expand 10 after
5660 MemOperand(fp, 6 * kPointerSize), NULL); 5656 MemOperand(fp, 6 * kPointerSize), NULL);
5661 } 5657 }
5662 5658
5663 5659
5664 #undef __ 5660 #undef __
5665 5661
5666 } // namespace internal 5662 } // namespace internal
5667 } // namespace v8 5663 } // namespace v8
5668 5664
5669 #endif // V8_TARGET_ARCH_MIPS 5665 #endif // V8_TARGET_ARCH_MIPS
OLDNEW
« no previous file with comments | « src/arm64/code-stubs-arm64.cc ('k') | src/mips64/code-stubs-mips64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698