| 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 |