v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
object-macros.h File Reference
#include "src/base/memory.h"
Include dependency graph for object-macros.h:

Go to the source code of this file.

Macros

#define V8_OBJECT_MACROS_DEFINED
 
#define V8_OBJECT   V8_OBJECT_PUSH
 
#define V8_OBJECT_END
 
#define V8_OBJECT_INNER_CLASS   V8_OBJECT_POP
 
#define V8_OBJECT_INNER_CLASS_END
 
#define OBJECT_CONSTRUCTORS(Type, ...)
 
#define OBJECT_CONSTRUCTORS_IMPL(Type, Super)
 
#define NEVER_READ_ONLY_SPACE
 
#define NEVER_READ_ONLY_SPACE_IMPL(Type)
 
#define DECL_PRIMITIVE_GETTER(name, type)
 
#define DECL_PRIMITIVE_SETTER(name, type)
 
#define DECL_PRIMITIVE_ACCESSORS(name, type)
 
#define DECL_BOOLEAN_ACCESSORS(name)
 
#define DECL_INT_ACCESSORS(name)
 
#define DECL_INT32_ACCESSORS(name)
 
#define DECL_SANDBOXED_POINTER_ACCESSORS(name, type)
 
#define DECL_UINT16_ACCESSORS(name)
 
#define DECL_INT16_ACCESSORS(name)
 
#define DECL_UINT8_ACCESSORS(name)
 
#define DECL_RELAXED_PRIMITIVE_ACCESSORS(name, type)
 
#define DECL_RELAXED_INT32_ACCESSORS(name)
 
#define DECL_RELAXED_UINT32_ACCESSORS(name)
 
#define DECL_RELAXED_UINT16_ACCESSORS(name)
 
#define DECL_RELAXED_UINT8_ACCESSORS(name)
 
#define DECL_GETTER(name, ...)
 
#define DEF_GETTER(holder, name, ...)
 
#define DEF_RELAXED_GETTER(holder, name, ...)
 
#define DEF_ACQUIRE_GETTER(holder, name, ...)
 
#define DEF_HEAP_OBJECT_PREDICATE(holder, name)
 
#define TQ_FIELD_TYPE(name, tq_type)
 
#define DECL_FIELD_OFFSET_TQ(name, value, tq_type)
 
#define DECL_SETTER(name, ...)
 
#define DECL_ACCESSORS(name, ...)
 
#define DECL_ACCESSORS_LOAD_TAG(name, type, tag_type)
 
#define DECL_ACCESSORS_STORE_TAG(name, type, tag_type)
 
#define DECL_RELAXED_GETTER(name, ...)
 
#define DECL_RELAXED_SETTER(name, ...)
 
#define DECL_RELAXED_ACCESSORS(name, ...)
 
#define DECL_ACQUIRE_GETTER(name, ...)
 
#define DECL_RELEASE_SETTER(name, ...)
 
#define DECL_RELEASE_ACQUIRE_ACCESSORS(name, ...)
 
#define DEF_PRIMITIVE_ACCESSORS(holder, name, offset, type)
 
#define INT_ACCESSORS(holder, name, offset)
 
#define INT32_ACCESSORS(holder, name, offset)
 
#define UINT16_ACCESSORS(holder, name, offset)
 
#define UINT8_ACCESSORS(holder, name, offset)
 
#define RELAXED_INT32_ACCESSORS(holder, name, offset)
 
#define RELAXED_UINT32_ACCESSORS(holder, name, offset)
 
#define RELAXED_UINT16_ACCESSORS(holder, name, offset)
 
#define RELAXED_UINT8_ACCESSORS(holder, name, offset)
 
#define ACCESSORS_CHECKED2(holder, name, type, offset, get_condition, set_condition)
 
#define ACCESSORS_CHECKED(holder, name, type, offset, condition)
 
#define ACCESSORS(holder, name, type, offset)
 
#define ACCESSORS_NOCAGE(holder, name, type, offset)
 
#define RENAME_TORQUE_ACCESSORS(holder, name, torque_name, type)
 
#define RENAME_PRIMITIVE_TORQUE_ACCESSORS(holder, name, torque_name, type)
 
#define ACCESSORS_RELAXED_CHECKED2(holder, name, type, offset, get_condition, set_condition)
 
#define ACCESSORS_RELAXED_CHECKED(holder, name, type, offset, condition)
 
#define ACCESSORS_RELAXED(holder, name, type, offset)
 
#define RELAXED_ACCESSORS_CHECKED2(holder, name, type, offset, get_condition, set_condition)
 
#define RELAXED_ACCESSORS_CHECKED(holder, name, type, offset, condition)
 
#define RELAXED_ACCESSORS(holder, name, type, offset)
 
#define RELEASE_ACQUIRE_GETTER_CHECKED(holder, name, type, offset, get_condition)
 
#define RELEASE_ACQUIRE_SETTER_CHECKED(holder, name, type, offset, set_condition)
 
#define RELEASE_ACQUIRE_ACCESSORS_CHECKED2(holder, name, type, offset, get_condition, set_condition)
 
#define RELEASE_ACQUIRE_ACCESSORS_CHECKED(holder, name, type, offset, condition)
 
#define RELEASE_ACQUIRE_ACCESSORS(holder, name, type, offset)
 
#define SMI_ACCESSORS_CHECKED(holder, name, offset, condition)
 
#define SMI_ACCESSORS(holder, name, offset)
 
#define DECL_RELEASE_ACQUIRE_INT_ACCESSORS(name)
 
#define RELEASE_ACQUIRE_SMI_ACCESSORS(holder, name, offset)
 
#define DECL_RELAXED_INT_ACCESSORS(name)
 
#define RELAXED_SMI_ACCESSORS(holder, name, offset)
 
#define BOOL_GETTER(holder, field, name, offset)
 
#define BOOL_ACCESSORS(holder, field, name, offset)
 
#define DECL_RELAXED_BOOL_ACCESSORS(name)
 
#define RELAXED_BOOL_ACCESSORS(holder, field, name, offset)
 
#define DECL_LAZY_EXTERNAL_POINTER_ACCESSORS_MAYBE_READ_ONLY_HOST(name, type)
 
#define LAZY_EXTERNAL_POINTER_ACCESSORS_MAYBE_READ_ONLY_HOST_CHECKED2( holder, name, type, offset, tag, get_condition, set_condition)
 
#define LAZY_EXTERNAL_POINTER_ACCESSORS_MAYBE_READ_ONLY_HOST_CHECKED(holder, name, type, offset, tag, condition)
 
#define LAZY_EXTERNAL_POINTER_ACCESSORS_MAYBE_READ_ONLY_HOST( holder, name, type, offset, tag)
 
#define DECL_EXTERNAL_POINTER_ACCESSORS_MAYBE_READ_ONLY_HOST(name, type)
 
#define EXTERNAL_POINTER_ACCESSORS_MAYBE_READ_ONLY_HOST(holder, name, type, offset, tag)
 
#define DECL_EXTERNAL_POINTER_ACCESSORS(name, type)
 
#define EXTERNAL_POINTER_ACCESSORS(holder, name, type, offset, tag)
 
#define DECL_TRUSTED_POINTER_GETTERS(name, type)
 
#define DECL_TRUSTED_POINTER_SETTERS(name, type)
 
#define DECL_TRUSTED_POINTER_ACCESSORS(name, type)
 
#define TRUSTED_POINTER_ACCESSORS(holder, name, type, offset, tag)
 
#define DECL_CODE_POINTER_ACCESSORS(name)
 
#define CODE_POINTER_ACCESSORS(holder, name, offset)
 
#define DECL_PROTECTED_POINTER_ACCESSORS(name, type)
 
#define PROTECTED_POINTER_ACCESSORS(holder, name, type, offset)
 
#define DECL_RELEASE_ACQUIRE_PROTECTED_POINTER_ACCESSORS(name, type)
 
#define RELEASE_ACQUIRE_PROTECTED_POINTER_ACCESSORS(holder, name, type, offset)
 
#define BIT_FIELD_ACCESSORS2(holder, get_field, set_field, name, BitField)
 
#define BIT_FIELD_ACCESSORS(holder, field, name, BitField)
 
#define RELAXED_INT16_ACCESSORS(holder, name, offset)
 
#define FIELD_ADDR(p, offset)
 
#define SEQ_CST_READ_FIELD(p, offset)
 
#define ACQUIRE_READ_FIELD(p, offset)
 
#define RELAXED_READ_FIELD(p, offset)
 
#define RELAXED_READ_WEAK_FIELD(p, offset)
 
#define WRITE_FIELD(p, offset, value)
 
#define SEQ_CST_WRITE_FIELD(p, offset, value)
 
#define RELEASE_WRITE_FIELD(p, offset, value)
 
#define RELAXED_WRITE_FIELD(p, offset, value)
 
#define RELAXED_WRITE_WEAK_FIELD(p, offset, value)
 
#define SEQ_CST_SWAP_FIELD(p, offset, value)
 
#define SEQ_CST_COMPARE_AND_SWAP_FIELD(p, offset, expected, value)
 
#define WRITE_BARRIER(object, offset, value)
 
#define EXTERNAL_POINTER_WRITE_BARRIER(object, offset, tag)
 
#define INDIRECT_POINTER_WRITE_BARRIER(object, offset, tag, value)
 
