| 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_MIPS | 5 #if V8_TARGET_ARCH_MIPS | 
| 6 | 6 | 
| 7 #include "src/base/bits.h" | 7 #include "src/base/bits.h" | 
| 8 #include "src/bootstrapper.h" | 8 #include "src/bootstrapper.h" | 
| 9 #include "src/code-stubs.h" | 9 #include "src/code-stubs.h" | 
| 10 #include "src/codegen.h" | 10 #include "src/codegen.h" | 
| (...skipping 2614 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2625   __ lw(t0, FieldMemOperand(t0, SharedFunctionInfo::kConstructStubOffset)); | 2625   __ lw(t0, FieldMemOperand(t0, SharedFunctionInfo::kConstructStubOffset)); | 
| 2626   __ Addu(at, t0, Operand(Code::kHeaderSize - kHeapObjectTag)); | 2626   __ Addu(at, t0, Operand(Code::kHeaderSize - kHeapObjectTag)); | 
| 2627   __ Jump(at); | 2627   __ Jump(at); | 
| 2628 | 2628 | 
| 2629   __ bind(&non_function); | 2629   __ bind(&non_function); | 
| 2630   __ mov(a3, a1); | 2630   __ mov(a3, a1); | 
| 2631   __ Jump(isolate()->builtins()->Construct(), RelocInfo::CODE_TARGET); | 2631   __ Jump(isolate()->builtins()->Construct(), RelocInfo::CODE_TARGET); | 
| 2632 } | 2632 } | 
| 2633 | 2633 | 
| 2634 | 2634 | 
| 2635 static void EmitLoadTypeFeedbackVector(MacroAssembler* masm, Register vector) { |  | 
| 2636   __ lw(vector, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset)); |  | 
| 2637   __ lw(vector, FieldMemOperand(vector, |  | 
| 2638                                 JSFunction::kSharedFunctionInfoOffset)); |  | 
| 2639   __ lw(vector, FieldMemOperand(vector, |  | 
| 2640                                 SharedFunctionInfo::kFeedbackVectorOffset)); |  | 
| 2641 } |  | 
| 2642 |  | 
| 2643 |  | 
| 2644 void CallICStub::HandleArrayCase(MacroAssembler* masm, Label* miss) { | 2635 void CallICStub::HandleArrayCase(MacroAssembler* masm, Label* miss) { | 
| 2645   // a1 - function | 2636   // a1 - function | 
| 2646   // a3 - slot id | 2637   // a3 - slot id | 
| 2647   // a2 - vector | 2638   // a2 - vector | 
| 2648   // t0 - loaded from vector[slot] | 2639   // t0 - loaded from vector[slot] | 
| 2649   __ LoadGlobalFunction(Context::ARRAY_FUNCTION_INDEX, at); | 2640   __ LoadGlobalFunction(Context::ARRAY_FUNCTION_INDEX, at); | 
| 2650   __ Branch(miss, ne, a1, Operand(at)); | 2641   __ Branch(miss, ne, a1, Operand(at)); | 
| 2651 | 2642 | 
| 2652   __ li(a0, Operand(arg_count())); | 2643   __ li(a0, Operand(arg_count())); | 
| 2653 | 2644 | 
| (...skipping 1797 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 4451     __ Addu(a1, a1, Operand(1)); | 4442     __ Addu(a1, a1, Operand(1)); | 
| 4452   } | 4443   } | 
| 4453   masm->LeaveFrame(StackFrame::STUB_FAILURE_TRAMPOLINE); | 4444   masm->LeaveFrame(StackFrame::STUB_FAILURE_TRAMPOLINE); | 
| 4454   __ sll(a1, a1, kPointerSizeLog2); | 4445   __ sll(a1, a1, kPointerSizeLog2); | 
| 4455   __ Ret(USE_DELAY_SLOT); | 4446   __ Ret(USE_DELAY_SLOT); | 
| 4456   __ Addu(sp, sp, a1); | 4447   __ Addu(sp, sp, a1); | 
| 4457 } | 4448 } | 
| 4458 | 4449 | 
| 4459 | 4450 | 
| 4460 void LoadICTrampolineStub::Generate(MacroAssembler* masm) { | 4451 void LoadICTrampolineStub::Generate(MacroAssembler* masm) { | 
| 4461   EmitLoadTypeFeedbackVector(masm, LoadWithVectorDescriptor::VectorRegister()); | 4452   __ EmitLoadTypeFeedbackVector(LoadWithVectorDescriptor::VectorRegister()); | 
| 4462   LoadICStub stub(isolate(), state()); | 4453   LoadICStub stub(isolate(), state()); | 
| 4463   stub.GenerateForTrampoline(masm); | 4454   stub.GenerateForTrampoline(masm); | 
| 4464 } | 4455 } | 
| 4465 | 4456 | 
| 4466 | 4457 | 
| 4467 void KeyedLoadICTrampolineStub::Generate(MacroAssembler* masm) { | 4458 void KeyedLoadICTrampolineStub::Generate(MacroAssembler* masm) { | 
| 4468   EmitLoadTypeFeedbackVector(masm, LoadWithVectorDescriptor::VectorRegister()); | 4459   __ EmitLoadTypeFeedbackVector(LoadWithVectorDescriptor::VectorRegister()); | 
| 4469   KeyedLoadICStub stub(isolate(), state()); | 4460   KeyedLoadICStub stub(isolate(), state()); | 
| 4470   stub.GenerateForTrampoline(masm); | 4461   stub.GenerateForTrampoline(masm); | 
| 4471 } | 4462 } | 
| 4472 | 4463 | 
| 4473 | 4464 | 
| 4474 void CallICTrampolineStub::Generate(MacroAssembler* masm) { | 4465 void CallICTrampolineStub::Generate(MacroAssembler* masm) { | 
| 4475   EmitLoadTypeFeedbackVector(masm, a2); | 4466   __ EmitLoadTypeFeedbackVector(a2); | 
| 4476   CallICStub stub(isolate(), state()); | 4467   CallICStub stub(isolate(), state()); | 
| 4477   __ Jump(stub.GetCode(), RelocInfo::CODE_TARGET); | 4468   __ Jump(stub.GetCode(), RelocInfo::CODE_TARGET); | 
| 4478 } | 4469 } | 
| 4479 | 4470 | 
| 4480 | 4471 | 
| 4481 void LoadICStub::Generate(MacroAssembler* masm) { GenerateImpl(masm, false); } | 4472 void LoadICStub::Generate(MacroAssembler* masm) { GenerateImpl(masm, false); } | 
| 4482 | 4473 | 
| 4483 | 4474 | 
| 4484 void LoadICStub::GenerateForTrampoline(MacroAssembler* masm) { | 4475 void LoadICStub::GenerateForTrampoline(MacroAssembler* masm) { | 
| 4485   GenerateImpl(masm, true); | 4476   GenerateImpl(masm, true); | 
| (...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 4686   __ bind(&miss); | 4677   __ bind(&miss); | 
| 4687   KeyedLoadIC::GenerateMiss(masm); | 4678   KeyedLoadIC::GenerateMiss(masm); | 
| 4688 | 4679 | 
| 4689   __ bind(&load_smi_map); | 4680   __ bind(&load_smi_map); | 
| 4690   __ LoadRoot(receiver_map, Heap::kHeapNumberMapRootIndex); | 4681   __ LoadRoot(receiver_map, Heap::kHeapNumberMapRootIndex); | 
| 4691   __ jmp(&compare_map); | 4682   __ jmp(&compare_map); | 
| 4692 } | 4683 } | 
| 4693 | 4684 | 
| 4694 | 4685 | 
| 4695 void VectorStoreICTrampolineStub::Generate(MacroAssembler* masm) { | 4686 void VectorStoreICTrampolineStub::Generate(MacroAssembler* masm) { | 
| 4696   EmitLoadTypeFeedbackVector(masm, VectorStoreICDescriptor::VectorRegister()); | 4687   __ EmitLoadTypeFeedbackVector(VectorStoreICDescriptor::VectorRegister()); | 
| 4697   VectorStoreICStub stub(isolate(), state()); | 4688   VectorStoreICStub stub(isolate(), state()); | 
| 4698   stub.GenerateForTrampoline(masm); | 4689   stub.GenerateForTrampoline(masm); | 
| 4699 } | 4690 } | 
| 4700 | 4691 | 
| 4701 | 4692 | 
| 4702 void VectorKeyedStoreICTrampolineStub::Generate(MacroAssembler* masm) { | 4693 void VectorKeyedStoreICTrampolineStub::Generate(MacroAssembler* masm) { | 
| 4703   EmitLoadTypeFeedbackVector(masm, VectorStoreICDescriptor::VectorRegister()); | 4694   __ EmitLoadTypeFeedbackVector(VectorStoreICDescriptor::VectorRegister()); | 
| 4704   VectorKeyedStoreICStub stub(isolate(), state()); | 4695   VectorKeyedStoreICStub stub(isolate(), state()); | 
| 4705   stub.GenerateForTrampoline(masm); | 4696   stub.GenerateForTrampoline(masm); | 
| 4706 } | 4697 } | 
| 4707 | 4698 | 
| 4708 | 4699 | 
| 4709 void VectorStoreICStub::Generate(MacroAssembler* masm) { | 4700 void VectorStoreICStub::Generate(MacroAssembler* masm) { | 
| 4710   GenerateImpl(masm, false); | 4701   GenerateImpl(masm, false); | 
| 4711 } | 4702 } | 
| 4712 | 4703 | 
| 4713 | 4704 | 
| (...skipping 1022 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 5736                            MemOperand(fp, 6 * kPointerSize), NULL); | 5727                            MemOperand(fp, 6 * kPointerSize), NULL); | 
| 5737 } | 5728 } | 
| 5738 | 5729 | 
| 5739 | 5730 | 
| 5740 #undef __ | 5731 #undef __ | 
| 5741 | 5732 | 
| 5742 }  // namespace internal | 5733 }  // namespace internal | 
| 5743 }  // namespace v8 | 5734 }  // namespace v8 | 
| 5744 | 5735 | 
| 5745 #endif  // V8_TARGET_ARCH_MIPS | 5736 #endif  // V8_TARGET_ARCH_MIPS | 
| OLD | NEW | 
|---|