diff options
Diffstat (limited to 'Source/JavaScriptCore/heap/CopiedBlock.h')
-rw-r--r-- | Source/JavaScriptCore/heap/CopiedBlock.h | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/Source/JavaScriptCore/heap/CopiedBlock.h b/Source/JavaScriptCore/heap/CopiedBlock.h index a57c1150c..387b2ddab 100644 --- a/Source/JavaScriptCore/heap/CopiedBlock.h +++ b/Source/JavaScriptCore/heap/CopiedBlock.h @@ -40,26 +40,29 @@ class CopiedBlock : public HeapBlock { public: CopiedBlock(PageAllocationAligned& allocation) : HeapBlock(allocation) - , m_offset(m_payload) + , m_offset(payload()) , m_isPinned(false) { - ASSERT(is8ByteAligned(static_cast<void*>(m_payload))); + ASSERT(is8ByteAligned(static_cast<void*>(m_offset))); #if USE(JSVALUE64) - memset(static_cast<void*>(m_payload), 0, static_cast<size_t>((reinterpret_cast<char*>(this) + allocation.size()) - m_payload)); + char* offset = static_cast<char*>(m_offset); + memset(static_cast<void*>(offset), 0, static_cast<size_t>((reinterpret_cast<char*>(this) + allocation.size()) - offset)); #else JSValue emptyValue; - JSValue* limit = reinterpret_cast<JSValue*>(reinterpret_cast<char*>(this) + allocation.size()); - for (JSValue* currentValue = reinterpret_cast<JSValue*>(m_payload); currentValue < limit; currentValue++) + JSValue* limit = reinterpret_cast_ptr<JSValue*>(reinterpret_cast<char*>(this) + allocation.size()); + for (JSValue* currentValue = reinterpret_cast<JSValue*>(m_offset); currentValue < limit; currentValue++) *currentValue = emptyValue; #endif } + char* payload() + { + return reinterpret_cast<char*>(this) + ((sizeof(CopiedBlock) + 7) & ~7); + } + private: void* m_offset; uintptr_t m_isPinned; - uintptr_t m_padding; - uintptr_t m_dummy; - char m_payload[1]; }; } // namespace JSC |