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 10 matching lines...) Expand all Loading... |
21 | 21 |
22 | 22 |
23 static void InitializeArrayConstructorDescriptor( | 23 static void InitializeArrayConstructorDescriptor( |
24 Isolate* isolate, CodeStub::Major major, | 24 Isolate* isolate, CodeStub::Major major, |
25 CodeStubInterfaceDescriptor* descriptor, | 25 CodeStubInterfaceDescriptor* descriptor, |
26 int constant_stack_parameter_count) { | 26 int constant_stack_parameter_count) { |
27 Address deopt_handler = Runtime::FunctionForId( | 27 Address deopt_handler = Runtime::FunctionForId( |
28 Runtime::kArrayConstructor)->entry; | 28 Runtime::kArrayConstructor)->entry; |
29 | 29 |
30 if (constant_stack_parameter_count == 0) { | 30 if (constant_stack_parameter_count == 0) { |
31 CallInterfaceDescriptor* call_descriptor = isolate->call_descriptor( | 31 ArrayConstructorConstantArgCountDescriptor call_descriptor(isolate); |
32 CallDescriptorKey::ArrayConstructorConstantArgCountCall); | |
33 descriptor->Initialize(major, call_descriptor, deopt_handler, | 32 descriptor->Initialize(major, call_descriptor, deopt_handler, |
34 constant_stack_parameter_count, | 33 constant_stack_parameter_count, |
35 JS_FUNCTION_STUB_MODE); | 34 JS_FUNCTION_STUB_MODE); |
36 } else { | 35 } else { |
37 CallInterfaceDescriptor* call_descriptor = | 36 ArrayConstructorDescriptor call_descriptor(isolate); |
38 isolate->call_descriptor(CallDescriptorKey::ArrayConstructorCall); | |
39 descriptor->Initialize(major, call_descriptor, a0, deopt_handler, | 37 descriptor->Initialize(major, call_descriptor, a0, deopt_handler, |
40 constant_stack_parameter_count, | 38 constant_stack_parameter_count, |
41 JS_FUNCTION_STUB_MODE, PASS_ARGUMENTS); | 39 JS_FUNCTION_STUB_MODE, PASS_ARGUMENTS); |
42 } | 40 } |
43 } | 41 } |
44 | 42 |
45 | 43 |
46 static void InitializeInternalArrayConstructorDescriptor( | 44 static void InitializeInternalArrayConstructorDescriptor( |
47 Isolate* isolate, CodeStub::Major major, | 45 Isolate* isolate, CodeStub::Major major, |
48 CodeStubInterfaceDescriptor* descriptor, | 46 CodeStubInterfaceDescriptor* descriptor, |
49 int constant_stack_parameter_count) { | 47 int constant_stack_parameter_count) { |
50 Address deopt_handler = Runtime::FunctionForId( | 48 Address deopt_handler = Runtime::FunctionForId( |
51 Runtime::kInternalArrayConstructor)->entry; | 49 Runtime::kInternalArrayConstructor)->entry; |
52 | 50 |
53 if (constant_stack_parameter_count == 0) { | 51 if (constant_stack_parameter_count == 0) { |
54 CallInterfaceDescriptor* call_descriptor = isolate->call_descriptor( | 52 InternalArrayConstructorConstantArgCountDescriptor call_descriptor(isolate); |
55 CallDescriptorKey::InternalArrayConstructorConstantArgCountCall); | |
56 descriptor->Initialize(major, call_descriptor, deopt_handler, | 53 descriptor->Initialize(major, call_descriptor, deopt_handler, |
57 constant_stack_parameter_count, | 54 constant_stack_parameter_count, |
58 JS_FUNCTION_STUB_MODE); | 55 JS_FUNCTION_STUB_MODE); |
59 } else { | 56 } else { |
60 CallInterfaceDescriptor* call_descriptor = isolate->call_descriptor( | 57 InternalArrayConstructorDescriptor call_descriptor(isolate); |
61 CallDescriptorKey::InternalArrayConstructorCall); | |
62 descriptor->Initialize(major, call_descriptor, a0, deopt_handler, | 58 descriptor->Initialize(major, call_descriptor, a0, deopt_handler, |
63 constant_stack_parameter_count, | 59 constant_stack_parameter_count, |
64 JS_FUNCTION_STUB_MODE, PASS_ARGUMENTS); | 60 JS_FUNCTION_STUB_MODE, PASS_ARGUMENTS); |
65 } | 61 } |
66 } | 62 } |
67 | 63 |
68 | 64 |
69 void ArrayNoArgumentConstructorStub::InitializeInterfaceDescriptor( | 65 void ArrayNoArgumentConstructorStub::InitializeInterfaceDescriptor( |
70 CodeStubInterfaceDescriptor* descriptor) { | 66 CodeStubInterfaceDescriptor* descriptor) { |
71 InitializeArrayConstructorDescriptor(isolate(), MajorKey(), descriptor, 0); | 67 InitializeArrayConstructorDescriptor(isolate(), MajorKey(), descriptor, 0); |
(...skipping 1636 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1708 __ LoadRoot(v0, Heap::kTrueValueRootIndex); | 1704 __ LoadRoot(v0, Heap::kTrueValueRootIndex); |
1709 __ DropAndRet(HasArgsInRegisters() ? 0 : 2, eq, a0, Operand(zero_reg)); | 1705 __ DropAndRet(HasArgsInRegisters() ? 0 : 2, eq, a0, Operand(zero_reg)); |
1710 __ LoadRoot(v0, Heap::kFalseValueRootIndex); | 1706 __ LoadRoot(v0, Heap::kFalseValueRootIndex); |
1711 __ DropAndRet(HasArgsInRegisters() ? 0 : 2); | 1707 __ DropAndRet(HasArgsInRegisters() ? 0 : 2); |
1712 } | 1708 } |
1713 } | 1709 } |
1714 | 1710 |
1715 | 1711 |
1716 void FunctionPrototypeStub::Generate(MacroAssembler* masm) { | 1712 void FunctionPrototypeStub::Generate(MacroAssembler* masm) { |
1717 Label miss; | 1713 Label miss; |
1718 Register receiver = LoadConvention::ReceiverRegister(); | 1714 Register receiver = LoadDescriptor::ReceiverRegister(); |
1719 NamedLoadHandlerCompiler::GenerateLoadFunctionPrototype(masm, receiver, a3, | 1715 NamedLoadHandlerCompiler::GenerateLoadFunctionPrototype(masm, receiver, a3, |
1720 t0, &miss); | 1716 t0, &miss); |
1721 __ bind(&miss); | 1717 __ bind(&miss); |
1722 PropertyAccessCompiler::TailCallBuiltin( | 1718 PropertyAccessCompiler::TailCallBuiltin( |
1723 masm, PropertyAccessCompiler::MissBuiltin(Code::LOAD_IC)); | 1719 masm, PropertyAccessCompiler::MissBuiltin(Code::LOAD_IC)); |
1724 } | 1720 } |
1725 | 1721 |
1726 | 1722 |
1727 void ArgumentsAccessStub::GenerateReadElement(MacroAssembler* masm) { | 1723 void ArgumentsAccessStub::GenerateReadElement(MacroAssembler* masm) { |
1728 // The displacement is the offset of the last parameter (if any) | 1724 // The displacement is the offset of the last parameter (if any) |
(...skipping 2807 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4536 __ Addu(a1, a1, Operand(1)); | 4532 __ Addu(a1, a1, Operand(1)); |
4537 } | 4533 } |
4538 masm->LeaveFrame(StackFrame::STUB_FAILURE_TRAMPOLINE); | 4534 masm->LeaveFrame(StackFrame::STUB_FAILURE_TRAMPOLINE); |
4539 __ sll(a1, a1, kPointerSizeLog2); | 4535 __ sll(a1, a1, kPointerSizeLog2); |
4540 __ Ret(USE_DELAY_SLOT); | 4536 __ Ret(USE_DELAY_SLOT); |
4541 __ Addu(sp, sp, a1); | 4537 __ Addu(sp, sp, a1); |
4542 } | 4538 } |
4543 | 4539 |
4544 | 4540 |
4545 void LoadICTrampolineStub::Generate(MacroAssembler* masm) { | 4541 void LoadICTrampolineStub::Generate(MacroAssembler* masm) { |
4546 EmitLoadTypeFeedbackVector(masm, FullVectorLoadConvention::VectorRegister()); | 4542 EmitLoadTypeFeedbackVector(masm, VectorLoadICDescriptor::VectorRegister()); |
4547 VectorLoadStub stub(isolate(), state()); | 4543 VectorLoadStub stub(isolate(), state()); |
4548 __ Jump(stub.GetCode(), RelocInfo::CODE_TARGET); | 4544 __ Jump(stub.GetCode(), RelocInfo::CODE_TARGET); |
4549 } | 4545 } |
4550 | 4546 |
4551 | 4547 |
4552 void KeyedLoadICTrampolineStub::Generate(MacroAssembler* masm) { | 4548 void KeyedLoadICTrampolineStub::Generate(MacroAssembler* masm) { |
4553 EmitLoadTypeFeedbackVector(masm, FullVectorLoadConvention::VectorRegister()); | 4549 EmitLoadTypeFeedbackVector(masm, VectorLoadICDescriptor::VectorRegister()); |
4554 VectorKeyedLoadStub stub(isolate()); | 4550 VectorKeyedLoadStub stub(isolate()); |
4555 __ Jump(stub.GetCode(), RelocInfo::CODE_TARGET); | 4551 __ Jump(stub.GetCode(), RelocInfo::CODE_TARGET); |
4556 } | 4552 } |
4557 | 4553 |
4558 | 4554 |
4559 void ProfileEntryHookStub::MaybeCallEntryHook(MacroAssembler* masm) { | 4555 void ProfileEntryHookStub::MaybeCallEntryHook(MacroAssembler* masm) { |
4560 if (masm->isolate()->function_entry_hook() != NULL) { | 4556 if (masm->isolate()->function_entry_hook() != NULL) { |
4561 ProfileEntryHookStub stub(masm->isolate()); | 4557 ProfileEntryHookStub stub(masm->isolate()); |
4562 __ push(ra); | 4558 __ push(ra); |
4563 __ CallStub(&stub); | 4559 __ CallStub(&stub); |
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5045 MemOperand(fp, 6 * kPointerSize), | 5041 MemOperand(fp, 6 * kPointerSize), |
5046 NULL); | 5042 NULL); |
5047 } | 5043 } |
5048 | 5044 |
5049 | 5045 |
5050 #undef __ | 5046 #undef __ |
5051 | 5047 |
5052 } } // namespace v8::internal | 5048 } } // namespace v8::internal |
5053 | 5049 |
5054 #endif // V8_TARGET_ARCH_MIPS | 5050 #endif // V8_TARGET_ARCH_MIPS |
OLD | NEW |