5#ifndef V8_OBJECTS_SHARED_FUNCTION_INFO_INL_H_
6#define V8_OBJECTS_SHARED_FUNCTION_INFO_INL_H_
31#if V8_ENABLE_WEBASSEMBLY
41#include "torque-generated/src/objects/shared-function-info-tq-inl.inc"
46 return InnerOffset(data_length());
57 if (padding_size == 0)
return;
58 memset(
reinterpret_cast<void*
>(address() + data_end_offset), 0, padding_size);
65 return ReadField<uint8_t>(
offset);
72 WriteField<uint8_t>(
offset, value);
76 DCHECK(index >= 0 && length >= 0 && length <=
kMaxInt - index &&
79 memcpy(
reinterpret_cast<void*
>(dst_addr), buffer, length);
88 DCHECK_LT(index, this->children_length());
96 DCHECK_LT(index, this->children_length());
110 kBytecodeArrayOffset)
112 kInterpreterTrampolineOffset)
125 WriteTrustedPointerField<kUnknownIndirectPointerTag>(
126 kTrustedFunctionDataOffset, value);
132 constexpr int kClearedUntrustedFunctionDataValue = -1;
135 *
this,
Smi::FromInt(kClearedUntrustedFunctionDataValue));
149 ClearTrustedPointerField(kTrustedFunctionDataOffset,
kReleaseStore);
155 return !IsTrustedPointerFieldEmpty(kTrustedFunctionDataOffset);
162 return ReadMaybeEmptyTrustedPointerField<kUnknownIndirectPointerTag>(
166template <
typename T, IndirectPo
interTag tag>
169 return Cast<T>(ReadMaybeEmptyTrustedPointerField<tag>(
174#ifdef V8_ENABLE_SANDBOX
175 auto trusted_data_slot = RawIndirectPointerField(kTrustedFunctionDataOffset,
196 return IsScript(
script(tag));
201 outer_scope_info_or_feedback_metadata,
214 const uint16_t param_count = TorqueGeneratedClass::formal_parameter_count();
220 const uint16_t param_count = TorqueGeneratedClass::formal_parameter_count();
226 DCHECK_EQ(value,
static_cast<uint16_t
>(value));
228 TorqueGeneratedClass::set_formal_parameter_count(value);
232 function_token_offset, uint16_t)
246 if (IsScopeInfo(value)) {
249 return value != kNoSharedNameSentinel;
255 if (IsScopeInfo(value)) {
266 if (IsScopeInfo(maybe_scope_info)) {
269 DCHECK(IsString(maybe_scope_info) ||
289 if (HasBytecodeArray(isolate)) {
297 int offset = raw_function_token_offset();
305template <
typename IsolateT>
307 if (
v8_flags.enable_lazy_source_positions) {
308 return !HasBytecodeArray() ||
314template <
typename IsolateT>
316 IsolateT* isolate)
const {
319 if (isolate->is_precise_binary_code_coverage() &&
336 v8_flags.max_inlined_bytecode_size) {
342 isolate->shared_function_info_access(), isolate);
343 if (
HasBreakInfo(isolate->GetMainThreadIsolateUnsafe())) {
354 SharedFunctionInfo::ClassScopeHasPrivateBrandBit)
367 function_context_independent_compiled,
380#if V8_ENABLE_WEBASSEMBLY
382 SharedFunctionInfo::IsAsmWasmBrokenBit)
386 SharedFunctionInfo::RequiresInstanceMembersInitializerBit)
389 name_should_print_as_anonymous,
400 private_name_lookup_skips_outer_class,
406 return disabled_optimization_reason() != BailoutReason::kNoReason;
436 hints = FunctionKindBits::update(hints,
kind);
451 bool uses_builtins_construct_stub =
false;
454 if (
id != Builtin::kCompileLazy &&
id != Builtin::kEmptyFunction) {
455 uses_builtins_construct_stub =
true;
458 uses_builtins_construct_stub =
true;
462 f = ConstructAsBuiltinBit::update(f, uses_builtins_construct_stub);
466uint16_t SharedFunctionInfo::age()
const {
470void SharedFunctionInfo::set_age(uint16_t value) {
476 Address age_addr = address() + kAgeOffset;
478 reinterpret_cast<base::Atomic16*
>(age_addr), expected_age, new_age);
481int SharedFunctionInfo::function_map_index()
const {
489void SharedFunctionInfo::set_function_map_index(
int index) {
504 set_function_map_index(map_index);
508#if V8_ENABLE_WEBASSEMBLY
510 DCHECK(!HasWasmExportedFunctionData());
513 Builtin builtin = builtin_id();
515 const int formal_parameter_count =
522 "Conflicting argument adaptation configuration (SFI vs call "
523 "descriptor) for builtin: %s (%d)",
532 return TorqueGeneratedClass::formal_parameter_count() ==
538 if (IsScopeInfo(maybe_scope_info, cage_base)) {
551 Tagged<Object> maybe_scope_info = name_or_scope_info(cage_base, tag);
552 if (IsScopeInfo(maybe_scope_info, cage_base)) {
555 return EarlyGetReadOnlyRoots().empty_scope_info();
564 if (IsScopeInfo(name_or_scope_info)) {
575 if (scope_info->FunctionName() != name) {
576 scope_info->SetFunctionName(name);
579 scope_info->InferredFunctionName() != inferred_name()) {
580 scope_info->SetInferredFunctionName(inferred_name());
587 WRITE_FIELD(*
this, kNameOrScopeInfoOffset, scope_info);
593 DCHECK(!HasFeedbackMetadata());
600 if (info->IsEmpty()) {
602 if (!IsScopeInfo(outer_scope_info()))
return false;
605 if (!info->HasOuterScopeInfo())
return false;
606 outer_info = info->OuterScopeInfo();
608 return !outer_info->IsEmpty();
615 return info->OuterScopeInfo();
622 DCHECK(IsScopeInfo(value) || IsTheHole(value));
623 DCHECK(scope_info()->IsEmpty());
624 set_raw_outer_scope_info_or_feedback_metadata(value, mode);
636 DCHECK(HasFeedbackMetadata());
643 kOuterScopeInfoOrFeedbackMetadataOffset,
646 IsFeedbackMetadata(value))
653template <
typename IsolateT>
655 return IsCompiledScope(*
this, isolate);
660 : is_compiled_(shared->is_compiled()) {
661 if (shared->HasBaselineCode()) {
662 retain_code_ = handle(shared->baseline_code(kAcquireLoad), isolate);
663 }
else if (shared->HasBytecodeArray()) {
664 retain_code_ = handle(shared->GetBytecodeArray(isolate), isolate);
666 retain_code_ = MaybeHandle<HeapObject>();
674 : is_compiled_(shared->is_compiled()) {
675 if (shared->HasBaselineCode()) {
676 retain_code_ = isolate->heap()->NewPersistentHandle(
677 shared->baseline_code(kAcquireLoad));
678 }
else if (shared->HasBytecodeArray()) {
680 isolate->heap()->NewPersistentHandle(shared->GetBytecodeArray(isolate));
682 retain_code_ = MaybeHandle<HeapObject>();
693 return v8_flags.enable_lazy_source_positions && HasBytecodeArray() &&
709 if (
IsSmi(data))
return false;
712 return InstanceTypeChecker::IsBytecodeArray(instance_type) ||
713 InstanceTypeChecker::IsInterpreterData(instance_type) ||
714 InstanceTypeChecker::IsCode(instance_type);
717template <
typename IsolateT>
719 IsolateT* isolate)
const {
721 isolate->shared_function_info_access(), isolate);
723 DCHECK(HasBytecodeArray());
726 std::optional<Tagged<DebugInfo>> debug_info =
TryGetDebugInfo(main_isolate);
727 if (debug_info.has_value() &&
728 debug_info.value()->HasInstrumentedBytecodeArray()) {
729 return debug_info.value()->OriginalBytecodeArray(main_isolate);
740 data = baseline_code->bytecode_or_interpreter_data();
742 if (IsBytecodeArray(data)) {
756 DCHECK(!HasBaselineCode());
761 DCHECK(HasBytecodeArray());
774 DCHECK(HasBytecodeArray());
788 DCHECK_EQ(baseline_code->kind(), CodeKind::BASELINE);
789 data = baseline_code->bytecode_or_interpreter_data();
791 return IsInterpreterData(data);
800 DCHECK_EQ(baseline_code->kind(), CodeKind::BASELINE);
801 data = baseline_code->bytecode_or_interpreter_data();
810 DCHECK(isolate->interpreted_frames_native_stack());
811 DCHECK(!HasBaselineCode());
817 if (IsCode(data, cage_base)) {
825 DCHECK(HasBaselineCode(cage_base));
827 return GetTrustedData<Code, kCodeIndirectPointerTag>(isolate);
830void SharedFunctionInfo::set_baseline_code(
Tagged<Code> baseline_code,
833 DCHECK_EQ(baseline_code->kind(), CodeKind::BASELINE);
838 DCHECK(HasBaselineCode());
840 baseline_code(
kAcquireLoad)->bytecode_or_interpreter_data();
841 DCHECK(IsBytecodeArray(new_data) || IsInterpreterData(new_data));
845#if V8_ENABLE_WEBASSEMBLY
846bool SharedFunctionInfo::HasAsmWasmData()
const {
850bool SharedFunctionInfo::HasWasmFunctionData()
const {
854bool SharedFunctionInfo::HasWasmExportedFunctionData()
const {
858bool SharedFunctionInfo::HasWasmJSFunctionData()
const {
862bool SharedFunctionInfo::HasWasmCapiFunctionData()
const {
866bool SharedFunctionInfo::HasWasmResumeData()
const {
883 DCHECK(HasWasmFunctionData());
885 return GetTrustedData<WasmFunctionData, kWasmFunctionDataIndirectPointerTag>(
889DEF_GETTER(SharedFunctionInfo, wasm_exported_function_data,
891 DCHECK(HasWasmExportedFunctionData());
895 SBXCHECK(IsWasmExportedFunctionData(data));
899DEF_GETTER(SharedFunctionInfo, wasm_js_function_data,
901 DCHECK(HasWasmJSFunctionData());
903 SBXCHECK(IsWasmJSFunctionData(data));
907DEF_GETTER(SharedFunctionInfo, wasm_capi_function_data,
909 DCHECK(HasWasmCapiFunctionData());
911 SBXCHECK(IsWasmCapiFunctionData(data));
916 DCHECK(HasWasmResumeData());
927Builtin SharedFunctionInfo::builtin_id()
const {
937void SharedFunctionInfo::set_builtin_id(
Builtin builtin) {
970 SBXCHECK(IsUncompiledDataWithPreparseData(data));
992 }
else if (IsUncompiledDataWithoutPreparseDataWithJob(
uncompiled_data)) {
1012 static_assert(UncompiledDataWithoutPreparseData::kSize <
1013 UncompiledDataWithPreparseData::kSize);
1014 static_assert(UncompiledDataWithoutPreparseData::kSize ==
1015 UncompiledData::kHeaderSize);
1018 int old_size = data->Size();
1019 DCHECK_LE(UncompiledDataWithPreparseData::kSize, old_size);
1020 heap->NotifyObjectSizeChange(data, old_size,
1021 UncompiledDataWithoutPreparseData::kSize,
1025 data->set_map(
heap->isolate(),
1038 gc_notify_updated_slot) {
1039#ifdef V8_ENABLE_SANDBOX
1040 init_self_indirect_pointer(isolate);
1042 set_inferred_name(inferred_name);
1043 gc_notify_updated_slot(*
this, RawField(UncompiledData::kInferredNameOffset),
1045 set_start_position(start_position);
1046 set_end_position(end_position);
1055 if (IsScopeInfo(scope_info)) {
1063 if (IsScopeInfo(maybe_scope_info)) {
1065 if (scope_info->HasInferredFunctionName()) {
1069 }
else if (HasUncompiledData()) {
1071 ->inferred_name(cage_base);
1078 if (IsUndefined(script_obj))
return false;
1080 return script->IsUserJavaScript();
1084#if V8_ENABLE_WEBASSEMBLY
1085 if (HasAsmWasmData())
return false;
1086 if (HasWasmExportedFunctionData())
return false;
1092#if V8_ENABLE_WEBASSEMBLY
1093 if (HasAsmWasmData())
return true;
1103void SharedFunctionInfo::set_are_properties_final(
bool value) {
1105 set_properties_are_final(value);
1109bool SharedFunctionInfo::are_properties_final()
const {
#define SBXCHECK(condition)
static T Relaxed_CompareAndSwap(T *addr, typename std::remove_reference< T >::type old_value, typename std::remove_reference< T >::type new_value)
static V8_EXPORT_PRIVATE Kind KindOf(Builtin builtin)
static V8_EXPORT_PRIVATE int GetStackParameterCount(Builtin builtin)
static constexpr bool IsBuiltinId(Builtin builtin)
static constexpr Builtin FromInt(int id)
static V8_EXPORT_PRIVATE const char * name(Builtin builtin)
static const int FIRST_FUNCTION_MAP_INDEX
static const int LAST_FUNCTION_MAP_INDEX
static int FunctionMapIndex(LanguageMode language_mode, FunctionKind kind, bool has_shared_name)
MaybeHandle< HeapObject > retain_code_
Isolate * GetMainThreadIsolateUnsafe()
void copy_in(int index, const uint8_t *buffer, int length)
void set_child(int index, Tagged< PreparseData > value, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
Tagged< Object > get_child_raw(int index) const
ObjectSlot inner_data_start() const
static const int kDataStartOffset
Tagged< PreparseData > get_child(int index) const
void set(int index, uint8_t value)
int inner_start_offset() const
uint8_t get(int index) const
uint16_t internal_formal_parameter_count_with_receiver() const
void set_bytecode_array(Tagged< BytecodeArray > bytecode)
bool CanCollectSourcePosition(Isolate *isolate)
Tagged< Object > GetUntrustedData() const
Tagged< BytecodeArray > GetActiveBytecodeArray(IsolateForSandbox isolate) const
BailoutReason disabled_optimization_reason() const
bool IsApiFunction() const
LanguageMode language_mode() const
Tagged< UncompiledDataWithPreparseData > uncompiled_data_with_preparse_data(IsolateForSandbox isolate) const
bool has_simple_parameters()
Tagged< BytecodeArray > GetBytecodeArray(IsolateT *isolate) const
static const uint16_t kFunctionTokenOutOfRange
int function_token_position() const
bool HasOuterScopeInfo() const
bool HasTrustedData() const
bool is_repl_mode() const
void set_uncompiled_data(Tagged< UncompiledData > data, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
bool is_class_constructor() const
bool HasUncompiledDataWithPreparseData() const
void set_raw_scope_info(Tagged< ScopeInfo > scope_info, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
Tagged< ScopeInfo > EarlyScopeInfo(AcquireLoadTag tag)
FunctionKind kind() const
void set_kind(FunctionKind kind)
bool CanDiscardCompiled() const
Tagged< AbstractCode > abstract_code(Isolate *isolate)
Tagged< Code > InterpreterTrampoline(IsolateForSandbox isolate) const
static V8_EXPORT_PRIVATE constexpr Tagged< Smi > const kNoSharedNameSentinel
void SetTrustedData(Tagged< ExposedTrustedObject > value, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
int32_t relaxed_flags() const
void ClearPreparseData(IsolateForSandbox isolate)
Tagged< HeapObject > script() const
bool HasUncompiledData() const
void ClearUncompiledDataJobPointer(IsolateForSandbox isolate)
uint16_t CompareExchangeAge(uint16_t expected_age, uint16_t new_age)
Tagged< String > Name() const
Tagged< ScopeInfo > GetOuterScopeInfo() const
bool HasUntrustedData() const
bool construct_as_builtin() const
bool IsDontAdaptArguments() const
V8_EXPORT_PRIVATE std::optional< Tagged< DebugInfo > > TryGetDebugInfo(Isolate *isolate) const
Tagged< Object > GetTrustedData() const
bool HasSharedName() const
void SetUntrustedData(Tagged< Object > value, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
V8_EXPORT_PRIVATE int StartPosition() const
Tagged< InterpreterData > interpreter_data(IsolateForSandbox isolate) const
Tagged< UncompiledData > uncompiled_data(IsolateForSandbox isolate) const
uint16_t internal_formal_parameter_count_without_receiver() const
bool HasBuiltinId() const
void SetActiveBytecodeArray(Tagged< BytecodeArray > bytecode, IsolateForSandbox isolate)
void SetName(Tagged< String > name)
void set_interpreter_data(Isolate *isolate, Tagged< InterpreterData > interpreter_data, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
bool HasUncompiledDataWithoutPreparseData() const
bool IsSubjectToDebugging() const
bool has_script(AcquireLoadTag tag) const
void DontAdaptArguments()
bool HasFeedbackMetadata() const
void SetScopeInfo(Tagged< ScopeInfo > scope_info, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
V8_EXPORT_PRIVATE Tagged< Code > GetCode(Isolate *isolate) const
void set_internal_formal_parameter_count(int value)
void UpdateFunctionMapIndex()
IsCompiledScope is_compiled_scope(IsolateT *isolate) const
Inlineability GetInlineability(IsolateT *isolate) const
bool AreSourcePositionsAvailable(IsolateT *isolate) const
void CalculateConstructAsBuiltin()
bool needs_script_context() const
void overwrite_bytecode_array(Tagged< BytecodeArray > bytecode)
void set_relaxed_flags(int32_t flags)
V8_EXPORT_PRIVATE bool HasBreakInfo(Isolate *isolate) const
void set_language_mode(LanguageMode language_mode)
bool HasInterpreterData(IsolateForSandbox isolate) const
void set_uncompiled_data_with_preparse_data(Tagged< UncompiledDataWithPreparseData > data, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
@ kHasOptimizationDisabled
bool optimization_disabled() const
bool IsUserJavaScript() const
static constexpr Tagged< Smi > FromEnum(E value)
static constexpr int ToInt(const Tagged< Object > object)
static constexpr Tagged< Smi > FromInt(int value)
static constexpr Tagged< Smi > zero()
static void Release_Store(Tagged< HeapObject > host, PtrType value)
static PtrType Acquire_Load(Tagged< HeapObject > host, int offset=0)
void InitAfterBytecodeFlush(Isolate *isolate, Tagged< String > inferred_name, int start_position, int end_position, std::function< void(Tagged< HeapObject > object, ObjectSlot slot, Tagged< HeapObject > target)> gc_notify_updated_slot)
V8_INLINE IndirectHandle< T > handle(Tagged< T > object, Isolate *isolate)
constexpr int kTaggedSize
SharedFunctionInfo::HasStaticPrivateMethodsOrAccessorsBit SharedFunctionInfo::MaglevCompilationFailedBit SharedFunctionInfo::FunctionSyntaxKindBits SharedFunctionInfo::HasDuplicateParametersBit SharedFunctionInfo::RequiresInstanceMembersInitializerBit has_reported_binary_coverage
SharedFunctionInfo::HasStaticPrivateMethodsOrAccessorsBit SharedFunctionInfo::MaglevCompilationFailedBit SharedFunctionInfo::FunctionSyntaxKindBits SharedFunctionInfo::HasDuplicateParametersBit SharedFunctionInfo::RequiresInstanceMembersInitializerBit SharedFunctionInfo::HasReportedBinaryCoverageBit SharedFunctionInfo::PropertiesAreFinalBit live_edited
bool is_sloppy(LanguageMode language_mode)
constexpr int kNoSourcePosition
bool IsClassConstructor(FunctionKind kind)
ReadOnlyRoots GetReadOnlyRoots()
@ kUnknownIndirectPointerTag
SharedFunctionInfo::HasStaticPrivateMethodsOrAccessorsBit SharedFunctionInfo::MaglevCompilationFailedBit syntax_kind
SharedFunctionInfo::HasStaticPrivateMethodsOrAccessorsBit maglev_compilation_failed
Tagged(T object) -> Tagged< T >
SharedFunctionInfo::HasStaticPrivateMethodsOrAccessorsBit SharedFunctionInfo::MaglevCompilationFailedBit SharedFunctionInfo::FunctionSyntaxKindBits SharedFunctionInfo::HasDuplicateParametersBit SharedFunctionInfo::RequiresInstanceMembersInitializerBit SharedFunctionInfo::HasReportedBinaryCoverageBit properties_are_final
V8_INLINE constexpr bool IsSmi(TaggedImpl< kRefType, StorageType > obj)
constexpr uint16_t kDontAdaptArgumentsSentinel
constexpr int kFunctionKindBitSize
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 name
constexpr int kJSArgcReceiverSlots
V8_INLINE IsolateForSandbox GetIsolateForSandbox(Tagged< HeapObject >)
uint32_t IndirectPointerHandle
V8_INLINE PtrComprCageBase GetPtrComprCageBase()
SharedFunctionInfo::HasStaticPrivateMethodsOrAccessorsBit SharedFunctionInfo::MaglevCompilationFailedBit SharedFunctionInfo::FunctionSyntaxKindBits has_duplicate_parameters
bool is_strict(LanguageMode language_mode)
UnionOf< Smi, String, ScopeInfo > NameOrScopeInfoT
V8_EXPORT_PRIVATE FlagValues v8_flags
constexpr int JSParameterCount(int param_count_without_receiver)
V8_INLINE Heap * GetHeapFromWritableObject(Tagged< HeapObject > object)
constexpr IndirectPointerHandle kNullIndirectPointerHandle
SharedFunctionInfo::HasStaticPrivateMethodsOrAccessorsBit SharedFunctionInfo::MaglevCompilationFailedBit relaxed_flags
has_static_private_methods_or_accessors
SharedFunctionInfo::HasStaticPrivateMethodsOrAccessorsBit SharedFunctionInfo::MaglevCompilationFailedBit SharedFunctionInfo::FunctionSyntaxKindBits SharedFunctionInfo::HasDuplicateParametersBit requires_instance_members_initializer
LanguageMode construct_language_mode(bool strict_bit)
static constexpr Address kNullAddress
raw_outer_scope_info_or_feedback_metadata
static const size_t LanguageModeSize
kInterpreterTrampolineOffset script
Tagged< To > Cast(Tagged< From > value, const v8::SourceLocation &loc=INIT_SOURCE_LOCATION_IN_DEBUG)
static constexpr ReleaseStoreTag kReleaseStore
static constexpr RelaxedLoadTag kRelaxedLoad
static constexpr RelaxedStoreTag kRelaxedStore
static constexpr AcquireLoadTag kAcquireLoad
#define PROTECTED_POINTER_ACCESSORS(holder, name, type, offset)
#define RENAME_TORQUE_ACCESSORS(holder, name, torque_name, type)
#define UINT8_ACCESSORS(holder, name, offset)
#define OBJECT_CONSTRUCTORS_IMPL(Type, Super)
#define DEF_ACQUIRE_GETTER(holder, name,...)
#define ACCESSORS(holder, name, type, offset)
#define RELAXED_READ_FIELD(p, offset)
#define RELEASE_ACQUIRE_ACCESSORS_CHECKED2(holder, name, type, offset, get_condition, set_condition)
#define WRITE_FIELD(p, offset, value)
#define CONDITIONAL_TRUSTED_POINTER_WRITE_BARRIER(object, offset, tag, value, mode)
#define TQ_OBJECT_CONSTRUCTORS_IMPL(Type)
#define CONDITIONAL_WRITE_BARRIER(object, offset, value, mode)
#define BIT_FIELD_ACCESSORS(holder, field, name, BitField)
#define RELAXED_INT32_ACCESSORS(holder, name, offset)
#define RENAME_PRIMITIVE_TORQUE_ACCESSORS(holder, name, torque_name, type)
#define RELAXED_WRITE_FIELD(p, offset, value)
#define RELAXED_WRITE_UINT16_FIELD(p, offset, value)
#define RELAXED_READ_UINT16_FIELD(p, offset)
#define RELEASE_ACQUIRE_ACCESSORS(holder, name, type, offset)
#define DEF_GETTER(Camel, Lower, Bit)
#define DCHECK_LE(v1, v2)
#define DCHECK_IMPLIES(v1, v2)
#define DCHECK_GE(v1, v2)
#define DCHECK(condition)
#define DCHECK_LT(v1, v2)
#define DCHECK_EQ(v1, v2)