5#ifndef V8_BASELINE_IA32_BASELINE_COMPILER_IA32_INL_H_
6#define V8_BASELINE_IA32_BASELINE_COMPILER_IA32_INL_H_
25 int max_frame_size =
bytecode_->max_frame_size();
36 interpreter::Register new_target_or_generator_register =
37 bytecode_->incoming_new_target_or_generator_register();
40 RootIndex::kUndefinedValue);
41 __ masm()->Assert(
equal, AbortReason::kUnexpectedValue);
43 int register_count =
bytecode_->register_count();
45 const int kLoopUnrollSize = 8;
46 const int new_target_index = new_target_or_generator_register.index();
47 const bool has_new_target = new_target_index !=
kMaxInt;
49 DCHECK_LE(new_target_index, register_count);
50 for (
int i = 0;
i < new_target_index;
i++) {
55 register_count -= new_target_index + 1;
57 if (register_count < 2 * kLoopUnrollSize) {
59 for (
int i = 0;
i < register_count; ++
i) {
64 int first_registers = register_count % kLoopUnrollSize;
65 for (
int i = 0;
i < first_registers; ++
i) {
68 BaselineAssembler::ScratchRegisterScope scope(&
basm_);
69 Register scratch = scope.AcquireScratch();
70 __ Move(scratch, register_count / kLoopUnrollSize);
73 DCHECK_GT(register_count / kLoopUnrollSize, 0);
76 for (
int i = 0;
i < kLoopUnrollSize; ++
i) {
79 __ masm()->dec(scratch);
85 __ masm()->movd(xmm0, eax);
90 __ masm()->cmp(eax, ebp);
91 __ masm()->Assert(
equal, AbortReason::kUnexpectedStackPointer);
92 __ masm()->movd(eax, xmm0);
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 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)