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 #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 2729 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2740 __ JumpIfSmi(a1, &extra_checks_or_miss); | 2740 __ JumpIfSmi(a1, &extra_checks_or_miss); |
2741 | 2741 |
2742 // Increment the call count for monomorphic function calls. | 2742 // Increment the call count for monomorphic function calls. |
2743 __ dsrl(t0, a3, 32 - kPointerSizeLog2); | 2743 __ dsrl(t0, a3, 32 - kPointerSizeLog2); |
2744 __ Daddu(a3, a2, Operand(t0)); | 2744 __ Daddu(a3, a2, Operand(t0)); |
2745 __ ld(t0, FieldMemOperand(a3, FixedArray::kHeaderSize + kPointerSize)); | 2745 __ ld(t0, FieldMemOperand(a3, FixedArray::kHeaderSize + kPointerSize)); |
2746 __ Daddu(t0, t0, Operand(Smi::FromInt(CallICNexus::kCallCountIncrement))); | 2746 __ Daddu(t0, t0, Operand(Smi::FromInt(CallICNexus::kCallCountIncrement))); |
2747 __ sd(t0, FieldMemOperand(a3, FixedArray::kHeaderSize + kPointerSize)); | 2747 __ sd(t0, FieldMemOperand(a3, FixedArray::kHeaderSize + kPointerSize)); |
2748 | 2748 |
2749 __ bind(&call_function); | 2749 __ bind(&call_function); |
2750 __ Jump(masm->isolate()->builtins()->CallFunction(convert_mode()), | 2750 __ Jump(masm->isolate()->builtins()->CallFunction(convert_mode(), |
| 2751 tail_call_mode()), |
2751 RelocInfo::CODE_TARGET, al, zero_reg, Operand(zero_reg), | 2752 RelocInfo::CODE_TARGET, al, zero_reg, Operand(zero_reg), |
2752 USE_DELAY_SLOT); | 2753 USE_DELAY_SLOT); |
2753 __ li(a0, Operand(argc)); // In delay slot. | 2754 __ li(a0, Operand(argc)); // In delay slot. |
2754 | 2755 |
2755 __ bind(&extra_checks_or_miss); | 2756 __ bind(&extra_checks_or_miss); |
2756 Label uninitialized, miss, not_allocation_site; | 2757 Label uninitialized, miss, not_allocation_site; |
2757 | 2758 |
2758 __ LoadRoot(at, Heap::kmegamorphic_symbolRootIndex); | 2759 __ LoadRoot(at, Heap::kmegamorphic_symbolRootIndex); |
2759 __ Branch(&call, eq, a4, Operand(at)); | 2760 __ Branch(&call, eq, a4, Operand(at)); |
2760 | 2761 |
(...skipping 19 matching lines...) Expand all Loading... |
2780 // to handle it here. More complex cases are dealt with in the runtime. | 2781 // to handle it here. More complex cases are dealt with in the runtime. |
2781 __ AssertNotSmi(a4); | 2782 __ AssertNotSmi(a4); |
2782 __ GetObjectType(a4, a5, a5); | 2783 __ GetObjectType(a4, a5, a5); |
2783 __ Branch(&miss, ne, a5, Operand(JS_FUNCTION_TYPE)); | 2784 __ Branch(&miss, ne, a5, Operand(JS_FUNCTION_TYPE)); |
2784 __ dsrl(a4, a3, 32 - kPointerSizeLog2); | 2785 __ dsrl(a4, a3, 32 - kPointerSizeLog2); |
2785 __ Daddu(a4, a2, Operand(a4)); | 2786 __ Daddu(a4, a2, Operand(a4)); |
2786 __ LoadRoot(at, Heap::kmegamorphic_symbolRootIndex); | 2787 __ LoadRoot(at, Heap::kmegamorphic_symbolRootIndex); |
2787 __ sd(at, FieldMemOperand(a4, FixedArray::kHeaderSize)); | 2788 __ sd(at, FieldMemOperand(a4, FixedArray::kHeaderSize)); |
2788 | 2789 |
2789 __ bind(&call); | 2790 __ bind(&call); |
2790 __ Jump(masm->isolate()->builtins()->Call(convert_mode()), | 2791 __ Jump(masm->isolate()->builtins()->Call(convert_mode(), tail_call_mode()), |
2791 RelocInfo::CODE_TARGET, al, zero_reg, Operand(zero_reg), | 2792 RelocInfo::CODE_TARGET, al, zero_reg, Operand(zero_reg), |
2792 USE_DELAY_SLOT); | 2793 USE_DELAY_SLOT); |
2793 __ li(a0, Operand(argc)); // In delay slot. | 2794 __ li(a0, Operand(argc)); // In delay slot. |
2794 | 2795 |
2795 __ bind(&uninitialized); | 2796 __ bind(&uninitialized); |
2796 | 2797 |
2797 // We are going monomorphic, provided we actually have a JSFunction. | 2798 // We are going monomorphic, provided we actually have a JSFunction. |
2798 __ JumpIfSmi(a1, &miss); | 2799 __ JumpIfSmi(a1, &miss); |
2799 | 2800 |
2800 // Goto miss case if we do not have a function. | 2801 // Goto miss case if we do not have a function. |
(...skipping 2876 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5677 return_value_operand, NULL); | 5678 return_value_operand, NULL); |
5678 } | 5679 } |
5679 | 5680 |
5680 | 5681 |
5681 #undef __ | 5682 #undef __ |
5682 | 5683 |
5683 } // namespace internal | 5684 } // namespace internal |
5684 } // namespace v8 | 5685 } // namespace v8 |
5685 | 5686 |
5686 #endif // V8_TARGET_ARCH_MIPS64 | 5687 #endif // V8_TARGET_ARCH_MIPS64 |
OLD | NEW |