21 std::unique_ptr<AssemblerBuffer> buffer)
23 create_code_object,
std::move(buffer)) {}
29 std::unique_ptr<AssemblerBuffer> buffer)
46 return d.InstructionStartOf(builtin);
58 if (
isolate()->roots_table().IsRootHandle(
object, &root_index)) {
61 }
else if (
isolate()->builtins()->IsBuiltinHandle(
object, &builtin)) {
75 uint32_t index = builder->
AddObject(
object);
117 return static_cast<intptr_t
>(reference.
address() - isolate->isolate_root());
129 return IsolateData::external_reference_table_offset() +
139 return isolate->root_register_addressable_region().contains(address);
uint32_t AddObject(Handle< Object > object)
static constexpr int ToInt(Builtin id)
static constexpr bool IsBuiltinId(Builtin builtin)
static EmbeddedData FromBlob()
Value Encode(Address key) const
static constexpr uint32_t OffsetOfEntry(uint32_t i)
int32_t offset_from_root_register() const
bool IsIsolateFieldId() const
V8_EXPORT_PRIVATE Address address() const
static V8_INLINE Handle< T > New(Tagged< T > object, Isolate *isolate)
static constexpr int root_slot_offset(RootIndex root_index)
static constexpr int BuiltinSlotOffset(Builtin id)
BuiltinsConstantsTableBuilder * builtins_constants_table_builder() const
Address * builtin_entry_table()
Address BuiltinEntry(Builtin builtin)
virtual void LoadRoot(Register destination, RootIndex index)=0
bool root_array_available_
static bool IsAddressableThroughRootRegister(Isolate *isolate, const ExternalReference &reference)
virtual void LoadRootRelative(Register destination, int32_t offset)=0
static constexpr bool CanBeImmediate(RootIndex index)
virtual void LoadRootRegisterOffset(Register destination, intptr_t offset)=0
MacroAssemblerBase(Isolate *isolate, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
static int32_t RootRegisterOffsetForExternalReferenceTableEntry(Isolate *isolate, const ExternalReference &reference)
static int32_t RootRegisterOffsetForRootIndex(RootIndex root_index)
Isolate * isolate() const
virtual void LoadFromConstantsTable(Register destination, int constant_index)=0
Tagged_t ReadOnlyRootPtr(RootIndex index)
IndirectHandle< HeapObject > code_object_
void IndirectLoadConstant(Register destination, Handle< HeapObject > object)
static intptr_t RootRegisterOffsetForExternalReference(Isolate *isolate, const ExternalReference &reference)
void IndirectLoadExternalReference(Register destination, ExternalReference reference)
static int32_t RootRegisterOffsetForBuiltin(Builtin builtin)
V8_INLINE constexpr StorageType ptr() const
static V8_INLINE Tagged_t CompressObject(Address tagged)
InstructionOperand destination
std::variant< Zone *, AccountingAllocator * > MaybeAssemblerZone
V8_INLINE constexpr bool IsHeapObject(TaggedImpl< kRefType, StorageType > obj)
#define DCHECK(condition)
#define DCHECK_EQ(v1, v2)