#define JS_DISPATCH_HANDLE_WRITE_BARRIER(object, handle)
 
#define CONDITIONAL_WRITE_BARRIER(object, offset, value, mode)
 
#define CONDITIONAL_EXTERNAL_POINTER_WRITE_BARRIER(object, offset, tag, mode)
 
#define CONDITIONAL_INDIRECT_POINTER_WRITE_BARRIER(object, offset, tag, value, mode)
 
#define CONDITIONAL_TRUSTED_POINTER_WRITE_BARRIER(object, offset, tag, value, mode)
 
#define CONDITIONAL_CODE_POINTER_WRITE_BARRIER(object, offset, value, mode)
 
#define CONDITIONAL_PROTECTED_POINTER_WRITE_BARRIER(object, offset, value, mode)
 
#define CONDITIONAL_JS_DISPATCH_HANDLE_WRITE_BARRIER(object, handle, mode)
 
#define ACQUIRE_READ_INT8_FIELD(p, offset)
 
#define ACQUIRE_READ_INT32_FIELD(p, offset)
 
#define RELAXED_WRITE_INT8_FIELD(p, offset, value)
 
#define RELAXED_READ_INT8_FIELD(p, offset)
 
#define RELAXED_WRITE_UINT8_FIELD(p, offset, value)
 
#define RELAXED_READ_UINT8_FIELD(p, offset)
 
#define RELAXED_READ_UINT16_FIELD(p, offset)
 
#define RELAXED_WRITE_UINT16_FIELD(p, offset, value)
 
#define RELAXED_READ_INT16_FIELD(p, offset)
 
#define RELAXED_WRITE_INT16_FIELD(p, offset, value)
 
#define RELAXED_READ_UINT32_FIELD(p, offset)
 
#define ACQUIRE_READ_UINT32_FIELD(p, offset)
 
#define RELAXED_WRITE_UINT32_FIELD(p, offset, value)
 
#define RELEASE_WRITE_INT8_FIELD(p, offset, value)
 
#define RELEASE_WRITE_UINT32_FIELD(p, offset, value)
 
#define RELAXED_READ_INT32_FIELD(p, offset)
 
#define RELEASE_WRITE_INT32_FIELD(p, offset, value)
 
#define RELAXED_WRITE_INT32_FIELD(p, offset, value)
 
#define RELAXED_READ_INT_FIELD(p, offset)
 
#define RELAXED_WRITE_INT_FIELD(p, offset, value)
 
#define RELAXED_READ_UINT_FIELD(p, offset)
 
#define RELAXED_WRITE_UINT_FIELD(p, offset, value)
 
#define RELAXED_READ_BYTE_FIELD(p, offset)
 
#define ACQUIRE_READ_BYTE_FIELD(p, offset)
 
#define RELAXED_WRITE_BYTE_FIELD(p, offset, value)
 
#define RELEASE_WRITE_BYTE_FIELD(p, offset, value)
 
#define DECL_PRINTER(Name)
 
#define DECL_VERIFIER(Name)
 
#define EXPORT_DECL_VERIFIER(Name)
 
#define DECL_STATIC_VERIFIER(Name)
 
#define EXPORT_DECL_STATIC_VERIFIER(Name)
 
#define DEFINE_DEOPT_ELEMENT_ACCESSORS(name, type)
 
#define DEFINE_DEOPT_ENTRY_ACCESSORS(name, type)
 
#define TQ_OBJECT_CONSTRUCTORS(Type)
 
#define TQ_OBJECT_CONSTRUCTORS_IMPL(Type)
 
#define TQ_CPP_OBJECT_DEFINITION_ASSERTS(_class, parent)
 

Macro Definition Documentation

◆ ACCESSORS

#define ACCESSORS ( holder,
name,
type,
offset )
Value:
ACCESSORS_CHECKED(holder, name, type, offset, true)
int32_t offset
#define ACCESSORS_CHECKED(holder, name, type, offset, condition)

Definition at line 279 of file object-macros.h.

◆ ACCESSORS_CHECKED

#define ACCESSORS_CHECKED ( holder,
name,
type,
offset,
condition )
Value:
#define ACCESSORS_CHECKED2(holder, name, type, offset, get_condition, set_condition)

Definition at line 276 of file object-macros.h.

◆ ACCESSORS_CHECKED2

#define ACCESSORS_CHECKED2 ( holder,
name,
type,
offset,
get_condition,
set_condition )
Value:
DEF_GETTER(holder, name, UNPAREN(type)) { \
UNPAREN(type) \
value = TaggedField<UNPAREN(type), offset>::load(cage_base, *this); \
DCHECK(get_condition); \
return value; \
} \
void holder::set_##name(UNPAREN(type) value, WriteBarrierMode mode) { \
DCHECK(set_condition); \
TaggedField<UNPAREN(type), offset>::store(*this, value); \
CONDITIONAL_WRITE_BARRIER(*this, offset, value, mode); \
}
const char * name
Definition builtins.cc:39
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 store(v8::tracing::TracingCategoryObserver::ENABLED_BY_NATIVE)) DEFINE_GENERIC_IMPLICATION(trace_gc_object_stats
#define DEF_GETTER(holder, name,...)
#define UNPAREN(X)
Definition macros.h:53
std::unique_ptr< ValueMirror > value

Definition at line 262 of file object-macros.h.

◆ ACCESSORS_NOCAGE

#define ACCESSORS_NOCAGE ( holder,
name,
type,
offset )
Value:
type holder::name() const { \
PtrComprCageBase cage_base = GetPtrComprCageBase(*this); \
return TaggedField<type, offset>::load(cage_base, *this); \
} \
void holder::set_##name(type value, WriteBarrierMode mode) { \
TaggedField<type, offset>::store(*this, value); \
CONDITIONAL_WRITE_BARRIER(*this, offset, value, mode); \
}

Definition at line 286 of file object-macros.h.

◆ ACCESSORS_RELAXED

#define ACCESSORS_RELAXED ( holder,
name,
type,
offset )
Value:
ACCESSORS_RELAXED_CHECKED(holder, name, type, offset, true)
#define ACCESSORS_RELAXED_CHECKED(holder, name, type, offset, condition)

Definition at line 333 of file object-macros.h.

◆ ACCESSORS_RELAXED_CHECKED

#define ACCESSORS_RELAXED_CHECKED ( holder,
name,
type,
offset,
condition )
Value:
#define ACCESSORS_RELAXED_CHECKED2(holder, name, type, offset, get_condition, set_condition)

Definition at line 330 of file object-macros.h.

◆ ACCESSORS_RELAXED_CHECKED2

#define ACCESSORS_RELAXED_CHECKED2 ( holder,
name,
type,
offset,
get_condition,
set_condition )
Value:
type holder::name() const { \
PtrComprCageBase cage_base = GetPtrComprCageBase(*this); \
return holder::name(cage_base); \
} \
type holder::name(PtrComprCageBase cage_base) const { \
type value = TaggedField<type, offset>::Relaxed_Load(cage_base, *this); \
DCHECK(get_condition); \
return value; \
} \
void holder::set_##name(type value, WriteBarrierMode mode) { \
DCHECK(set_condition); \
TaggedField<type, offset>::Relaxed_Store(*this, value); \
CONDITIONAL_WRITE_BARRIER(*this, offset, value, mode); \
}

Definition at line 313 of file object-macros.h.

◆ ACQUIRE_READ_BYTE_FIELD

#define ACQUIRE_READ_BYTE_FIELD ( p,
offset )
Value:
static_cast<uint8_t>(base::Acquire_Load( \
reinterpret_cast<const base::Atomic8*>(FIELD_ADDR(p, offset))))
#define FIELD_ADDR(p, offset)

Definition at line 934 of file object-macros.h.

◆ ACQUIRE_READ_FIELD

#define ACQUIRE_READ_FIELD ( p,
offset )
Value:
TaggedField<Object>::Acquire_Load(p, offset)

Definition at line 684 of file object-macros.h.

◆ ACQUIRE_READ_INT32_FIELD

#define ACQUIRE_READ_INT32_FIELD ( p,
offset )
Value:
static_cast<int32_t>(base::Acquire_Load( \
reinterpret_cast<const base::Atomic32*>(FIELD_ADDR(p, offset))))

Definition at line 836 of file object-macros.h.

◆ ACQUIRE_READ_INT8_FIELD

#define ACQUIRE_READ_INT8_FIELD ( p,
offset )
Value:
static_cast<int8_t>(base::Acquire_Load( \
reinterpret_cast<const base::Atomic8*>(FIELD_ADDR(p, offset))))

Definition at line 832 of file object-macros.h.

◆ ACQUIRE_READ_UINT32_FIELD

#define ACQUIRE_READ_UINT32_FIELD ( p,
offset )
Value:
static_cast<uint32_t>(base::Acquire_Load( \
reinterpret_cast<const base::Atomic32*>(FIELD_ADDR(p, offset))))

Definition at line 876 of file object-macros.h.

◆ BIT_FIELD_ACCESSORS

#define BIT_FIELD_ACCESSORS ( holder,
field,
name,
BitField )
Value:
BIT_FIELD_ACCESSORS2(holder, field, field, name, BitField)
#define BIT_FIELD_ACCESSORS2(holder, get_field, set_field, name, BitField)

Definition at line 668 of file object-macros.h.

◆ BIT_FIELD_ACCESSORS2

