5#ifndef V8_CODEGEN_MACRO_ASSEMBLER_H_
6#define V8_CODEGEN_MACRO_ASSEMBLER_H_
57#define INCLUDED_FROM_MACRO_ASSEMBLER_H
58#if V8_TARGET_ARCH_IA32
60#elif V8_TARGET_ARCH_X64
62#elif V8_TARGET_ARCH_ARM64
65#elif V8_TARGET_ARCH_ARM
68#elif V8_TARGET_ARCH_PPC64
71#elif V8_TARGET_ARCH_MIPS64
74#elif V8_TARGET_ARCH_LOONG64
77#elif V8_TARGET_ARCH_S390X
80#elif V8_TARGET_ARCH_RISCV32 || V8_TARGET_ARCH_RISCV64
84#error Unsupported target architecture.
86#undef INCLUDED_FROM_MACRO_ASSEMBLER_H
105#ifdef V8_CODE_COMMENTS
106 comment_(masm, frame_name(type), loc),
110 old_has_frame_(masm->has_frame()) {
112 if (type != StackFrame::MANUAL &&
type_ != StackFrame::NO_FRAME_TYPE) {
118 if (
type_ != StackFrame::MANUAL &&
type_ != StackFrame::NO_FRAME_TYPE) {
121 masm_->set_has_frame(old_has_frame_);
125#ifdef V8_CODE_COMMENTS
128 case StackFrame::NO_FRAME_TYPE:
129 return "Frame: NO_FRAME_TYPE";
130 case StackFrame::MANUAL:
131 return "Frame: MANUAL";
132#define FRAME_TYPE_CASE(type, field) \
133 case StackFrame::type: \
134 return "Frame: " #type;
136#undef FRAME_TYPE_CASE
137 case StackFrame::NUMBER_OF_TYPES:
143 Assembler::CodeComment comment_;
156 old_has_frame_(masm->has_frame()),
158 masm->is_constant_pool_available()) {
163 if (
type_ != StackFrame::MANUAL &&
type_ != StackFrame::NO_FRAME_TYPE) {
164 masm->
EnterFrame(type, !old_constant_pool_available_);
170 masm_->set_has_frame(old_has_frame_);
172 masm_->set_constant_pool_available(old_constant_pool_available_);
191 assembler->is_constant_pool_available()) {
193 assembler->set_constant_pool_available(
false);
198 assembler_->set_constant_pool_available(old_constant_pool_available_);
220 :
masm_(masm), old_value_(masm->root_array_available()) {
AllowExternalCallThatCantCauseGC(MacroAssembler *masm)
void set_constant_pool_available(bool available)
int old_constant_pool_available_
DISALLOW_IMPLICIT_CONSTRUCTORS(ConstantPoolUnavailableScope)
~ConstantPoolUnavailableScope()
ConstantPoolUnavailableScope(Assembler *assembler)
~FrameAndConstantPoolScope()
bool old_constant_pool_available_
DISALLOW_IMPLICIT_CONSTRUCTORS(FrameAndConstantPoolScope)
FrameAndConstantPoolScope(MacroAssembler *masm, StackFrame::Type type)
StackFrame::Type const type_
bool const old_has_frame_
FrameScope(MacroAssembler *masm, StackFrame::Type type, const SourceLocation &loc=SourceLocation())
void set_has_frame(bool v)
void set_root_array_available(bool v)
void EnterFrame(StackFrame::Type type, bool load_constant_pool_pointer_reg=false)
NoRootArrayScope(MacroAssembler *masm)
#define V8_EMBEDDED_CONSTANT_POOL_BOOL
BytecodeAssembler & assembler_
#define FRAME_TYPE_CASE(type, class)
#define STACK_FRAME_TYPE_LIST(V)
MaglevAssembler *const masm_
static constexpr int kMaxCParameters