OLD | NEW |
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 | 5 |
6 #include "src/v8.h" | 6 #include "src/v8.h" |
7 | 7 |
8 #if V8_TARGET_ARCH_MIPS | 8 #if V8_TARGET_ARCH_MIPS |
9 | 9 |
10 #include "src/codegen.h" | 10 #include "src/codegen.h" |
(...skipping 706 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
717 receiver_map, t0, slow); | 717 receiver_map, t0, slow); |
718 mode = AllocationSite::GetMode(FAST_DOUBLE_ELEMENTS, FAST_ELEMENTS); | 718 mode = AllocationSite::GetMode(FAST_DOUBLE_ELEMENTS, FAST_ELEMENTS); |
719 ElementsTransitionGenerator::GenerateDoubleToObject( | 719 ElementsTransitionGenerator::GenerateDoubleToObject( |
720 masm, receiver, key, value, receiver_map, mode, slow); | 720 masm, receiver, key, value, receiver_map, mode, slow); |
721 __ lw(elements, FieldMemOperand(receiver, JSObject::kElementsOffset)); | 721 __ lw(elements, FieldMemOperand(receiver, JSObject::kElementsOffset)); |
722 __ jmp(&finish_object_store); | 722 __ jmp(&finish_object_store); |
723 } | 723 } |
724 | 724 |
725 | 725 |
726 void KeyedStoreIC::GenerateMegamorphic(MacroAssembler* masm, | 726 void KeyedStoreIC::GenerateMegamorphic(MacroAssembler* masm, |
727 StrictMode strict_mode) { | 727 LanguageMode language_mode) { |
728 // ---------- S t a t e -------------- | 728 // ---------- S t a t e -------------- |
729 // -- a0 : value | 729 // -- a0 : value |
730 // -- a1 : key | 730 // -- a1 : key |
731 // -- a2 : receiver | 731 // -- a2 : receiver |
732 // -- ra : return address | 732 // -- ra : return address |
733 // ----------------------------------- | 733 // ----------------------------------- |
734 Label slow, fast_object, fast_object_grow; | 734 Label slow, fast_object, fast_object_grow; |
735 Label fast_double, fast_double_grow; | 735 Label fast_double, fast_double_grow; |
736 Label array, extra, check_if_double_array, maybe_name_key, miss; | 736 Label array, extra, check_if_double_array, maybe_name_key, miss; |
737 | 737 |
(...skipping 30 matching lines...) Expand all Loading... |
768 // Check array bounds. Both the key and the length of FixedArray are smis. | 768 // Check array bounds. Both the key and the length of FixedArray are smis. |
769 __ lw(t0, FieldMemOperand(elements, FixedArray::kLengthOffset)); | 769 __ lw(t0, FieldMemOperand(elements, FixedArray::kLengthOffset)); |
770 __ Branch(&fast_object, lo, key, Operand(t0)); | 770 __ Branch(&fast_object, lo, key, Operand(t0)); |
771 | 771 |
772 // Slow case, handle jump to runtime. | 772 // Slow case, handle jump to runtime. |
773 __ bind(&slow); | 773 __ bind(&slow); |
774 // Entry registers are intact. | 774 // Entry registers are intact. |
775 // a0: value. | 775 // a0: value. |
776 // a1: key. | 776 // a1: key. |
777 // a2: receiver. | 777 // a2: receiver. |
778 PropertyICCompiler::GenerateRuntimeSetProperty(masm, strict_mode); | 778 PropertyICCompiler::GenerateRuntimeSetProperty(masm, language_mode); |
779 // Never returns to here. | 779 // Never returns to here. |
780 | 780 |
781 __ bind(&maybe_name_key); | 781 __ bind(&maybe_name_key); |
782 __ lw(t0, FieldMemOperand(key, HeapObject::kMapOffset)); | 782 __ lw(t0, FieldMemOperand(key, HeapObject::kMapOffset)); |
783 __ lb(t0, FieldMemOperand(t0, Map::kInstanceTypeOffset)); | 783 __ lb(t0, FieldMemOperand(t0, Map::kInstanceTypeOffset)); |
784 __ JumpIfNotUniqueNameInstanceType(t0, &slow); | 784 __ JumpIfNotUniqueNameInstanceType(t0, &slow); |
785 Code::Flags flags = Code::RemoveTypeAndHolderFromFlags( | 785 Code::Flags flags = Code::RemoveTypeAndHolderFromFlags( |
786 Code::ComputeHandlerFlags(Code::STORE_IC)); | 786 Code::ComputeHandlerFlags(Code::STORE_IC)); |
787 masm->isolate()->stub_cache()->GenerateProbe( | 787 masm->isolate()->stub_cache()->GenerateProbe( |
788 masm, Code::STORE_IC, flags, false, receiver, key, a3, t0, t1, t2); | 788 masm, Code::STORE_IC, flags, false, receiver, key, a3, t0, t1, t2); |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
987 patcher.ChangeBranchCondition(ne); | 987 patcher.ChangeBranchCondition(ne); |
988 } else { | 988 } else { |
989 DCHECK(Assembler::IsBne(branch_instr)); | 989 DCHECK(Assembler::IsBne(branch_instr)); |
990 patcher.ChangeBranchCondition(eq); | 990 patcher.ChangeBranchCondition(eq); |
991 } | 991 } |
992 } | 992 } |
993 } | 993 } |
994 } // namespace v8::internal | 994 } // namespace v8::internal |
995 | 995 |
996 #endif // V8_TARGET_ARCH_MIPS | 996 #endif // V8_TARGET_ARCH_MIPS |
OLD | NEW |