OLD | NEW |
---|---|
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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_ARM64 | 7 #if V8_TARGET_ARCH_ARM64 |
8 | 8 |
9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
(...skipping 4582 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4593 if (function_mode_ == JS_FUNCTION_STUB_MODE) { | 4593 if (function_mode_ == JS_FUNCTION_STUB_MODE) { |
4594 __ Add(x1, x1, 1); | 4594 __ Add(x1, x1, 1); |
4595 } | 4595 } |
4596 masm->LeaveFrame(StackFrame::STUB_FAILURE_TRAMPOLINE); | 4596 masm->LeaveFrame(StackFrame::STUB_FAILURE_TRAMPOLINE); |
4597 __ Drop(x1); | 4597 __ Drop(x1); |
4598 // Return to IC Miss stub, continuation still on stack. | 4598 // Return to IC Miss stub, continuation still on stack. |
4599 __ Ret(); | 4599 __ Ret(); |
4600 } | 4600 } |
4601 | 4601 |
4602 | 4602 |
4603 void LoadICTrampolineStub::Generate(MacroAssembler* masm) { | |
Toon Verwaest
2014/08/26 13:26:57
Why not make this virtual?
| |
4604 EmitLoadTypeFeedbackVector(masm, FullVectorLoadConvention::VectorRegister()); | |
4605 if (GetCodeKind() == Code::KEYED_LOAD_IC) { | |
4606 VectorKeyedLoadStub stub(isolate()); | |
4607 __ Jump(stub.GetCode(), RelocInfo::CODE_TARGET); | |
4608 } else { | |
4609 DCHECK(GetCodeKind() == Code::LOAD_IC); | |
4610 VectorLoadStub stub(isolate(), state_); | |
4611 __ Jump(stub.GetCode(), RelocInfo::CODE_TARGET); | |
4612 } | |
4613 } | |
4614 | |
4615 | |
4603 static unsigned int GetProfileEntryHookCallSize(MacroAssembler* masm) { | 4616 static unsigned int GetProfileEntryHookCallSize(MacroAssembler* masm) { |
4604 // The entry hook is a "BumpSystemStackPointer" instruction (sub), | 4617 // The entry hook is a "BumpSystemStackPointer" instruction (sub), |
4605 // followed by a "Push lr" instruction, followed by a call. | 4618 // followed by a "Push lr" instruction, followed by a call. |
4606 unsigned int size = | 4619 unsigned int size = |
4607 Assembler::kCallSizeWithRelocation + (2 * kInstructionSize); | 4620 Assembler::kCallSizeWithRelocation + (2 * kInstructionSize); |
4608 if (CpuFeatures::IsSupported(ALWAYS_ALIGN_CSP)) { | 4621 if (CpuFeatures::IsSupported(ALWAYS_ALIGN_CSP)) { |
4609 // If ALWAYS_ALIGN_CSP then there will be an extra bic instruction in | 4622 // If ALWAYS_ALIGN_CSP then there will be an extra bic instruction in |
4610 // "BumpSystemStackPointer". | 4623 // "BumpSystemStackPointer". |
4611 size += kInstructionSize; | 4624 size += kInstructionSize; |
4612 } | 4625 } |
(...skipping 810 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
5423 MemOperand(fp, 6 * kPointerSize), | 5436 MemOperand(fp, 6 * kPointerSize), |
5424 NULL); | 5437 NULL); |
5425 } | 5438 } |
5426 | 5439 |
5427 | 5440 |
5428 #undef __ | 5441 #undef __ |
5429 | 5442 |
5430 } } // namespace v8::internal | 5443 } } // namespace v8::internal |
5431 | 5444 |
5432 #endif // V8_TARGET_ARCH_ARM64 | 5445 #endif // V8_TARGET_ARCH_ARM64 |
OLD | NEW |