#define BIT_FIELD_ACCESSORS2 ( holder,
get_field,
set_field,
name,
BitField )
Value:
typename BitField::FieldType holder::name() const { \
return BitField::decode(get_field()); \
} \
void holder::set_##name(typename BitField::FieldType value) { \
set_##set_field(BitField::update(set_field(), value)); \
}
ZoneVector< InstructionOperand > * set_

Definition at line 660 of file object-macros.h.

◆ BOOL_ACCESSORS

#define BOOL_ACCESSORS ( holder,
field,
name,
offset )
Value:
bool holder::name() const { return BooleanBit::get(field(), offset); } \
void holder::set_##name(bool value) { \
set_##field(BooleanBit::set(field(), offset, value)); \
}

Definition at line 435 of file object-macros.h.

◆ BOOL_GETTER

#define BOOL_GETTER ( holder,
field,
name,
offset )
Value:
bool holder::name() const { return BooleanBit::get(field(), offset); }

Definition at line 432 of file object-macros.h.

◆ CODE_POINTER_ACCESSORS

#define CODE_POINTER_ACCESSORS ( holder,
name,
offset )
Value:
TRUSTED_POINTER_ACCESSORS(holder, name, Code, offset, kCodeIndirectPointerTag)
#define TRUSTED_POINTER_ACCESSORS(holder, name, type, offset, tag)

Definition at line 606 of file object-macros.h.

◆ CONDITIONAL_CODE_POINTER_WRITE_BARRIER

#define CONDITIONAL_CODE_POINTER_WRITE_BARRIER ( object,
offset,
value,
mode )
Value:
object, offset, kCodeIndirectPointerTag, value, mode)
#define CONDITIONAL_TRUSTED_POINTER_WRITE_BARRIER(object, offset, tag, value, mode)

Definition at line 810 of file object-macros.h.

◆ CONDITIONAL_EXTERNAL_POINTER_WRITE_BARRIER

#define CONDITIONAL_EXTERNAL_POINTER_WRITE_BARRIER ( object,
offset,
tag,
mode )
Value:
do { \
DCHECK(HeapLayout::IsOwnedByAnyHeap(object)); \
WriteBarrier::ForExternalPointer( \
object, Tagged(object)->RawExternalPointerField(offset, tag), mode); \
} while (false)

Definition at line 781 of file object-macros.h.

◆ CONDITIONAL_INDIRECT_POINTER_WRITE_BARRIER

#define CONDITIONAL_INDIRECT_POINTER_WRITE_BARRIER ( object,
offset,
tag,
value,
mode )
Value:
do { \
DCHECK(HeapLayout::IsOwnedByAnyHeap(object)); \
WriteBarrier::ForIndirectPointer( \
object, (object).RawIndirectPointerField(offset, tag), value, mode); \
} while (false)

Definition at line 792 of file object-macros.h.

◆ CONDITIONAL_JS_DISPATCH_HANDLE_WRITE_BARRIER

#define CONDITIONAL_JS_DISPATCH_HANDLE_WRITE_BARRIER ( object,
handle,
mode )
Value:
do { \
DCHECK(HeapLayout::IsOwnedByAnyHeap(object)); \
WriteBarrier::ForJSDispatchHandle(object, handle, mode); \
} while (false)

Definition at line 825 of file object-macros.h.

◆ CONDITIONAL_PROTECTED_POINTER_WRITE_BARRIER

#define CONDITIONAL_PROTECTED_POINTER_WRITE_BARRIER ( object,
offset,
value,
mode )
Value:
do { \
DCHECK(HeapLayout::IsOwnedByAnyHeap(object)); \
WriteBarrier::ForProtectedPointer( \
object, (object).RawProtectedPointerField(offset), value, mode); \
} while (false)

Definition at line 814 of file object-macros.h.

◆ CONDITIONAL_TRUSTED_POINTER_WRITE_BARRIER

#define CONDITIONAL_TRUSTED_POINTER_WRITE_BARRIER ( object,
offset,
tag,
value,
mode )
Value:
CONDITIONAL_WRITE_BARRIER(*this, offset, value, mode);
#define CONDITIONAL_WRITE_BARRIER(object, offset, value, mode)

Definition at line 806 of file object-macros.h.

◆ CONDITIONAL_WRITE_BARRIER

#define CONDITIONAL_WRITE_BARRIER ( object,
offset,
value,
mode )
Value:
do { \
DCHECK(HeapLayout::IsOwnedByAnyHeap(object)); \
/* For write barriers, it doesn't matter if the slot is strong or weak, */ \
/* so use the most generic slot (a maybe weak one). */ \
WriteBarrier::ForValue(object, (object)->RawMaybeWeakField(offset), value, \
mode); \
} while (false)

Definition at line 768 of file object-macros.h.

◆ DECL_ACCESSORS

#define DECL_ACCESSORS ( name,
... )
Value:
DECL_GETTER(name, __VA_ARGS__) \
DECL_SETTER(name, __VA_ARGS__)
#define DECL_GETTER(name,...)

Definition at line 182 of file object-macros.h.

◆ DECL_ACCESSORS_LOAD_TAG

#define DECL_ACCESSORS_LOAD_TAG ( name,
type,
tag_type )
Value:
inline UNPAREN(type) name(tag_type tag) const; \
inline UNPAREN(type) name(PtrComprCageBase cage_base, tag_type) const;

Definition at line 186 of file object-macros.h.

◆ DECL_ACCESSORS_STORE_TAG

#define DECL_ACCESSORS_STORE_TAG ( name,
type,
tag_type )
Value:
inline void set_##name(UNPAREN(type) value, tag_type, \
WriteBarrierMode mode = UPDATE_WRITE_BARRIER);

Definition at line 190 of file object-macros.h.

◆ DECL_ACQUIRE_GETTER

#define DECL_ACQUIRE_GETTER ( name,
... )
Value:
DECL_ACCESSORS_LOAD_TAG(name, (__VA_ARGS__), AcquireLoadTag)
#define DECL_ACCESSORS_LOAD_TAG(name, type, tag_type)

Definition at line 204 of file object-macros.h.

◆ DECL_BOOLEAN_ACCESSORS

#define DECL_BOOLEAN_ACCESSORS ( name)
Value:
#define DECL_PRIMITIVE_ACCESSORS(name, type)

Definition at line 107 of file object-macros.h.

◆ DECL_CODE_POINTER_ACCESSORS

#define DECL_CODE_POINTER_ACCESSORS ( name)
Value:
#define DECL_TRUSTED_POINTER_ACCESSORS(name, type)

Definition at line 604 of file object-macros.h.

◆ DECL_EXTERNAL_POINTER_ACCESSORS

#define DECL_EXTERNAL_POINTER_ACCESSORS ( name,
type )
Value:
inline type name() const; \
DECL_EXTERNAL_POINTER_ACCESSORS_MAYBE_READ_ONLY_HOST(name, type)

Definition at line 537 of file object-macros.h.

◆ DECL_EXTERNAL_POINTER_ACCESSORS_MAYBE_READ_ONLY_HOST

#define DECL_EXTERNAL_POINTER_ACCESSORS_MAYBE_READ_ONLY_HOST ( name,
type )
Value:
inline type name(i::IsolateForSandbox isolate) const; \
inline void init_##name(i::IsolateForSandbox isolate, \
const type initial_value); \
inline void set_##name(i::IsolateForSandbox isolate, const type value);

Definition at line 502 of file object-macros.h.

◆ DECL_FIELD_OFFSET_TQ

#define DECL_FIELD_OFFSET_TQ ( name,
value,
tq_type )
Value:
static const int k##name##Offset = value; \
TQ_FIELD_TYPE(name, tq_type)

Definition at line 174 of file object-macros.h.

◆ DECL_GETTER

#define DECL_GETTER ( name,
... )
Value:
inline __VA_ARGS__ name() const; \
inline __VA_ARGS__ name(PtrComprCageBase cage_base) const;

Definition at line 139 of file object-macros.h.

◆ DECL_INT16_ACCESSORS

#define DECL_INT16_ACCESSORS ( name)
Value:

Definition at line 119 of file object-macros.h.

◆ DECL_INT32_ACCESSORS

#define DECL_INT32_ACCESSORS ( name)
Value:

Definition at line 111 of file object-macros.h.

◆ DECL_INT_ACCESSORS

#define DECL_INT_ACCESSORS ( name)
Value:

Definition at line 109 of file object-macros.h.

◆ DECL_LAZY_EXTERNAL_POINTER_ACCESSORS_MAYBE_READ_ONLY_HOST

#define DECL_LAZY_EXTERNAL_POINTER_ACCESSORS_MAYBE_READ_ONLY_HOST ( name,
type )
Value:
inline void init_##name(); \
inline bool has_##name() const; \
inline type name(i::IsolateForSandbox isolate) const; \
inline void set_##name(i::IsolateForSandbox isolate, const type value);

Definition at line 455 of file object-macros.h.

◆ DECL_PRIMITIVE_ACCESSORS

#define DECL_PRIMITIVE_ACCESSORS ( name,
type )
Value:
DECL_PRIMITIVE_GETTER(name, type) \
DECL_PRIMITIVE_SETTER(name, type)
#define DECL_PRIMITIVE_GETTER(name, type)

Definition at line 103 of file object-macros.h.

◆ DECL_PRIMITIVE_GETTER

