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_MIPS64 | 8 #if V8_TARGET_ARCH_MIPS64 |
9 | 9 |
10 #include "src/codegen.h" | 10 #include "src/codegen.h" |
(...skipping 708 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
719 receiver_map, a4, slow); | 719 receiver_map, a4, slow); |
720 mode = AllocationSite::GetMode(FAST_DOUBLE_ELEMENTS, FAST_ELEMENTS); | 720 mode = AllocationSite::GetMode(FAST_DOUBLE_ELEMENTS, FAST_ELEMENTS); |
721 ElementsTransitionGenerator::GenerateDoubleToObject( | 721 ElementsTransitionGenerator::GenerateDoubleToObject( |
722 masm, receiver, key, value, receiver_map, mode, slow); | 722 masm, receiver, key, value, receiver_map, mode, slow); |
723 __ ld(elements, FieldMemOperand(receiver, JSObject::kElementsOffset)); | 723 __ ld(elements, FieldMemOperand(receiver, JSObject::kElementsOffset)); |
724 __ jmp(&finish_object_store); | 724 __ jmp(&finish_object_store); |
725 } | 725 } |
726 | 726 |
727 | 727 |
728 void KeyedStoreIC::GenerateMegamorphic(MacroAssembler* masm, | 728 void KeyedStoreIC::GenerateMegamorphic(MacroAssembler* masm, |
729 StrictMode strict_mode) { | 729 LanguageMode language_mode) { |
730 // ---------- S t a t e -------------- | 730 // ---------- S t a t e -------------- |
731 // -- a0 : value | 731 // -- a0 : value |
732 // -- a1 : key | 732 // -- a1 : key |
733 // -- a2 : receiver | 733 // -- a2 : receiver |
734 // -- ra : return address | 734 // -- ra : return address |
735 // ----------------------------------- | 735 // ----------------------------------- |
736 Label slow, fast_object, fast_object_grow; | 736 Label slow, fast_object, fast_object_grow; |
737 Label fast_double, fast_double_grow; | 737 Label fast_double, fast_double_grow; |
738 Label array, extra, check_if_double_array, maybe_name_key, miss; | 738 Label array, extra, check_if_double_array, maybe_name_key, miss; |
739 | 739 |
(...skipping 30 matching lines...) Expand all Loading... |
770 // Check array bounds. Both the key and the length of FixedArray are smis. | 770 // Check array bounds. Both the key and the length of FixedArray are smis. |
771 __ ld(a4, FieldMemOperand(elements, FixedArray::kLengthOffset)); | 771 __ ld(a4, FieldMemOperand(elements, FixedArray::kLengthOffset)); |
772 __ Branch(&fast_object, lo, key, Operand(a4)); | 772 __ Branch(&fast_object, lo, key, Operand(a4)); |
773 | 773 |
774 // Slow case, handle jump to runtime. | 774 // Slow case, handle jump to runtime. |
775 __ bind(&slow); | 775 __ bind(&slow); |
776 // Entry registers are intact. | 776 // Entry registers are intact. |
777 // a0: value. | 777 // a0: value. |
778 // a1: key. | 778 // a1: key. |
779 // a2: receiver. | 779 // a2: receiver. |
780 PropertyICCompiler::GenerateRuntimeSetProperty(masm, strict_mode); | 780 PropertyICCompiler::GenerateRuntimeSetProperty(masm, language_mode); |
781 // Never returns to here. | 781 // Never returns to here. |
782 | 782 |
783 __ bind(&maybe_name_key); | 783 __ bind(&maybe_name_key); |
784 __ ld(a4, FieldMemOperand(key, HeapObject::kMapOffset)); | 784 __ ld(a4, FieldMemOperand(key, HeapObject::kMapOffset)); |
785 __ lb(a4, FieldMemOperand(a4, Map::kInstanceTypeOffset)); | 785 __ lb(a4, FieldMemOperand(a4, Map::kInstanceTypeOffset)); |
786 __ JumpIfNotUniqueNameInstanceType(a4, &slow); | 786 __ JumpIfNotUniqueNameInstanceType(a4, &slow); |
787 Code::Flags flags = Code::RemoveTypeAndHolderFromFlags( | 787 Code::Flags flags = Code::RemoveTypeAndHolderFromFlags( |
788 Code::ComputeHandlerFlags(Code::STORE_IC)); | 788 Code::ComputeHandlerFlags(Code::STORE_IC)); |
789 masm->isolate()->stub_cache()->GenerateProbe( | 789 masm->isolate()->stub_cache()->GenerateProbe( |
790 masm, Code::STORE_IC, flags, false, receiver, key, a3, a4, a5, a6); | 790 masm, Code::STORE_IC, flags, false, receiver, key, a3, a4, a5, a6); |
(...skipping 196 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_MIPS64 | 996 #endif // V8_TARGET_ARCH_MIPS64 |
OLD | NEW |