diff options
Diffstat (limited to 'deps/v8/src/objects/object-macros.h')
-rw-r--r-- | deps/v8/src/objects/object-macros.h | 40 |
1 files changed, 31 insertions, 9 deletions
diff --git a/deps/v8/src/objects/object-macros.h b/deps/v8/src/objects/object-macros.h index e672af14c9..eb192bcd8c 100644 --- a/deps/v8/src/objects/object-macros.h +++ b/deps/v8/src/objects/object-macros.h @@ -20,6 +20,10 @@ inline int name() const; \ inline void set_##name(int value); +#define DECL_INT32_ACCESSORS(name) \ + inline int32_t name() const; \ + inline void set_##name(int32_t value); + #define DECL_ACCESSORS(name, type) \ inline type* name() const; \ inline void set_##name(type* value, \ @@ -43,6 +47,12 @@ int holder::name() const { return READ_INT_FIELD(this, offset); } \ void holder::set_##name(int value) { WRITE_INT_FIELD(this, offset, value); } +#define INT32_ACCESSORS(holder, name, offset) \ + int32_t holder::name() const { return READ_INT32_FIELD(this, offset); } \ + void holder::set_##name(int32_t value) { \ + WRITE_INT32_FIELD(this, offset, value); \ + } + #define ACCESSORS_CHECKED2(holder, name, type, offset, get_condition, \ set_condition) \ type* holder::name() const { \ @@ -155,15 +165,15 @@ #define WRITE_BARRIER(heap, object, offset, value) \ heap->incremental_marking()->RecordWrite( \ object, HeapObject::RawField(object, offset), value); \ - heap->RecordWrite(object, offset, value); - -#define CONDITIONAL_WRITE_BARRIER(heap, object, offset, value, mode) \ - if (mode != SKIP_WRITE_BARRIER) { \ - if (mode == UPDATE_WRITE_BARRIER) { \ - heap->incremental_marking()->RecordWrite( \ - object, HeapObject::RawField(object, offset), value); \ - } \ - heap->RecordWrite(object, offset, value); \ + heap->RecordWrite(object, HeapObject::RawField(object, offset), value); + +#define CONDITIONAL_WRITE_BARRIER(heap, object, offset, value, mode) \ + if (mode != SKIP_WRITE_BARRIER) { \ + if (mode == UPDATE_WRITE_BARRIER) { \ + heap->incremental_marking()->RecordWrite( \ + object, HeapObject::RawField(object, offset), value); \ + } \ + heap->RecordWrite(object, HeapObject::RawField(object, offset), value); \ } #define READ_DOUBLE_FIELD(p, offset) \ @@ -178,6 +188,10 @@ #define WRITE_INT_FIELD(p, offset, value) \ (*reinterpret_cast<int*>(FIELD_ADDR(p, offset)) = value) +#define RELAXED_READ_INTPTR_FIELD(p, offset) \ + static_cast<intptr_t>(base::Relaxed_Load( \ + reinterpret_cast<const base::AtomicWord*>(FIELD_ADDR_CONST(p, offset)))) + #define READ_INTPTR_FIELD(p, offset) \ (*reinterpret_cast<const intptr_t*>(FIELD_ADDR_CONST(p, offset))) @@ -195,9 +209,17 @@ #define WRITE_UINT8_FIELD(p, offset, value) \ (*reinterpret_cast<uint8_t*>(FIELD_ADDR(p, offset)) = value) +#define RELAXED_WRITE_INT8_FIELD(p, offset, value) \ + base::Relaxed_Store(reinterpret_cast<base::Atomic8*>(FIELD_ADDR(p, offset)), \ + static_cast<base::Atomic8>(value)); + #define READ_INT8_FIELD(p, offset) \ (*reinterpret_cast<const int8_t*>(FIELD_ADDR_CONST(p, offset))) +#define RELAXED_READ_INT8_FIELD(p, offset) \ + static_cast<int8_t>(base::Relaxed_Load( \ + reinterpret_cast<const base::Atomic8*>(FIELD_ADDR_CONST(p, offset)))) + #define WRITE_INT8_FIELD(p, offset, value) \ (*reinterpret_cast<int8_t*>(FIELD_ADDR(p, offset)) = value) |