5#ifndef V8_BASELINE_ARM64_BASELINE_COMPILER_ARM64_INL_H_
6#define V8_BASELINE_ARM64_BASELINE_COMPILER_ARM64_INL_H_
24 __ masm()->EnterFrame(StackFrame::BASELINE);
26 int max_frame_size =
bytecode_->max_frame_size();
31 __ masm()->AssertSpAligned();
33 __ masm()->AssertSpAligned();
39 interpreter::Register new_target_or_generator_register =
40 bytecode_->incoming_new_target_or_generator_register();
43 RootIndex::kUndefinedValue);
44 __ masm()->Assert(
eq, AbortReason::kUnexpectedValue);
46 int register_count =
bytecode_->register_count();
48 const int kLoopUnrollSize = 8;
49 const int new_target_index = new_target_or_generator_register.index();
50 const bool has_new_target = new_target_index !=
kMaxInt;
52 DCHECK_LE(new_target_index, register_count);
53 int before_new_target_count = 0;
54 for (; before_new_target_count + 2 <= new_target_index;
55 before_new_target_count += 2) {
59 if (before_new_target_count == new_target_index) {
63 DCHECK_EQ(before_new_target_count + 1, new_target_index);
69 register_count -= (before_new_target_count + 2);
71 if (register_count < 2 * kLoopUnrollSize) {
73 for (
int i = 0;
i < register_count;
i += 2) {
78 BaselineAssembler::ScratchRegisterScope temps(&
basm_);
79 Register scratch = temps.AcquireScratch();
82 int first_registers = register_count % kLoopUnrollSize;
83 for (
int i = 0;
i < first_registers;
i += 2) {
87 __ Move(scratch, register_count / kLoopUnrollSize);
90 DCHECK_GT(register_count / kLoopUnrollSize, 0);
93 for (
int i = 0;
i < kLoopUnrollSize;
i += 2) {
97 __ masm()->Subs(scratch, scratch, 1);
98 __ masm()->B(
gt, &loop);
104 __ masm()->Add(x15, sp,
108 __ masm()->Cmp(x15, fp);
109 __ masm()->Assert(
eq, AbortReason::kUnexpectedStackPointer);
static constexpr int kFixedFrameSizeFromFp
void CallBuiltin(Args... args)
Handle< BytecodeArray > bytecode_
#define ASM_CODE_COMMENT(asm)
constexpr BuiltinCallJumpMode kFallbackBuiltinCallJumpModeForBaseline
constexpr Register kJavaScriptCallTargetRegister
constexpr Register kJavaScriptCallArgCountRegister
constexpr Register kInterpreterAccumulatorRegister
constexpr int kSystemPointerSize
constexpr Register kContextRegister
V8_EXPORT_PRIVATE FlagValues v8_flags
constexpr Register kJavaScriptCallNewTargetRegister
constexpr Register kJSFunctionRegister
#define DCHECK_LE(v1, v2)
#define DCHECK_EQ(v1, v2)
#define DCHECK_GT(v1, v2)
constexpr T RoundUp(T x, intptr_t m)