#define DECL_PRIMITIVE_GETTER ( name,
type )
Value:
inline type name() const;

Definition at line 99 of file object-macros.h.

◆ DECL_PRIMITIVE_SETTER

#define DECL_PRIMITIVE_SETTER ( name,
type )
Value:
inline void set_##name(type value);

Definition at line 101 of file object-macros.h.

◆ DECL_PRINTER

#define DECL_PRINTER ( Name)

Definition at line 949 of file object-macros.h.

◆ DECL_PROTECTED_POINTER_ACCESSORS

#define DECL_PROTECTED_POINTER_ACCESSORS ( name,
type )
Value:
inline Tagged<type> name() const; \
inline void set_##name(Tagged<type> value, \
WriteBarrierMode mode = UPDATE_WRITE_BARRIER); \
inline bool has_##name() const; \
inline void clear_##name();

Definition at line 612 of file object-macros.h.

◆ DECL_RELAXED_ACCESSORS

#define DECL_RELAXED_ACCESSORS ( name,
... )
Value:
DECL_RELAXED_GETTER(name, __VA_ARGS__) \
DECL_RELAXED_SETTER(name, __VA_ARGS__)
#define DECL_RELAXED_GETTER(name,...)

Definition at line 200 of file object-macros.h.

◆ DECL_RELAXED_BOOL_ACCESSORS

#define DECL_RELAXED_BOOL_ACCESSORS ( name)
Value:
inline bool name(RelaxedLoadTag) const; \
inline void set_##name(bool value, RelaxedStoreTag);

Definition at line 441 of file object-macros.h.

◆ DECL_RELAXED_GETTER

#define DECL_RELAXED_GETTER ( name,
... )
Value:
DECL_ACCESSORS_LOAD_TAG(name, (__VA_ARGS__), RelaxedLoadTag)

Definition at line 194 of file object-macros.h.

◆ DECL_RELAXED_INT32_ACCESSORS

#define DECL_RELAXED_INT32_ACCESSORS ( name)
Value:
#define DECL_RELAXED_PRIMITIVE_ACCESSORS(name, type)

Definition at line 127 of file object-macros.h.

◆ DECL_RELAXED_INT_ACCESSORS

#define DECL_RELAXED_INT_ACCESSORS ( name)
Value:
inline int name(RelaxedLoadTag) const; \
inline void set_##name(int value, RelaxedStoreTag);

Definition at line 419 of file object-macros.h.

◆ DECL_RELAXED_PRIMITIVE_ACCESSORS

#define DECL_RELAXED_PRIMITIVE_ACCESSORS ( name,
type )
Value:
inline type name(RelaxedLoadTag) const; \
inline void set_##name(type value, RelaxedStoreTag);

Definition at line 123 of file object-macros.h.

◆ DECL_RELAXED_SETTER

#define DECL_RELAXED_SETTER ( name,
... )
Value:
DECL_ACCESSORS_STORE_TAG(name, (__VA_ARGS__), RelaxedStoreTag)
#define DECL_ACCESSORS_STORE_TAG(name, type, tag_type)

Definition at line 197 of file object-macros.h.

◆ DECL_RELAXED_UINT16_ACCESSORS

#define DECL_RELAXED_UINT16_ACCESSORS ( name)
Value:

Definition at line 133 of file object-macros.h.

◆ DECL_RELAXED_UINT32_ACCESSORS

#define DECL_RELAXED_UINT32_ACCESSORS ( name)
Value:

Definition at line 130 of file object-macros.h.

◆ DECL_RELAXED_UINT8_ACCESSORS

#define DECL_RELAXED_UINT8_ACCESSORS ( name)
Value:

Definition at line 136 of file object-macros.h.

◆ DECL_RELEASE_ACQUIRE_ACCESSORS

#define DECL_RELEASE_ACQUIRE_ACCESSORS ( name,
... )
Value:
DECL_ACQUIRE_GETTER(name, __VA_ARGS__) \
DECL_RELEASE_SETTER(name, __VA_ARGS__)
#define DECL_ACQUIRE_GETTER(name,...)

Definition at line 210 of file object-macros.h.

◆ DECL_RELEASE_ACQUIRE_INT_ACCESSORS

#define DECL_RELEASE_ACQUIRE_INT_ACCESSORS ( name)
Value:
inline int name(AcquireLoadTag) const; \
inline void set_##name(int value, ReleaseStoreTag);

Definition at line 406 of file object-macros.h.

◆ DECL_RELEASE_ACQUIRE_PROTECTED_POINTER_ACCESSORS

#define DECL_RELEASE_ACQUIRE_PROTECTED_POINTER_ACCESSORS ( name,
type )
Value:
inline Tagged<type> name(AcquireLoadTag) const; \
inline void set_##name(Tagged<type> value, ReleaseStoreTag, \
WriteBarrierMode mode = UPDATE_WRITE_BARRIER); \
inline bool has_##name(AcquireLoadTag) const; \
inline void clear_##name(ReleaseStoreTag);

Definition at line 634 of file object-macros.h.

◆ DECL_RELEASE_SETTER

#define DECL_RELEASE_SETTER ( name,
... )
Value:
DECL_ACCESSORS_STORE_TAG(name, (__VA_ARGS__), ReleaseStoreTag)

Definition at line 207 of file object-macros.h.

◆ DECL_SANDBOXED_POINTER_ACCESSORS

#define DECL_SANDBOXED_POINTER_ACCESSORS ( name,
type )
Value:
DECL_PRIMITIVE_GETTER(name, type) \
DECL_PRIMITIVE_SETTER(name, type)

Definition at line 113 of file object-macros.h.

◆ DECL_SETTER

#define DECL_SETTER ( name,
... )
Value:
inline void set_##name(__VA_ARGS__ value, \
WriteBarrierMode mode = UPDATE_WRITE_BARRIER);

Definition at line 178 of file object-macros.h.

◆ DECL_STATIC_VERIFIER

#define DECL_STATIC_VERIFIER ( Name)

Definition at line 964 of file object-macros.h.

◆ DECL_TRUSTED_POINTER_ACCESSORS

#define DECL_TRUSTED_POINTER_ACCESSORS ( name,
type )
Value:
DECL_TRUSTED_POINTER_SETTERS(name, type)
#define DECL_TRUSTED_POINTER_GETTERS(name, type)

Definition at line 575 of file object-macros.h.

◆ DECL_TRUSTED_POINTER_GETTERS

#define DECL_TRUSTED_POINTER_GETTERS ( name,
type )
Value:
/* Trusted pointers currently always have release-acquire semantics. */ \
/* However, we still expose explicit release-acquire accessors so it */ \
/* can be made clear when they are required. */ \
/* If desired, we could create separate {Read|Write}TrustedPointer */ \
/* routines for relaxed- and release-acquire semantics in the future. */ \
inline Tagged<type> name(IsolateForSandbox isolate) const; \
inline Tagged<type> name(IsolateForSandbox isolate, AcquireLoadTag) const; \
inline bool has_##name() const; \
/* Checks if the field in question is populated but unpublished. Most */ \
/* code shouldn't need to care (i.e. may assume regularly published */ \
/* fields), but some code needs to be robust to both situations. */ \
inline bool has_##name##_unpublished(IsolateForSandbox isolate) const;

Definition at line 549 of file object-macros.h.

◆ DECL_TRUSTED_POINTER_SETTERS

#define DECL_TRUSTED_POINTER_SETTERS ( name,
type )
Value:
/* Trusted pointers currently always have release-acquire semantics. */ \
/* However, we still expose explicit release-acquire accessors so it */ \
/* can be made clear when they are required. */ \
/* If desired, we could create separate {Read|Write}TrustedPointer */ \
/* routines for relaxed- and release-acquire semantics in the future. */ \
inline void set_##name(Tagged<type> value, \
WriteBarrierMode mode = UPDATE_WRITE_BARRIER); \
inline void set_##name(Tagged<type> value, ReleaseStoreTag, \
WriteBarrierMode mode = UPDATE_WRITE_BARRIER); \
inline void clear_##name();

Definition at line 563 of file object-macros.h.

◆ DECL_UINT16_ACCESSORS

#define DECL_UINT16_ACCESSORS ( name)
Value:
DECL_PRIMITIVE_ACCESSORS(name, uint16_t)

Definition at line 117 of file object-macros.h.

◆ DECL_UINT8_ACCESSORS

#define DECL_UINT8_ACCESSORS ( name)
Value:

Definition at line 121 of file object-macros.h.

◆ DECL_VERIFIER

#define DECL_VERIFIER ( Name)

Definition at line 962 of file object-macros.h.

◆ DEF_ACQUIRE_GETTER

#define DEF_ACQUIRE_GETTER ( holder,
name,
... )
Value:
__VA_ARGS__ holder::name(AcquireLoadTag tag) const { \
PtrComprCageBase cage_base = GetPtrComprCageBase(*this); \
return holder::name(cage_base, tag); \
} \
__VA_ARGS__ holder::name(PtrComprCageBase cage_base, AcquireLoadTag) const

Definition at line 157 of file object-macros.h.

◆ DEF_GETTER

#define DEF_GETTER ( holder,
name,
... )
Value:
__VA_ARGS__ holder::name() const { \
PtrComprCageBase cage_base = GetPtrComprCageBase(*this); \
return holder::name(cage_base); \
} \
__VA_ARGS__ holder::name(PtrComprCageBase cage_base) const

