| 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 2728 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2739   __ lw(vector, FieldMemOperand(vector, |  2739   __ lw(vector, FieldMemOperand(vector, | 
|  2740                                 JSFunction::kSharedFunctionInfoOffset)); |  2740                                 JSFunction::kSharedFunctionInfoOffset)); | 
|  2741   __ lw(vector, FieldMemOperand(vector, |  2741   __ lw(vector, FieldMemOperand(vector, | 
|  2742                                 SharedFunctionInfo::kFeedbackVectorOffset)); |  2742                                 SharedFunctionInfo::kFeedbackVectorOffset)); | 
|  2743 } |  2743 } | 
|  2744  |  2744  | 
|  2745  |  2745  | 
|  2746 void CallIC_ArrayStub::Generate(MacroAssembler* masm) { |  2746 void CallIC_ArrayStub::Generate(MacroAssembler* masm) { | 
|  2747   // a1 - function |  2747   // a1 - function | 
|  2748   // a3 - slot id |  2748   // a3 - slot id | 
 |  2749   // a2 - vector | 
|  2749   Label miss; |  2750   Label miss; | 
|  2750  |  2751  | 
|  2751   EmitLoadTypeFeedbackVector(masm, a2); |  | 
|  2752  |  | 
|  2753   __ LoadGlobalFunction(Context::ARRAY_FUNCTION_INDEX, at); |  2752   __ LoadGlobalFunction(Context::ARRAY_FUNCTION_INDEX, at); | 
|  2754   __ Branch(&miss, ne, a1, Operand(at)); |  2753   __ Branch(&miss, ne, a1, Operand(at)); | 
|  2755  |  2754  | 
|  2756   __ li(a0, Operand(arg_count())); |  2755   __ li(a0, Operand(arg_count())); | 
|  2757   __ sll(at, a3, kPointerSizeLog2 - kSmiTagSize); |  2756   __ sll(at, a3, kPointerSizeLog2 - kSmiTagSize); | 
|  2758   __ Addu(at, a2, Operand(at)); |  2757   __ Addu(at, a2, Operand(at)); | 
|  2759   __ lw(t0, FieldMemOperand(at, FixedArray::kHeaderSize)); |  2758   __ lw(t0, FieldMemOperand(at, FixedArray::kHeaderSize)); | 
|  2760  |  2759  | 
|  2761   // Verify that t0 contains an AllocationSite |  2760   // Verify that t0 contains an AllocationSite | 
|  2762   __ lw(t1, FieldMemOperand(t0, HeapObject::kMapOffset)); |  2761   __ lw(t1, FieldMemOperand(t0, HeapObject::kMapOffset)); | 
| (...skipping 14 matching lines...) Expand all  Loading... | 
|  2777                          CallAsMethod()); |  2776                          CallAsMethod()); | 
|  2778  |  2777  | 
|  2779   // Unreachable. |  2778   // Unreachable. | 
|  2780   __ stop("Unexpected code address"); |  2779   __ stop("Unexpected code address"); | 
|  2781 } |  2780 } | 
|  2782  |  2781  | 
|  2783  |  2782  | 
|  2784 void CallICStub::Generate(MacroAssembler* masm) { |  2783 void CallICStub::Generate(MacroAssembler* masm) { | 
|  2785   // a1 - function |  2784   // a1 - function | 
|  2786   // a3 - slot id (Smi) |  2785   // a3 - slot id (Smi) | 
 |  2786   // a2 - vector | 
|  2787   const int with_types_offset = |  2787   const int with_types_offset = | 
|  2788       FixedArray::OffsetOfElementAt(TypeFeedbackVector::kWithTypesIndex); |  2788       FixedArray::OffsetOfElementAt(TypeFeedbackVector::kWithTypesIndex); | 
|  2789   const int generic_offset = |  2789   const int generic_offset = | 
|  2790       FixedArray::OffsetOfElementAt(TypeFeedbackVector::kGenericCountIndex); |  2790       FixedArray::OffsetOfElementAt(TypeFeedbackVector::kGenericCountIndex); | 
|  2791   Label extra_checks_or_miss, slow_start; |  2791   Label extra_checks_or_miss, slow_start; | 
|  2792   Label slow, non_function, wrap, cont; |  2792   Label slow, non_function, wrap, cont; | 
|  2793   Label have_js_function; |  2793   Label have_js_function; | 
|  2794   int argc = arg_count(); |  2794   int argc = arg_count(); | 
|  2795   ParameterCount actual(argc); |  2795   ParameterCount actual(argc); | 
|  2796  |  2796  | 
|  2797   EmitLoadTypeFeedbackVector(masm, a2); |  | 
|  2798  |  | 
|  2799   // The checks. First, does r1 match the recorded monomorphic target? |  2797   // The checks. First, does r1 match the recorded monomorphic target? | 
|  2800   __ sll(t0, a3, kPointerSizeLog2 - kSmiTagSize); |  2798   __ sll(t0, a3, kPointerSizeLog2 - kSmiTagSize); | 
|  2801   __ Addu(t0, a2, Operand(t0)); |  2799   __ Addu(t0, a2, Operand(t0)); | 
|  2802   __ lw(t0, FieldMemOperand(t0, FixedArray::kHeaderSize)); |  2800   __ lw(t0, FieldMemOperand(t0, FixedArray::kHeaderSize)); | 
|  2803   __ Branch(&extra_checks_or_miss, ne, a1, Operand(t0)); |  2801   __ Branch(&extra_checks_or_miss, ne, a1, Operand(t0)); | 
|  2804  |  2802  | 
|  2805   __ bind(&have_js_function); |  2803   __ bind(&have_js_function); | 
|  2806   if (CallAsMethod()) { |  2804   if (CallAsMethod()) { | 
|  2807     EmitContinueIfStrictOrNative(masm, &cont); |  2805     EmitContinueIfStrictOrNative(masm, &cont); | 
|  2808     // Compute the receiver in sloppy mode. |  2806     // Compute the receiver in sloppy mode. | 
| (...skipping 1663 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  4472 } |  4470 } | 
|  4473  |  4471  | 
|  4474  |  4472  | 
|  4475 void KeyedLoadICTrampolineStub::Generate(MacroAssembler* masm) { |  4473 void KeyedLoadICTrampolineStub::Generate(MacroAssembler* masm) { | 
|  4476   EmitLoadTypeFeedbackVector(masm, VectorLoadICDescriptor::VectorRegister()); |  4474   EmitLoadTypeFeedbackVector(masm, VectorLoadICDescriptor::VectorRegister()); | 
|  4477   VectorKeyedLoadStub stub(isolate()); |  4475   VectorKeyedLoadStub stub(isolate()); | 
|  4478   __ Jump(stub.GetCode(), RelocInfo::CODE_TARGET); |  4476   __ Jump(stub.GetCode(), RelocInfo::CODE_TARGET); | 
|  4479 } |  4477 } | 
|  4480  |  4478  | 
|  4481  |  4479  | 
 |  4480 void CallICTrampolineStub::Generate(MacroAssembler* masm) { | 
 |  4481   EmitLoadTypeFeedbackVector(masm, a2); | 
 |  4482   CallICStub stub(isolate(), state()); | 
 |  4483   __ Jump(stub.GetCode(), RelocInfo::CODE_TARGET); | 
 |  4484 } | 
 |  4485  | 
 |  4486  | 
 |  4487 void CallIC_ArrayTrampolineStub::Generate(MacroAssembler* masm) { | 
 |  4488   EmitLoadTypeFeedbackVector(masm, a2); | 
 |  4489   CallIC_ArrayStub stub(isolate(), state()); | 
 |  4490   __ Jump(stub.GetCode(), RelocInfo::CODE_TARGET); | 
 |  4491 } | 
 |  4492  | 
 |  4493  | 
|  4482 void ProfileEntryHookStub::MaybeCallEntryHook(MacroAssembler* masm) { |  4494 void ProfileEntryHookStub::MaybeCallEntryHook(MacroAssembler* masm) { | 
|  4483   if (masm->isolate()->function_entry_hook() != NULL) { |  4495   if (masm->isolate()->function_entry_hook() != NULL) { | 
|  4484     ProfileEntryHookStub stub(masm->isolate()); |  4496     ProfileEntryHookStub stub(masm->isolate()); | 
|  4485     __ push(ra); |  4497     __ push(ra); | 
|  4486     __ CallStub(&stub); |  4498     __ CallStub(&stub); | 
|  4487     __ pop(ra); |  4499     __ pop(ra); | 
|  4488   } |  4500   } | 
|  4489 } |  4501 } | 
|  4490  |  4502  | 
|  4491  |  4503  | 
| (...skipping 647 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  5139                            kStackUnwindSpace, kInvalidStackOffset, |  5151                            kStackUnwindSpace, kInvalidStackOffset, | 
|  5140                            MemOperand(fp, 6 * kPointerSize), NULL); |  5152                            MemOperand(fp, 6 * kPointerSize), NULL); | 
|  5141 } |  5153 } | 
|  5142  |  5154  | 
|  5143  |  5155  | 
|  5144 #undef __ |  5156 #undef __ | 
|  5145  |  5157  | 
|  5146 } }  // namespace v8::internal |  5158 } }  // namespace v8::internal | 
|  5147  |  5159  | 
|  5148 #endif  // V8_TARGET_ARCH_MIPS |  5160 #endif  // V8_TARGET_ARCH_MIPS | 
| OLD | NEW |