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 #include "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #if V8_TARGET_ARCH_MIPS | 7 #if V8_TARGET_ARCH_MIPS |
8 | 8 |
9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" |
10 #include "src/bootstrapper.h" | 10 #include "src/bootstrapper.h" |
(...skipping 2910 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2921 __ JumpIfSmi(a1, &non_function); | 2921 __ JumpIfSmi(a1, &non_function); |
2922 | 2922 |
2923 // Goto slow case if we do not have a function. | 2923 // Goto slow case if we do not have a function. |
2924 __ GetObjectType(a1, t0, t0); | 2924 __ GetObjectType(a1, t0, t0); |
2925 __ Branch(&slow, ne, t0, Operand(JS_FUNCTION_TYPE)); | 2925 __ Branch(&slow, ne, t0, Operand(JS_FUNCTION_TYPE)); |
2926 __ Branch(&have_js_function); | 2926 __ Branch(&have_js_function); |
2927 } | 2927 } |
2928 | 2928 |
2929 | 2929 |
2930 void CallICStub::GenerateMiss(MacroAssembler* masm) { | 2930 void CallICStub::GenerateMiss(MacroAssembler* masm) { |
2931 // Get the receiver of the function from the stack. | 2931 FrameScope scope(masm, StackFrame::INTERNAL); |
2932 __ lw(t0, MemOperand(sp, arg_count() * kPointerSize)); | |
2933 | 2932 |
2934 { | 2933 // Push the receiver and the function and feedback info. |
2935 FrameScope scope(masm, StackFrame::INTERNAL); | 2934 __ Push(a1, a2, a3); |
2936 | 2935 |
2937 // Push the receiver and the function and feedback info. | 2936 // Call the entry. |
2938 __ Push(t0, a1, a2, a3); | 2937 IC::UtilityId id = GetICState() == DEFAULT ? IC::kCallIC_Miss |
| 2938 : IC::kCallIC_Customization_Miss; |
2939 | 2939 |
2940 // Call the entry. | 2940 ExternalReference miss = ExternalReference(IC_Utility(id), masm->isolate()); |
2941 IC::UtilityId id = GetICState() == DEFAULT ? IC::kCallIC_Miss | 2941 __ CallExternalReference(miss, 3); |
2942 : IC::kCallIC_Customization_Miss; | |
2943 | 2942 |
2944 ExternalReference miss = ExternalReference(IC_Utility(id), | 2943 // Move result to a1 and exit the internal frame. |
2945 masm->isolate()); | 2944 __ mov(a1, v0); |
2946 __ CallExternalReference(miss, 4); | |
2947 | |
2948 // Move result to a1 and exit the internal frame. | |
2949 __ mov(a1, v0); | |
2950 } | |
2951 } | 2945 } |
2952 | 2946 |
2953 | 2947 |
2954 // StringCharCodeAtGenerator. | 2948 // StringCharCodeAtGenerator. |
2955 void StringCharCodeAtGenerator::GenerateFast(MacroAssembler* masm) { | 2949 void StringCharCodeAtGenerator::GenerateFast(MacroAssembler* masm) { |
2956 DCHECK(!t0.is(index_)); | 2950 DCHECK(!t0.is(index_)); |
2957 DCHECK(!t0.is(result_)); | 2951 DCHECK(!t0.is(result_)); |
2958 DCHECK(!t0.is(object_)); | 2952 DCHECK(!t0.is(object_)); |
2959 if (check_mode_ == RECEIVER_IS_UNKNOWN) { | 2953 if (check_mode_ == RECEIVER_IS_UNKNOWN) { |
2960 // If the receiver is a smi trigger the non-string case. | 2954 // If the receiver is a smi trigger the non-string case. |
(...skipping 2214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5175 kStackUnwindSpace, kInvalidStackOffset, | 5169 kStackUnwindSpace, kInvalidStackOffset, |
5176 MemOperand(fp, 6 * kPointerSize), NULL); | 5170 MemOperand(fp, 6 * kPointerSize), NULL); |
5177 } | 5171 } |
5178 | 5172 |
5179 | 5173 |
5180 #undef __ | 5174 #undef __ |
5181 | 5175 |
5182 } } // namespace v8::internal | 5176 } } // namespace v8::internal |
5183 | 5177 |
5184 #endif // V8_TARGET_ARCH_MIPS | 5178 #endif // V8_TARGET_ARCH_MIPS |
OLD | NEW |