Definition at line 143 of file object-macros.h.

◆ DEF_HEAP_OBJECT_PREDICATE

#define DEF_HEAP_OBJECT_PREDICATE ( holder,
name )
Value:
bool name(Tagged<holder> obj) { \
PtrComprCageBase cage_base = GetPtrComprCageBase(obj); \
return name(obj, cage_base); \
} \
bool name(Tagged<holder> obj, PtrComprCageBase cage_base)

Definition at line 164 of file object-macros.h.

◆ DEF_PRIMITIVE_ACCESSORS

#define DEF_PRIMITIVE_ACCESSORS ( holder,
name,
offset,
type )
Value:
type holder::name() const { return ReadField<type>(offset); } \
void holder::set_##name(type value) { WriteField<type>(offset, value); }

Definition at line 214 of file object-macros.h.

◆ DEF_RELAXED_GETTER

#define DEF_RELAXED_GETTER ( holder,
name,
... )
Value:
__VA_ARGS__ holder::name(RelaxedLoadTag tag) const { \
PtrComprCageBase cage_base = GetPtrComprCageBase(*this); \
return holder::name(cage_base, tag); \
} \
__VA_ARGS__ holder::name(PtrComprCageBase cage_base, RelaxedLoadTag) const

Definition at line 150 of file object-macros.h.

◆ DEFINE_DEOPT_ELEMENT_ACCESSORS

#define DEFINE_DEOPT_ELEMENT_ACCESSORS ( name,
type )
Value:
auto DeoptimizationData::name() const -> Tagged<type> { \
return Cast<type>(get(k##name##Index)); \
} \
void DeoptimizationData::Set##name(Tagged<type> value) { \
set(k##name##Index, value); \
}

Definition at line 968 of file object-macros.h.

◆ DEFINE_DEOPT_ENTRY_ACCESSORS

#define DEFINE_DEOPT_ENTRY_ACCESSORS ( name,
type )
Value:
Tagged<type> DeoptimizationData::name(int i) const { \
return Cast<type>(get(IndexForEntry(i) + k##name##Offset)); \
} \
void DeoptimizationData::Set##name(int i, Tagged<type> value) { \
set(IndexForEntry(i) + k##name##Offset, value); \
}

Definition at line 976 of file object-macros.h.

◆ EXPORT_DECL_STATIC_VERIFIER

#define EXPORT_DECL_STATIC_VERIFIER ( Name)

Definition at line 965 of file object-macros.h.

◆ EXPORT_DECL_VERIFIER

#define EXPORT_DECL_VERIFIER ( Name)

Definition at line 963 of file object-macros.h.

◆ EXTERNAL_POINTER_ACCESSORS

#define EXTERNAL_POINTER_ACCESSORS ( holder,
name,
type,
offset,
tag )
Value:
type holder::name() const { \
i::IsolateForSandbox isolate = GetIsolateForSandbox(*this); \
return holder::name(isolate); \
} \
EXTERNAL_POINTER_ACCESSORS_MAYBE_READ_ONLY_HOST(holder, name, type, offset, \
tag)

Definition at line 541 of file object-macros.h.

◆ EXTERNAL_POINTER_ACCESSORS_MAYBE_READ_ONLY_HOST

#define EXTERNAL_POINTER_ACCESSORS_MAYBE_READ_ONLY_HOST ( holder,
name,
type,
offset,
tag )
Value:
type holder::name(i::IsolateForSandbox isolate) const { \
/* This is a workaround for MSVC error C2440 not allowing */ \
/* reinterpret casts to the same type. */ \
struct C2440 {}; \
Address result = \
HeapObject::ReadExternalPointerField<tag>(offset, isolate); \
return reinterpret_cast<type>(reinterpret_cast<C2440*>(result)); \
} \
void holder::init_##name(i::IsolateForSandbox isolate, \
const type initial_value) { \
/* This is a workaround for MSVC error C2440 not allowing */ \
/* reinterpret casts to the same type. */ \
struct C2440 {}; \
Address the_value = reinterpret_cast<Address>( \
reinterpret_cast<const C2440*>(initial_value)); \
HeapObject::InitExternalPointerField<tag>(offset, isolate, the_value); \
} \
void holder::set_##name(i::IsolateForSandbox isolate, const type value) { \
/* This is a workaround for MSVC error C2440 not allowing */ \
/* reinterpret casts to the same type. */ \
struct C2440 {}; \
Address the_value = \
reinterpret_cast<Address>(reinterpret_cast<const C2440*>(value)); \
HeapObject::WriteExternalPointerField<tag>(offset, isolate, the_value); \
}
ZoneVector< RpoNumber > & result
uintptr_t Address
Definition memory.h:13

Definition at line 509 of file object-macros.h.

◆ EXTERNAL_POINTER_WRITE_BARRIER

#define EXTERNAL_POINTER_WRITE_BARRIER ( object,
offset,
tag )
Value:
do { \
DCHECK(HeapLayout::IsOwnedByAnyHeap(object)); \
WriteBarrier::ForExternalPointer( \
object, Tagged(object)->RawExternalPointerField(offset, tag), \
UPDATE_WRITE_BARRIER); \
} while (false)

Definition at line 731 of file object-macros.h.

◆ FIELD_ADDR

#define FIELD_ADDR ( p,
offset )
Value:
((p).ptr() + offset - kHeapObjectTag)

Definition at line 679 of file object-macros.h.

◆ INDIRECT_POINTER_WRITE_BARRIER

#define INDIRECT_POINTER_WRITE_BARRIER ( object,
offset,
tag,
value )
Value:
do { \
DCHECK(HeapLayout::IsOwnedByAnyHeap(object)); \
WriteBarrier::ForIndirectPointer( \
object, Tagged(object)->RawIndirectPointerField(offset, tag), value, \
UPDATE_WRITE_BARRIER); \
} while (false)

Definition at line 743 of file object-macros.h.

◆ INT32_ACCESSORS

#define INT32_ACCESSORS ( holder,
name,
offset )
Value:
DEF_PRIMITIVE_ACCESSORS(holder, name, offset, int32_t)
#define DEF_PRIMITIVE_ACCESSORS(holder, name, offset, type)

Definition at line 221 of file object-macros.h.

◆ INT_ACCESSORS

#define INT_ACCESSORS ( holder,
name,
offset )
Value:
DEF_PRIMITIVE_ACCESSORS(holder, name, offset, int)

Definition at line 218 of file object-macros.h.

◆ JS_DISPATCH_HANDLE_WRITE_BARRIER

#define JS_DISPATCH_HANDLE_WRITE_BARRIER ( object,
handle )
Value:
do { \
DCHECK(HeapLayout::IsOwnedByAnyHeap(object)); \
WriteBarrier::ForJSDispatchHandle(object, handle, UPDATE_WRITE_BARRIER); \
} while (false)

Definition at line 755 of file object-macros.h.

◆ LAZY_EXTERNAL_POINTER_ACCESSORS_MAYBE_READ_ONLY_HOST

#define LAZY_EXTERNAL_POINTER_ACCESSORS_MAYBE_READ_ONLY_HOST ( holder,
name,
type,
offset,
tag )
Value:
holder, name, type, offset, tag, true, true)
#define LAZY_EXTERNAL_POINTER_ACCESSORS_MAYBE_READ_ONLY_HOST_CHECKED2( holder, name, type, offset, tag, get_condition, set_condition)

Definition at line 496 of file object-macros.h.

◆ LAZY_EXTERNAL_POINTER_ACCESSORS_MAYBE_READ_ONLY_HOST_CHECKED

#define LAZY_EXTERNAL_POINTER_ACCESSORS_MAYBE_READ_ONLY_HOST_CHECKED ( holder,
name,
type,
offset,
tag,
condition )
Value:

Definition at line 491 of file object-macros.h.

◆ LAZY_EXTERNAL_POINTER_ACCESSORS_MAYBE_READ_ONLY_HOST_CHECKED2

#define LAZY_EXTERNAL_POINTER_ACCESSORS_MAYBE_READ_ONLY_HOST_CHECKED2 ( holder,
name,
type,
offset,
tag,
get_condition,
set_condition )
Value:
void holder::init_##name() { \
HeapObject::SetupLazilyInitializedExternalPointerField(offset); \
} \
bool holder::has_##name() const { \
return HeapObject::IsLazilyInitializedExternalPointerFieldInitialized( \
offset); \
} \
type holder::name(i::IsolateForSandbox isolate) const { \
DCHECK(get_condition); \
/* This is a workaround for MSVC error C2440 not allowing */ \
/* reinterpret casts to the same type. */ \
struct C2440 {}; \
HeapObject::ReadExternalPointerField<tag>(offset, isolate); \
return reinterpret_cast<type>(reinterpret_cast<C2440*>(result)); \
} \
void holder::set_##name(i::IsolateForSandbox isolate, const type value) { \
DCHECK(set_condition); \
/* This is a workaround for MSVC error C2440 not allowing */ \
/* reinterpret casts to the same type. */ \
struct C2440 {}; \
Address the_value = \
reinterpret_cast<Address>(reinterpret_cast<const C2440*>(value)); \
HeapObject::WriteLazilyInitializedExternalPointerField<tag>( \
offset, isolate, the_value); \
}

Definition at line 462 of file object-macros.h.

◆ NEVER_READ_ONLY_SPACE

