Bug 287777
| Summary: | [WebCore] Reduce size of CustomPaintCanvas, HTMLCanvasElement, OffscreenCanvas by 8 bytes each | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | David Kilzer (:ddkilzer) <ddkilzer> |
| Component: | New Bugs | Assignee: | David Kilzer (:ddkilzer) <ddkilzer> |
| Status: | RESOLVED FIXED | ||
| Severity: | Normal | CC: | webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | Other | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
David Kilzer (:ddkilzer)
Summary:
Reduce WebCore::CustomPaintCanvas, WebCore::HTMLCanvasElement, and WebCore::OffscreenCanvas by 8 bytes each:
WebCore::CanvasBase 120 bytes (no change)
WebCore::CustomPaintCanvas 168->160 bytes
WebCore::HTMLCanvasElement 304->296 bytes
WebCore::OffscreenCanvas 224 -> 216 bytes
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Radar WebKit Bug Importer
<rdar://problem/144952951>
David Kilzer (:ddkilzer)
Before (note that dump-class-layout miscalculates padding for WebCore::CustomPaintCanvas):
$ xcrun python3 ./Tools/Scripts/dump-class-layout -b WebKitBuild -c Release -a arm64e WebCore WebCore::CanvasBase
+0 <120> WebCore::CanvasBase
+0 < 16> WTF::AbstractRefCountedAndCanMakeWeakPtr<WebCore::CanvasBase> WTF::AbstractRefCountedAndCanMakeWeakPtr<WebCore::CanvasBase>
+0 < 8> WTF::AbstractRefCounted WTF::AbstractRefCounted
+0 < 8> __vtbl_ptr_type * _vptr
+8 < 8> WTF::CanMakeWeakPtr<WebCore::CanvasBase> WTF::CanMakeWeakPtr<WebCore::CanvasBase>
+8 < 8> WTF::WeakPtrFactory<WebCore::CanvasBase, WTF::DefaultWeakPtrImpl> m_weakPtrFactory
+8 < 8> WTF::RefPtr<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > m_impl
+8 < 8> WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>::StorageType m_ptr
+16 < 8> WebCore::IntSize m_size
+16 < 4> int m_width
+20 < 4> int m_height
+24 < 8> WTF::RefPtr<WebCore::ImageBuffer, WTF::RawPtrTraits<WebCore::ImageBuffer>, WTF::DefaultRefDerefTraits<WebCore::ImageBuffer> > m_imageBuffer
+24 < 8> WTF::RawPtrTraits<WebCore::ImageBuffer>::StorageType m_ptr
+32 < 8> std::__1::atomic<unsigned long> m_imageBufferMemoryCost
+32 < 8> std::__1::__atomic_base<unsigned long, true> std::__1::__atomic_base<unsigned long, true>
+32 < 8> std::__1::__atomic_base<unsigned long, false> std::__1::__atomic_base<unsigned long, false>
+32 < 8> std::__1::__cxx_atomic_impl<unsigned long, std::__1::__cxx_atomic_base_impl<unsigned long> > __a_
+32 < 8> std::__1::__cxx_atomic_base_impl<unsigned long> std::__1::__cxx_atomic_base_impl<unsigned long>
+32 < 8> _Atomic(unsigned long) __a_value
+40 < 8> std::__1::unique_ptr<WebCore::GraphicsContextStateSaver, std::__1::default_delete<WebCore::GraphicsContextStateSaver> > m_contextStateSaver
+40 < 8> std::__1::__compressed_pair<WebCore::GraphicsContextStateSaver *, std::__1::default_delete<WebCore::GraphicsContextStateSaver> > __ptr_
+40 < 8> std::__1::__compressed_pair_elem<WebCore::GraphicsContextStateSaver *, 0, false> std::__1::__compressed_pair_elem<WebCore::GraphicsContextStateSaver *, 0, false>
+40 < 8> WebCore::GraphicsContextStateSaver * __value_
+40 < 1> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::GraphicsContextStateSaver>, 1, true> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::GraphicsContextStateSaver>, 1, true>
+40 < 1> std::__1::default_delete<WebCore::GraphicsContextStateSaver> std::__1::default_delete<WebCore::GraphicsContextStateSaver>
+48 < 8> WTF::String m_lastFillText
+48 < 8> WTF::RefPtr<WTF::StringImpl, WTF::RawPtrTraits<WTF::StringImpl>, WTF::DefaultRefDerefTraits<WTF::StringImpl> > m_impl
+48 < 8> WTF::RawPtrTraits<WTF::StringImpl>::StorageType m_ptr
+56 < 16> WebCore::CanvasNoiseInjection m_canvasNoiseInjection
+56 < 16> WebCore::IntRect m_postProcessDirtyRect
+56 < 8> WebCore::IntPoint m_location
+56 < 4> int m_x
+60 < 4> int m_y
+64 < 8> WebCore::IntSize m_size
+64 < 4> int m_width
+68 < 4> int m_height
+72 < 8> WTF::Markable<unsigned long long, WTF::IntegralMarkableTraits<unsigned long long, 9223372036854775807> > m_canvasNoiseHashSalt
+72 < 8> unsigned long long m_value
+80 < 1> bool m_originClean
+81 < 1> bool m_hasCreatedImageBuffer
+82 < 6> <PADDING: 6 bytes>
+88 < 16> WTF::WeakHashSet<WebCore::CanvasObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes> m_observers
+88 < 8> WTF::WeakHashSet<WebCore::CanvasObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes>::WeakPtrImplSet m_set
+88 < 8> WTF::HashSet<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTableTraits, 255>::HashTableType m_impl
+88 < 8> WTF::HashTable<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::IdentityExtractor, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, 255>::(anonymous union) None
+96 < 4> unsigned int m_operationCountSinceLastCleanup
+100 < 4> unsigned int m_maxOperationCountWithoutCleanup
+104 < 16> WTF::WeakHashSet<WebCore::CanvasDisplayBufferObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes> m_displayBufferObservers
+104 < 8> WTF::WeakHashSet<WebCore::CanvasDisplayBufferObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes>::WeakPtrImplSet m_set
+104 < 8> WTF::HashSet<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTableTraits, 255>::HashTableType m_impl
+104 < 8> WTF::HashTable<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::IdentityExtractor, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, 255>::(anonymous union) None
+112 < 4> unsigned int m_operationCountSinceLastCleanup
+116 < 4> unsigned int m_maxOperationCountWithoutCleanup
Total byte size: 120
Total pad bytes: 6
Padding percentage: 5.00 %
$ xcrun python3 ./Tools/Scripts/dump-class-layout -b WebKitBuild -c Release -a arm64e WebCore WebCore::OffscreenCanvas
+0 <224> WebCore::OffscreenCanvas
+0 < 32> WebCore::ActiveDOMObject WebCore::ActiveDOMObject
+0 < 8> WTF::AbstractRefCounted WTF::AbstractRefCounted
+0 < 8> __vtbl_ptr_type * _vptr
+8 < 16> WebCore::ContextDestructionObserver WebCore::ContextDestructionObserver
+8 < 8> __vtbl_ptr_type * _vptr
+16 < 8> WTF::WeakPtr<WebCore::ScriptExecutionContext, WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl> > m_scriptExecutionContext
+16 < 8> WTF::RefPtr<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > m_impl
+16 < 8> WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>::StorageType m_ptr
+24 < 8> uint64_t m_pendingActivityInstanceCount
+32 < 4> WTF::RefCounted<WebCore::OffscreenCanvas> WTF::RefCounted<WebCore::OffscreenCanvas>
+32 < 4> WTF::RefCountedBase WTF::RefCountedBase
+32 < 4> unsigned int m_refCount
+36 < 4> <PADDING: 4 bytes>
+40 <120> WebCore::CanvasBase WebCore::CanvasBase
+40 < 16> WTF::AbstractRefCountedAndCanMakeWeakPtr<WebCore::CanvasBase> WTF::AbstractRefCountedAndCanMakeWeakPtr<WebCore::CanvasBase>
+40 < 8> WTF::AbstractRefCounted WTF::AbstractRefCounted
+40 < 8> __vtbl_ptr_type * _vptr
+48 < 8> WTF::CanMakeWeakPtr<WebCore::CanvasBase> WTF::CanMakeWeakPtr<WebCore::CanvasBase>
+48 < 8> WTF::WeakPtrFactory<WebCore::CanvasBase, WTF::DefaultWeakPtrImpl> m_weakPtrFactory
+48 < 8> WTF::RefPtr<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > m_impl
+48 < 8> WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>::StorageType m_ptr
+56 < 8> WebCore::IntSize m_size
+56 < 4> int m_width
+60 < 4> int m_height
+64 < 8> WTF::RefPtr<WebCore::ImageBuffer, WTF::RawPtrTraits<WebCore::ImageBuffer>, WTF::DefaultRefDerefTraits<WebCore::ImageBuffer> > m_imageBuffer
+64 < 8> WTF::RawPtrTraits<WebCore::ImageBuffer>::StorageType m_ptr
+72 < 8> std::__1::atomic<unsigned long> m_imageBufferMemoryCost
+72 < 8> std::__1::__atomic_base<unsigned long, true> std::__1::__atomic_base<unsigned long, true>
+72 < 8> std::__1::__atomic_base<unsigned long, false> std::__1::__atomic_base<unsigned long, false>
+72 < 8> std::__1::__cxx_atomic_impl<unsigned long, std::__1::__cxx_atomic_base_impl<unsigned long> > __a_
+72 < 8> std::__1::__cxx_atomic_base_impl<unsigned long> std::__1::__cxx_atomic_base_impl<unsigned long>
+72 < 8> _Atomic(unsigned long) __a_value
+80 < 8> std::__1::unique_ptr<WebCore::GraphicsContextStateSaver, std::__1::default_delete<WebCore::GraphicsContextStateSaver> > m_contextStateSaver
+80 < 8> std::__1::__compressed_pair<WebCore::GraphicsContextStateSaver *, std::__1::default_delete<WebCore::GraphicsContextStateSaver> > __ptr_
+80 < 8> std::__1::__compressed_pair_elem<WebCore::GraphicsContextStateSaver *, 0, false> std::__1::__compressed_pair_elem<WebCore::GraphicsContextStateSaver *, 0, false>
+80 < 8> WebCore::GraphicsContextStateSaver * __value_
+80 < 1> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::GraphicsContextStateSaver>, 1, true> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::GraphicsContextStateSaver>, 1, true>
+80 < 1> std::__1::default_delete<WebCore::GraphicsContextStateSaver> std::__1::default_delete<WebCore::GraphicsContextStateSaver>
+88 < 8> WTF::String m_lastFillText
+88 < 8> WTF::RefPtr<WTF::StringImpl, WTF::RawPtrTraits<WTF::StringImpl>, WTF::DefaultRefDerefTraits<WTF::StringImpl> > m_impl
+88 < 8> WTF::RawPtrTraits<WTF::StringImpl>::StorageType m_ptr
+96 < 16> WebCore::CanvasNoiseInjection m_canvasNoiseInjection
+96 < 16> WebCore::IntRect m_postProcessDirtyRect
+96 < 8> WebCore::IntPoint m_location
+96 < 4> int m_x
+100 < 4> int m_y
+104 < 8> WebCore::IntSize m_size
+104 < 4> int m_width
+108 < 4> int m_height
+112 < 8> WTF::Markable<unsigned long long, WTF::IntegralMarkableTraits<unsigned long long, 9223372036854775807> > m_canvasNoiseHashSalt
+112 < 8> unsigned long long m_value
+120 < 1> bool m_originClean
+121 < 1> bool m_hasCreatedImageBuffer
+122 < 6> <PADDING: 6 bytes>
+128 < 16> WTF::WeakHashSet<WebCore::CanvasObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes> m_observers
+128 < 8> WTF::WeakHashSet<WebCore::CanvasObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes>::WeakPtrImplSet m_set
+128 < 8> WTF::HashSet<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTableTraits, 255>::HashTableType m_impl
+128 < 8> WTF::HashTable<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::IdentityExtractor, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, 255>::(anonymous union) None
+136 < 4> unsigned int m_operationCountSinceLastCleanup
+140 < 4> unsigned int m_maxOperationCountWithoutCleanup
+144 < 16> WTF::WeakHashSet<WebCore::CanvasDisplayBufferObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes> m_displayBufferObservers
+144 < 8> WTF::WeakHashSet<WebCore::CanvasDisplayBufferObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes>::WeakPtrImplSet m_set
+144 < 8> WTF::HashSet<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTableTraits, 255>::HashTableType m_impl
+144 < 8> WTF::HashTable<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::IdentityExtractor, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, 255>::(anonymous union) None
+152 < 4> unsigned int m_operationCountSinceLastCleanup
+156 < 4> unsigned int m_maxOperationCountWithoutCleanup
+160 < 24> WebCore::EventTarget WebCore::EventTarget
+160 < 8> __vtbl_ptr_type * _vptr
+168 < 8> WebCore::ScriptWrappable WebCore::ScriptWrappable
+168 < 8> JSC::Weak<WebCore::JSDOMObject> m_wrapper
+168 < 8> JSC::WeakImpl * m_impl
+176 < 8> WTF::CanMakeWeakPtrWithBitField<EventTarget, WeakPtrFactoryInitialization::Lazy, WeakPtrImplWithEventTargetData> WTF::CanMakeWeakPtrWithBitField<EventTarget, WeakPtrFactoryInitialization::Lazy, WeakPtrImplWithEventTargetData>
+176 < 8> WTF::WeakPtrFactoryWithBitField<WebCore::EventTarget, WebCore::WeakPtrImplWithEventTargetData> m_weakPtrFactory
+176 < 8> WTF::CompactRefPtrTuple<WebCore::WeakPtrImplWithEventTargetData, unsigned short> m_impl
+176 < 8> WTF::CompactPointerTuple<WebCore::WeakPtrImplWithEventTargetData *, unsigned short> m_data
+176 < 8> uint64_t m_data
+184 < 8> std::__1::unique_ptr<WebCore::CanvasRenderingContext, std::__1::default_delete<WebCore::CanvasRenderingContext> > m_context
+184 < 8> std::__1::__compressed_pair<WebCore::CanvasRenderingContext *, std::__1::default_delete<WebCore::CanvasRenderingContext> > __ptr_
+184 < 8> std::__1::__compressed_pair_elem<WebCore::CanvasRenderingContext *, 0, false> std::__1::__compressed_pair_elem<WebCore::CanvasRenderingContext *, 0, false>
+184 < 8> WebCore::CanvasRenderingContext * __value_
+184 < 1> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::CanvasRenderingContext>, 1, true> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::CanvasRenderingContext>, 1, true>
+184 < 1> std::__1::default_delete<WebCore::CanvasRenderingContext> std::__1::default_delete<WebCore::CanvasRenderingContext>
+192 < 8> WTF::RefPtr<WebCore::PlaceholderRenderingContextSource, WTF::RawPtrTraits<WebCore::PlaceholderRenderingContextSource>, WTF::DefaultRefDerefTraits<WebCore::PlaceholderRenderingContextSource> > m_placeholderSource
+192 < 8> WTF::RawPtrTraits<WebCore::PlaceholderRenderingContextSource>::StorageType m_ptr
+200 < 8> WTF::RefPtr<WebCore::Image, WTF::RawPtrTraits<WebCore::Image>, WTF::DefaultRefDerefTraits<WebCore::Image> > m_copiedImage
+200 < 8> WTF::RawPtrTraits<WebCore::Image>::StorageType m_ptr
+208 < 1> bool m_detached
+209 < 1> bool m_hasScheduledCommit
+210 < 6> <PADDING: 6 bytes>
+216 < 8> std::__1::unique_ptr<WebCore::CSSParserContext, std::__1::default_delete<WebCore::CSSParserContext> > m_cssParserContext
+216 < 8> std::__1::__compressed_pair<WebCore::CSSParserContext *, std::__1::default_delete<WebCore::CSSParserContext> > __ptr_
+216 < 8> std::__1::__compressed_pair_elem<WebCore::CSSParserContext *, 0, false> std::__1::__compressed_pair_elem<WebCore::CSSParserContext *, 0, false>
+216 < 8> WebCore::CSSParserContext * __value_
+216 < 1> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::CSSParserContext>, 1, true> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::CSSParserContext>, 1, true>
+216 < 1> std::__1::default_delete<WebCore::CSSParserContext> std::__1::default_delete<WebCore::CSSParserContext>
Total byte size: 224
Total pad bytes: 16
Padding percentage: 7.14 %
$ xcrun python3 ./Tools/Scripts/dump-class-layout -b WebKitBuild -c Release -a arm64e WebCore WebCore::CustomPaintCanvas
+0 <168> WebCore::CustomPaintCanvas
+0 <120> <PADDING: 120 bytes>
+120 < 4> WTF::RefCounted<WebCore::CustomPaintCanvas> WTF::RefCounted<WebCore::CustomPaintCanvas>
+120 < 4> WTF::RefCountedBase WTF::RefCountedBase
+120 < 4> unsigned int m_refCount
+0 <120> WebCore::CanvasBase WebCore::CanvasBase
+0 < 16> WTF::AbstractRefCountedAndCanMakeWeakPtr<WebCore::CanvasBase> WTF::AbstractRefCountedAndCanMakeWeakPtr<WebCore::CanvasBase>
+0 < 8> WTF::AbstractRefCounted WTF::AbstractRefCounted
+0 < 8> __vtbl_ptr_type * _vptr
+8 < 8> WTF::CanMakeWeakPtr<WebCore::CanvasBase> WTF::CanMakeWeakPtr<WebCore::CanvasBase>
+8 < 8> WTF::WeakPtrFactory<WebCore::CanvasBase, WTF::DefaultWeakPtrImpl> m_weakPtrFactory
+8 < 8> WTF::RefPtr<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > m_impl
+8 < 8> WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>::StorageType m_ptr
+16 < 8> WebCore::IntSize m_size
+16 < 4> int m_width
+20 < 4> int m_height
+24 < 8> WTF::RefPtr<WebCore::ImageBuffer, WTF::RawPtrTraits<WebCore::ImageBuffer>, WTF::DefaultRefDerefTraits<WebCore::ImageBuffer> > m_imageBuffer
+24 < 8> WTF::RawPtrTraits<WebCore::ImageBuffer>::StorageType m_ptr
+32 < 8> std::__1::atomic<unsigned long> m_imageBufferMemoryCost
+32 < 8> std::__1::__atomic_base<unsigned long, true> std::__1::__atomic_base<unsigned long, true>
+32 < 8> std::__1::__atomic_base<unsigned long, false> std::__1::__atomic_base<unsigned long, false>
+32 < 8> std::__1::__cxx_atomic_impl<unsigned long, std::__1::__cxx_atomic_base_impl<unsigned long> > __a_
+32 < 8> std::__1::__cxx_atomic_base_impl<unsigned long> std::__1::__cxx_atomic_base_impl<unsigned long>
+32 < 8> _Atomic(unsigned long) __a_value
+40 < 8> std::__1::unique_ptr<WebCore::GraphicsContextStateSaver, std::__1::default_delete<WebCore::GraphicsContextStateSaver> > m_contextStateSaver
+40 < 8> std::__1::__compressed_pair<WebCore::GraphicsContextStateSaver *, std::__1::default_delete<WebCore::GraphicsContextStateSaver> > __ptr_
+40 < 8> std::__1::__compressed_pair_elem<WebCore::GraphicsContextStateSaver *, 0, false> std::__1::__compressed_pair_elem<WebCore::GraphicsContextStateSaver *, 0, false>
+40 < 8> WebCore::GraphicsContextStateSaver * __value_
+40 < 1> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::GraphicsContextStateSaver>, 1, true> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::GraphicsContextStateSaver>, 1, true>
+40 < 1> std::__1::default_delete<WebCore::GraphicsContextStateSaver> std::__1::default_delete<WebCore::GraphicsContextStateSaver>
+48 < 8> WTF::String m_lastFillText
+48 < 8> WTF::RefPtr<WTF::StringImpl, WTF::RawPtrTraits<WTF::StringImpl>, WTF::DefaultRefDerefTraits<WTF::StringImpl> > m_impl
+48 < 8> WTF::RawPtrTraits<WTF::StringImpl>::StorageType m_ptr
+56 < 16> WebCore::CanvasNoiseInjection m_canvasNoiseInjection
+56 < 16> WebCore::IntRect m_postProcessDirtyRect
+56 < 8> WebCore::IntPoint m_location
+56 < 4> int m_x
+60 < 4> int m_y
+64 < 8> WebCore::IntSize m_size
+64 < 4> int m_width
+68 < 4> int m_height
+72 < 8> WTF::Markable<unsigned long long, WTF::IntegralMarkableTraits<unsigned long long, 9223372036854775807> > m_canvasNoiseHashSalt
+72 < 8> unsigned long long m_value
+80 < 1> bool m_originClean
+81 < 1> bool m_hasCreatedImageBuffer
+82 < 6> <PADDING: 6 bytes>
+88 < 16> WTF::WeakHashSet<WebCore::CanvasObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes> m_observers
+88 < 8> WTF::WeakHashSet<WebCore::CanvasObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes>::WeakPtrImplSet m_set
+88 < 8> WTF::HashSet<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTableTraits, 255>::HashTableType m_impl
+88 < 8> WTF::HashTable<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::IdentityExtractor, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, 255>::(anonymous union) None
+96 < 4> unsigned int m_operationCountSinceLastCleanup
+100 < 4> unsigned int m_maxOperationCountWithoutCleanup
+104 < 16> WTF::WeakHashSet<WebCore::CanvasDisplayBufferObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes> m_displayBufferObservers
+104 < 8> WTF::WeakHashSet<WebCore::CanvasDisplayBufferObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes>::WeakPtrImplSet m_set
+104 < 8> WTF::HashSet<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTableTraits, 255>::HashTableType m_impl
+104 < 8> WTF::HashTable<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::IdentityExtractor, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, 255>::(anonymous union) None
+112 < 4> unsigned int m_operationCountSinceLastCleanup
+116 < 4> unsigned int m_maxOperationCountWithoutCleanup
+120 < 8> <PADDING: 8 bytes>
+128 < 16> WebCore::ContextDestructionObserver WebCore::ContextDestructionObserver
+128 < 8> __vtbl_ptr_type * _vptr
+136 < 8> WTF::WeakPtr<WebCore::ScriptExecutionContext, WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl> > m_scriptExecutionContext
+136 < 8> WTF::RefPtr<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > m_impl
+136 < 8> WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>::StorageType m_ptr
+144 < 8> std::__1::unique_ptr<WebCore::PaintRenderingContext2D, std::__1::default_delete<WebCore::PaintRenderingContext2D> > m_context
+144 < 8> std::__1::__compressed_pair<WebCore::PaintRenderingContext2D *, std::__1::default_delete<WebCore::PaintRenderingContext2D> > __ptr_
+144 < 8> std::__1::__compressed_pair_elem<WebCore::PaintRenderingContext2D *, 0, false> std::__1::__compressed_pair_elem<WebCore::PaintRenderingContext2D *, 0, false>
+144 < 8> WebCore::PaintRenderingContext2D * __value_
+144 < 1> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::PaintRenderingContext2D>, 1, true> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::PaintRenderingContext2D>, 1, true>
+144 < 1> std::__1::default_delete<WebCore::PaintRenderingContext2D> std::__1::default_delete<WebCore::PaintRenderingContext2D>
+152 < 8> WTF::RefPtr<WebCore::Image, WTF::RawPtrTraits<WebCore::Image>, WTF::DefaultRefDerefTraits<WebCore::Image> > m_copiedImage
+152 < 8> WTF::RawPtrTraits<WebCore::Image>::StorageType m_ptr
+160 < 8> std::__1::unique_ptr<WebCore::CSSParserContext, std::__1::default_delete<WebCore::CSSParserContext> > m_cssParserContext
+160 < 8> std::__1::__compressed_pair<WebCore::CSSParserContext *, std::__1::default_delete<WebCore::CSSParserContext> > __ptr_
+160 < 8> std::__1::__compressed_pair_elem<WebCore::CSSParserContext *, 0, false> std::__1::__compressed_pair_elem<WebCore::CSSParserContext *, 0, false>
+160 < 8> WebCore::CSSParserContext * __value_
+160 < 1> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::CSSParserContext>, 1, true> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::CSSParserContext>, 1, true>
+160 < 1> std::__1::default_delete<WebCore::CSSParserContext> std::__1::default_delete<WebCore::CSSParserContext>
Total byte size: 168
Total pad bytes: 134
Padding percentage: 79.76 %
$ xcrun python3 ./Tools/Scripts/dump-class-layout -b WebKitBuild -c Release -a arm64e WebCore WebCore::HTMLCanvasElement
+0 <304> WebCore::HTMLCanvasElement
+0 <120> WebCore::HTMLElement WebCore::HTMLElement
+0 <120> WebCore::StyledElement WebCore::StyledElement
+0 <120> WebCore::Element WebCore::Element
+0 <104> WebCore::ContainerNode WebCore::ContainerNode
+0 < 88> WebCore::Node WebCore::Node
+0 < 24> WebCore::EventTarget WebCore::EventTarget
+0 < 8> __vtbl_ptr_type * _vptr
+8 < 8> WebCore::ScriptWrappable WebCore::ScriptWrappable
+8 < 8> JSC::Weak<WebCore::JSDOMObject> m_wrapper
+8 < 8> JSC::WeakImpl * m_impl
+16 < 8> WTF::CanMakeWeakPtrWithBitField<EventTarget, WeakPtrFactoryInitialization::Lazy, WeakPtrImplWithEventTargetData> WTF::CanMakeWeakPtrWithBitField<EventTarget, WeakPtrFactoryInitialization::Lazy, WeakPtrImplWithEventTargetData>
+16 < 8> WTF::WeakPtrFactoryWithBitField<WebCore::EventTarget, WebCore::WeakPtrImplWithEventTargetData> m_weakPtrFactory
+16 < 8> WTF::CompactRefPtrTuple<WebCore::WeakPtrImplWithEventTargetData, unsigned short> m_impl
+16 < 8> WTF::CompactPointerTuple<WebCore::WeakPtrImplWithEventTargetData *, unsigned short> m_data
+16 < 8> uint64_t m_data
+24 < 4> WTF::CanMakeCheckedPtr<WebCore::Node, WTF::DefaultedOperatorEqual::No> WTF::CanMakeCheckedPtr<WebCore::Node, WTF::DefaultedOperatorEqual::No>
+24 < 4> WTF::CanMakeCheckedPtrBase<WTF::SingleThreadIntegralWrapper<unsigned int>, unsigned int, WTF::DefaultedOperatorEqual::No> WTF::CanMakeCheckedPtrBase<WTF::SingleThreadIntegralWrapper<unsigned int>, unsigned int, WTF::DefaultedOperatorEqual::No>
+24 < 4> WTF::SingleThreadIntegralWrapper<unsigned int> m_checkedPtrCount
+24 < 4> unsigned int m_value
+28 < 4> uint32_t m_refCountAndParentBit
+32 < 2> uint16_t m_typeBitFields
+34 < 2> WTF::OptionSet<WebCore::Node::StateFlag> m_stateFlags
+34 < 2> WTF::OptionSet<WebCore::Node::StateFlag>::StorageType m_storage
+36 < 2> WTF::OptionSet<WebCore::Node::ElementStateFlag> m_elementStateFlags
+36 < 2> WTF::OptionSet<WebCore::Node::ElementStateFlag>::StorageType m_storage
+38 < 2> WebCore::Node::StyleBitfields m_styleBitfields
+38 < :3> uint16_t m_styleValidity : 3
+38 < :13> uint16_t m_flags : 13
+40 < 8> WTF::CheckedPtr<WebCore::ContainerNode, WTF::RawPtrTraits<WebCore::ContainerNode> > m_parentNode
+40 < 8> WTF::RawPtrTraits<WebCore::ContainerNode>::StorageType m_ptr
+48 < 8> WebCore::TreeScope * m_treeScope
+56 < 8> WebCore::Node * m_previousSibling
+64 < 8> WTF::CheckedPtr<WebCore::Node, WTF::RawPtrTraits<WebCore::Node> > m_next
+64 < 8> WTF::RawPtrTraits<WebCore::Node>::StorageType m_ptr
+72 < 8> WebCore::RenderObject * m_renderer
+80 < 8> WTF::CompactUniquePtrTuple<WebCore::NodeRareData, unsigned short, std::__1::default_delete<WebCore::NodeRareData> > m_rareDataWithBitfields
+80 < 8> WTF::CompactPointerTuple<WebCore::NodeRareData *, unsigned short> m_data
+80 < 8> uint64_t m_data
+88 < 8> WTF::CheckedPtr<WebCore::Node, WTF::RawPtrTraits<WebCore::Node> > m_firstChild
+88 < 8> WTF::RawPtrTraits<WebCore::Node>::StorageType m_ptr
+96 < 8> WTF::CheckedPtr<WebCore::Node, WTF::RawPtrTraits<WebCore::Node> > m_lastChild
+96 < 8> WTF::RawPtrTraits<WebCore::Node>::StorageType m_ptr
+104 < 8> WebCore::QualifiedName m_tagName
+104 < 8> WTF::RefPtr<WebCore::QualifiedName::QualifiedNameImpl, WTF::RawPtrTraits<WebCore::QualifiedName::QualifiedNameImpl>, WTF::DefaultRefDerefTraits<WebCore::QualifiedName::QualifiedNameImpl> > m_impl
+104 < 8> WTF::RawPtrTraits<WebCore::QualifiedName::QualifiedNameImpl>::StorageType m_ptr
+112 < 8> WTF::RefPtr<WebCore::ElementData, WTF::RawPtrTraits<WebCore::ElementData>, WTF::DefaultRefDerefTraits<WebCore::ElementData> > m_elementData
+112 < 8> WTF::RawPtrTraits<WebCore::ElementData>::StorageType m_ptr
+120 <120> WebCore::CanvasBase WebCore::CanvasBase
+120 < 16> WTF::AbstractRefCountedAndCanMakeWeakPtr<WebCore::CanvasBase> WTF::AbstractRefCountedAndCanMakeWeakPtr<WebCore::CanvasBase>
+120 < 8> WTF::AbstractRefCounted WTF::AbstractRefCounted
+120 < 8> __vtbl_ptr_type * _vptr
+128 < 8> WTF::CanMakeWeakPtr<WebCore::CanvasBase> WTF::CanMakeWeakPtr<WebCore::CanvasBase>
+128 < 8> WTF::WeakPtrFactory<WebCore::CanvasBase, WTF::DefaultWeakPtrImpl> m_weakPtrFactory
+128 < 8> WTF::RefPtr<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > m_impl
+128 < 8> WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>::StorageType m_ptr
+136 < 8> WebCore::IntSize m_size
+136 < 4> int m_width
+140 < 4> int m_height
+144 < 8> WTF::RefPtr<WebCore::ImageBuffer, WTF::RawPtrTraits<WebCore::ImageBuffer>, WTF::DefaultRefDerefTraits<WebCore::ImageBuffer> > m_imageBuffer
+144 < 8> WTF::RawPtrTraits<WebCore::ImageBuffer>::StorageType m_ptr
+152 < 8> std::__1::atomic<unsigned long> m_imageBufferMemoryCost
+152 < 8> std::__1::__atomic_base<unsigned long, true> std::__1::__atomic_base<unsigned long, true>
+152 < 8> std::__1::__atomic_base<unsigned long, false> std::__1::__atomic_base<unsigned long, false>
+152 < 8> std::__1::__cxx_atomic_impl<unsigned long, std::__1::__cxx_atomic_base_impl<unsigned long> > __a_
+152 < 8> std::__1::__cxx_atomic_base_impl<unsigned long> std::__1::__cxx_atomic_base_impl<unsigned long>
+152 < 8> _Atomic(unsigned long) __a_value
+160 < 8> std::__1::unique_ptr<WebCore::GraphicsContextStateSaver, std::__1::default_delete<WebCore::GraphicsContextStateSaver> > m_contextStateSaver
+160 < 8> std::__1::__compressed_pair<WebCore::GraphicsContextStateSaver *, std::__1::default_delete<WebCore::GraphicsContextStateSaver> > __ptr_
+160 < 8> std::__1::__compressed_pair_elem<WebCore::GraphicsContextStateSaver *, 0, false> std::__1::__compressed_pair_elem<WebCore::GraphicsContextStateSaver *, 0, false>
+160 < 8> WebCore::GraphicsContextStateSaver * __value_
+160 < 1> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::GraphicsContextStateSaver>, 1, true> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::GraphicsContextStateSaver>, 1, true>
+160 < 1> std::__1::default_delete<WebCore::GraphicsContextStateSaver> std::__1::default_delete<WebCore::GraphicsContextStateSaver>
+168 < 8> WTF::String m_lastFillText
+168 < 8> WTF::RefPtr<WTF::StringImpl, WTF::RawPtrTraits<WTF::StringImpl>, WTF::DefaultRefDerefTraits<WTF::StringImpl> > m_impl
+168 < 8> WTF::RawPtrTraits<WTF::StringImpl>::StorageType m_ptr
+176 < 16> WebCore::CanvasNoiseInjection m_canvasNoiseInjection
+176 < 16> WebCore::IntRect m_postProcessDirtyRect
+176 < 8> WebCore::IntPoint m_location
+176 < 4> int m_x
+180 < 4> int m_y
+184 < 8> WebCore::IntSize m_size
+184 < 4> int m_width
+188 < 4> int m_height
+192 < 8> WTF::Markable<unsigned long long, WTF::IntegralMarkableTraits<unsigned long long, 9223372036854775807> > m_canvasNoiseHashSalt
+192 < 8> unsigned long long m_value
+200 < 1> bool m_originClean
+201 < 1> bool m_hasCreatedImageBuffer
+202 < 6> <PADDING: 6 bytes>
+208 < 16> WTF::WeakHashSet<WebCore::CanvasObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes> m_observers
+208 < 8> WTF::WeakHashSet<WebCore::CanvasObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes>::WeakPtrImplSet m_set
+208 < 8> WTF::HashSet<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTableTraits, 255>::HashTableType m_impl
+208 < 8> WTF::HashTable<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::IdentityExtractor, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, 255>::(anonymous union) None
+216 < 4> unsigned int m_operationCountSinceLastCleanup
+220 < 4> unsigned int m_maxOperationCountWithoutCleanup
+224 < 16> WTF::WeakHashSet<WebCore::CanvasDisplayBufferObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes> m_displayBufferObservers
+224 < 8> WTF::WeakHashSet<WebCore::CanvasDisplayBufferObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes>::WeakPtrImplSet m_set
+224 < 8> WTF::HashSet<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTableTraits, 255>::HashTableType m_impl
+224 < 8> WTF::HashTable<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::IdentityExtractor, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, 255>::(anonymous union) None
+232 < 4> unsigned int m_operationCountSinceLastCleanup
+236 < 4> unsigned int m_maxOperationCountWithoutCleanup
+240 < 32> WebCore::ActiveDOMObject WebCore::ActiveDOMObject
+240 < 8> WTF::AbstractRefCounted WTF::AbstractRefCounted
+240 < 8> __vtbl_ptr_type * _vptr
+248 < 16> WebCore::ContextDestructionObserver WebCore::ContextDestructionObserver
+248 < 8> __vtbl_ptr_type * _vptr
+256 < 8> WTF::WeakPtr<WebCore::ScriptExecutionContext, WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl> > m_scriptExecutionContext
+256 < 8> WTF::RefPtr<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > m_impl
+256 < 8> WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>::StorageType m_ptr
+264 < 8> uint64_t m_pendingActivityInstanceCount
+272 < 8> std::__1::unique_ptr<WebCore::CanvasRenderingContext, std::__1::default_delete<WebCore::CanvasRenderingContext> > m_context
+272 < 8> std::__1::__compressed_pair<WebCore::CanvasRenderingContext *, std::__1::default_delete<WebCore::CanvasRenderingContext> > __ptr_
+272 < 8> std::__1::__compressed_pair_elem<WebCore::CanvasRenderingContext *, 0, false> std::__1::__compressed_pair_elem<WebCore::CanvasRenderingContext *, 0, false>
+272 < 8> WebCore::CanvasRenderingContext * __value_
+272 < 1> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::CanvasRenderingContext>, 1, true> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::CanvasRenderingContext>, 1, true>
+272 < 1> std::__1::default_delete<WebCore::CanvasRenderingContext> std::__1::default_delete<WebCore::CanvasRenderingContext>
+280 < 8> WTF::RefPtr<WebCore::Image, WTF::RawPtrTraits<WebCore::Image>, WTF::DefaultRefDerefTraits<WebCore::Image> > m_copiedImage
+280 < 8> WTF::RawPtrTraits<WebCore::Image>::StorageType m_ptr
+288 < 8> std::__1::unique_ptr<WebCore::CSSParserContext, std::__1::default_delete<WebCore::CSSParserContext> > m_cssParserContext
+288 < 8> std::__1::__compressed_pair<WebCore::CSSParserContext *, std::__1::default_delete<WebCore::CSSParserContext> > __ptr_
+288 < 8> std::__1::__compressed_pair_elem<WebCore::CSSParserContext *, 0, false> std::__1::__compressed_pair_elem<WebCore::CSSParserContext *, 0, false>
+288 < 8> WebCore::CSSParserContext * __value_
+288 < 1> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::CSSParserContext>, 1, true> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::CSSParserContext>, 1, true>
+288 < 1> std::__1::default_delete<WebCore::CSSParserContext> std::__1::default_delete<WebCore::CSSParserContext>
+296 < 1> bool m_ignoreReset
+297 < 1> bool m_didClearImageBuffer
+298 < 1> bool m_hasRelevantWebGLEventListener
+299 < 1> bool m_isSnapshotting
+300 < 4> <PADDING: 4 bytes>
Total byte size: 304
Total pad bytes: 10
Padding percentage: 3.29 %
David Kilzer (:ddkilzer)
After:
$ xcrun python3 ./Tools/Scripts/dump-class-layout -b WebKitBuild -c Release -a arm64e WebCore WebCore::CanvasBase
+0 <120> WebCore::CanvasBase
+0 < 16> WTF::AbstractRefCountedAndCanMakeWeakPtr<WebCore::CanvasBase> WTF::AbstractRefCountedAndCanMakeWeakPtr<WebCore::CanvasBase>
+0 < 8> WTF::AbstractRefCounted WTF::AbstractRefCounted
+0 < 8> __vtbl_ptr_type * _vptr
+8 < 8> WTF::CanMakeWeakPtr<WebCore::CanvasBase> WTF::CanMakeWeakPtr<WebCore::CanvasBase>
+8 < 8> WTF::WeakPtrFactory<WebCore::CanvasBase, WTF::DefaultWeakPtrImpl> m_weakPtrFactory
+8 < 8> WTF::RefPtr<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > m_impl
+8 < 8> WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>::StorageType m_ptr
+16 < 8> WebCore::IntSize m_size
+16 < 4> int m_width
+20 < 4> int m_height
+24 < 8> WTF::RefPtr<WebCore::ImageBuffer, WTF::RawPtrTraits<WebCore::ImageBuffer>, WTF::DefaultRefDerefTraits<WebCore::ImageBuffer> > m_imageBuffer
+24 < 8> WTF::RawPtrTraits<WebCore::ImageBuffer>::StorageType m_ptr
+32 < 8> std::__1::atomic<unsigned long> m_imageBufferMemoryCost
+32 < 8> std::__1::__atomic_base<unsigned long, true> std::__1::__atomic_base<unsigned long, true>
+32 < 8> std::__1::__atomic_base<unsigned long, false> std::__1::__atomic_base<unsigned long, false>
+32 < 8> std::__1::__cxx_atomic_impl<unsigned long, std::__1::__cxx_atomic_base_impl<unsigned long> > __a_
+32 < 8> std::__1::__cxx_atomic_base_impl<unsigned long> std::__1::__cxx_atomic_base_impl<unsigned long>
+32 < 8> _Atomic(unsigned long) __a_value
+40 < 8> std::__1::unique_ptr<WebCore::GraphicsContextStateSaver, std::__1::default_delete<WebCore::GraphicsContextStateSaver> > m_contextStateSaver
+40 < 8> std::__1::__compressed_pair<WebCore::GraphicsContextStateSaver *, std::__1::default_delete<WebCore::GraphicsContextStateSaver> > __ptr_
+40 < 8> std::__1::__compressed_pair_elem<WebCore::GraphicsContextStateSaver *, 0, false> std::__1::__compressed_pair_elem<WebCore::GraphicsContextStateSaver *, 0, false>
+40 < 8> WebCore::GraphicsContextStateSaver * __value_
+40 < 1> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::GraphicsContextStateSaver>, 1, true> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::GraphicsContextStateSaver>, 1, true>
+40 < 1> std::__1::default_delete<WebCore::GraphicsContextStateSaver> std::__1::default_delete<WebCore::GraphicsContextStateSaver>
+48 < 8> WTF::String m_lastFillText
+48 < 8> WTF::RefPtr<WTF::StringImpl, WTF::RawPtrTraits<WTF::StringImpl>, WTF::DefaultRefDerefTraits<WTF::StringImpl> > m_impl
+48 < 8> WTF::RawPtrTraits<WTF::StringImpl>::StorageType m_ptr
+56 < 16> WTF::WeakHashSet<WebCore::CanvasObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes> m_observers
+56 < 8> WTF::WeakHashSet<WebCore::CanvasObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes>::WeakPtrImplSet m_set
+56 < 8> WTF::HashSet<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTableTraits, 255>::HashTableType m_impl
+56 < 8> WTF::HashTable<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::IdentityExtractor, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, 255>::(anonymous union) None
+64 < 4> unsigned int m_operationCountSinceLastCleanup
+68 < 4> unsigned int m_maxOperationCountWithoutCleanup
+72 < 16> WTF::WeakHashSet<WebCore::CanvasDisplayBufferObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes> m_displayBufferObservers
+72 < 8> WTF::WeakHashSet<WebCore::CanvasDisplayBufferObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes>::WeakPtrImplSet m_set
+72 < 8> WTF::HashSet<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTableTraits, 255>::HashTableType m_impl
+72 < 8> WTF::HashTable<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::IdentityExtractor, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, 255>::(anonymous union) None
+80 < 4> unsigned int m_operationCountSinceLastCleanup
+84 < 4> unsigned int m_maxOperationCountWithoutCleanup
+88 < 16> WebCore::CanvasNoiseInjection m_canvasNoiseInjection
+88 < 16> WebCore::IntRect m_postProcessDirtyRect
+88 < 8> WebCore::IntPoint m_location
+88 < 4> int m_x
+92 < 4> int m_y
+96 < 8> WebCore::IntSize m_size
+96 < 4> int m_width
+100 < 4> int m_height
+104 < 8> WTF::Markable<unsigned long long, WTF::IntegralMarkableTraits<unsigned long long, 9223372036854775807> > m_canvasNoiseHashSalt
+104 < 8> unsigned long long m_value
+112 < 1> bool m_originClean
+113 < 1> bool m_hasCreatedImageBuffer
+114 < 6> <PADDING: 6 bytes>
Total byte size: 120
Total pad bytes: 6
Padding percentage: 5.00 %
$ xcrun python3 ./Tools/Scripts/dump-class-layout -b WebKitBuild -c Release -a arm64e WebCore WebCore::OffscreenCanvas
+0 <216> WebCore::OffscreenCanvas
+0 < 32> WebCore::ActiveDOMObject WebCore::ActiveDOMObject
+0 < 8> WTF::AbstractRefCounted WTF::AbstractRefCounted
+0 < 8> __vtbl_ptr_type * _vptr
+8 < 16> WebCore::ContextDestructionObserver WebCore::ContextDestructionObserver
+8 < 8> __vtbl_ptr_type * _vptr
+16 < 8> WTF::WeakPtr<WebCore::ScriptExecutionContext, WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl> > m_scriptExecutionContext
+16 < 8> WTF::RefPtr<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > m_impl
+16 < 8> WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>::StorageType m_ptr
+24 < 8> uint64_t m_pendingActivityInstanceCount
+32 <120> WebCore::CanvasBase WebCore::CanvasBase
+32 < 16> WTF::AbstractRefCountedAndCanMakeWeakPtr<WebCore::CanvasBase> WTF::AbstractRefCountedAndCanMakeWeakPtr<WebCore::CanvasBase>
+32 < 8> WTF::AbstractRefCounted WTF::AbstractRefCounted
+32 < 8> __vtbl_ptr_type * _vptr
+40 < 8> WTF::CanMakeWeakPtr<WebCore::CanvasBase> WTF::CanMakeWeakPtr<WebCore::CanvasBase>
+40 < 8> WTF::WeakPtrFactory<WebCore::CanvasBase, WTF::DefaultWeakPtrImpl> m_weakPtrFactory
+40 < 8> WTF::RefPtr<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > m_impl
+40 < 8> WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>::StorageType m_ptr
+48 < 8> WebCore::IntSize m_size
+48 < 4> int m_width
+52 < 4> int m_height
+56 < 8> WTF::RefPtr<WebCore::ImageBuffer, WTF::RawPtrTraits<WebCore::ImageBuffer>, WTF::DefaultRefDerefTraits<WebCore::ImageBuffer> > m_imageBuffer
+56 < 8> WTF::RawPtrTraits<WebCore::ImageBuffer>::StorageType m_ptr
+64 < 8> std::__1::atomic<unsigned long> m_imageBufferMemoryCost
+64 < 8> std::__1::__atomic_base<unsigned long, true> std::__1::__atomic_base<unsigned long, true>
+64 < 8> std::__1::__atomic_base<unsigned long, false> std::__1::__atomic_base<unsigned long, false>
+64 < 8> std::__1::__cxx_atomic_impl<unsigned long, std::__1::__cxx_atomic_base_impl<unsigned long> > __a_
+64 < 8> std::__1::__cxx_atomic_base_impl<unsigned long> std::__1::__cxx_atomic_base_impl<unsigned long>
+64 < 8> _Atomic(unsigned long) __a_value
+72 < 8> std::__1::unique_ptr<WebCore::GraphicsContextStateSaver, std::__1::default_delete<WebCore::GraphicsContextStateSaver> > m_contextStateSaver
+72 < 8> std::__1::__compressed_pair<WebCore::GraphicsContextStateSaver *, std::__1::default_delete<WebCore::GraphicsContextStateSaver> > __ptr_
+72 < 8> std::__1::__compressed_pair_elem<WebCore::GraphicsContextStateSaver *, 0, false> std::__1::__compressed_pair_elem<WebCore::GraphicsContextStateSaver *, 0, false>
+72 < 8> WebCore::GraphicsContextStateSaver * __value_
+72 < 1> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::GraphicsContextStateSaver>, 1, true> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::GraphicsContextStateSaver>, 1, true>
+72 < 1> std::__1::default_delete<WebCore::GraphicsContextStateSaver> std::__1::default_delete<WebCore::GraphicsContextStateSaver>
+80 < 8> WTF::String m_lastFillText
+80 < 8> WTF::RefPtr<WTF::StringImpl, WTF::RawPtrTraits<WTF::StringImpl>, WTF::DefaultRefDerefTraits<WTF::StringImpl> > m_impl
+80 < 8> WTF::RawPtrTraits<WTF::StringImpl>::StorageType m_ptr
+88 < 16> WTF::WeakHashSet<WebCore::CanvasObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes> m_observers
+88 < 8> WTF::WeakHashSet<WebCore::CanvasObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes>::WeakPtrImplSet m_set
+88 < 8> WTF::HashSet<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTableTraits, 255>::HashTableType m_impl
+88 < 8> WTF::HashTable<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::IdentityExtractor, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, 255>::(anonymous union) None
+96 < 4> unsigned int m_operationCountSinceLastCleanup
+100 < 4> unsigned int m_maxOperationCountWithoutCleanup
+104 < 16> WTF::WeakHashSet<WebCore::CanvasDisplayBufferObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes> m_displayBufferObservers
+104 < 8> WTF::WeakHashSet<WebCore::CanvasDisplayBufferObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes>::WeakPtrImplSet m_set
+104 < 8> WTF::HashSet<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTableTraits, 255>::HashTableType m_impl
+104 < 8> WTF::HashTable<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::IdentityExtractor, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, 255>::(anonymous union) None
+112 < 4> unsigned int m_operationCountSinceLastCleanup
+116 < 4> unsigned int m_maxOperationCountWithoutCleanup
+120 < 16> WebCore::CanvasNoiseInjection m_canvasNoiseInjection
+120 < 16> WebCore::IntRect m_postProcessDirtyRect
+120 < 8> WebCore::IntPoint m_location
+120 < 4> int m_x
+124 < 4> int m_y
+128 < 8> WebCore::IntSize m_size
+128 < 4> int m_width
+132 < 4> int m_height
+136 < 8> WTF::Markable<unsigned long long, WTF::IntegralMarkableTraits<unsigned long long, 9223372036854775807> > m_canvasNoiseHashSalt
+136 < 8> unsigned long long m_value
+144 < 1> bool m_originClean
+145 < 1> bool m_hasCreatedImageBuffer
+146 < 2> <PADDING: 2 bytes>
+148 < 4> WTF::RefCounted<WebCore::OffscreenCanvas> WTF::RefCounted<WebCore::OffscreenCanvas>
+148 < 4> WTF::RefCountedBase WTF::RefCountedBase
+148 < 4> unsigned int m_refCount
+152 < 24> WebCore::EventTarget WebCore::EventTarget
+152 < 8> __vtbl_ptr_type * _vptr
+160 < 8> WebCore::ScriptWrappable WebCore::ScriptWrappable
+160 < 8> JSC::Weak<WebCore::JSDOMObject> m_wrapper
+160 < 8> JSC::WeakImpl * m_impl
+168 < 8> WTF::CanMakeWeakPtrWithBitField<EventTarget, WeakPtrFactoryInitialization::Lazy, WeakPtrImplWithEventTargetData> WTF::CanMakeWeakPtrWithBitField<EventTarget, WeakPtrFactoryInitialization::Lazy, WeakPtrImplWithEventTargetData>
+168 < 8> WTF::WeakPtrFactoryWithBitField<WebCore::EventTarget, WebCore::WeakPtrImplWithEventTargetData> m_weakPtrFactory
+168 < 8> WTF::CompactRefPtrTuple<WebCore::WeakPtrImplWithEventTargetData, unsigned short> m_impl
+168 < 8> WTF::CompactPointerTuple<WebCore::WeakPtrImplWithEventTargetData *, unsigned short> m_data
+168 < 8> uint64_t m_data
+176 < 1> bool m_detached
+177 < 1> bool m_hasScheduledCommit
+178 < 6> <PADDING: 6 bytes>
+184 < 8> std::__1::unique_ptr<WebCore::CanvasRenderingContext, std::__1::default_delete<WebCore::CanvasRenderingContext> > m_context
+184 < 8> std::__1::__compressed_pair<WebCore::CanvasRenderingContext *, std::__1::default_delete<WebCore::CanvasRenderingContext> > __ptr_
+184 < 8> std::__1::__compressed_pair_elem<WebCore::CanvasRenderingContext *, 0, false> std::__1::__compressed_pair_elem<WebCore::CanvasRenderingContext *, 0, false>
+184 < 8> WebCore::CanvasRenderingContext * __value_
+184 < 1> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::CanvasRenderingContext>, 1, true> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::CanvasRenderingContext>, 1, true>
+184 < 1> std::__1::default_delete<WebCore::CanvasRenderingContext> std::__1::default_delete<WebCore::CanvasRenderingContext>
+192 < 8> WTF::RefPtr<WebCore::PlaceholderRenderingContextSource, WTF::RawPtrTraits<WebCore::PlaceholderRenderingContextSource>, WTF::DefaultRefDerefTraits<WebCore::PlaceholderRenderingContextSource> > m_placeholderSource
+192 < 8> WTF::RawPtrTraits<WebCore::PlaceholderRenderingContextSource>::StorageType m_ptr
+200 < 8> WTF::RefPtr<WebCore::Image, WTF::RawPtrTraits<WebCore::Image>, WTF::DefaultRefDerefTraits<WebCore::Image> > m_copiedImage
+200 < 8> WTF::RawPtrTraits<WebCore::Image>::StorageType m_ptr
+208 < 8> std::__1::unique_ptr<WebCore::CSSParserContext, std::__1::default_delete<WebCore::CSSParserContext> > m_cssParserContext
+208 < 8> std::__1::__compressed_pair<WebCore::CSSParserContext *, std::__1::default_delete<WebCore::CSSParserContext> > __ptr_
+208 < 8> std::__1::__compressed_pair_elem<WebCore::CSSParserContext *, 0, false> std::__1::__compressed_pair_elem<WebCore::CSSParserContext *, 0, false>
+208 < 8> WebCore::CSSParserContext * __value_
+208 < 1> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::CSSParserContext>, 1, true> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::CSSParserContext>, 1, true>
+208 < 1> std::__1::default_delete<WebCore::CSSParserContext> std::__1::default_delete<WebCore::CSSParserContext>
Total byte size: 216
Total pad bytes: 8
Padding percentage: 3.70 %
$ xcrun python3 ./Tools/Scripts/dump-class-layout -b WebKitBuild -c Release -a arm64e WebCore WebCore::CustomPaintCanvas
+0 <160> WebCore::CustomPaintCanvas
+0 <120> WebCore::CanvasBase WebCore::CanvasBase
+0 < 16> WTF::AbstractRefCountedAndCanMakeWeakPtr<WebCore::CanvasBase> WTF::AbstractRefCountedAndCanMakeWeakPtr<WebCore::CanvasBase>
+0 < 8> WTF::AbstractRefCounted WTF::AbstractRefCounted
+0 < 8> __vtbl_ptr_type * _vptr
+8 < 8> WTF::CanMakeWeakPtr<WebCore::CanvasBase> WTF::CanMakeWeakPtr<WebCore::CanvasBase>
+8 < 8> WTF::WeakPtrFactory<WebCore::CanvasBase, WTF::DefaultWeakPtrImpl> m_weakPtrFactory
+8 < 8> WTF::RefPtr<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > m_impl
+8 < 8> WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>::StorageType m_ptr
+16 < 8> WebCore::IntSize m_size
+16 < 4> int m_width
+20 < 4> int m_height
+24 < 8> WTF::RefPtr<WebCore::ImageBuffer, WTF::RawPtrTraits<WebCore::ImageBuffer>, WTF::DefaultRefDerefTraits<WebCore::ImageBuffer> > m_imageBuffer
+24 < 8> WTF::RawPtrTraits<WebCore::ImageBuffer>::StorageType m_ptr
+32 < 8> std::__1::atomic<unsigned long> m_imageBufferMemoryCost
+32 < 8> std::__1::__atomic_base<unsigned long, true> std::__1::__atomic_base<unsigned long, true>
+32 < 8> std::__1::__atomic_base<unsigned long, false> std::__1::__atomic_base<unsigned long, false>
+32 < 8> std::__1::__cxx_atomic_impl<unsigned long, std::__1::__cxx_atomic_base_impl<unsigned long> > __a_
+32 < 8> std::__1::__cxx_atomic_base_impl<unsigned long> std::__1::__cxx_atomic_base_impl<unsigned long>
+32 < 8> _Atomic(unsigned long) __a_value
+40 < 8> std::__1::unique_ptr<WebCore::GraphicsContextStateSaver, std::__1::default_delete<WebCore::GraphicsContextStateSaver> > m_contextStateSaver
+40 < 8> std::__1::__compressed_pair<WebCore::GraphicsContextStateSaver *, std::__1::default_delete<WebCore::GraphicsContextStateSaver> > __ptr_
+40 < 8> std::__1::__compressed_pair_elem<WebCore::GraphicsContextStateSaver *, 0, false> std::__1::__compressed_pair_elem<WebCore::GraphicsContextStateSaver *, 0, false>
+40 < 8> WebCore::GraphicsContextStateSaver * __value_
+40 < 1> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::GraphicsContextStateSaver>, 1, true> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::GraphicsContextStateSaver>, 1, true>
+40 < 1> std::__1::default_delete<WebCore::GraphicsContextStateSaver> std::__1::default_delete<WebCore::GraphicsContextStateSaver>
+48 < 8> WTF::String m_lastFillText
+48 < 8> WTF::RefPtr<WTF::StringImpl, WTF::RawPtrTraits<WTF::StringImpl>, WTF::DefaultRefDerefTraits<WTF::StringImpl> > m_impl
+48 < 8> WTF::RawPtrTraits<WTF::StringImpl>::StorageType m_ptr
+56 < 16> WTF::WeakHashSet<WebCore::CanvasObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes> m_observers
+56 < 8> WTF::WeakHashSet<WebCore::CanvasObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes>::WeakPtrImplSet m_set
+56 < 8> WTF::HashSet<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTableTraits, 255>::HashTableType m_impl
+56 < 8> WTF::HashTable<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::IdentityExtractor, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, 255>::(anonymous union) None
+64 < 4> unsigned int m_operationCountSinceLastCleanup
+68 < 4> unsigned int m_maxOperationCountWithoutCleanup
+72 < 16> WTF::WeakHashSet<WebCore::CanvasDisplayBufferObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes> m_displayBufferObservers
+72 < 8> WTF::WeakHashSet<WebCore::CanvasDisplayBufferObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes>::WeakPtrImplSet m_set
+72 < 8> WTF::HashSet<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTableTraits, 255>::HashTableType m_impl
+72 < 8> WTF::HashTable<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::IdentityExtractor, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, 255>::(anonymous union) None
+80 < 4> unsigned int m_operationCountSinceLastCleanup
+84 < 4> unsigned int m_maxOperationCountWithoutCleanup
+88 < 16> WebCore::CanvasNoiseInjection m_canvasNoiseInjection
+88 < 16> WebCore::IntRect m_postProcessDirtyRect
+88 < 8> WebCore::IntPoint m_location
+88 < 4> int m_x
+92 < 4> int m_y
+96 < 8> WebCore::IntSize m_size
+96 < 4> int m_width
+100 < 4> int m_height
+104 < 8> WTF::Markable<unsigned long long, WTF::IntegralMarkableTraits<unsigned long long, 9223372036854775807> > m_canvasNoiseHashSalt
+104 < 8> unsigned long long m_value
+112 < 1> bool m_originClean
+113 < 1> bool m_hasCreatedImageBuffer
+114 < 2> <PADDING: 2 bytes>
+116 < 4> WTF::RefCounted<WebCore::CustomPaintCanvas> WTF::RefCounted<WebCore::CustomPaintCanvas>
+116 < 4> WTF::RefCountedBase WTF::RefCountedBase
+116 < 4> unsigned int m_refCount
+120 < 16> WebCore::ContextDestructionObserver WebCore::ContextDestructionObserver
+120 < 8> __vtbl_ptr_type * _vptr
+128 < 8> WTF::WeakPtr<WebCore::ScriptExecutionContext, WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl> > m_scriptExecutionContext
+128 < 8> WTF::RefPtr<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > m_impl
+128 < 8> WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>::StorageType m_ptr
+136 < 8> std::__1::unique_ptr<WebCore::PaintRenderingContext2D, std::__1::default_delete<WebCore::PaintRenderingContext2D> > m_context
+136 < 8> std::__1::__compressed_pair<WebCore::PaintRenderingContext2D *, std::__1::default_delete<WebCore::PaintRenderingContext2D> > __ptr_
+136 < 8> std::__1::__compressed_pair_elem<WebCore::PaintRenderingContext2D *, 0, false> std::__1::__compressed_pair_elem<WebCore::PaintRenderingContext2D *, 0, false>
+136 < 8> WebCore::PaintRenderingContext2D * __value_
+136 < 1> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::PaintRenderingContext2D>, 1, true> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::PaintRenderingContext2D>, 1, true>
+136 < 1> std::__1::default_delete<WebCore::PaintRenderingContext2D> std::__1::default_delete<WebCore::PaintRenderingContext2D>
+144 < 8> WTF::RefPtr<WebCore::Image, WTF::RawPtrTraits<WebCore::Image>, WTF::DefaultRefDerefTraits<WebCore::Image> > m_copiedImage
+144 < 8> WTF::RawPtrTraits<WebCore::Image>::StorageType m_ptr
+152 < 8> std::__1::unique_ptr<WebCore::CSSParserContext, std::__1::default_delete<WebCore::CSSParserContext> > m_cssParserContext
+152 < 8> std::__1::__compressed_pair<WebCore::CSSParserContext *, std::__1::default_delete<WebCore::CSSParserContext> > __ptr_
+152 < 8> std::__1::__compressed_pair_elem<WebCore::CSSParserContext *, 0, false> std::__1::__compressed_pair_elem<WebCore::CSSParserContext *, 0, false>
+152 < 8> WebCore::CSSParserContext * __value_
+152 < 1> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::CSSParserContext>, 1, true> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::CSSParserContext>, 1, true>
+152 < 1> std::__1::default_delete<WebCore::CSSParserContext> std::__1::default_delete<WebCore::CSSParserContext>
Total byte size: 160
Total pad bytes: 2
Padding percentage: 1.25 %
$ xcrun python3 ./Tools/Scripts/dump-class-layout -b WebKitBuild -c Release -a arm64e WebCore WebCore::HTMLCanvasElement
+0 <296> WebCore::HTMLCanvasElement
+0 <120> WebCore::HTMLElement WebCore::HTMLElement
+0 <120> WebCore::StyledElement WebCore::StyledElement
+0 <120> WebCore::Element WebCore::Element
+0 <104> WebCore::ContainerNode WebCore::ContainerNode
+0 < 88> WebCore::Node WebCore::Node
+0 < 24> WebCore::EventTarget WebCore::EventTarget
+0 < 8> __vtbl_ptr_type * _vptr
+8 < 8> WebCore::ScriptWrappable WebCore::ScriptWrappable
+8 < 8> JSC::Weak<WebCore::JSDOMObject> m_wrapper
+8 < 8> JSC::WeakImpl * m_impl
+16 < 8> WTF::CanMakeWeakPtrWithBitField<EventTarget, WeakPtrFactoryInitialization::Lazy, WeakPtrImplWithEventTargetData> WTF::CanMakeWeakPtrWithBitField<EventTarget, WeakPtrFactoryInitialization::Lazy, WeakPtrImplWithEventTargetData>
+16 < 8> WTF::WeakPtrFactoryWithBitField<WebCore::EventTarget, WebCore::WeakPtrImplWithEventTargetData> m_weakPtrFactory
+16 < 8> WTF::CompactRefPtrTuple<WebCore::WeakPtrImplWithEventTargetData, unsigned short> m_impl
+16 < 8> WTF::CompactPointerTuple<WebCore::WeakPtrImplWithEventTargetData *, unsigned short> m_data
+16 < 8> uint64_t m_data
+24 < 4> WTF::CanMakeCheckedPtr<WebCore::Node, WTF::DefaultedOperatorEqual::No> WTF::CanMakeCheckedPtr<WebCore::Node, WTF::DefaultedOperatorEqual::No>
+24 < 4> WTF::CanMakeCheckedPtrBase<WTF::SingleThreadIntegralWrapper<unsigned int>, unsigned int, WTF::DefaultedOperatorEqual::No> WTF::CanMakeCheckedPtrBase<WTF::SingleThreadIntegralWrapper<unsigned int>, unsigned int, WTF::DefaultedOperatorEqual::No>
+24 < 4> WTF::SingleThreadIntegralWrapper<unsigned int> m_checkedPtrCount
+24 < 4> unsigned int m_value
+28 < 4> uint32_t m_refCountAndParentBit
+32 < 2> uint16_t m_typeBitFields
+34 < 2> WTF::OptionSet<WebCore::Node::StateFlag> m_stateFlags
+34 < 2> WTF::OptionSet<WebCore::Node::StateFlag>::StorageType m_storage
+36 < 2> WTF::OptionSet<WebCore::Node::ElementStateFlag> m_elementStateFlags
+36 < 2> WTF::OptionSet<WebCore::Node::ElementStateFlag>::StorageType m_storage
+38 < 2> WebCore::Node::StyleBitfields m_styleBitfields
+38 < :3> uint16_t m_styleValidity : 3
+38 < :13> uint16_t m_flags : 13
+40 < 8> WTF::CheckedPtr<WebCore::ContainerNode, WTF::RawPtrTraits<WebCore::ContainerNode> > m_parentNode
+40 < 8> WTF::RawPtrTraits<WebCore::ContainerNode>::StorageType m_ptr
+48 < 8> WebCore::TreeScope * m_treeScope
+56 < 8> WebCore::Node * m_previousSibling
+64 < 8> WTF::CheckedPtr<WebCore::Node, WTF::RawPtrTraits<WebCore::Node> > m_next
+64 < 8> WTF::RawPtrTraits<WebCore::Node>::StorageType m_ptr
+72 < 8> WebCore::RenderObject * m_renderer
+80 < 8> WTF::CompactUniquePtrTuple<WebCore::NodeRareData, unsigned short, std::__1::default_delete<WebCore::NodeRareData> > m_rareDataWithBitfields
+80 < 8> WTF::CompactPointerTuple<WebCore::NodeRareData *, unsigned short> m_data
+80 < 8> uint64_t m_data
+88 < 8> WTF::CheckedPtr<WebCore::Node, WTF::RawPtrTraits<WebCore::Node> > m_firstChild
+88 < 8> WTF::RawPtrTraits<WebCore::Node>::StorageType m_ptr
+96 < 8> WTF::CheckedPtr<WebCore::Node, WTF::RawPtrTraits<WebCore::Node> > m_lastChild
+96 < 8> WTF::RawPtrTraits<WebCore::Node>::StorageType m_ptr
+104 < 8> WebCore::QualifiedName m_tagName
+104 < 8> WTF::RefPtr<WebCore::QualifiedName::QualifiedNameImpl, WTF::RawPtrTraits<WebCore::QualifiedName::QualifiedNameImpl>, WTF::DefaultRefDerefTraits<WebCore::QualifiedName::QualifiedNameImpl> > m_impl
+104 < 8> WTF::RawPtrTraits<WebCore::QualifiedName::QualifiedNameImpl>::StorageType m_ptr
+112 < 8> WTF::RefPtr<WebCore::ElementData, WTF::RawPtrTraits<WebCore::ElementData>, WTF::DefaultRefDerefTraits<WebCore::ElementData> > m_elementData
+112 < 8> WTF::RawPtrTraits<WebCore::ElementData>::StorageType m_ptr
+120 < 32> WebCore::ActiveDOMObject WebCore::ActiveDOMObject
+120 < 8> WTF::AbstractRefCounted WTF::AbstractRefCounted
+120 < 8> __vtbl_ptr_type * _vptr
+128 < 16> WebCore::ContextDestructionObserver WebCore::ContextDestructionObserver
+128 < 8> __vtbl_ptr_type * _vptr
+136 < 8> WTF::WeakPtr<WebCore::ScriptExecutionContext, WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl> > m_scriptExecutionContext
+136 < 8> WTF::RefPtr<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > m_impl
+136 < 8> WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>::StorageType m_ptr
+144 < 8> uint64_t m_pendingActivityInstanceCount
+152 <120> WebCore::CanvasBase WebCore::CanvasBase
+152 < 16> WTF::AbstractRefCountedAndCanMakeWeakPtr<WebCore::CanvasBase> WTF::AbstractRefCountedAndCanMakeWeakPtr<WebCore::CanvasBase>
+152 < 8> WTF::AbstractRefCounted WTF::AbstractRefCounted
+152 < 8> __vtbl_ptr_type * _vptr
+160 < 8> WTF::CanMakeWeakPtr<WebCore::CanvasBase> WTF::CanMakeWeakPtr<WebCore::CanvasBase>
+160 < 8> WTF::WeakPtrFactory<WebCore::CanvasBase, WTF::DefaultWeakPtrImpl> m_weakPtrFactory
+160 < 8> WTF::RefPtr<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > m_impl
+160 < 8> WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>::StorageType m_ptr
+168 < 8> WebCore::IntSize m_size
+168 < 4> int m_width
+172 < 4> int m_height
+176 < 8> WTF::RefPtr<WebCore::ImageBuffer, WTF::RawPtrTraits<WebCore::ImageBuffer>, WTF::DefaultRefDerefTraits<WebCore::ImageBuffer> > m_imageBuffer
+176 < 8> WTF::RawPtrTraits<WebCore::ImageBuffer>::StorageType m_ptr
+184 < 8> std::__1::atomic<unsigned long> m_imageBufferMemoryCost
+184 < 8> std::__1::__atomic_base<unsigned long, true> std::__1::__atomic_base<unsigned long, true>
+184 < 8> std::__1::__atomic_base<unsigned long, false> std::__1::__atomic_base<unsigned long, false>
+184 < 8> std::__1::__cxx_atomic_impl<unsigned long, std::__1::__cxx_atomic_base_impl<unsigned long> > __a_
+184 < 8> std::__1::__cxx_atomic_base_impl<unsigned long> std::__1::__cxx_atomic_base_impl<unsigned long>
+184 < 8> _Atomic(unsigned long) __a_value
+192 < 8> std::__1::unique_ptr<WebCore::GraphicsContextStateSaver, std::__1::default_delete<WebCore::GraphicsContextStateSaver> > m_contextStateSaver
+192 < 8> std::__1::__compressed_pair<WebCore::GraphicsContextStateSaver *, std::__1::default_delete<WebCore::GraphicsContextStateSaver> > __ptr_
+192 < 8> std::__1::__compressed_pair_elem<WebCore::GraphicsContextStateSaver *, 0, false> std::__1::__compressed_pair_elem<WebCore::GraphicsContextStateSaver *, 0, false>
+192 < 8> WebCore::GraphicsContextStateSaver * __value_
+192 < 1> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::GraphicsContextStateSaver>, 1, true> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::GraphicsContextStateSaver>, 1, true>
+192 < 1> std::__1::default_delete<WebCore::GraphicsContextStateSaver> std::__1::default_delete<WebCore::GraphicsContextStateSaver>
+200 < 8> WTF::String m_lastFillText
+200 < 8> WTF::RefPtr<WTF::StringImpl, WTF::RawPtrTraits<WTF::StringImpl>, WTF::DefaultRefDerefTraits<WTF::StringImpl> > m_impl
+200 < 8> WTF::RawPtrTraits<WTF::StringImpl>::StorageType m_ptr
+208 < 16> WTF::WeakHashSet<WebCore::CanvasObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes> m_observers
+208 < 8> WTF::WeakHashSet<WebCore::CanvasObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes>::WeakPtrImplSet m_set
+208 < 8> WTF::HashSet<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTableTraits, 255>::HashTableType m_impl
+208 < 8> WTF::HashTable<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::IdentityExtractor, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, 255>::(anonymous union) None
+216 < 4> unsigned int m_operationCountSinceLastCleanup
+220 < 4> unsigned int m_maxOperationCountWithoutCleanup
+224 < 16> WTF::WeakHashSet<WebCore::CanvasDisplayBufferObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes> m_displayBufferObservers
+224 < 8> WTF::WeakHashSet<WebCore::CanvasDisplayBufferObserver, WTF::DefaultWeakPtrImpl, WTF::EnableWeakPtrThreadingAssertions::Yes>::WeakPtrImplSet m_set
+224 < 8> WTF::HashSet<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTableTraits, 255>::HashTableType m_impl
+224 < 8> WTF::HashTable<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> >, WTF::IdentityExtractor, WTF::DefaultHash<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, WTF::HashTraits<WTF::Ref<WTF::DefaultWeakPtrImpl, WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>, WTF::DefaultRefDerefTraits<WTF::DefaultWeakPtrImpl> > >, 255>::(anonymous union) None
+232 < 4> unsigned int m_operationCountSinceLastCleanup
+236 < 4> unsigned int m_maxOperationCountWithoutCleanup
+240 < 16> WebCore::CanvasNoiseInjection m_canvasNoiseInjection
+240 < 16> WebCore::IntRect m_postProcessDirtyRect
+240 < 8> WebCore::IntPoint m_location
+240 < 4> int m_x
+244 < 4> int m_y
+248 < 8> WebCore::IntSize m_size
+248 < 4> int m_width
+252 < 4> int m_height
+256 < 8> WTF::Markable<unsigned long long, WTF::IntegralMarkableTraits<unsigned long long, 9223372036854775807> > m_canvasNoiseHashSalt
+256 < 8> unsigned long long m_value
+264 < 1> bool m_originClean
+265 < 1> bool m_hasCreatedImageBuffer
+266 < 1> bool m_ignoreReset
+267 < 1> bool m_didClearImageBuffer
+268 < 1> bool m_hasRelevantWebGLEventListener
+269 < 1> bool m_isSnapshotting
+270 < 2> <PADDING: 2 bytes>
+272 < 8> std::__1::unique_ptr<WebCore::CanvasRenderingContext, std::__1::default_delete<WebCore::CanvasRenderingContext> > m_context
+272 < 8> std::__1::__compressed_pair<WebCore::CanvasRenderingContext *, std::__1::default_delete<WebCore::CanvasRenderingContext> > __ptr_
+272 < 8> std::__1::__compressed_pair_elem<WebCore::CanvasRenderingContext *, 0, false> std::__1::__compressed_pair_elem<WebCore::CanvasRenderingContext *, 0, false>
+272 < 8> WebCore::CanvasRenderingContext * __value_
+272 < 1> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::CanvasRenderingContext>, 1, true> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::CanvasRenderingContext>, 1, true>
+272 < 1> std::__1::default_delete<WebCore::CanvasRenderingContext> std::__1::default_delete<WebCore::CanvasRenderingContext>
+280 < 8> WTF::RefPtr<WebCore::Image, WTF::RawPtrTraits<WebCore::Image>, WTF::DefaultRefDerefTraits<WebCore::Image> > m_copiedImage
+280 < 8> WTF::RawPtrTraits<WebCore::Image>::StorageType m_ptr
+288 < 8> std::__1::unique_ptr<WebCore::CSSParserContext, std::__1::default_delete<WebCore::CSSParserContext> > m_cssParserContext
+288 < 8> std::__1::__compressed_pair<WebCore::CSSParserContext *, std::__1::default_delete<WebCore::CSSParserContext> > __ptr_
+288 < 8> std::__1::__compressed_pair_elem<WebCore::CSSParserContext *, 0, false> std::__1::__compressed_pair_elem<WebCore::CSSParserContext *, 0, false>
+288 < 8> WebCore::CSSParserContext * __value_
+288 < 1> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::CSSParserContext>, 1, true> std::__1::__compressed_pair_elem<std::__1::default_delete<WebCore::CSSParserContext>, 1, true>
+288 < 1> std::__1::default_delete<WebCore::CSSParserContext> std::__1::default_delete<WebCore::CSSParserContext>
Total byte size: 296
Total pad bytes: 2
Padding percentage: 0.68 %
David Kilzer (:ddkilzer)
Pull request: https://github.com/WebKit/WebKit/pull/40692
EWS
Committed 290488@main (d1a126e1325e): <https://commits.webkit.org/290488@main>
Reviewed commits have been landed. Closing PR #40692 and removing active labels.