21 bool needs_frame_state,
75 return ChangeUint32ToUint64(node);
109 Node* value, uint32_t maxval) {
112 Node* check = Uint32LessThanOrEqual(value, max);
203 Word32Shl(index,
Int32Constant(kExternalPointerTableEntrySizeLog2)));
206 Node* table_address =
208 IsolateData::shared_external_pointer_table_offset());
213 IsolateData::external_pointer_table_offset() +
223 if (tag_range.
Size() == 1) {
226 actual_tag = TruncateInt64ToInt32(
252 IsolateData::trusted_pointer_table_offset() +
256 decoded_ptr = WordAnd(decoded_ptr,
269 Node* isolate_root) {
270#ifdef V8_ENABLE_SANDBOX
297 return UnpackMapWord(map_word);
318 int offset = Map::kConstructorOrBackPointerOrNativeContextOffset;
342 Node* index_intptr) {
371 Node* index_intptr) {
391#ifdef V8_ENABLE_SANDBOX
403#ifdef V8_ENABLE_SANDBOX
411std::pair<Node*, Node*>
415#ifdef V8_ENABLE_SANDBOX
420 return {
value, value};
449 SharedFunctionInfo::kTrustedFunctionDataOffset),
450 kWasmFunctionDataIndirectPointerTag);
454 Node* exported_function_data) {
458 WasmExportedFunctionData::kFunctionIndexOffset));
461 Node* exported_function_data) {
463 exported_function_data,
465 WasmExportedFunctionData::kProtectedInstanceDataOffset));
479 uint32_t field_index) {
481 WasmStruct::kHeaderSize + type->field_offset(field_index)));
497 Node* comparison_value =
498 Int32Sub(instance_type,
Int32Constant(FIRST_WASM_OBJECT_TYPE));
499 return Uint32LessThanOrEqual(
501 Int32Constant(LAST_WASM_OBJECT_TYPE - FIRST_WASM_OBJECT_TYPE));
570 object, value, effect(),
control()));
577 array, index, effect(),
control()));
617 kWasmTrustedInstanceDataIndirectPointerTag);
static CallInterfaceDescriptor CallInterfaceDescriptorFor(Builtin builtin)
int GetStackParameterCount() const
static constexpr int kMapOffset
static const int kExternalPointerTableBasePointerOffset
static const int kTrustedPointerTableBasePointerOffset
static MachineType TypeForRepresentation(const MachineRepresentation &rep, bool isSigned=true)
static constexpr MachineType Pointer()
static constexpr MachineType Int32()
static constexpr MachineType AnyTagged()
static constexpr MachineType Uint32()
static constexpr MachineType TaggedSigned()
static constexpr MachineType Uint16()
static constexpr MachineType TaggedPointer()
static constexpr MachineType ProtectedPointer()
static constexpr MachineType UintPtr()
static bool constexpr IsValid(T value)
static FieldAccess ForStringLength()
detail::GraphAssemblerLabelForReps< Reps... > MakeLabel(Reps... reps)
Node * IntPtrConstant(intptr_t value)
MachineGraph * mcgraph() const
Node * ExternalConstant(ExternalReference ref)
MachineOperatorBuilder * machine() const
TNode< UintPtrT > UintPtrConstant(uintptr_t value)
Node * LoadTrapOnNull(MachineType type, Node *object, Node *offset)
void RuntimeAbort(AbortReason reason)
Node * LoadRootRegister()
void GotoIf(Node *condition, detail::GraphAssemblerLabelForVars< Vars... > *label, BranchHint hint, Vars...)
CommonOperatorBuilder * common() const
Node * BitcastWordToTagged(Node *value)
void Bind(GraphAssemblerLabel< VarCount > *label)
Node * Load(MachineType type, Node *object, Node *offset)
Node * Int32Constant(int32_t value)
Node * AddNode(Node *node)
static CallDescriptor * GetStubCallDescriptor(Zone *zone, const CallInterfaceDescriptor &descriptor, int stack_parameter_count, CallDescriptor::Flags flags, Operator::Properties properties=Operator::kNoProperties, StubCallMode stub_mode=StubCallMode::kCallCodeObject)
Node * IntPtrConstant(intptr_t value)
MachineOperatorBuilder * machine() const
Node * Uint32Constant(uint32_t value)
const Operator * LoadFromObject(ObjectAccess const &)
const Operator * LoadImmutableFromObject(ObjectAccess const &)
const Operator * StoreToObject(ObjectAccess const &)
const Operator * InitializeImmutableInObject(ObjectAccess const &)
const Operator * AllocateRaw(Type type, AllocationType allocation=AllocationType::kYoung)
Node * NewNode(const Operator *op, int input_count, Node *const *inputs, bool incomplete=false)
Node * BuildChangeSmiToInt32(Node *value)
Node * ArrayLength(Node *array, CheckForNull null_check)
Node * WasmTypeCast(Node *object, Node *rtt, WasmTypeCheckConfig config)
Node * BuildChangeInt32ToSmi(Node *value)
Node * LoadImmutableFromObject(MachineType type, Node *base, Node *offset)
Node * IsSmi(Node *object)
Node * WasmTypeCheck(Node *object, Node *rtt, WasmTypeCheckConfig config)
Node * LoadExportedFunctionIndexAsSmi(Node *exported_function_data)
Node * FieldOffset(const wasm::StructType *type, uint32_t field_index)
Node * BuildLoadExternalPointerFromObject(Node *object, int offset, ExternalPointerTagRange tag_range, Node *isolate_root)
Node * LoadProtectedFixedArrayElement(Node *array, int index)
Node * LoadFunctionDataFromJSFunction(Node *js_function)
void ArraySet(Node *array, Node *index, Node *value, const wasm::ArrayType *type)
Node * WasmAnyConvertExtern(Node *object)
Node * LoadContextFromJSFunction(Node *js_function)
Node * BuildConvertUint32ToSmiWithSaturation(Node *value, uint32_t maxval)
Node * Branch(Node *cond, Node **true_node, Node **false_node, BranchHint hint)
Node * NumberConstant(double value)
Node * LoadImmutableFixedArrayElement(Node *fixed_array, Node *index_intptr, MachineType type=MachineType::AnyTagged())
Node * LoadExportedFunctionInstanceData(Node *exported_function_data)
Node * LoadFromObject(MachineType type, Node *base, Node *offset)
Node * StoreToObject(ObjectAccess access, Node *base, Node *offset, Node *value)
Node * LoadTrustedDataFromInstanceObject(Node *instance_object)
Node * LoadImmutable(LoadRepresentation rep, Node *base, Node *offset)
Node * LoadWeakFixedArrayElement(Node *fixed_array, Node *index_intptr)
Node * LoadStringLength(Node *string)
Node * LoadInstanceType(Node *map)
Node * WasmExternConvertAny(Node *object)
Node * IsDataRefMap(Node *map)
Node * WasmTypeCastAbstract(Node *object, WasmTypeCheckConfig config)
Node * BuildChangeIntPtrToInt64(Node *value)
Node * BuildDecodeTrustedPointer(Node *handle, IndirectPointerTag tag)
Node * LoadWasmCodePointer(Node *code_pointer)
Node * LoadProtectedPointerFromObject(Node *object, Node *offset)
Node * BuildChangeInt32ToIntPtr(Node *value)
SimplifiedOperatorBuilder simplified_
Node * BuildChangeUint31ToSmi(Node *value)
Node * BuildChangeUint32ToUintPtr(Node *node)
Node * Allocate(int size)
Node * BuildDecodeSandboxedExternalPointer(Node *handle, ExternalPointerTagRange tag_range, Node *isolate_root)
Node * LoadImmutableTrustedPointerFromObject(Node *object, int offset, IndirectPointerTag tag)
Node * IsNull(Node *object, wasm::ValueType type)
Node * BuildTruncateIntPtrToInt32(Node *value)
Node * BuildChangeSmiToIntPtr(Node *value)
Node * BuildSmiShiftBitsConstant32()
Node * LoadJSArrayElements(Node *js_array)
Node * Null(wasm::ValueType type)
Node * ArrayGet(Node *array, Node *index, const wasm::ArrayType *type, bool is_signed)
Node * LoadFixedArrayLengthAsSmi(Node *fixed_array)
Node * WasmTypeCheckAbstract(Node *object, WasmTypeCheckConfig config)
Node * StringAsWtf16(Node *string)
void StoreMap(Node *heap_object, Node *map)
Node * LoadMap(Node *object)
Node * LoadByteArrayElement(Node *byte_array, Node *index_intptr, MachineType type)
void StructSet(Node *object, Node *value, const wasm::StructType *type, int field_index, CheckForNull null_check)
Node * InitializeImmutableInObject(ObjectAccess access, Node *base, Node *offset, Node *value)
Node * LoadImmutableProtectedPointerFromObject(Node *object, Node *offset)
Node * LoadSharedFunctionInfo(Node *js_function)
Node * LoadTrustedPointerFromObject(Node *object, int offset, IndirectPointerTag tag)
Node * LoadFixedArrayElement(Node *fixed_array, Node *index_intptr, MachineType type=MachineType::AnyTagged())
std::pair< Node *, Node * > LoadTrustedPointerFromObjectTrapOnNull(Node *object, int offset, IndirectPointerTag tag)
Node * LoadWasmTypeInfo(Node *map)
void ArrayInitializeLength(Node *array, Node *length)
Node * StructGet(Node *object, const wasm::StructType *type, int field_index, bool is_signed, CheckForNull null_check)
Node * HasInstanceType(Node *heap_object, InstanceType type)
Node * WasmArrayElementOffset(Node *index, wasm::ValueType element_type)
Node * StringPrepareForGetCodeunit(Node *string)
Node * IsNotNull(Node *object, wasm::ValueType type)
Node * StoreFixedArrayElement(Node *array, int index, Node *value, ObjectAccess access)
Node * AssertNotNull(Node *object, wasm::ValueType type, TrapId trap_id)
Node * BuildSmiShiftBitsConstant()
static constexpr int SharedFunctionInfoOffsetInTaggedJSFunction()
static constexpr int ElementOffsetInTaggedFixedArray(int index)
static constexpr int ContextOffsetInTaggedJSFunction()
static constexpr int ElementOffsetInProtectedFixedArray(int index)
static constexpr int ToTagged(int offset)
constexpr int value_kind_size() const
#define COMPRESS_POINTERS_BOOL
#define V8_ENABLE_SANDBOX_BOOL
V8_INLINE Dest bit_cast(Source const &source)
ObjectAccess ObjectAccessForGCStores(wasm::ValueType type)
CallDescriptor * GetBuiltinCallDescriptor(Builtin name, Zone *zone, StubCallMode stub_mode, bool needs_frame_state, Operator::Properties properties)
V8_INLINE IndirectHandle< T > handle(Tagged< T > object, Isolate *isolate)
constexpr uint64_t kExternalPointerTagShift
constexpr int kTaggedSize
static V8_INLINE constexpr bool IsSharedExternalPointerType(ExternalPointerTagRange tag_range)
constexpr uint64_t kExternalPointerPayloadMask
constexpr ExternalPointerTagRange kAnyExternalPointerTagRange(kFirstExternalPointerTag, kLastExternalPointerTag)
constexpr uint64_t kExternalPointerTagMask
constexpr int kTrustedPointerTableEntrySizeLog2
constexpr int kTaggedSizeLog2
bool IsSubtype(MachineRepresentation rep1, MachineRepresentation rep2)
constexpr uint32_t kTrustedPointerHandleShift
const intptr_t kSmiTagMask
V8_EXPORT_PRIVATE constexpr int ElementSizeInBytes(MachineRepresentation)
constexpr uint64_t kTrustedPointerTableMarkBit
kMemory0SizeOffset Address kNewAllocationLimitAddressOffset Address kOldAllocationLimitAddressOffset uint8_t kGlobalsStartOffset kJumpTableStartOffset std::atomic< uint32_t > kTieringBudgetArrayOffset kDataSegmentStartsOffset kElementSegmentsOffset instance_object
bool is_signed(Condition cond)
static V8_INLINE constexpr bool ExternalPointerCanBeEmpty(ExternalPointerTagRange tag_range)
#define DCHECK_NOT_NULL(val)
#define DCHECK_NE(v1, v2)
#define DCHECK(condition)
constexpr size_t Size() const
constexpr bool IsEmpty() const
const T & ResolvedValue() const
bool HasResolvedValue() const
#define OFFSET_OF_DATA_START(Type)