#define NEVER_READ_ONLY_SPACE
Value:
inline Heap* GetHeap() const; \
inline Isolate* GetIsolate() const;

Definition at line 87 of file object-macros.h.

◆ NEVER_READ_ONLY_SPACE_IMPL

#define NEVER_READ_ONLY_SPACE_IMPL ( Type)
Value:
Heap* Type::GetHeap() const { return GetHeapFromWritableObject(*this); } \
Isolate* Type::GetIsolate() const { \
return GetIsolateFromWritableObject(*this); \
}

Definition at line 93 of file object-macros.h.

◆ OBJECT_CONSTRUCTORS

#define OBJECT_CONSTRUCTORS ( Type,
... )
Value:
public: \
constexpr Type() : __VA_ARGS__() {} \
\
/* For every object, add a `->` operator which returns a pointer to this \
object. This will allow smoother transition between T and Tagged<T>. */ \
Type* operator->() { return this; } \
const Type* operator->() const { return this; } \
\
protected: \
friend class Tagged<Type>; \
\
/* Special constructor for constexpr construction which allows skipping type \
* checks. */ \
explicit constexpr V8_INLINE Type(Address ptr, HeapObject::SkipTypeCheckTag) \
: __VA_ARGS__(ptr, HeapObject::SkipTypeCheckTag()) {} \
\
inline void CheckTypeOnCast(); \
explicit inline Type(Address ptr)
Tagged(T object) -> Tagged< T >
#define V8_INLINE
Definition v8config.h:500

Definition at line 65 of file object-macros.h.

◆ OBJECT_CONSTRUCTORS_IMPL

#define OBJECT_CONSTRUCTORS_IMPL ( Type,
Super )
Value:
inline void Type::CheckTypeOnCast() { SLOW_DCHECK(Is##Type(*this)); } \
inline Type::Type(Address ptr) : Super(ptr) { CheckTypeOnCast(); }
#define SLOW_DCHECK(condition)
Definition checks.h:21

Definition at line 83 of file object-macros.h.

◆ PROTECTED_POINTER_ACCESSORS

#define PROTECTED_POINTER_ACCESSORS ( holder,
name,
type,
offset )
Value:
static_assert(std::is_base_of<TrustedObject, holder>::value); \
Tagged<type> holder::name() const { \
DCHECK(has_##name()); \
return Cast<type>(ReadProtectedPointerField(offset)); \
} \
void holder::set_##name(Tagged<type> value, WriteBarrierMode mode) { \
WriteProtectedPointerField(offset, value); \
CONDITIONAL_PROTECTED_POINTER_WRITE_BARRIER(*this, offset, value, mode); \
} \
bool holder::has_##name() const { \
return !IsProtectedPointerFieldEmpty(offset); \
} \
void holder::clear_##name() { return ClearProtectedPointerField(offset); }

Definition at line 619 of file object-macros.h.

◆ RELAXED_ACCESSORS

#define RELAXED_ACCESSORS ( holder,
name,
type,
offset )
Value:
RELAXED_ACCESSORS_CHECKED(holder, name, type, offset, true)
#define RELAXED_ACCESSORS_CHECKED(holder, name, type, offset, condition)

Definition at line 356 of file object-macros.h.

◆ RELAXED_ACCESSORS_CHECKED

#define RELAXED_ACCESSORS_CHECKED ( holder,
name,
type,
offset,
condition )
Value:
#define RELAXED_ACCESSORS_CHECKED2(holder, name, type, offset, get_condition, set_condition)

Definition at line 353 of file object-macros.h.

◆ RELAXED_ACCESSORS_CHECKED2

#define RELAXED_ACCESSORS_CHECKED2 ( holder,
name,
type,
offset,
get_condition,
set_condition )
Value:
DEF_RELAXED_GETTER(holder, name, UNPAREN(type)) { \
UNPAREN(type) \
value = \
TaggedField<UNPAREN(type), offset>::Relaxed_Load(cage_base, *this); \
DCHECK(get_condition); \
return value; \
} \
void holder::set_##name(UNPAREN(type) value, RelaxedStoreTag, \
WriteBarrierMode mode) { \
DCHECK(set_condition); \
TaggedField<UNPAREN(type), offset>::Relaxed_Store(*this, value); \
CONDITIONAL_WRITE_BARRIER(*this, offset, value, mode); \
}
#define DEF_RELAXED_GETTER(holder, name,...)

Definition at line 337 of file object-macros.h.

◆ RELAXED_BOOL_ACCESSORS

#define RELAXED_BOOL_ACCESSORS ( holder,
field,
name,
offset )
Value:
bool holder::name(RelaxedLoadTag) const { \
return BooleanBit::get(field(kRelaxedLoad), offset); \
} \
void holder::set_##name(bool value, RelaxedStoreTag) { \
set_##field(BooleanBit::set(field(kRelaxedLoad), offset, value), \
kRelaxedStore); \
}

Definition at line 445 of file object-macros.h.

◆ RELAXED_INT16_ACCESSORS

#define RELAXED_INT16_ACCESSORS ( holder,
name,
offset )
Value:
int16_t holder::name() const { \
return RELAXED_READ_INT16_FIELD(*this, offset); \
} \
void holder::set_##name(int16_t value) { \
RELAXED_WRITE_INT16_FIELD(*this, offset, value); \
}
#define RELAXED_READ_INT16_FIELD(p, offset)

Definition at line 671 of file object-macros.h.

◆ RELAXED_INT32_ACCESSORS

#define RELAXED_INT32_ACCESSORS ( holder,
name,
offset )
Value:
int32_t holder::name(RelaxedLoadTag) const { \
return RELAXED_READ_INT32_FIELD(*this, offset); \
} \
void holder::set_##name(int32_t value, RelaxedStoreTag) { \
RELAXED_WRITE_INT32_FIELD(*this, offset, value); \
}
#define RELAXED_READ_INT32_FIELD(p, offset)

Definition at line 230 of file object-macros.h.

◆ RELAXED_READ_BYTE_FIELD

#define RELAXED_READ_BYTE_FIELD ( p,
offset )
Value:
static_cast<uint8_t>(base::Relaxed_Load( \
reinterpret_cast<const base::Atomic8*>(FIELD_ADDR(p, offset))))

Definition at line 930 of file object-macros.h.

◆ RELAXED_READ_FIELD

#define RELAXED_READ_FIELD ( p,
offset )
Value:
TaggedField<Object>::Relaxed_Load(p, offset)

Definition at line 687 of file object-macros.h.

◆ RELAXED_READ_INT16_FIELD

#define RELAXED_READ_INT16_FIELD ( p,
offset )
Value:
static_cast<int16_t>(base::Relaxed_Load( \
reinterpret_cast<const base::Atomic16*>(FIELD_ADDR(p, offset))))

Definition at line 863 of file object-macros.h.

◆ RELAXED_READ_INT32_FIELD

#define RELAXED_READ_INT32_FIELD ( p,
offset )
Value:
static_cast<int32_t>(base::Relaxed_Load( \
reinterpret_cast<const base::Atomic32*>(FIELD_ADDR(p, offset))))

Definition at line 894 of file object-macros.h.

◆ RELAXED_READ_INT8_FIELD

#define RELAXED_READ_INT8_FIELD ( p,
offset )
Value:
static_cast<int8_t>(base::Relaxed_Load( \
reinterpret_cast<const base::Atomic8*>(FIELD_ADDR(p, offset))))

Definition at line 843 of file object-macros.h.

◆ RELAXED_READ_INT_FIELD

#define RELAXED_READ_INT_FIELD ( p,
offset )
Value:

Definition at line 917 of file object-macros.h.

◆ RELAXED_READ_UINT16_FIELD

#define RELAXED_READ_UINT16_FIELD ( p,
offset )
Value:
static_cast<uint16_t>(base::Relaxed_Load( \
reinterpret_cast<const base::Atomic16*>(FIELD_ADDR(p, offset))))

Definition at line 854 of file object-macros.h.

◆ RELAXED_READ_UINT32_FIELD

#define RELAXED_READ_UINT32_FIELD ( p,
offset )
Value:
static_cast<uint32_t>(base::Relaxed_Load( \
reinterpret_cast<const base::Atomic32*>(FIELD_ADDR(p, offset))))

Definition at line 872 of file object-macros.h.

◆ RELAXED_READ_UINT8_FIELD

#define RELAXED_READ_UINT8_FIELD ( p,
offset )
Value:
static_cast<uint8_t>(base::Relaxed_Load( \
reinterpret_cast<const base::Atomic8*>(FIELD_ADDR(p, offset))))

Definition at line 850 of file object-macros.h.

◆ RELAXED_READ_UINT_FIELD

#define RELAXED_READ_UINT_FIELD ( p,
offset )
Value:
#define RELAXED_READ_UINT32_FIELD(p, offset)

Definition at line 925 of file object-macros.h.

◆ RELAXED_READ_WEAK_FIELD

#define RELAXED_READ_WEAK_FIELD ( p,
offset )
Value:
TaggedField<MaybeObject>::Relaxed_Load(p, offset)

Definition at line 690 of file object-macros.h.

◆ RELAXED_SMI_ACCESSORS

