Chromium Code Reviews| Index: src/objects-inl.h |
| diff --git a/src/objects-inl.h b/src/objects-inl.h |
| index 20a12b6dd468048b1fb8fe7941a257a75a3c4626..c031547b91fe5d62087f70da6df4b005aae46f35 100644 |
| --- a/src/objects-inl.h |
| +++ b/src/objects-inl.h |
| @@ -3295,10 +3295,7 @@ uint32_t Name::hash_field() { |
| void Name::set_hash_field(uint32_t value) { |
| - WRITE_UINT32_FIELD(this, kHashFieldOffset, value); |
| -#if V8_HOST_ARCH_64_BIT |
| - WRITE_UINT32_FIELD(this, kHashFieldOffset + kIntSize, 0); |
| -#endif |
| + WRITE_INTPTR_FIELD(this, kHashFieldSlot, value); |
|
Sven Panne
2014/09/16 10:48:40
Hmmm, this is a bit brittle for 2 reasons: Writing
andrew_low
2014/09/22 17:49:17
Changed to still use kHashFieldSlot to reference t
|
| } |
| @@ -5467,25 +5464,30 @@ SMI_ACCESSORS(SharedFunctionInfo, profiler_ticks, kProfilerTicksOffset) |
| #else |
| -#define PSEUDO_SMI_ACCESSORS_LO(holder, name, offset) \ |
| - STATIC_ASSERT(holder::offset % kPointerSize == 0); \ |
| - int holder::name() const { \ |
| - int value = READ_INT_FIELD(this, offset); \ |
| - DCHECK(kHeapObjectTag == 1); \ |
| - DCHECK((value & kHeapObjectTag) == 0); \ |
| - return value >> 1; \ |
| - } \ |
| - void holder::set_##name(int value) { \ |
| - DCHECK(kHeapObjectTag == 1); \ |
| - DCHECK((value & 0xC0000000) == 0xC0000000 || \ |
| - (value & 0xC0000000) == 0x0); \ |
| - WRITE_INT_FIELD(this, \ |
| - offset, \ |
| - (value << 1) & ~kHeapObjectTag); \ |
| - } |
| - |
| -#define PSEUDO_SMI_ACCESSORS_HI(holder, name, offset) \ |
| - STATIC_ASSERT(holder::offset % kPointerSize == kIntSize); \ |
| +#if V8_TARGET_LITTLE_ENDIAN |
| +#define PSEUDO_SMI_LO_ALIGN 0 |
| +#define PSEUDO_SMI_HI_ALIGN kIntSize |
| +#else |
| +#define PSEUDO_SMI_LO_ALIGN kIntSize |
| +#define PSEUDO_SMI_HI_ALIGN 0 |
| +#endif |
| + |
| +#define PSEUDO_SMI_ACCESSORS_LO(holder, name, offset) \ |
| + STATIC_ASSERT(holder::offset % kPointerSize == PSEUDO_SMI_LO_ALIGN); \ |
| + int holder::name() const { \ |
| + int value = READ_INT_FIELD(this, offset); \ |
| + DCHECK(kHeapObjectTag == 1); \ |
| + DCHECK((value & kHeapObjectTag) == 0); \ |
| + return value >> 1; \ |
| + } \ |
| + void holder::set_##name(int value) { \ |
| + DCHECK(kHeapObjectTag == 1); \ |
| + DCHECK((value & 0xC0000000) == 0xC0000000 || (value & 0xC0000000) == 0x0); \ |
| + WRITE_INT_FIELD(this, offset, (value << 1) & ~kHeapObjectTag); \ |
| + } |
| + |
| +#define PSEUDO_SMI_ACCESSORS_HI(holder, name, offset) \ |
| + STATIC_ASSERT(holder::offset % kPointerSize == PSEUDO_SMI_HI_ALIGN); \ |
| INT_ACCESSORS(holder, name, offset) |