5#ifndef V8_COMPILER_SIMPLIFIED_OPERATOR_H_
6#define V8_COMPILER_SIMPLIFIED_OPERATOR_H_
27#ifdef V8_ENABLE_WEBASSEMBLY
45struct SimplifiedOperatorGlobalCache;
46struct WasmTypeCheckConfig;
71 ConstFieldInfo
const&);
73#if V8_ENABLE_WEBASSEMBLY
78 CheckForNull null_check;
87struct WasmElementInfo {
88 const wasm::ArrayType*
type;
93 WasmElementInfo
const&);
98 WasmElementInfo
const&);
174 #if !defined(OFFICIAL_BUILD)
177 this->creator_mnemonic =
nullptr;
297 : check_parameters_(feedback),
flags_(flags) {}
493 return static_cast<uint8_t
>(
mode);
782#if V8_ENABLE_WEBASSEMBLY
783struct AssertNotNullParameters {
789 AssertNotNullParameters
const&);
791size_t hash_value(AssertNotNullParameters
const&);
793bool operator==(AssertNotNullParameters
const&, AssertNotNullParameters
const&);
936 const Operator* SpeculativeBigIntAsIntN(
int bits,
938 const Operator* SpeculativeBigIntAsUintN(
int bits,
1042 const Operator* CheckedFloat64ToAdditiveSafeInteger(
1067 const Operator* CheckedTaggedToAdditiveSafeInteger(
1115 const Operator* RestLength(
int formal_parameter_count);
1122 int formal_parameter_count);
1128 const Operator* EnsureWritableFastElements();
1136 const Operator* TransitionElementsKindOrCheckMap(
1150 bool maybe_initializing_or_transitioning =
true);
1156 const Operator* LoadStackArgument();
1164 const Operator* StoreSignedSmallElement();
1167 const Operator* TransitionAndStoreNumberElement(
MapRef double_map);
1170 const Operator* TransitionAndStoreNonNumberElement(
MapRef fast_map,
1212 const Operator* CheckTurboshaftTypeOf();
1214#if V8_ENABLE_WEBASSEMBLY
1224 const Operator* WasmAnyConvertExtern();
1225 const Operator* WasmExternConvertAny();
1233 const Operator* WasmArrayInitializeLength();
1235 const Operator* StringPrepareForGetCodeunit();
1255#ifdef V8_ENABLE_CONTINUATION_PRESERVED_EMBEDDER_DATA
1256 const Operator* GetContinuationPreservedEmbedderData();
1257 const Operator* SetContinuationPreservedEmbedderData();
1300#define DEFINE_INPUT_ACCESSORS(Name, name, TheIndex, Type) \
1301 static constexpr int Name##Index() { return TheIndex; } \
1302 TNode<Type> name() const { \
1303 return TNode<Type>::UncheckedCast( \
1304 NodeProperties::GetValueInput(node(), TheIndex)); \
1313 DCHECK_EQ(IrOpcode::kFastApiCall, node->opcode());
1320#define INPUTS(V) V(Receiver, receiver, 0, Object)
1385 return ReceiverIndex() + 1;
1416#undef DEFINE_INPUT_ACCESSORS
#define DEFINE_OPERATORS_FOR_FLAGS(Type)
static constexpr int kMapOffset
constexpr bool IsMapWord() const
static TNode UncheckedCast(compiler::Node *node)
AllocationType allocation_type_
AllocateParameters(Type type, AllocationType allocation_type)
AllocationType allocation_type() const
BigIntOperationParameters(BigIntOperationHint hint, const FeedbackSource &feedback)
const FeedbackSource & feedback() const
BigIntOperationHint hint_
BigIntOperationHint hint() const
CheckBoundsParameters(const FeedbackSource &feedback, CheckBoundsFlags flags)
CheckBoundsFlags flags() const
const CheckParameters & check_parameters() const
CheckParameters check_parameters_
CheckFloat64HoleMode mode_
CheckFloat64HoleMode mode() const
FeedbackSource const & feedback() const
CheckFloat64HoleParameters(CheckFloat64HoleMode mode, FeedbackSource const &feedback)
CheckIfParameters(DeoptimizeReason reason, const FeedbackSource &feedback)
DeoptimizeReason reason() const
FeedbackSource const & feedback() const
FeedbackSource const feedback_
ZoneRefSet< Map > const & maps() const
FeedbackSource const & feedback() const
CheckMapsFlags flags() const
CheckMapsFlags const flags_
ZoneRefSet< Map > const maps_
CheckMapsParameters(CheckMapsFlags flags, ZoneRefSet< Map > const &maps, const FeedbackSource &feedback)
CheckForMinusZeroMode mode_
CheckMinusZeroParameters(CheckForMinusZeroMode mode, const FeedbackSource &feedback)
const FeedbackSource & feedback() const
CheckForMinusZeroMode mode() const
CheckParameters(const FeedbackSource &feedback)
FeedbackSource const & feedback() const
ZoneRefSet< Map > sources_
const FeedbackSource & feedback() const
const ZoneRefSet< Map > & sources() const
ElementsTransitionWithMultipleSources(ZoneRefSet< Map > sources, MapRef target, const FeedbackSource &feedback=FeedbackSource())
ElementsTransition(Mode mode, MapRef source, MapRef target)
constexpr int FastCallArgumentCount() const
constexpr int FirstSlowCallArgumentIndex() const
constexpr int FirstFastCallArgumentIndex() const
constexpr int FastCallArgumentIndex(int i) const
constexpr int CallbackDataIndex() const
const FastApiCallParameters & Parameters() const
FastApiCallNode(Node *node)
constexpr int FrameStateIndex() const
TNode< Object > Context() const
TNode< Object > CallbackData() const
constexpr int ContextIndex() const
const int slow_arg_count_
static constexpr int kSlowCodeTarget
constexpr int SlowCallArgumentCount() const
TNode< Object > SlowCallArgument(int i) const
static constexpr int ArityForArgc(int c_arg_count, int slow_arg_count)
static constexpr int kFrameState
static constexpr int kCallbackData
constexpr int SlowCallArgumentIndex(int i) const
TNode< Object > FastCallArgument(int i) const
constexpr int CArgumentCount() const
FastApiCallFunction c_function() const
const CFunctionInfo * signature() const
FastApiCallParameters(FastApiCallFunction c_function, FeedbackSource const &feedback, CallDescriptor *descriptor)
const FeedbackSource feedback_
CallDescriptor * descriptor() const
CallDescriptor * descriptor_
FeedbackSource const & feedback() const
FastApiCallFunction c_function_
unsigned int argument_count() const
GrowFastElementsParameters(GrowFastElementsMode mode, const FeedbackSource &feedback)
GrowFastElementsMode mode() const
const FeedbackSource & feedback() const
GrowFastElementsMode mode_
CreateArgumentsType type_
int formal_parameter_count_
CreateArgumentsType arguments_type() const
int formal_parameter_count() const
NewArgumentsElementsParameters(CreateArgumentsType type, int formal_parameter_count)
static Node * GetEffectInput(Node *node, int index=0)
static Node * GetContextInput(Node *node)
static Node * GetFrameStateInput(Node *node)
static Node * GetValueInput(Node *node, int index)
static Node * GetControlInput(Node *node, int index=0)
NumberOperationHint hint() const
const FeedbackSource & feedback() const
NumberOperationParameters(NumberOperationHint hint, const FeedbackSource &feedback)
NumberOperationHint hint_
virtual void PrintParameter(std::ostream &os, PrintVerbosity verbose) const
constexpr SimplifiedNodeWrapperBase(Node *node)
FrameState frame_state() const
TNode< Object > context() const
const Operator * ChangeUint64ToBigInt()
const Operator * StringCodePointAt()
const Operator * ObjectIsInteger()
const Operator * BigIntShiftLeft()
const Operator * StringLessThan()
const Operator * SpeculativeSmallIntegerSubtract(NumberOperationHint hint)
const Operator * NumberAbs()
const Operator * DoubleArrayMin()
const Operator * NumberImul()
const Operator * StringWrapperLength()
const Operator * PlainPrimitiveToWord32()
const Operator * SpeculativeAdditiveSafeIntegerAdd(NumberOperationHint hint)
const Operator * LoadFromObject(ObjectAccess const &)
const Operator * LoadImmutableFromObject(ObjectAccess const &)
const Operator * CheckedInt64Sub()
const Operator * ObjectIsNaN()
const Operator * NumberAtan2()
const Operator * CheckInternalizedString()
const Operator * ChangeTaggedToInt32()
const Operator * CheckHeapObject()
const Operator * ObjectIsCallable()
const Operator * ObjectIsFiniteNumber()
const Operator * ObjectIsString()
const Operator * CheckedInt64ToInt32(const FeedbackSource &feedback)
const Operator * NumberToUint8Clamped()
const Operator * CheckedUint32ToInt32(const FeedbackSource &feedback)
const Operator * StringLessThanOrEqual()
const Operator * NumberMin()
const Operator * NumberLessThan()
const Operator * BigIntBitwiseAnd()
const Operator * NumberShiftLeft()
const Operator * CheckedTaggedToTaggedPointer(const FeedbackSource &feedback)
const Operator * NumberMultiply()
const Operator * SpeculativeNumberLessThanOrEqual(NumberOperationHint hint)
const Operator * CheckSmi(const FeedbackSource &feedback)
const Operator * CheckedUint32Div()
const Operator * ObjectIsDetectableCallable()
const Operator * ChangeTaggedToBit()
const Operator * BigIntMultiply()
const Operator * PlainPrimitiveToNumber()
const Operator * SpeculativeBigIntLessThanOrEqual(BigIntOperationHint hint)
const Operator * CheckBigInt(const FeedbackSource &feedback)
const Operator * NumberLog1p()
const Operator * ReferenceEqual()
const Operator * NumberCosh()
const Operator * ObjectIsSymbol()
const Operator * TruncateBigIntToWord64()
const Operator * NumberAcos()
const Operator * CheckedInt64Mod()
const Operator * BooleanNot()
const Operator * TruncateTaggedToFloat64()
const Operator * NumberEqual()
const Operator * StringEqual()
const Operator * NumberIsFloat64Hole()
const Operator * CheckedUint32Mod()
const Operator * NumberCbrt()
const Operator * SpeculativeBigIntLessThan(BigIntOperationHint hint)
const Operator * ObjectIsNumber()
const Operator * NumberToBoolean()
const Operator * NumberToInt32()
const Operator * StoreToObject(ObjectAccess const &)
const Operator * ChangeTaggedToTaggedSigned()
const Operator * BigIntLessThan()
const Operator * SameValue()
const Operator * BigIntDivide()
const Operator * SameValueNumbersOnly()
const Operator * TruncateTaggedToBit()
const Operator * StringToLowerCaseIntl()
const Operator * SpeculativeBigIntModulus(BigIntOperationHint hint)
const Operator * FindOrderedHashMapEntryForInt32Key()
const Operator * CheckNotTaggedHole()
const Operator * ChangeFloat64HoleToTagged()
const Operator * NumberLog2()
const Operator * BigIntEqual()
const Operator * CheckedInt32Div()
const Operator * NumberIsFinite()
const Operator * CheckString(const FeedbackSource &feedback)
const Operator * SpeculativeNumberLessThan(NumberOperationHint hint)
const Operator * SpeculativeBigIntBitwiseXor(BigIntOperationHint hint)
const Operator * CheckedInt32ToTaggedSigned(const FeedbackSource &feedback)
const Operator * ChangeTaggedToInt64()
const Operator * NumberTanh()
const Operator * NumberIsInteger()
const Operator * ObjectIsSmi()
const Operator * LoadTypedElement(ExternalArrayType const &)
const Operator * CheckedAdditiveSafeIntegerAdd()
const Operator * NumberExpm1()
const Operator * SpeculativeNumberSubtract(NumberOperationHint hint)
const Operator * TruncateTaggedPointerToBit()
const Operator * CheckedUint64ToTaggedSigned(const FeedbackSource &feedback)
const Operator * CheckedUint32Bounds(const FeedbackSource &feedback, CheckBoundsFlags flags)
const Operator * NumberCos()
const Operator * NumberIsSafeInteger()
const Operator * SpeculativeBigIntAdd(BigIntOperationHint hint)
const Operator * ConvertTaggedHoleToUndefined()
const Operator * LoadDataViewElement(ExternalArrayType const &)
const Operator * StringFromCodePointAt()
const Operator * NumberSilenceNaN()
const Operator * ChangeInt32ToTagged()
const Operator * StringLength()
const Operator * CheckedUint64ToInt32(const FeedbackSource &feedback)
const Operator * SpeculativeBigIntSubtract(BigIntOperationHint hint)
const Operator * NumberLog()
const Operator * ObjectIsConstructor()
const Operator * ChangeTaggedSignedToInt64()
const Operator * ToBoolean()
const Operator * NumberAsin()
const Operator * ChangeTaggedToUint32()
const Operator * NumberSign()
const Operator * StringIndexOf()
const Operator * Integral32OrMinusZeroToBigInt()
const Operator * NumberDivide()
const Operator * NumberAtan()
const Operator * SpeculativeBigIntEqual(BigIntOperationHint hint)
const Operator * NumberLog10()
const Operator * ChangeBitToTagged()
const Operator * SpeculativeBigIntBitwiseOr(BigIntOperationHint hint)
const Operator * StringFromSingleCodePoint()
const Operator * NumberTrunc()
const Operator * CheckedInt64Mul()
const Operator * CheckedTaggedToArrayIndex(const FeedbackSource &feedback)
const Operator * NumberToString()
const Operator * ChangeFloat64ToTaggedPointer()
const Operator * SpeculativeNumberAdd(NumberOperationHint hint)
const Operator * ChangeUint32ToTagged()
const Operator * StringFromSingleCharCode()
const Operator * CheckedAdditiveSafeIntegerSub()
const Operator * TypeOf()
const Operator * SpeculativeAdditiveSafeIntegerSubtract(NumberOperationHint hint)
const Operator * ChangeInt64ToTagged()
const Operator * SpeculativeNumberModulus(NumberOperationHint hint)
const Operator * CheckedUint32ToTaggedSigned(const FeedbackSource &feedback)
const Operator * CheckedInt64ToTaggedSigned(const FeedbackSource &feedback)
const Operator * NumberBitwiseOr()
const Operator * SpeculativeBigIntShiftRight(BigIntOperationHint hint)
const Operator * CheckEqualsSymbol()
const Operator * LoadFieldByIndex()
const Operator * NumberAcosh()
const Operator * SpeculativeNumberBitwiseAnd(NumberOperationHint hint)
const Operator * ChangeTaggedToFloat64()
const Operator * NumberClz32()
const Operator * SpeculativeNumberShiftLeft(NumberOperationHint hint)
const Operator * ChangeInt64ToBigInt()
const Operator * ObjectIsBigInt()
const Operator * NumberSubtract()
const Operator * StringCharCodeAt()
const Operator * NumberPow()
const Operator * NumberMax()
const Operator * NumberFround()
const Operator * ChangeInt31ToTaggedSigned()
const Operator * SpeculativeNumberShiftRightLogical(NumberOperationHint hint)
const Operator * NumberAsinh()
const Operator * BigIntShiftRight()
const Operator * DoubleArrayMax()
const Operator * NumberSin()
const Operator * NumberModulus()
const Operator * SpeculativeNumberMultiply(NumberOperationHint hint)
const Operator * SpeculativeNumberShiftRight(NumberOperationHint hint)
const Operator * LoadElement(ElementAccess const &)
const Operator * CheckNumberFitsInt32(const FeedbackSource &feedback)
const Operator * CheckReceiverOrNullOrUndefined()
SimplifiedOperatorBuilder(const SimplifiedOperatorBuilder &)=delete
const Operator * CheckedInt64Add()
const Operator * StoreTypedElement(ExternalArrayType const &)
const Operator * NumberTan()
const Operator * ObjectIsNonCallable()
const Operator * NumberCeil()
const Operator * CheckedInt32Mod()
const Operator * CheckReceiver()
const Operator * ObjectIsUndetectable()
const Operator * ObjectIsSafeInteger()
const Operator * StringToNumber()
const Operator * BigIntBitwiseOr()
const Operator * ObjectIsReceiver()
const Operator * CheckedBigIntToBigInt64(const FeedbackSource &feedback)
const Operator * SpeculativeSmallIntegerAdd(NumberOperationHint hint)
const Operator * BigIntNegate()
const Operator * SpeculativeBigIntBitwiseAnd(BigIntOperationHint hint)
const Operator * NumberBitwiseAnd()
const Operator * BigIntLessThanOrEqual()
const Operator * ChangeUint64ToTagged()
const Operator * CheckEqualsInternalizedString()
const Operator * NumberSinh()
const Operator * CheckNumber(const FeedbackSource &feedback)
const Operator * NumberFloor()
const Operator * CheckedInt32Sub()
const Operator * SpeculativeNumberBitwiseXor(NumberOperationHint hint)
const Operator * ObjectIsMinusZero()
const Operator * NumberExp()
const Operator * CheckedInt32Add()
const Operator * BigIntBitwiseXor()
const Operator * StringConcat()
const Operator * StoreDataViewElement(ExternalArrayType const &)
const Operator * BigIntModulus()
const Operator * CheckedInt64Div()
const Operator * StoreElement(ElementAccess const &)
const Operator * NewConsString()
const Operator * NumberIsNaN()
const Operator * InitializeImmutableInObject(ObjectAccess const &)
const Operator * NumberShiftRightLogical()
const Operator * SpeculativeNumberDivide(NumberOperationHint hint)
const Operator * SpeculativeBigIntDivide(BigIntOperationHint hint)
const Operator * DateNow()
const Operator * SpeculativeNumberBitwiseOr(NumberOperationHint hint)
const Operator * Unsigned32Divide()
const Operator * NumberShiftRight()
const Operator * SpeculativeBigIntMultiply(BigIntOperationHint hint)
const Operator * ChangeTaggedSignedToInt32()
const Operator * SpeculativeNumberPow(NumberOperationHint hint)
const Operator * TruncateTaggedToWord32()
const Operator * ObjectIsArrayBufferView()
const Operator * StringToUpperCaseIntl()
const Operator * CheckSymbol()
const Operator * NumberLessThanOrEqual()
const SimplifiedOperatorGlobalCache & cache_
const Operator * StringSubstring()
const Operator * CheckStringOrStringWrapper(const FeedbackSource &feedback)
const Operator * NumberSqrt()
const Operator * NumberRound()
const Operator * NumberToUint32()
const Operator * CheckedUint64Bounds(const FeedbackSource &feedback, CheckBoundsFlags flags)
const Operator * NumberSameValue()
const Operator * BigIntAdd()
const Operator * SpeculativeBigIntShiftLeft(BigIntOperationHint hint)
const Operator * NumberAtanh()
const Operator * CheckedTaggedSignedToInt32(const FeedbackSource &feedback)
const Operator * CheckedTaggedToTaggedSigned(const FeedbackSource &feedback)
const Operator * LoadField(FieldAccess const &)
const Operator * BigIntSubtract()
const Operator * CheckedUint64ToInt64(const FeedbackSource &feedback)
const Operator * PlainPrimitiveToFloat64()
const Operator * NumberAdd()
const Operator * NumberIsMinusZero()
const Operator * NumberBitwiseXor()
SimplifiedOperatorBuilder & operator=(const SimplifiedOperatorBuilder &)=delete
SpeculativeBigIntAsNParameters(int bits, const FeedbackSource &feedback)
const FeedbackSource & feedback() const
#define DEFINE_INPUT_ACCESSORS(Name, name, TheIndex, Type)
NumberOperationParameters const & NumberOperationParametersOf(Operator const *op)
FastApiCallParameters const & FastApiCallParametersOf(const Operator *op)
const GrowFastElementsParameters & GrowFastElementsParametersOf(const Operator *op)
@ kTryMigrateInstanceAndDeopt
CheckParameters const & CheckParametersOf(Operator const *op)
@ kConvertStringAndMinusZero
const CheckTaggedInputParameters & CheckTaggedInputParametersOf(const Operator *op)
const NewArgumentsElementsParameters & NewArgumentsElementsParametersOf(const Operator *op)
CheckMapsParameters const & CheckMapsParametersOf(Operator const *op)
CheckFloat64HoleParameters const & CheckFloat64HoleParametersOf(Operator const *op)
CheckIfParameters const & CheckIfParametersOf(Operator const *op)
const CheckMinusZeroParameters & CheckMinusZeroParametersOf(const Operator *op)
int FormalParameterCountOf(const Operator *op)
ZoneRefSet< Map > const & MapGuardMapsOf(Operator const *op)
NumberOperationHint NumberOperationHintOf(const Operator *op)
const FieldAccess & FieldAccessOf(const Operator *op)
const ElementAccess & ElementAccessOf(const Operator *op)
const AllocateParameters & AllocateParametersOf(const Operator *op)
ZoneRefSet< Map > const & CompareMapsParametersOf(Operator const *op)
CheckBoundsParameters const & CheckBoundsParametersOf(Operator const *op)
const ObjectAccess & ObjectAccessOf(const Operator *op)
Type AllocateTypeOf(const Operator *op)
MapRef FastMapParameterOf(const Operator *op)
Handle< FeedbackCell > FeedbackCellOf(const Operator *op)
Type ValueTypeParameterOf(const Operator *op)
size_t hash_value(const BranchParameters &p)
ExternalArrayType ExternalArrayTypeOf(const Operator *op)
DeoptimizeReason DeoptimizeReasonOf(const Operator *op) V8_WARN_UNUSED_RESULT
UnicodeEncoding UnicodeEncodingOf(const Operator *) V8_WARN_UNUSED_RESULT
ConvertReceiverMode ConvertReceiverModeOf(Operator const *op)
AllocationType AllocationTypeOf(const Operator *op)
bool operator!=(DeoptimizeParameters lhs, DeoptimizeParameters rhs)
bool operator==(const BranchParameters &lhs, const BranchParameters &rhs)
CheckForMinusZeroMode CheckMinusZeroModeOf(const Operator *op)
ElementsTransitionWithMultipleSources const & ElementsTransitionWithMultipleSourcesOf(const Operator *op)
std::ostream & operator<<(std::ostream &os, AccessMode access_mode)
BigIntOperationParameters const & BigIntOperationParametersOf(Operator const *op)
ElementsTransition const & ElementsTransitionOf(const Operator *op)
AbortReason AbortReasonOf(const Operator *op)
SpeculativeBigIntAsNParameters const & SpeculativeBigIntAsNParametersOf(Operator const *op)
bool IsCheckedWithFeedback(const Operator *op)
BigIntOperationHint BigIntOperationHintOf(const Operator *op)
MapRef DoubleMapParameterOf(const Operator *op)
@ kIndirectPointerNullTag
too high values may cause the compiler to set high thresholds for inlining to as much as possible avoid inlined allocation of objects that cannot escape trace load stores from virtual maglev objects use TurboFan fast string builder analyze liveness of environment slots and zap dead values trace TurboFan load elimination emit data about basic block usage in builtins to this enable builtin reordering when run mksnapshot flag for emit warnings when applying builtin profile data verify register allocation in TurboFan randomly schedule instructions to stress dependency tracking enable store store elimination in TurboFan rewrite far to near simulate GC compiler thread race related to allow float parameters to be passed in simulator mode JS Wasm Run additional turbo_optimize_inlined_js_wasm_wrappers enable experimental feedback collection in generic lowering enable Turboshaft s WasmLoadElimination enable Turboshaft s low level load elimination for JS enable Turboshaft s escape analysis for string concatenation use enable Turbolev features that we want to ship in the not too far future trace individual Turboshaft reduction steps trace intermediate Turboshaft reduction steps invocation count threshold for early optimization Enables optimizations which favor memory size over execution speed Enables sampling allocation profiler with X as a sample interval min size of a semi the new space consists of two semi spaces max size of the Collect garbage after Collect garbage after keeps maps alive for< n > old space garbage collections print one detailed trace line in allocation gc speed threshold for starting incremental marking via a task in percent of available threshold for starting incremental marking immediately in percent of available Use a single schedule for determining a marking schedule between JS and C objects schedules the minor GC task with kUserVisible priority max worker number of concurrent for NumberOfWorkerThreads start background threads that allocate memory concurrent_array_buffer_sweeping use parallel threads to clear weak refs in the atomic pause trace progress of the incremental marking trace object counts and memory usage report a tick only when allocated zone memory changes by this amount TracingFlags::gc_stats TracingFlags::gc_stats track native contexts that are expected to be garbage collected verify heap pointers before and after GC memory reducer runs GC with ReduceMemoryFootprint flag Maximum number of memory reducer GCs scheduled Old gen GC speed is computed directly from gc tracer counters Perform compaction on full GCs based on V8 s default heuristics Perform compaction on every full GC Perform code space compaction when finalizing a full GC with stack Stress GC compaction to flush out bugs with moving objects flush of baseline code when it has not been executed recently Use time base code flushing instead of age Use a progress bar to scan large objects in increments when incremental marking is active force incremental marking for small heaps and run it more often force marking at random points between and force scavenge at random points between and reclaim otherwise unreachable unmodified wrapper objects when possible less compaction in non memory reducing mode use high priority threads for concurrent Marking Test mode only flag It allows an unit test to select evacuation candidates use incremental marking for CppHeap cppheap_concurrent_marking c value for membalancer A special constant to balance between memory and space tradeoff The smaller the more memory it uses enable use of SSE4 instructions if available enable use of AVX VNNI instructions if available enable use of POPCNT instruction if available force all emitted branches to be in long mode(MIPS/PPC only)") DEFINE_BOOL(partial_constant_pool
@ kExternalPointerNullTag
kInstanceDescriptorsOffset kTransitionsOrPrototypeInfoOffset IsNull(value)||IsJSProxy(value)||IsWasmObject(value)||(IsJSObject(value) &&(HeapLayout
bool is_signed(Condition cond)
#define NON_EXPORTED_BASE(code)
#define DCHECK_LE(v1, v2)
#define DCHECK_IMPLIES(v1, v2)
#define DCHECK_GE(v1, v2)
#define DCHECK_LT(v1, v2)
#define DCHECK_EQ(v1, v2)
#define V8_EXPORT_PRIVATE
ConstFieldInfo(MapRef owner_map)
static ConstFieldInfo None()
BaseTaggedness base_is_tagged
ElementAccess(BaseTaggedness base_is_tagged, int header_size, Type type, MachineType machine_type, WriteBarrierKind write_barrier_kind)
WriteBarrierKind write_barrier_kind
const CFunctionInfo * signature
bool operator==(const FastApiCallFunction &rhs) const
ExternalPointerTag external_pointer_tag
FieldAccess(BaseTaggedness base_is_tagged, int offset, MaybeHandle< Name > name, OptionalMapRef map, Type type, MachineType machine_type, WriteBarrierKind write_barrier_kind, const char *creator_mnemonic=nullptr, ConstFieldInfo const_field_info=ConstFieldInfo::None(), bool is_store_in_literal=false, ExternalPointerTag external_pointer_tag=kExternalPointerNullTag, bool maybe_initializing_or_transitioning_store=false, bool is_immutable=false, IndirectPointerTag indirect_pointer_tag=kIndirectPointerNullTag)
bool maybe_initializing_or_transitioning_store
IndirectPointerTag indirect_pointer_tag
BaseTaggedness base_is_tagged
WriteBarrierKind write_barrier_kind
ConstFieldInfo const_field_info
const char * creator_mnemonic
bool is_bounded_size_access
ObjectAccess(MachineType machine_type, WriteBarrierKind write_barrier_kind)
WriteBarrierKind write_barrier_kind
#define V8_WARN_UNUSED_RESULT