RESOLVED FIXED 279227
watchOS arm64_32 build broken due to ThreadSafeRefCounted layout
https://bugs.webkit.org/show_bug.cgi?id=279227
Summary watchOS arm64_32 build broken due to ThreadSafeRefCounted layout
Elliott Williams
Reported 2024-09-05 14:24:56 PDT
With debug assertions enabled (a config that EWS and post-commit do not test), watchOS for arm64_32 fails a static assertion in GeneratedSerializers.mm:
Attachments
Elliott Williams
Comment 1 2024-09-05 14:28:33 PDT
/Volumes/Data/OpenSource/WebKitBuild/Debug-watchos/DerivedSources/WebKit/GeneratedSerializers.mm:31638:19: error: static assertion failed due to requirement 'sizeof(ShouldBeSameSizeAsThreadSafeDataBufferImpl) == sizeof(WebC ore::ThreadSafeDataBufferImpl)' 31638 | static_assert(sizeof(ShouldBeSameSizeAsThreadSafeDataBufferImpl) == sizeof(WebCore::ThreadSafeDataBufferImpl)); /Volumes/Data/OpenSource/WebKitBuild/Debug-watchos/DerivedSources/WebKit/GeneratedSerializers.mm:31638:70: note: expression evaluates to '28 == 24' 31638 | static_assert(sizeof(ShouldBeSameSizeAsThreadSafeDataBufferImpl) == sizeof(WebCore::ThreadSafeDataBufferImpl)); /Volumes/Data/OpenSource/WebKitBuild/Debug-watchos/DerivedSources/WebKit/GeneratedSerializers.mm:47320:19: error: static assertion failed due to requirement 'sizeof(ShouldBeSameSizeAsSerializedScriptValue) == sizeof(WebCore ::SerializedScriptValue)' 47320 | static_assert(sizeof(ShouldBeSameSizeAsSerializedScriptValue) == sizeof(WebCore::SerializedScriptValue)); /Volumes/Data/OpenSource/WebKitBuild/Debug-watchos/DerivedSources/WebKit/GeneratedSerializers.mm:47320:67: note: expression evaluates to '100 == 96' 47320 | static_assert(sizeof(ShouldBeSameSizeAsSerializedScriptValue) == sizeof(WebCore::SerializedScriptValue)); 2 errors generated. I believe that the root problem is that WebCore::ThreadSafeDataBufferImpl is a WTF::ThreadSafeRefCounted, whereas the generated ShouldBeSameSizeAsThreadSafeDataBufferImpl is a WTF::RefCounted. The latter class has m_isOwnedByMainThread, m_areThreadingChecksEnabled, and m_adoptionIsRequired boolean fields that are implement runtime assertion checks. On platforms with 8-byte pointers, these bits seem to get packed in without affecting the overall size of the class, but on arm64_32 they make it a byte larger.
Radar WebKit Bug Importer
Comment 2 2024-09-05 14:28:44 PDT
Elliott Williams
Comment 3 2024-09-05 14:38:13 PDT
EWS
Comment 4 2024-09-05 20:53:26 PDT
Committed 283247@main (02f9d93edf29): <https://commits.webkit.org/283247@main> Reviewed commits have been landed. Closing PR #33209 and removing active labels.
Note You need to log in before you can comment on or make changes to this bug.