#define RELAXED_SMI_ACCESSORS ( holder,
name,
offset )
Value:
int holder::name(RelaxedLoadTag) const { \
Tagged<Smi> value = TaggedField<Smi, offset>::Relaxed_Load(*this); \
return value.value(); \
} \
void holder::set_##name(int value, RelaxedStoreTag) { \
TaggedField<Smi, offset>::Relaxed_Store(*this, Smi::FromInt(value)); \
}

Definition at line 423 of file object-macros.h.

◆ RELAXED_UINT16_ACCESSORS

#define RELAXED_UINT16_ACCESSORS ( holder,
name,
offset )
Value:
uint16_t holder::name(RelaxedLoadTag) const { \
} \
void holder::set_##name(uint16_t value, RelaxedStoreTag) { \
RELAXED_WRITE_UINT16_FIELD(*this, offset, value); \
}
#define RELAXED_READ_UINT16_FIELD(p, offset)

Definition at line 246 of file object-macros.h.

◆ RELAXED_UINT32_ACCESSORS

#define RELAXED_UINT32_ACCESSORS ( holder,
name,
offset )
Value:
uint32_t holder::name(RelaxedLoadTag) const { \
} \
void holder::set_##name(uint32_t value, RelaxedStoreTag) { \
RELAXED_WRITE_UINT32_FIELD(*this, offset, value); \
}

Definition at line 238 of file object-macros.h.

◆ RELAXED_UINT8_ACCESSORS

#define RELAXED_UINT8_ACCESSORS ( holder,
name,
offset )
Value:
uint8_t holder::name(RelaxedLoadTag) const { \
return RELAXED_READ_UINT8_FIELD(*this, offset); \
} \
void holder::set_##name(uint8_t value, RelaxedStoreTag) { \
RELAXED_WRITE_UINT8_FIELD(*this, offset, value); \
}
#define RELAXED_READ_UINT8_FIELD(p, offset)

Definition at line 254 of file object-macros.h.

◆ RELAXED_WRITE_BYTE_FIELD

#define RELAXED_WRITE_BYTE_FIELD ( p,
offset,
value )
Value:
base::Relaxed_Store(reinterpret_cast<base::Atomic8*>(FIELD_ADDR(p, offset)), \
static_cast<base::Atomic8>(value));

Definition at line 938 of file object-macros.h.

◆ RELAXED_WRITE_FIELD

#define RELAXED_WRITE_FIELD ( p,
offset,
value )
Value:
TaggedField<Object>::Relaxed_Store(p, offset, value)

Definition at line 702 of file object-macros.h.

◆ RELAXED_WRITE_INT16_FIELD

#define RELAXED_WRITE_INT16_FIELD ( p,
offset,
value )
Value:
base::Relaxed_Store( \
reinterpret_cast<base::Atomic16*>(FIELD_ADDR(p, offset)), \
static_cast<base::Atomic16>(value));

Definition at line 867 of file object-macros.h.

◆ RELAXED_WRITE_INT32_FIELD

#define RELAXED_WRITE_INT32_FIELD ( p,
offset,
value )
Value:
base::Relaxed_Store( \
reinterpret_cast<base::Atomic32*>(FIELD_ADDR(p, offset)), \
static_cast<base::Atomic32>(value))

Definition at line 909 of file object-macros.h.

◆ RELAXED_WRITE_INT8_FIELD

#define RELAXED_WRITE_INT8_FIELD ( p,
offset,
value )
Value:
base::Relaxed_Store(reinterpret_cast<base::Atomic8*>(FIELD_ADDR(p, offset)), \
static_cast<base::Atomic8>(value));

Definition at line 840 of file object-macros.h.

◆ RELAXED_WRITE_INT_FIELD

#define RELAXED_WRITE_INT_FIELD ( p,
offset,
value )
Value:
#define RELAXED_WRITE_INT32_FIELD(p, offset, value)

Definition at line 919 of file object-macros.h.

◆ RELAXED_WRITE_UINT16_FIELD

#define RELAXED_WRITE_UINT16_FIELD ( p,
offset,
value )
Value:
base::Relaxed_Store( \
reinterpret_cast<base::Atomic16*>(FIELD_ADDR(p, offset)), \
static_cast<base::Atomic16>(value));

Definition at line 858 of file object-macros.h.

◆ RELAXED_WRITE_UINT32_FIELD

#define RELAXED_WRITE_UINT32_FIELD ( p,
offset,
value )
Value:
base::Relaxed_Store( \
reinterpret_cast<base::Atomic32*>(FIELD_ADDR(p, offset)), \
static_cast<base::Atomic32>(value));

Definition at line 880 of file object-macros.h.

◆ RELAXED_WRITE_UINT8_FIELD

#define RELAXED_WRITE_UINT8_FIELD ( p,
offset,
value )
Value:
base::Relaxed_Store(reinterpret_cast<base::Atomic8*>(FIELD_ADDR(p, offset)), \
static_cast<base::Atomic8>(value));

Definition at line 847 of file object-macros.h.

◆ RELAXED_WRITE_UINT_FIELD

#define RELAXED_WRITE_UINT_FIELD ( p,
offset,
value )
Value:
#define RELAXED_WRITE_UINT32_FIELD(p, offset, value)

Definition at line 927 of file object-macros.h.

◆ RELAXED_WRITE_WEAK_FIELD

#define RELAXED_WRITE_WEAK_FIELD ( p,
offset,
value )
Value:
TaggedField<MaybeObject>::Relaxed_Store(p, offset, value)

Definition at line 705 of file object-macros.h.

◆ RELEASE_ACQUIRE_ACCESSORS

#define RELEASE_ACQUIRE_ACCESSORS ( holder,
name,
type,
offset )
Value:
RELEASE_ACQUIRE_ACCESSORS_CHECKED(holder, name, type, offset, true)
#define RELEASE_ACQUIRE_ACCESSORS_CHECKED(holder, name, type, offset, condition)

Definition at line 388 of file object-macros.h.

◆ RELEASE_ACQUIRE_ACCESSORS_CHECKED

#define RELEASE_ACQUIRE_ACCESSORS_CHECKED ( holder,
name,
type,
offset,
condition )
Value:
#define RELEASE_ACQUIRE_ACCESSORS_CHECKED2(holder, name, type, offset, get_condition, set_condition)

Definition at line 383 of file object-macros.h.

◆ RELEASE_ACQUIRE_ACCESSORS_CHECKED2

#define RELEASE_ACQUIRE_ACCESSORS_CHECKED2 ( holder,
name,
type,
offset,
get_condition,
set_condition )
Value:
RELEASE_ACQUIRE_GETTER_CHECKED(holder, name, type, offset, get_condition) \
RELEASE_ACQUIRE_SETTER_CHECKED(holder, name, type, offset, set_condition)
#define RELEASE_ACQUIRE_GETTER_CHECKED(holder, name, type, offset, get_condition)

Definition at line 378 of file object-macros.h.

◆ RELEASE_ACQUIRE_GETTER_CHECKED

#define RELEASE_ACQUIRE_GETTER_CHECKED ( holder,
name,
type,
offset,
get_condition )
Value:
DEF_ACQUIRE_GETTER(holder, name, UNPAREN(type)) { \
UNPAREN(type) \
value = \
TaggedField<UNPAREN(type), offset>::Acquire_Load(cage_base, *this); \
DCHECK(get_condition); \
return value; \
}
#define DEF_ACQUIRE_GETTER(holder, name,...)

Definition at line 359 of file object-macros.h.

◆ RELEASE_ACQUIRE_PROTECTED_POINTER_ACCESSORS

#define RELEASE_ACQUIRE_PROTECTED_POINTER_ACCESSORS ( holder,
name,
type,
offset )
Value:
static_assert(std::is_base_of<TrustedObject, holder>::value); \
Tagged<type> holder::name(AcquireLoadTag tag) const { \
DCHECK(has_##name(tag)); \
return Cast<type>(ReadProtectedPointerField(offset, tag)); \
} \
void holder::set_##name(Tagged<type> value, ReleaseStoreTag tag, \
WriteBarrierMode mode) { \
WriteProtectedPointerField(offset, value, tag); \
CONDITIONAL_PROTECTED_POINTER_WRITE_BARRIER(*this, offset, value, mode); \
} \
bool holder::has_##name(AcquireLoadTag tag) const { \
return !IsProtectedPointerFieldEmpty(offset, tag); \
} \
void holder::clear_##name(ReleaseStoreTag tag) { \
return ClearProtectedPointerField(offset, tag); \
}

Definition at line 641 of file object-macros.h.

◆ RELEASE_ACQUIRE_SETTER_CHECKED

#define RELEASE_ACQUIRE_SETTER_CHECKED ( holder,
name,
type,
offset,
set_condition )
Value:
void holder::set_##name(UNPAREN(type) value, ReleaseStoreTag, \
WriteBarrierMode mode) { \
DCHECK(set_condition); \
TaggedField<UNPAREN(type), offset>::Release_Store(*this, value); \
CONDITIONAL_WRITE_BARRIER(*this, offset, value, mode); \
}

Definition at line 369 of file object-macros.h.

◆ RELEASE_ACQUIRE_SMI_ACCESSORS

#define RELEASE_ACQUIRE_SMI_ACCESSORS ( holder,
name,
offset )
Value:
int holder::name(AcquireLoadTag) const { \
Tagged<Smi> value = TaggedField<Smi, offset>::Acquire_Load(*this); \
return value.value(); \
} \
void holder::set_##name(int value, ReleaseStoreTag) { \
TaggedField<Smi, offset>::Release_Store(*this, Smi::FromInt(value)); \
}

