RESOLVED FIXED287777
[WebCore] Reduce size of CustomPaintCanvas, HTMLCanvasElement, OffscreenCanvas by 8 bytes each
https://bugs.webkit.org/show_bug.cgi?id=287777
Summary [WebCore] Reduce size of CustomPaintCanvas, HTMLCanvasElement, OffscreenCanva...
David Kilzer (:ddkilzer)
Reported 2025-02-16 13:45:41 PST
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
Radar WebKit Bug Importer
Comment 1 2025-02-16 13:45:57 PST
David Kilzer (:ddkilzer)
Comment 2 2025-02-16 13:50:36 PST
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)
Comment 3 2025-02-16 13:52:22 PST
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)
Comment 4 2025-02-16 14:18:21 PST
EWS
Comment 5 2025-02-17 10:28:08 PST
Committed 290488@main (d1a126e1325e): <https://commits.webkit.org/290488@main> Reviewed commits have been landed. Closing PR #40692 and removing active labels.
Note You need to log in before you can comment on or make changes to this bug.