5#ifndef V8_BASELINE_BASELINE_ASSEMBLER_H_
6#define V8_BASELINE_BASELINE_ASSEMBLER_H_
38 template <
typename Field>
61#if V8_STATIC_ROOTS_BOOL
64 inline void JumpIfJSAnyIsPrimitive(
Register heap_object,
Label* target,
125 template <
typename... T>
126 inline int Push(T... vals);
134 template <
typename... T>
150 template <
typename... T>
178#if V8_TARGET_ARCH_X64
201 int32_t weight,
Label* skip_interrupt_label);
212 Register context, uint32_t index, uint32_t depth,
219 int cell_index, uint32_t depth);
242#ifdef V8_ENABLE_CET_SHADOW_STACK
245 inline void MaybeEmitPlaceHolderForDeopt();
267#ifdef V8_CODE_COMMENTS
void JumpIfByte(Condition cc, Register value, int32_t byte, Label *target, Label::Distance distance=Label::kFar)
void PushReverse(T... vals)
V8_INLINE void RecordComment(const char *string)
void CallRuntime(Runtime::FunctionId function, int nargs)
void DecodeField(Register reg)
void JumpIf(Condition cc, Register lhs, const Operand &rhs, Label *target, Label::Distance distance=Label::kFar)
void AssertFeedbackCell(Register object)
void LoadFixedArrayElement(Register output, Register array, int32_t index)
static MemOperand RegisterFrameOperand(interpreter::Register interpreter_register)
Condition CheckSmi(Register value)
void JumpIfNotRoot(Register value, RootIndex index, Label *target, Label ::Distance distance=Label::kFar)
void JumpIfPointer(Condition cc, Register value, MemOperand operand, Label *target, Label::Distance distance=Label::kFar)
void Move(Register output, Register source)
void ExceptionHandler() const
static void EmitReturn(MacroAssembler *masm)
void MoveSmi(Register output, Register source)
void TestAndBranch(Register value, int mask, Condition cc, Label *target, Label::Distance distance=Label::kFar)
void LoadWord8Field(Register output, Register source, int offset)
void LoadWord16FieldZeroExtend(Register output, Register source, int offset)
void LoadMap(Register output, Register value)
void AddToInterruptBudgetAndJumpIfNotExceeded(int32_t weight, Label *skip_interrupt_label)
void LdaContextSlot(Register context, uint32_t index, uint32_t depth, CompressionMode compression_mode=CompressionMode::kDefault)
void LoadRegister(Register output, interpreter::Register source)
void LoadTaggedField(Register output, Register source, int offset)
void SmiUntag(Register value)
MemOperand ContextOperand()
void TailCallBuiltin(Builtin builtin)
void StoreRegister(interpreter::Register output, Register value)
void Jump(Label *target, Label::Distance distance=Label::kFar)
void LoadNativeContextSlot(Register output, uint32_t index)
void Switch(Register reg, int case_value_base, Label **labels, int num_labels)
void StaModuleVariable(Register context, Register value, int cell_index, uint32_t depth)
void CallBuiltin(Builtin builtin)
void LoadContext(Register output)
void LoadPrototype(Register prototype, Register object)
void JumpIfObjectTypeFast(Condition cc, Register object, InstanceType instance_type, Label *target, Label::Distance distance=Label::kFar)
void MoveMaybeSmi(Register output, Register source)
MemOperand FeedbackCellOperand()
void StoreTaggedFieldNoWriteBarrier(Register target, int offset, Register value)
void TryLoadOptimizedOsrCode(Register scratch_and_result, Register feedback_vector, FeedbackSlot slot, Label *on_result, Label::Distance distance)
void LoadFeedbackCell(Register output)
void LoadTaggedSignedFieldAndUntag(Register output, Register source, int offset)
ScratchRegisterScope * scratch_register_scope_
void GetCode(LocalIsolate *isolate, CodeDesc *desc)
void JumpIfInstanceType(Condition cc, Register map, InstanceType instance_type, Label *target, Label::Distance distance=Label::kFar)
void StoreContext(Register context)
void JumpIfImmediate(Condition cc, Register left, int right, Label *target, Label::Distance distance=Label::kFar)
void LoadRoot(Register output, RootIndex index)
void JumpIfRoot(Register value, RootIndex index, Label *target, Label::Distance distance=Label::kFar)
MemOperand FeedbackVectorOperand()
void JumpIfSmi(Register value, Label *target, Label::Distance distance=Label::kFar)
void JumpIfNotSmi(Register value, Label *target, Label::Distance distance=Label::kFar)
MemOperand FunctionOperand()
void JumpIfObjectType(Condition cc, Register object, InstanceType instance_type, Register map, Label *target, Label::Distance distance=Label::kFar)
void LdaModuleVariable(Register context, int cell_index, uint32_t depth)
void IncrementSmi(MemOperand lhs)
void StoreTaggedFieldWithWriteBarrier(Register target, int offset, Register value)
void LoadTaggedSignedField(Register output, Register source, int offset)
void RegisterFrameAddress(interpreter::Register interpreter_register, Register rscratch)
void Word32And(Register output, Register lhs, int rhs)
void StoreTaggedSignedField(Register target, int offset, Tagged< Smi > value)
void StaContextSlot(Register context, Register value, uint32_t index, uint32_t depth)
BaselineAssembler(MacroAssembler *masm)
void JumpIfTagged(Condition cc, Register value, MemOperand operand, Label *target, Label::Distance distance=Label::kFar)
void LoadFunction(Register output)
~EnsureAccumulatorPreservedScope()
EnsureAccumulatorPreservedScope(BaselineAssembler *assembler)
void AssertEqualToAccumulator(Register reg)
BaselineAssembler * assembler_
RegListBase< RegisterT > registers