Definition at line 410 of file object-macros.h.

◆ RELEASE_WRITE_BYTE_FIELD

#define RELEASE_WRITE_BYTE_FIELD ( p,
offset,
value )
Value:
base::Release_Store(reinterpret_cast<base::Atomic8*>(FIELD_ADDR(p, offset)), \
static_cast<base::Atomic8>(value));

Definition at line 942 of file object-macros.h.

◆ RELEASE_WRITE_FIELD

#define RELEASE_WRITE_FIELD ( p,
offset,
value )
Value:
TaggedField<Object>::Release_Store(p, offset, value)

Definition at line 699 of file object-macros.h.

◆ RELEASE_WRITE_INT32_FIELD

#define RELEASE_WRITE_INT32_FIELD ( p,
offset,
value )
Value:
base::Release_Store( \
reinterpret_cast<base::Atomic32*>(FIELD_ADDR(p, offset)), \
static_cast<base::Atomic32>(value))

Definition at line 904 of file object-macros.h.

◆ RELEASE_WRITE_INT8_FIELD

#define RELEASE_WRITE_INT8_FIELD ( p,
offset,
value )
Value:
base::Release_Store(reinterpret_cast<base::Atomic8*>(FIELD_ADDR(p, offset)), \
static_cast<base::Atomic8>(value));

Definition at line 885 of file object-macros.h.

◆ RELEASE_WRITE_UINT32_FIELD

#define RELEASE_WRITE_UINT32_FIELD ( p,
offset,
value )
Value:
base::Release_Store( \
reinterpret_cast<base::Atomic32*>(FIELD_ADDR(p, offset)), \
static_cast<base::Atomic32>(value));

Definition at line 889 of file object-macros.h.

◆ RENAME_PRIMITIVE_TORQUE_ACCESSORS

#define RENAME_PRIMITIVE_TORQUE_ACCESSORS ( holder,
name,
torque_name,
type )
Value:
type holder::name() const { return TorqueGeneratedClass::torque_name(); } \
void holder::set_##name(type value) { \
TorqueGeneratedClass::set_##torque_name(value); \
}

Definition at line 307 of file object-macros.h.

◆ RENAME_TORQUE_ACCESSORS

#define RENAME_TORQUE_ACCESSORS ( holder,
name,
torque_name,
type )
Value:
inline type holder::name() const { \
return TorqueGeneratedClass::torque_name(); \
} \
inline type holder::name(PtrComprCageBase cage_base) const { \
return TorqueGeneratedClass::torque_name(cage_base); \
} \
inline void holder::set_##name(type value, WriteBarrierMode mode) { \
TorqueGeneratedClass::set_##torque_name(value, mode); \
}

Definition at line 296 of file object-macros.h.

◆ SEQ_CST_COMPARE_AND_SWAP_FIELD

#define SEQ_CST_COMPARE_AND_SWAP_FIELD ( p,
offset,
expected,
value )
Value:
TaggedField<Object>::SeqCst_CompareAndSwap(p, offset, expected, value)

Definition at line 711 of file object-macros.h.

◆ SEQ_CST_READ_FIELD

#define SEQ_CST_READ_FIELD ( p,
offset )
Value:
TaggedField<Object>::SeqCst_Load(p, offset)

Definition at line 681 of file object-macros.h.

◆ SEQ_CST_SWAP_FIELD

#define SEQ_CST_SWAP_FIELD ( p,
offset,
value )
Value:
TaggedField<Object>::SeqCst_Swap(p, offset, value)

Definition at line 708 of file object-macros.h.

◆ SEQ_CST_WRITE_FIELD

#define SEQ_CST_WRITE_FIELD ( p,
offset,
value )
Value:
TaggedField<Object>::SeqCst_Store(p, offset, value)

Definition at line 696 of file object-macros.h.

◆ SMI_ACCESSORS

#define SMI_ACCESSORS ( holder,
name,
offset )
Value:
SMI_ACCESSORS_CHECKED(holder, name, offset, true)
#define SMI_ACCESSORS_CHECKED(holder, name, offset, condition)

Definition at line 403 of file object-macros.h.

◆ SMI_ACCESSORS_CHECKED

#define SMI_ACCESSORS_CHECKED ( holder,
name,
offset,
condition )
Value:
int holder::name() const { \
DCHECK(condition); \
Tagged<Smi> value = TaggedField<Smi, offset>::load(*this); \
return value.value(); \
} \
void holder::set_##name(int value) { \
DCHECK(condition); \
TaggedField<Smi, offset>::store(*this, Smi::FromInt(value)); \
}

Definition at line 392 of file object-macros.h.

◆ TQ_CPP_OBJECT_DEFINITION_ASSERTS

#define TQ_CPP_OBJECT_DEFINITION_ASSERTS ( _class,
parent )
Value:
template class TorqueGenerated##_class##Asserts<_class, parent>;

Definition at line 992 of file object-macros.h.

◆ TQ_FIELD_TYPE

#define TQ_FIELD_TYPE ( name,
tq_type )
Value:
static constexpr const char* k##name##TqFieldType = tq_type;

Definition at line 171 of file object-macros.h.

◆ TQ_OBJECT_CONSTRUCTORS

#define TQ_OBJECT_CONSTRUCTORS ( Type)
Value:
OBJECT_CONSTRUCTORS(Type, TorqueGenerated##Type<Type, Super>); \
friend class TorqueGenerated##Type<Type, Super>;
#define OBJECT_CONSTRUCTORS(Type,...)

Definition at line 984 of file object-macros.h.

◆ TQ_OBJECT_CONSTRUCTORS_IMPL

#define TQ_OBJECT_CONSTRUCTORS_IMPL ( Type)
Value:
inline Type::Type(Address ptr) \
: TorqueGenerated##Type<Type, Type::Super>(ptr) {}

Definition at line 988 of file object-macros.h.

◆ TRUSTED_POINTER_ACCESSORS

#define TRUSTED_POINTER_ACCESSORS ( holder,
name,
type,
offset,
tag )
Value:
Tagged<type> holder::name(IsolateForSandbox isolate) const { \
return name(isolate, kAcquireLoad); \
} \
Tagged<type> holder::name(IsolateForSandbox isolate, AcquireLoadTag) const { \
DCHECK(has_##name()); \
return Cast<type>(ReadTrustedPointerField<tag>(offset, isolate)); \
} \
void holder::set_##name(Tagged<type> value, WriteBarrierMode mode) { \
set_##name(value, kReleaseStore, mode); \
} \
void holder::set_##name(Tagged<type> value, ReleaseStoreTag, \
WriteBarrierMode mode) { \
WriteTrustedPointerField<tag>(offset, value); \
CONDITIONAL_TRUSTED_POINTER_WRITE_BARRIER(*this, offset, tag, value, \
mode); \
} \
bool holder::has_##name() const { \
return !IsTrustedPointerFieldEmpty(offset); \
} \
bool holder::has_##name##_unpublished(IsolateForSandbox isolate) const { \
return IsTrustedPointerFieldUnpublished(offset, tag, isolate); \
} \
void holder::clear_##name() { ClearTrustedPointerField(offset); }

Definition at line 579 of file object-macros.h.

◆ UINT16_ACCESSORS

#define UINT16_ACCESSORS ( holder,
name,
offset )
Value:
DEF_PRIMITIVE_ACCESSORS(holder, name, offset, uint16_t)

Definition at line 224 of file object-macros.h.

◆ UINT8_ACCESSORS

#define UINT8_ACCESSORS ( holder,
name,
offset )
Value:
DEF_PRIMITIVE_ACCESSORS(holder, name, offset, uint8_t)

Definition at line 227 of file object-macros.h.

◆ V8_OBJECT

#define V8_OBJECT   V8_OBJECT_PUSH

Definition at line 49 of file object-macros.h.

◆ V8_OBJECT_END

#define V8_OBJECT_END
Value:
; \
V8_OBJECT_POP static_assert(true)

Definition at line 54 of file object-macros.h.

◆ V8_OBJECT_INNER_CLASS

#define V8_OBJECT_INNER_CLASS   V8_OBJECT_POP

Definition at line 58 of file object-macros.h.

◆ V8_OBJECT_INNER_CLASS_END

#define V8_OBJECT_INNER_CLASS_END
Value:
; \
V8_OBJECT_PUSH static_assert(true)

Definition at line 59 of file object-macros.h.

◆ V8_OBJECT_MACROS_DEFINED

#define V8_OBJECT_MACROS_DEFINED

Definition at line 22 of file object-macros.h.

◆ WRITE_BARRIER

#define WRITE_BARRIER ( object,
offset,
value )
Value:
do { \
DCHECK(HeapLayout::IsOwnedByAnyHeap(object)); \
static_assert(kTaggedCanConvertToRawObjects); \
/* For write barriers, it doesn't matter if the slot is strong or weak, */ \
/* so use the most generic slot (a maybe weak one). */ \
WriteBarrier::ForValue(object, Tagged(object)->RawMaybeWeakField(offset), \
value, UPDATE_WRITE_BARRIER); \
} while (false)

Definition at line 717 of file object-macros.h.

◆ WRITE_FIELD

#define WRITE_FIELD ( p,
offset,
value )
Value:
TaggedField<Object>::store(p, offset, value)

Definition at line 693 of file object-macros.h.