diff options
Diffstat (limited to 'deps/v8/src/objects/object-macros.h')
-rw-r--r-- | deps/v8/src/objects/object-macros.h | 78 |
1 files changed, 52 insertions, 26 deletions
diff --git a/deps/v8/src/objects/object-macros.h b/deps/v8/src/objects/object-macros.h index ed4637a406..b57adfde2d 100644 --- a/deps/v8/src/objects/object-macros.h +++ b/deps/v8/src/objects/object-macros.h @@ -88,6 +88,20 @@ } \ type holder::name(PtrComprCageBase cage_base) const +#define DEF_RELAXED_GETTER(holder, name, type) \ + type holder::name(RelaxedLoadTag tag) const { \ + PtrComprCageBase cage_base = GetPtrComprCageBase(*this); \ + return holder::name(cage_base, tag); \ + } \ + type holder::name(PtrComprCageBase cage_base, RelaxedLoadTag) const + +#define DEF_ACQUIRE_GETTER(holder, name, type) \ + type holder::name(AcquireLoadTag tag) const { \ + PtrComprCageBase cage_base = GetPtrComprCageBase(*this); \ + return holder::name(cage_base, tag); \ + } \ + type holder::name(PtrComprCageBase cage_base, AcquireLoadTag) const + #define DECL_SETTER(name, type) \ inline void set_##name(type value, \ WriteBarrierMode mode = UPDATE_WRITE_BARRIER); @@ -205,13 +219,33 @@ TorqueGeneratedClass::set_##torque_name(value); \ } -#define RELAXED_ACCESSORS_CHECKED2(holder, name, type, offset, get_condition, \ +#define ACCESSORS_RELAXED_CHECKED2(holder, name, type, offset, get_condition, \ set_condition) \ - type holder::name(RelaxedLoadTag tag) const { \ + type holder::name() const { \ PtrComprCageBase cage_base = GetPtrComprCageBase(*this); \ - return holder::name(cage_base, tag); \ + return holder::name(cage_base); \ } \ - type holder::name(PtrComprCageBase cage_base, RelaxedLoadTag) const { \ + 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); \ + } + +#define ACCESSORS_RELAXED_CHECKED(holder, name, type, offset, condition) \ + ACCESSORS_RELAXED_CHECKED2(holder, name, type, offset, condition, condition) + +#define ACCESSORS_RELAXED(holder, name, type, offset) \ + ACCESSORS_RELAXED_CHECKED(holder, name, type, offset, true) + +// Similar to ACCESSORS_RELAXED above but with respective relaxed tags. +#define RELAXED_ACCESSORS_CHECKED2(holder, name, type, offset, get_condition, \ + set_condition) \ + DEF_RELAXED_GETTER(holder, name, type) { \ type value = TaggedField<type, offset>::Relaxed_Load(cage_base, *this); \ DCHECK(get_condition); \ return value; \ @@ -231,11 +265,7 @@ #define RELEASE_ACQUIRE_ACCESSORS_CHECKED2(holder, name, type, offset, \ get_condition, set_condition) \ - type holder::name(AcquireLoadTag tag) const { \ - PtrComprCageBase cage_base = GetPtrComprCageBase(*this); \ - return holder::name(cage_base, tag); \ - } \ - type holder::name(PtrComprCageBase cage_base, AcquireLoadTag) const { \ + DEF_ACQUIRE_GETTER(holder, name, type) { \ type value = TaggedField<type, offset>::Acquire_Load(cage_base, *this); \ DCHECK(get_condition); \ return value; \ @@ -275,23 +305,19 @@ #define WEAK_ACCESSORS(holder, name, offset) \ WEAK_ACCESSORS_CHECKED(holder, name, offset, true) -#define RELEASE_ACQUIRE_WEAK_ACCESSORS_CHECKED2(holder, name, offset, \ - get_condition, set_condition) \ - MaybeObject holder::name(AcquireLoadTag tag) const { \ - PtrComprCageBase cage_base = GetPtrComprCageBase(*this); \ - return holder::name(cage_base, tag); \ - } \ - MaybeObject holder::name(PtrComprCageBase cage_base, AcquireLoadTag) const { \ - MaybeObject value = \ - TaggedField<MaybeObject, offset>::Acquire_Load(cage_base, *this); \ - DCHECK(get_condition); \ - return value; \ - } \ - void holder::set_##name(MaybeObject value, ReleaseStoreTag, \ - WriteBarrierMode mode) { \ - DCHECK(set_condition); \ - TaggedField<MaybeObject, offset>::Release_Store(*this, value); \ - CONDITIONAL_WEAK_WRITE_BARRIER(*this, offset, value, mode); \ +#define RELEASE_ACQUIRE_WEAK_ACCESSORS_CHECKED2(holder, name, offset, \ + get_condition, set_condition) \ + DEF_ACQUIRE_GETTER(holder, name, MaybeObject) { \ + MaybeObject value = \ + TaggedField<MaybeObject, offset>::Acquire_Load(cage_base, *this); \ + DCHECK(get_condition); \ + return value; \ + } \ + void holder::set_##name(MaybeObject value, ReleaseStoreTag, \ + WriteBarrierMode mode) { \ + DCHECK(set_condition); \ + TaggedField<MaybeObject, offset>::Release_Store(*this, value); \ + CONDITIONAL_WEAK_WRITE_BARRIER(*this, offset, value, mode); \ } #define RELEASE_ACQUIRE_WEAK_ACCESSORS_CHECKED(holder, name, offset, \ |