-
Notifications
You must be signed in to change notification settings - Fork 25
Fix promise context handling after upstream merge #134
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
rdar://165519880 https://bugs.webkit.org/show_bug.cgi?id=304990 Reviewed by Eric Carlson. 303486@main exposed a pre-existing issue, where a client of VideoMediaSampleRenderer which called stopRequestingMediaData() from callback would have its lambda destroyed while that lambda was still executing. To protect against this kind of re-entrancy, clear the m_readyForMoreMediaDataFunction ivar from stopRequestingMediaData(), but only destroy the function itself during the next run-loop. * Source/WebCore/platform/graphics/cocoa/VideoMediaSampleRenderer.mm: (WebCore::VideoMediaSampleRenderer::stopRequestingMediaData): Canonical link: https://commits.webkit.org/305174@main
…configurations https://bugs.webkit.org/show_bug.cgi?id=304937 rdar://167548897 Reviewed by Mike Wyrzykowski. Now that the reasons for disablement no longer apply, enable these modules in more macOS configurations. * Source/WTF/Configurations/WTF.xcconfig: * Source/bmalloc/Configurations/bmalloc.xcconfig: Canonical link: https://commits.webkit.org/305175@main
…-task-message-crash.html is a constant timeout https://bugs.webkit.org/show_bug.cgi?id=304079 rdar://166396326 Reviewed by Charlie Wolfe. This is like the fix in 303953@main but for additional serialization changes in 304259@main and 304905@main. * LayoutTests/http/tests/ipc/ipc-fetch-task-message-crash.html: * LayoutTests/platform/ios/TestExpectations: * LayoutTests/platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/305176@main
…ht and overlaps with the rightContainerButtons https://bugs.webkit.org/show_bug.cgi?id=304993 rdar://167634241 This patch restores the expected positioning by ensuring the scrubber does not inherit a fixed left offset from the shared controls. Reviewed by Andy Estes. * LayoutTests/media/modern-media-controls/macos-inline-media-controls/mac-inline-controls-time-control-no-overlap-expected.txt: Added. * LayoutTests/media/modern-media-controls/macos-inline-media-controls/mac-inline-controls-time-control-no-overlap.html: Added. * Source/WebCore/rendering/cocoa/RenderThemeCocoa.mm: (WebCore::macOSInlineMediaControlsStyleSheet): Canonical link: https://commits.webkit.org/305177@main
…ompatibilitySpan.dylib" https://bugs.webkit.org/show_bug.cgi?id=304649 rdar://166804178 Reviewed by Richard Robinson and Alexey Proskuryakov. In relocatable builds, we rely on the DYLD_LIBRARY_PATH baked into WebKit's XPC services to load dylibs. In STP, this load command is set up so that the install paths for ANGLE (@loader_path/../../../libANGLE-shared.dylib) and webrtc (@loader_path/../../../libwebrtc.dylib) can be resolved. The Swift runtime compatibility libraries that our build copies from the toolchain are linked against with an rpath-based install path (@rpath/libswiftCompatibilitySpan.dylib). So, the DYLD_LIBRARY_PATH we have doesn't work. It needs to be combined with the relative path from the service bundle to the shallow bundle (../../..). Adding new search paths to DYLD_LIBRARY_PATH is risky, since we would need to carefully consider every path WebKit.framework can be installed at, to ensure it is never possible to load untrusted code from outside the bundle. Instead, add `@loader_path/../../../` to the XPC service's rpath list, so that rpath resolution uses the same semantics as our own two dylibs. * Source/WebKit/Configurations/BaseXPCService.xcconfig: Canonical link: https://commits.webkit.org/305178@main
https://bugs.webkit.org/show_bug.cgi?id=304964 Reviewed by Darin Adler. Simplify CSSSelectorList::componentCount() & CSSSelectorList::listSize() now that the selectors are stored in a FixedVector and we know the size. In a follow-up, we should be able to get rid of the `m_isLastInSelectorList` flag on CSSSelector but the CSSSelectorList iterator will need updating first (which will require performance A/B testing). This change also reduces the use of WTF_ALLOW_UNSAFE_BUFFER_USAGE and thus improves code safety. * Source/WebCore/css/CSSSelectorList.cpp: (WebCore::CSSSelectorList::listSize const): (WebCore::CSSSelectorList::componentCount const): * Source/WebCore/css/CSSSelectorList.h: (WebCore::CSSSelectorList::componentCount const): Canonical link: https://commits.webkit.org/305179@main
https://bugs.webkit.org/show_bug.cgi?id=304991 rdar://167632286 Reviewed by Vitor Roriz. We currently need a deviceScaleFactor in order to create a ZoomFactor, but we never end up using it anywhere. We previously used it for LineWidth but unfortunately that is no longer the case as of 301536@main. We can remove it from this struct for now and add it back in once we need it. This ends up removing some unnecessary calls into InheritedRareData that end up occurring because we need it to create the ZoomFactor. Canonical link: https://commits.webkit.org/305180@main
…aracterType> b)` https://bugs.webkit.org/show_bug.cgi?id=304919 Reviewed by Yusuke Suzuki. Micro-optimize `WTF::equal(const CharacterType* a, std::span<const CharacterType> b)` as recommended by Claude AI. Here are micro-benchmark results: Length Original (ns) Optimized (ns) Speedup Improvement ---------------------------------------------------------------------- 2 1.80 1.58 1.141x +12.3% 3 1.60 1.58 1.008x +0.8% 4 1.59 1.58 1.004x +0.4% 5 1.58 1.58 0.999x -0.1% 6 1.58 1.57 1.006x +0.6% 7 1.57 1.57 1.001x +0.1% 8 1.57 1.57 1.001x +0.1% 9 1.65 1.62 1.018x +1.7% 12 1.57 1.58 0.997x -0.3% 16 1.57 1.57 1.001x +0.1% 17 1.56 1.57 0.990x -1.0% 20 1.57 1.58 0.993x -0.7% 24 1.58 1.57 1.007x +0.7% 32 1.59 1.57 1.013x +1.3% 33 1.66 1.62 1.022x +2.1% 40 1.67 1.64 1.019x +1.9% 48 1.70 1.61 1.054x +5.2% 64 1.83 1.63 1.123x +10.9% 65 1.83 1.70 1.074x +6.9% 80 2.11 1.72 1.225x +18.3% 100 2.36 2.20 1.072x +6.8% 128 2.96 2.53 1.173x +14.7% 256 5.37 4.79 1.122x +10.8% 512 9.67 8.79 1.100x +9.1% 1024 18.93 16.69 1.134x +11.8% 2048 46.76 37.97 1.231x +18.8% 4096 86.65 76.17 1.138x +12.1% ---------------------------------------------------------------------- Average speedup: 1.136x Total improvement: 12.0% * Source/WTF/wtf/text/StringCommon.h: (WTF::equal): Canonical link: https://commits.webkit.org/305181@main
…t> b)` https://bugs.webkit.org/show_bug.cgi?id=304921 Reviewed by Yusuke Suzuki. Micro-optimize `WTF::equal(const char16_t* a, std::span<const char16_t> b)` as recommended by Claude AI: Micro benchmark results: Length Bytes Original (ns) Optimized (ns) Speedup Improvement Status ---------------------------------------------------------------------------------------- 2 4 1.82 1.58 1.153x +13.3% OK 3 6 1.59 1.58 1.003x +0.3% OK 4 8 1.58 1.59 0.997x -0.3% OK 5 10 1.58 1.56 1.010x +1.0% OK 6 12 1.56 1.68 0.930x -7.5% OK 7 14 1.59 1.57 1.012x +1.2% OK 8 16 1.57 1.56 1.005x +0.5% OK 9 18 1.58 1.60 0.986x -1.4% OK 10 20 1.59 1.59 0.998x -0.2% OK 12 24 1.59 1.59 1.000x +0.0% OK 14 28 1.60 1.60 1.003x +0.3% OK 16 32 1.59 1.61 0.989x -1.1% OK 17 34 1.71 1.68 1.018x +1.8% OK 20 40 1.71 1.66 1.031x +3.0% OK 24 48 1.75 1.68 1.043x +4.1% OK 28 56 1.74 1.66 1.053x +5.0% OK 32 64 1.85 1.67 1.105x +9.5% OK 33 66 1.84 1.74 1.056x +5.3% OK 40 80 2.23 1.74 1.285x +22.2% OK 48 96 2.46 1.99 1.237x +19.1% OK 64 128 3.01 2.37 1.270x +21.3% OK 80 160 3.55 2.96 1.200x +16.6% OK 100 200 4.16 3.81 1.094x +8.6% OK 128 256 5.47 4.70 1.163x +14.0% OK 256 512 10.28 9.10 1.130x +11.5% OK 512 1024 19.34 16.76 1.154x +13.3% OK 1024 2048 49.12 40.56 1.211x +17.4% OK 2048 4096 89.04 79.29 1.123x +11.0% OK ---------------------------------------------------------------------------------------- Average speedup: 1.135x Total improvement: 11.9% Key Findings 1. Small Strings (2-16 elements, 4-32 bytes): Minimal Impact Noise-level differences (±1-2%) Already well-optimized, dominated by branch prediction 2. Case 5 - NEW OPTIMIZATION (17-32 elements, 34-64 bytes): Good Gains 32 elements: +9.5% - the new 4-SIMD-load path is working! 24 elements: +4.1% 28 elements: +5.0% Progressive improvement as length increases toward 32 3. Default Case (33+ elements, 66+ bytes): Strong Gains Best improvements at 40-64 elements: +19-22% 🔥 40 elements: +22.2% - exceptional! 48 elements: +19.1% 64 elements: +21.3% The fixed loop logic (starting at i=16 instead of i=length%8) really shines here 4. Large Strings (100+ elements): Solid 10-15% Gains Consistent improvements throughout 1024 elements: +17.4% - very good for such a large string * Source/WTF/wtf/text/StringCommon.h: (WTF::equal): Canonical link: https://commits.webkit.org/305182@main
…td::span<const double> sourceSpan)` https://bugs.webkit.org/show_bug.cgi?id=304928 Reviewed by Yusuke Suzuki. Micro-optimize the function as directed by Claude AI. In particular, the following improvements were made: 1. Replaced simde_vld1q_f64_x4 with individual loads - vld1q_f64_x4 is a structure load that loads into an interleaved structure, which may have overhead - Individual vld1q_f64 loads are simpler and give the compiler more flexibility to schedule instructions - On ARM64, the compiler can pipeline these loads better 2. Replaced simde_vst1q_f32_x2 with individual stores - Similar to loads - structure stores have overhead - Individual stores are simpler and more efficient - Avoids creating the temporary simde_float32x4x2_t structure - Better instruction scheduling Micro-benchmarking results: Length Buggy (ns) Fixed (ns) Speedup Improvement Status -------------------------------------------------------------------------------- 1 1.46 1.22 1.197x +19.7% OK 2 1.33 0.94 1.424x +42.4% OK 3 1.23 1.33 0.924x -7.6% OK 4 1.25 1.22 1.028x +2.8% OK 5 1.45 1.46 0.998x -0.2% OK 6 1.44 1.44 1.000x -0.0% OK 7 1.65 1.63 1.012x +1.2% OK 8 0.72 0.61 1.180x +18.0% OK 9 0.97 0.93 1.046x +4.6% OK 10 1.25 1.21 1.036x +3.6% OK 12 1.47 1.31 1.121x +12.1% OK 15 1.71 1.73 0.992x -0.8% OK 16 1.22 0.92 1.334x +33.4% OK 20 1.98 1.75 1.134x +13.4% OK 24 1.73 1.22 1.415x +41.5% OK 31 2.98 2.49 1.195x +19.5% OK 32 2.21 1.57 1.410x +41.0% OK 48 3.20 2.31 1.387x +38.7% OK 64 4.20 3.02 1.389x +38.9% OK 96 6.12 4.54 1.346x +34.6% OK 128 8.18 6.07 1.348x +34.8% OK 192 12.06 8.98 1.343x +34.3% OK 256 15.86 12.02 1.319x +31.9% OK 512 31.63 23.92 1.322x +32.2% OK 1024 67.34 52.24 1.289x +28.9% OK 2048 132.41 101.49 1.305x +30.5% OK 4096 263.98 236.39 1.117x +11.7% OK 8192 617.88 615.62 1.004x +0.4% OK 16384 1006.77 774.89 1.299x +29.9% OK -------------------------------------------------------------------------------- Average speedup: 1.204x (20.4% improvement) Test: Tools/TestWebKitAPI/Tests/WTF/StringCommon.cpp * Source/WTF/wtf/text/StringCommon.h: (WTF::copyElements): * Tools/TestWebKitAPI/Tests/WTF/StringCommon.cpp: (TestWebKitAPI::CopyElementsDoubleToFloatTest::testConversion): (TestWebKitAPI::TEST_F(CopyElementsDoubleToFloatTest, VerySmallSizes)): (TestWebKitAPI::TEST_F(CopyElementsDoubleToFloatTest, ExactlySIMDWidth)): (TestWebKitAPI::TEST_F(CopyElementsDoubleToFloatTest, JustAboveSIMDWidth)): (TestWebKitAPI::TEST_F(CopyElementsDoubleToFloatTest, ExactlyTwoSIMDIterations)): (TestWebKitAPI::TEST_F(CopyElementsDoubleToFloatTest, MediumSizes)): (TestWebKitAPI::TEST_F(CopyElementsDoubleToFloatTest, LargeSizes)): (TestWebKitAPI::TEST_F(CopyElementsDoubleToFloatTest, EdgeCasesAroundSIMDBoundaries)): (TestWebKitAPI::TEST_F(CopyElementsDoubleToFloatTest, SpecialValues)): (TestWebKitAPI::TEST_F(CopyElementsDoubleToFloatTest, PrecisionLoss)): (TestWebKitAPI::TEST_F(CopyElementsDoubleToFloatTest, StressTestMultipleIterations)): (TestWebKitAPI::TEST_F(CopyElementsDoubleToFloatTest, AlignmentVariations)): Canonical link: https://commits.webkit.org/305183@main
…const_iterator https://bugs.webkit.org/show_bug.cgi?id=304971 Reviewed by Darin Adler and Sam Weinig. Stop relying on the `isLastInSelectorList` flag in CSSSelectorList's const_iterator. This is in preparation for removing the `isLastInSelectorList` flag now that the CSSSelectors are stored in a FixedVector. * Source/WebCore/css/CSSSelectorList.h: (WebCore::CSSSelectorList::const_iterator::operator++): Canonical link: https://commits.webkit.org/305184@main
https://bugs.webkit.org/show_bug.cgi?id=305015 rdar://167653126 Reviewed by Marcus Plutowski. Because its parent RedBlackTree<ScheduledTask, MonotonicTime>::ThreadSafeNode is TZONE_ALLOCATED. The build is the test. This fixes a compile time error. * Source/WTF/wtf/generic/RunLoopGeneric.cpp: Canonical link: https://commits.webkit.org/305185@main
https://bugs.webkit.org/show_bug.cgi?id=304978 Reviewed by Darin Adler and Sam Weinig. Simplify CSSSelectorList::makeCopyingSimpleSelector() by passing the CSSSelector to the FixedVector constructor directly. * Source/WebCore/css/CSSSelectorList.cpp: (WebCore::CSSSelectorList::makeCopyingSimpleSelector): Canonical link: https://commits.webkit.org/305186@main
https://bugs.webkit.org/show_bug.cgi?id=304190 Reviewed by Yusuke Suzuki. Getting the order-of-operations tests to pass required refactoring extractDifferenceOptions(), which affects the since/until/round methods for some of the other Temporal types. * JSTests/stress/temporal-plainyearmonth.js: (shouldBe): * JSTests/test262/config.yaml: * JSTests/test262/expectations.yaml: * Source/JavaScriptCore/runtime/TemporalCalendar.cpp: (JSC::TemporalCalendar::isoDateAdd): (JSC::TemporalCalendar::balanceISOYearMonth): (JSC::TemporalCalendar::calendarDateUntil): (JSC::TemporalCalendar::differenceTemporalPlainYearMonth): (JSC::TemporalCalendar::isoDateCompare): (JSC::TemporalCalendar::equals): * Source/JavaScriptCore/runtime/TemporalCalendar.h: * Source/JavaScriptCore/runtime/TemporalCalendarPrototype.cpp: (JSC::JSC_DEFINE_HOST_FUNCTION): * Source/JavaScriptCore/runtime/TemporalDuration.cpp: (JSC::TemporalDuration::combineISODateAndTimeRecord): (JSC::TemporalDuration::nudgeToCalendarUnit): (JSC::TemporalDuration::bubbleRelativeDuration): (JSC::TemporalDuration::round const): (JSC::combineISODateAndTimeRecord): Deleted. (JSC::nudgeToCalendarUnit): Deleted. (JSC::bubbleRelativeDuration): Deleted. * Source/JavaScriptCore/runtime/TemporalDuration.h: * Source/JavaScriptCore/runtime/TemporalInstant.cpp: * Source/JavaScriptCore/runtime/TemporalObject.cpp: (JSC::getTemporalUnitValuedOption): (JSC::validateTemporalUnitValue): (JSC::validateTemporalRoundingIncrement): (JSC::extractDifferenceOptions): (JSC::secondsStringPrecision): (JSC::maximumRoundingIncrement): (JSC::temporalRoundingIncrement): (JSC::temporalLargestUnit): Deleted. (JSC::temporalSmallestUnit): Deleted. * Source/JavaScriptCore/runtime/TemporalObject.h: (JSC::isAbsentUnit): * Source/JavaScriptCore/runtime/TemporalPlainDateTime.cpp: (JSC::TemporalPlainDateTime::round): * Source/JavaScriptCore/runtime/TemporalPlainTime.cpp: (JSC::TemporalPlainTime::round const): (JSC::TemporalPlainTime::from): * Source/JavaScriptCore/runtime/TemporalPlainYearMonth.cpp: (JSC::TemporalPlainYearMonth::sinceOrUntil): (JSC::TemporalPlainYearMonth::until): (JSC::TemporalPlainYearMonth::since): * Source/JavaScriptCore/runtime/TemporalPlainYearMonth.h: * Source/JavaScriptCore/runtime/TemporalPlainYearMonthPrototype.cpp: (JSC::JSC_DEFINE_HOST_FUNCTION): Canonical link: https://commits.webkit.org/305187@main
rdar://167656447
Broke the build.
Reverted change:
Re-land [Swift in WebKit] Enable the bmalloc and WTF modules in more configurations
https://bugs.webkit.org/show_bug.cgi?id=304937
rdar://167548897
305175@main (fc2b23a)
Canonical link: https://commits.webkit.org/305188@main
https://bugs.webkit.org/show_bug.cgi?id=304977 Reviewed by Darin Adler. Optimize CSSSelectorList::operator==() now that we know the list size after 305131@main. Early return if the list sizes are different and avoid iterating over the list altogether in this case. * Source/WebCore/css/CSSSelectorList.cpp: (WebCore::CSSSelectorList::operator== const): Canonical link: https://commits.webkit.org/305189@main
…row placement https://bugs.webkit.org/show_bug.cgi?id=305009 rdar://167649436 Reviewed by Tim Nguyen. In 303864@main we did a bit of a refactoring to move some logic that checks the placement of grid items to some helper functions. In particular, we added some functions to check it the -end placement is one that we currently support. In that process I made a copy paste mistake and ended up causing hasValidRowPlacement to return GridItemHasUnsupportedColumnPlacement. Looking at the diff from that patch we were previously returning GridItemHasUnsupportedColumnPlacement which is more in line with what this function was intended to do. Canonical link: https://commits.webkit.org/305190@main
rdar://166810468 https://bugs.webkit.org/show_bug.cgi?id=305010 Reviewed by Eric Carlson. 304297@main fixed a behavior issue by calling HTMLMediaElement::canProduceAudioChanged() in more circumstances than previously, but this had the side effect of increasing the CPU usage in audiomxd as a result of certain properties being changed more often. Specifically, the excess CPU time was spent executing -setPreferredIOBufferDuration:. Reduce the cost of calling this method by caching the set value and returing early if the same value is passed into AudioSessionIOS::setPreferredBufferSize(). * Source/WebCore/platform/audio/ios/AudioSessionIOS.h: * Source/WebCore/platform/audio/ios/AudioSessionIOS.mm: (-[WebInterruptionObserverHelper initWithCallback:]): (-[WebInterruptionObserverHelper sessionMediaServicesWereReset:]): Canonical link: https://commits.webkit.org/305191@main
… know about its internals https://bugs.webkit.org/show_bug.cgi?id=304980 Reviewed by Darin Adler. Add a new constructor to CSSSelectorList so StyleRule doesn't need to know about its internals. This results in better encapsulation. * Source/WebCore/css/CSSSelector.h: (WebCore::CSSSelector::isLastInComplexSelector const): (WebCore::CSSSelector::setLastInSelectorList): * Source/WebCore/css/CSSSelectorList.cpp: (WebCore::CSSSelectorList::CSSSelectorList): * Source/WebCore/css/CSSSelectorList.h: (WebCore::CSSSelectorList::CSSSelectorList): * Source/WebCore/css/StyleRule.cpp: (WebCore::StyleRule::createForSplitting): Canonical link: https://commits.webkit.org/305192@main
…are flaky timeouts https://bugs.webkit.org/show_bug.cgi?id=305008 rdar://167649319 Unreviewed test Gardening Skipping API tests in macOS Sonoma due to flaky timeouts. * Tools/TestWebKitAPI/Tests/WebKitCocoa/MediaBufferingPolicy.mm: (TEST(WebKit, MediaBufferingPolicy)): (TEST(WebKit, MediaBufferingPolicyWhenSuspendedOrHidden)): Canonical link: https://commits.webkit.org/305193@main
…ore: WebCore::Navigation::innerDispatchNavigateEvent https://bugs.webkit.org/show_bug.cgi?id=305005 rdar://167449903 Reviewed by Chris Dumez. The crash is on this line: m_transition = NavigationTransition::create(navigationType, *fromNavigationHistoryEntry, DeferredPromise::create(domGlobalObject, DeferredPromise::Mode::RetainPromiseOnResolve).releaseNonNull()); It seems that fromNavigationHistoryEntry is null when dereferenced. It's not clear why there is no currentEntry. For now the best fix we have is to null check fromNavigationHistoryEntry and abort the event. * Source/WebCore/page/Navigation.cpp: (WebCore::Navigation::innerDispatchNavigateEvent): Canonical link: https://commits.webkit.org/305194@main
…nterInteractionRegions is a constant failure https://bugs.webkit.org/show_bug.cgi?id=304880 Reviewed by Wenson Hsieh. This test case unintentionally relied on a continuation bug which was triggered by this slightly (slightly) malformed markup. Now that the bug is fixed (304526@main), caret returns the proper size which makes the test case fail unexpectedly but only because the caret (through the malformed markup) "encloses" the subsequent <div> (so essentially the caret is as tall as the 2 divs). * Tools/TestWebKitAPI/Tests/WebKitCocoa/cursor-styles.html: Canonical link: https://commits.webkit.org/305195@main
…lazy-image-load-in-iframes-scripting-disabled.html is a flaky crash https://bugs.webkit.org/show_bug.cgi?id=305026 rdar://167665017 Unreviewed test gardening. Add test expectation. * LayoutTests/platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/305196@main
…cate ID https://bugs.webkit.org/show_bug.cgi?id=305001 rdar://147015037 Reviewed by Simon Fraser. When multiple SVG resource elements share the same ID, removing any one breaks references for all elements using that ID, even though other definitions remain in the DOM. To fix this, we now verify the resource being removed matches the one registered before removing. Fixes the appearance of user avatar clipping in Slack i.e the green activity ring. Slack uses multiple SVG clipPath definitions with the same ID, and when elements are added/removed during virtual scrolling, clip-path references would break. Test: svg/clip-path-duplicate-id-removal.html * LayoutTests/svg/clip-path-duplicate-id-removal-expected.html: Added. * LayoutTests/svg/clip-path-duplicate-id-removal.html: Added. * Source/WebCore/dom/TreeScope.cpp: (WebCore::TreeScope::removeSVGResource): * Source/WebCore/dom/TreeScope.h: * Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceContainer.cpp: (WebCore::LegacyRenderSVGResourceContainer::willBeDestroyed): (WebCore::LegacyRenderSVGResourceContainer::idChanged): Canonical link: https://commits.webkit.org/305197@main
…ing images in non-remote subframes https://bugs.webkit.org/show_bug.cgi?id=305012 rdar://165119210 Reviewed by Abrar Rahman Protyasha. After the changes in 301306@main, dragging an image in a subframe fails in the case where either site isolation is disabled, or site isolation is enabled but the image is in a same-origin frame. This is due to multiple bugs, regarding how the drag image location is determined: 1. The `rootFrameID` passed into `doSystemDrag` is currently the source `Frame` where the drag is initiated, as opposed to being the root frame of the drag initator. 2. `dragLocationInWindowCoordinates` is being passed into `convertPointToMainFrameCoordinates`. The former is in window coordinates (which is incorrectly computed in the site isolation remote frame case), and the latter expects coordinates in the content coordinate space of the frame corresponding to the frame ID. 3. `convertPointToMainFrameCoordinates` itself returns a point in different coordinate spaces, depending on whether site isolation is enabled or disabled. When disabled, the resulting coordinates are in main frame content coordinates. When enabled, the resulting coordinates appear to be in root view coordinates (relative to the mainframe). It's unclear in the first place whether "mainframe coordinates" here was intended to refer to content coordinates in the main frame, or root view coordinates in the main frame. To limit risk for now, this patch only fixes (1), which is sufficient to ensure that the drag image location is correct in the following 3 scenarios: a. Site isolation disabled: dragging an image in any subframe. b. Site isolation enabled: dragging an image in a remote subframe under the main frame. c. Site isolation enabled: dragging an image in a local subframe under the main frame. We leave (2) and (3) as FIXMEs for now. Tests: DragAndDropTests.DragLocationForImageInScrolledSubframe * Source/WebCore/page/DragController.cpp: (WebCore::DragController::doImageDrag): * Source/WebKit/UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::convertPointToMainFrameCoordinates): * Source/WebKit/UIProcess/mac/WebViewImpl.mm: (WebKit::WebViewImpl::startDrag): * Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: * Tools/TestWebKitAPI/Tests/WebKitCocoa/image-in-scrolled-subframe.html: Added. * Tools/TestWebKitAPI/Tests/mac/DragAndDropTestsMac.mm: (TEST(DragAndDropTests, DragLocationForImageInScrolledSubframe)): Add a test to exercise this fix. The drag location is (incorrectly) far outside the bounds of the view without these changes. Canonical link: https://commits.webkit.org/305198@main
…DecodeOrderSampleMap::findSamplesBetweenDecodeKeys https://bugs.webkit.org/show_bug.cgi?id=304975 rdar://161260966 Reviewed by Youenn Fablet. A comparison with MediaTime::invalidTime could incorrectly yield true. (Such as MediaTime::invalidTime() > MediaTime::zeroTime() or MediaTime::invalidTime() > MediaTime::positiveInfiniteTime()) MediaTime::invalidTime() should be treated as a NaN double. We change the spaceship operator to return a partial_ordering instead of weak_ordering. Otherwise, the comparison to determine if we are searching past the end key could fail and we would iterate over the table infinitely. We amend code that didn't handle the case where the buffered range was empty or could use an invalidTime in their calculations. For all those, an early exit was required but missing. Tests: Tools/TestWebKitAPI/Tests/WTF/MediaTime.cpp Tools/TestWebKitAPI/Tests/WebCore/SampleMap.cpp * Source/WTF/wtf/MediaTime.cpp: (WTF::operator<=>): * Source/WTF/wtf/MediaTime.h: * Source/WebCore/Modules/mediasource/SampleMap.cpp: Add an extra safeguard to make sure we can never iterate past the end of the map. (WebCore::DecodeOrderSampleMap::findSamplesBetweenDecodeKeys): * Source/WebCore/platform/MediaSamplesBlock.h: * Source/WebCore/platform/graphics/SourceBufferPrivate.cpp: (WebCore::SourceBufferPrivate::computeEvictionData): Handle case where the buffered range is empty as we could have provided an invalid iterator otherwise. (WebCore::SourceBufferPrivate::maximumBufferedTime const): Do not * Source/WebCore/platform/graphics/TrackBuffer.cpp: (WebCore::TrackBuffer::maximumBufferedTime const): Return MediaTime::zeroTime() instead of invalidTime when buffered is empty. MediaSource is by spec starting at 0. (WebCore::TrackBuffer::removeCodedFrames): Fix exposed an existing issue if we attempted to remove samples in invalid interval (start past presentationOrder().end()) We now exit early if the iterator found is invalid. (WebCore::TrackBuffer::codedFramesIntervalSize): same as above. * Tools/TestWebKitAPI/Tests/WTF/MediaTime.cpp: (TestWebKitAPI::TEST(WTF, MediaTime)): * Tools/TestWebKitAPI/Tests/WebCore/SampleMap.cpp: (TestWebKitAPI::TEST_F(SampleMapTest, findSamplesBetweenDecodeKeys)): (TestWebKitAPI::TEST_F(SampleMapTest, findSamplesBetweenDecodeKeysWithNaN)): Canonical link: https://commits.webkit.org/305199@main
https://bugs.webkit.org/show_bug.cgi?id=305019 rdar://167658463 Reviewed by Mark Lam. find64 is only handling 2 elements per iteration because SIMD vector register size is 128. This patch adds several optimizations. 1. First do small loop not to start SIMD for small length. 2. Then, we do 4 vector registers per iteration, so partial unrolling. 3. Handle the remaining elements after this large loop. * Source/WTF/wtf/text/StringCommon.h: (WTF::find64): Canonical link: https://commits.webkit.org/305200@main
…r used https://bugs.webkit.org/show_bug.cgi?id=305022 Reviewed by Tim Nguyen. * Source/WebCore/css/CSSSelector.cpp: (WebCore::CSSSelector::CSSSelector): * Source/WebCore/css/CSSSelector.h: (WebCore::CSSSelector::isLastInSelectorList const): Deleted. (WebCore::CSSSelector::setLastInSelectorList): Deleted. * Source/WebCore/css/CSSSelectorList.cpp: (WebCore::CSSSelectorList::CSSSelectorList): (WebCore::CSSSelectorList::makeCopyingSimpleSelector): (WebCore::CSSSelectorList::makeCopyingComplexSelector): (WebCore::CSSSelectorList::makeJoining): * Source/WebCore/css/CSSSelectorList.h: Canonical link: https://commits.webkit.org/305201@main
…ctorHeapAgent https://bugs.webkit.org/show_bug.cgi?id=303962 rdar://166265245 Reviewed by BJ Burg and Devin Rousso. InspectorConsoleAgent stored a raw pointer to InspectorHeapAgent that was manually wired in WebHeapAgent::enable() and cleared in disable(). This could lead to use-after-free if the heap agent was destroyed without calling disable() first. This patch removes the stored pointer entirely by adopting the service locator pattern. For WebCore, InspectorInstrumentation now queries InstrumentingAgents for the heap agent directly and coordinates the snapshot operation. The console agent's takeHeapSnapshot() is replaced with reportHeapSnapshot() which only handles frontend dispatch. For JSC, the heap agent pointer moves to JSGlobalObjectConsoleClient via setPersistentHeapAgent(), following the same pattern used for InspectorScriptProfilerAgent. This is safe because both the console client and heap agent are owned by JSGlobalObjectInspectorController and share the same lifetime. * Source/JavaScriptCore/SaferCPPExpectations/NoUncheckedPtrMemberCheckerExpectations: * Source/JavaScriptCore/inspector/JSGlobalObjectConsoleClient.cpp: (Inspector::JSGlobalObjectConsoleClient::takeHeapSnapshot): * Source/JavaScriptCore/inspector/JSGlobalObjectConsoleClient.h: * Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp: (Inspector::JSGlobalObjectInspectorController::createLazyAgents): * Source/JavaScriptCore/inspector/agents/InspectorConsoleAgent.cpp: (Inspector::InspectorConsoleAgent::reportHeapSnapshot): (Inspector::InspectorConsoleAgent::takeHeapSnapshot): Deleted. * Source/JavaScriptCore/inspector/agents/InspectorConsoleAgent.h: * Source/WebCore/inspector/InspectorInstrumentation.cpp: (WebCore::InspectorInstrumentation::takeHeapSnapshotImpl): * Source/WebCore/inspector/agents/WebHeapAgent.cpp: (WebCore::WebHeapAgent::disable): (WebCore::WebHeapAgent::enable): * Source/WebCore/inspector/agents/WebHeapAgent.h: Canonical link: https://commits.webkit.org/305202@main
https://bugs.webkit.org/show_bug.cgi?id=304988 Reviewed by Chris Dumez. Also apply https://github.com/WebKit/WebKit/wiki/Safer-CPP-Guidelines to two bot-identified failures while here. Canonical link: https://commits.webkit.org/305203@main
https://bugs.webkit.org/show_bug.cgi?id=304617 rdar://167049077 Reviewed by Ryosuke Niwa. Apply https://github.com/WebKit/WebKit/wiki/Safer-CPP-Guidelines. No new tests needed. * Source/WebCore/SaferCPPExpectations/UncheckedLocalVarsCheckerExpectations: * Source/WebCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations: * Source/WebCore/SaferCPPExpectations/UncountedLambdaCapturesCheckerExpectations: * Source/WebCore/SaferCPPExpectations/UncountedLocalVarsCheckerExpectations: * Source/WebCore/page/ImageAnalysisQueue.cpp: (WebCore::ImageAnalysisQueue::enqueueAllImagesRecursive): (WebCore::ImageAnalysisQueue::resumeProcessing): Canonical link: https://commits.webkit.org/305397@main
https://bugs.webkit.org/show_bug.cgi?id=240694 Reviewed by Darin Adler. This avoids the complex and fragile parsing of the porcelain `git-branch`, and when passed a `str` as the `remote` argument we no longer have to iterate over every remote. * Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py: (Git.branches_for): * Tools/Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py: (Git.__init__): Add mocks for for-each-ref (Git.for_each_ref): The actual mock implementation Canonical link: https://commits.webkit.org/305398@main
… pasting into mail compose in dark mode https://bugs.webkit.org/show_bug.cgi?id=305232 rdar://165743699 Reviewed by Richard Robinson. After the changes in rdar://81883755 (in iOS 26), the Mail compose body field no longer uses `-apple-color-filter: apple-invert-lightness();`, but still honors dark mode via the meta tag `color-scheme: light dark;` (and additionally punches out white backgrounds in dark mode using `WKPreferences` SPI). This means that when copying and pasting dark text on a white background in Safari into Mail compose, we now end up with something like: ``` <span style="color: black; background-color: white;"></span> ``` While this _looks_ like it should be legible due to the white background color, the background color effectively becomes transparent when painting due to `_punchOutWhiteBackgroundsInDarkMode`. The end result is black text on a dark background, which is barely readable. To fix this, we heuristically remove `color` and `caret-color` style properties when pasting dark text into Mail compose in dark mode, and instead fall back on default styling (which should result in white text against a dark background). See below for more details. Test: PasteHTML.PasteDarkTextOnWhiteBackgroundIntoDarkModeEditor * Source/WebCore/editing/ReplaceSelectionCommand.cpp: (WebCore::ReplaceSelectionCommand::doApply): (WebCore::collectStylesToRemove): (WebCore::ReplaceSelectionCommand::removeForegroundColorsInDarkModeIfNeeded): Add a heuristic to remove inline `color` and `caret-color` styles from pasted elements that otherwise have no background or a punched out background color, only for editable web views to limit compat risk. We determine if the color or caret color are non-legible by comparing luminance against the document's background color; if it's too close (with an arbitrary threshold of 0.1), we simply remove those inline CSS properties and allow the color to fall back to default colors. Note that I also first collect all the style properties to remove and elements to adjust up front first, (prior to mutating any DOM state), to ensure that style invalidation doesn't trigger layout or style recalc in the middle of iterating through the DOM. * Source/WebCore/editing/ReplaceSelectionCommand.h: * Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteHTML.mm: (TEST(PasteHTML, PasteDarkTextOnWhiteBackgroundIntoDarkModeEditor)): Add an API test to exercise the change by copying light text in a white webpage and pasting into a dark mode editable web view where white backgrounds are punched out (simulating Mail compose). The resulting text (and caret) color should be white, instead of dark. Canonical link: https://commits.webkit.org/305399@main
https://bugs.webkit.org/show_bug.cgi?id=305197 Reviewed by Ryosuke Niwa. Improves code clarity. Canonical link: https://commits.webkit.org/305400@main
https://bugs.webkit.org/show_bug.cgi?id=305200 Reviewed by Charlie Wolfe. Improves clarity. Also convert some enums to class enums and remove dead code. Canonical link: https://commits.webkit.org/305401@main
https://bugs.webkit.org/show_bug.cgi?id=305203 Reviewed by Charlie Wolfe. Improve code clarity. Canonical link: https://commits.webkit.org/305402@main
https://bugs.webkit.org/show_bug.cgi?id=305177 Reviewed by Justin Michaud. This patch adds `getConstructDataInline`. Please see more details for https://commits.webkit.org/301595@main. * Source/JavaScriptCore/bytecode/RepatchInlines.h: (JSC::handleHostCall): * Source/JavaScriptCore/llint/LLIntSlowPaths.cpp: (JSC::LLInt::handleHostCall): * Source/JavaScriptCore/runtime/ConstructData.cpp: (JSC::construct): * Source/JavaScriptCore/runtime/JSBoundFunction.cpp: (JSC::JSC_DEFINE_HOST_FUNCTION): * Source/JavaScriptCore/runtime/JSFunction.cpp: (JSC::JSFunction::getConstructData): * Source/JavaScriptCore/runtime/JSFunction.h: * Source/JavaScriptCore/runtime/JSFunctionInlines.h: (JSC::JSFunction::getConstructDataInline): * Source/JavaScriptCore/runtime/JSObjectInlines.h: (JSC::getConstructDataInline): * Source/JavaScriptCore/runtime/ProxyObject.cpp: (JSC::JSC_DEFINE_HOST_FUNCTION): * Source/JavaScriptCore/runtime/ReflectObject.cpp: (JSC::JSC_DEFINE_HOST_FUNCTION): * Source/JavaScriptCore/runtime/RegExpPrototype.cpp: (JSC::JSC_DEFINE_HOST_FUNCTION): Canonical link: https://commits.webkit.org/305403@main
…rames doesn’t load https://bugs.webkit.org/show_bug.cgi?id=251595 rdar://148373033 Reviewed by Simon Fraser. The issue was caused by isProhibitedSelfReference incorrectly determining about:blank inside another about:blank as self referencing, which is not the case. Test: fast/frames/nested-about-blanks.html * LayoutTests/fast/frames/nested-about-blanks-expected.html: Added. * LayoutTests/fast/frames/nested-about-blanks.html: Added. * Source/WebCore/html/HTMLFrameOwnerElement.cpp: (WebCore::HTMLFrameOwnerElement::isProhibitedSelfReference const): Canonical link: https://commits.webkit.org/305404@main
https://bugs.webkit.org/show_bug.cgi?id=305061 Reviewed by Yusuke Suzuki. According to the spec, the overflow option should be read after the fields when calling `from` on a property bag. This change improves the result for the test test/built-ins/Temporal/PlainTime/from/order-of-operations.js (it now fails because ZonedDateTime is not implemented). * JSTests/test262/expectations.yaml: * Source/JavaScriptCore/runtime/TemporalObject.cpp: (JSC::doubleNumberOption): * Source/JavaScriptCore/runtime/TemporalPlainDatePrototype.cpp: (JSC::JSC_DEFINE_HOST_FUNCTION): * Source/JavaScriptCore/runtime/TemporalPlainDateTimePrototype.cpp: (JSC::JSC_DEFINE_HOST_FUNCTION): * Source/JavaScriptCore/runtime/TemporalPlainTime.cpp: (JSC::TemporalPlainTime::from): * Source/JavaScriptCore/runtime/TemporalPlainTime.h: * Source/JavaScriptCore/runtime/TemporalPlainTimeConstructor.cpp: (JSC::JSC_DEFINE_HOST_FUNCTION): * Source/JavaScriptCore/runtime/TemporalPlainTimePrototype.cpp: (JSC::JSC_DEFINE_HOST_FUNCTION): Canonical link: https://commits.webkit.org/305405@main
…PlayingInfo' overrides a member function but is not marked 'override' https://bugs.webkit.org/show_bug.cgi?id=305170 Unreviewed build fix for GTK&WPE Clang builds. > MediaSessionManagerGLib.h:70:10: error: 'updateNowPlayingInfo' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override] Added `final`. * Source/WebCore/platform/audio/glib/MediaSessionManagerGLib.h: Canonical link: https://commits.webkit.org/305406@main
https://bugs.webkit.org/show_bug.cgi?id=305084 rdar://167728315 Reviewed by Keith Miller. This patch simplifies callMicrotask significantly to make it fast. This is a function which is used for each microtask's JS function invocation, thus this function is extremely hot. In this patch, 1. We introduce vmEntryToJavaScriptWith4Arguments up to 7. And vmEntryToJavaScriptMicrotaskWith0Arguments up to 6. This simplifies handling of arguments, avoding ProtoCallFrame and makes set up significantly efficient. 2. Some checks are hoisted from callMicrotask to MicrotaskQueue as it is repeatedly invoked while the condition should not change. 3. VMEntryScope is not necessary since MicrotaskQueue's already setting up. 4. vm.didEnterVM is set after MicrotaskQueue finishes. * Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp: (JSC::DebuggerCallFrame::evaluateWithScopeExtension): * Source/JavaScriptCore/interpreter/CachedCall.cpp: (JSC::CachedCall::CachedCall): * Source/JavaScriptCore/interpreter/CachedCallInlines.h: (JSC::CachedCall::callWithArguments): * Source/JavaScriptCore/interpreter/Interpreter.cpp: (JSC::Interpreter::executeProgram): (JSC::Interpreter::executeCallImpl): (JSC::Interpreter::executeConstruct): (JSC::Interpreter::executeEval): (JSC::Interpreter::executeModuleProgram): (JSC::Interpreter::checkVMEntryPermission): Deleted. * Source/JavaScriptCore/interpreter/Interpreter.h: * Source/JavaScriptCore/interpreter/InterpreterInlines.h: (JSC::Interpreter::tryCallWithArguments): * Source/JavaScriptCore/llint/LLIntSlowPaths.cpp: (JSC::LLInt::llint_check_vm_entry_permission): * Source/JavaScriptCore/llint/LLIntThunks.cpp: * Source/JavaScriptCore/llint/LLIntThunks.h: * Source/JavaScriptCore/llint/LowLevelInterpreter.asm: * Source/JavaScriptCore/offlineasm/arm64.rb: * Source/JavaScriptCore/offlineasm/registers.rb: * Source/JavaScriptCore/runtime/CallData.cpp: (JSC::callMicrotask): Deleted. * Source/JavaScriptCore/runtime/CallData.h: * Source/JavaScriptCore/runtime/JSMicrotask.cpp: (JSC::callMicrotask): (JSC::promiseResolveThenableJob): (JSC::asyncFromSyncIteratorContinueOrDone): (JSC::asyncGeneratorBodyCall): (JSC::promiseFinallyReactionJob): (JSC::runInternalMicrotask): * Source/JavaScriptCore/runtime/MicrotaskQueueInlines.h: (JSC::MicrotaskQueue::performMicrotaskCheckpoint): * Source/JavaScriptCore/runtime/VM.cpp: (JSC::VM::checkVMEntryPermission): * Source/JavaScriptCore/runtime/VM.h: Canonical link: https://commits.webkit.org/305407@main
https://bugs.webkit.org/show_bug.cgi?id=305184 rdar://166885849 Reviewed by Jer Noble. The issue was happening because the media was not populating content updates into the caption layer. For this to happen, the text track representation needs to be setup, similarly to fullscreen and picture-in-picture experiences. * Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm: (WebKit::VideoPresentationInterfaceLMK::exitExternalPlayback): (WebKit::VideoPresentationInterfaceLMK::didSetVideoReceiverEndpoint): Canonical link: https://commits.webkit.org/305408@main
https://bugs.webkit.org/show_bug.cgi?id=305254 rdar://167899413 Reviewed by Alan Baradlay. It is unnecessarily large and multiple copies of it end up in stack. Reducing it 10 -> 1 is perf neutral. * Source/WebCore/layout/formattingContexts/inline/InlineLine.h: Canonical link: https://commits.webkit.org/305409@main
https://bugs.webkit.org/show_bug.cgi?id=304918 Reviewed by Yusuke Suzuki. The hand-rolled parser in BuiltinExecutables.cpp incorrectly calculated functionKeywordStart for async functions. It was using: int functionKeywordStart = strlen("(") + asyncOffset; For async functions, asyncOffset is 6 (strlen("async ")), so this returned 7, pointing to the "function" keyword. However, the JSC parser sets functionStart to 1, pointing to the "async" keyword. This patch fixes the calculation to always use strlen("(") = 1, which matches the JSC parser behavior. Additionally, this patch: - Adds m_functionStart comparison to FunctionMetadataNode::operator== so that mismatches are properly detected during validation. - Extends $vm.createBuiltin to accept an optional visibility argument ("public", "private", "privateRecursive") for testing purposes. * JSTests/stress/async-builtin-function-keyword-start-metadata.js: Added. * Source/JavaScriptCore/builtins/BuiltinExecutables.cpp: (JSC::BuiltinExecutables::createExecutable): * Source/JavaScriptCore/parser/Nodes.cpp: (JSC::FunctionMetadataNode::operator== const): * Source/JavaScriptCore/tools/JSDollarVM.cpp: (JSC::JSC_DEFINE_HOST_FUNCTION): Canonical link: https://commits.webkit.org/305410@main
https://bugs.webkit.org/show_bug.cgi?id=304970 Reviewed by Yusuke Suzuki. This patch changes to look up character class table in Yarr interpreter as well as Yarr JIT. The following bench results was measured with `useRegExpJIT=0`: TipOfTree Patched yarr-interpreter-table-lookup 112.9213+-1.0854 ^ 105.3390+-4.3467 ^ definitely 1.0720x faster Test: JSTests/microbenchmarks/yarr-interpreter-table-lookup.js * JSTests/microbenchmarks/yarr-interpreter-table-lookup.js: Added. (benchWordChar): (benchNonWordChar): (benchSpaces): (benchNonSpaces): * JSTests/stress/yarr-interpreter-table-lookup.js: Added. (testWordChar): (testNonWordChar): (testSpaces): (testNonSpaces): (testDigit): (testNonDigit): (testTableBoundary): (testUnicodeSpaces): * Source/JavaScriptCore/yarr/YarrInterpreter.cpp: (JSC::Yarr::Interpreter::testCharacterClass): * Source/JavaScriptCore/yarr/YarrPattern.h: * Source/JavaScriptCore/yarr/create_regex_tables: Canonical link: https://commits.webkit.org/305411@main
https://bugs.webkit.org/show_bug.cgi?id=303687 Reviewed by Nikolas Zimmermann. Apply the PQ tone-mapping shader only on platforms where highp fragment shader precision is supported. The shader was triggering banding artifacts on platforms where only mediump is available. * Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.cpp: (WebCore::STRINGIFY): (WebCore::TextureMapperShaderProgram::create): Canonical link: https://commits.webkit.org/305412@main
rdar://105812206
Broke the build.
Reverted change:
[Xcode] Set MACOSX_DEPLOYMENT_TARGET to match the system version
https://bugs.webkit.org/show_bug.cgi?id=252783
rdar://105812206
305389@main (8fec86d)
Canonical link: https://commits.webkit.org/305413@main
https://bugs.webkit.org/show_bug.cgi?id=305204 rdar://167557269 Reviewed by Richard Robinson. Swift attempts to test for the presence of copy constructors on C++ types to determine whether they're copyable. This does not work for some C++ templated types and causes swift compilation to give errors like this: wtf/Expected.h:254:11: error: call to implicitly-deleted copy constructor of 'Variant<value_type, error_type>' (aka 'variant<WebKit::JavaScriptEvaluationResult, std::optional<WebCore::ExceptionDetails>>') These errors start to occur as soon as any Swift code is included in WebKit which refers to these C++ headers. This includes upcoming Swift CoreIPC handlers. In future Swift versions we can work around this by using the SWIFT_COPYABLE_IF annotation but that isn't yet supported by the compiler versions we're using in WebKit. For now, simply exclude the relevant copy constructor for this type, and another type which depends upon it. Canonical link: https://commits.webkit.org/305414@main
…gArray() <https://bugs.webkit.org/show_bug.cgi?id=305240#> <rdar://167880352> Reviewed by Geoffrey Garen. The code was storing the result of `utf8().data()` in a local variable and using it later on. This was a use-after-free since the pointer returned by `data()` pointed to memory owned by the temporary CString returned by `utf8()`. * Tools/WebKitTestRunner/TestController.cpp: Canonical link: https://commits.webkit.org/305415@main
<https://bugs.webkit.org/show_bug.cgi?id=305244> <rdar://167884353> Reviewed by Geoffrey Garen. No test because no change in behavior. * Source/JavaScriptCore/yarr/YarrParser.h: (JSC::Yarr::Parser::Parser): - Change `pattern` argument from WTF::StringView to std::span<const CharType> for consistency with the Parser class. This has the additional effect of fixing a -Wdangling-field warning caused by calling StringView.span<CharType>().data(). (JSC::Yarr::parse): - Call StringView.span8() or span16() depending on the CharType used for JSC::Yarr::Parser. Canonical link: https://commits.webkit.org/305416@main
https://bugs.webkit.org/show_bug.cgi?id=305275 rdar://167916253 * JSTests/wasm/stress/bbq-parallel-move.js: (let.wat.module.func.log_value.import.string_appeared_here.string_appeared_here.param.i32.func.export.string_appeared_here.param.p0.i32.param.p1.i32.param.p2.i32.local.p1.local.p1.local.p1.local.p1.local.p1.local.p1.local.p1.local.p1.local.p1.result.i32.local.p0.then.local.p2.local.p0.i32.const.0.else.i32.const.0.local.p2.call.f.func.f.param.i32.param.i32.param.i32.param.i32.param.i32.param.i32.param.i32.param.i32.param.i32.param.i32.param.pl.i32.call.log_value.local.pl.async test): Canonical link: https://commits.webkit.org/305417@main
…heMac https://bugs.webkit.org/show_bug.cgi?id=305266 rdar://167906651 Reviewed by Chris Fleizach. ENABLE(ACCESSIBILITY_ISOLATED_TREE) is, always will be, true for macOS. * Source/WebCore/accessibility/mac/AXObjectCacheMac.mm: (WebCore::AXObjectCache::postPlatformNotification): (WebCore::AXObjectCache::postPlatformAnnouncementNotification): (WebCore::AXObjectCache::postPlatformARIANotifyNotification): (WebCore::AXObjectCache::createIsolatedObjectIfNeeded): (WebCore::AXObjectCache::postTextSelectionChangePlatformNotification): (WebCore::AXObjectCache::postUserInfoForChanges): (WebCore::AXObjectCache::postTextReplacementPlatformNotification): (WebCore::AXObjectCache::postTextReplacementPlatformNotificationForTextControl): (WebCore::AXObjectCache::isAXThreadInitialized): (WebCore::AXObjectCache::shouldSpellCheck): (WebCore::AXObjectCache::platformSelectedTextRangeDebounceInterval const): Canonical link: https://commits.webkit.org/305418@main
WebKit-7625.1.1 Canonical link: https://commits.webkit.org/305419@main
https://bugs.webkit.org/show_bug.cgi?id=305274 rdar://167913946 Reviewed by Darin Adler. This is a follow-up to 304354@main. This modernizes and standardizes the codebase. * Source/JavaScriptCore/API/JSRetainPtr.h: * Source/JavaScriptCore/assembler/AbstractMacroAssembler.h: (JSC::AbstractMacroAssembler::CachedTempRegister::value): * Source/JavaScriptCore/bytecode/ArrayAllocationProfile.h: (JSC::ArrayAllocationProfile::IndexingTypeAndVectorLength::withIndexingType): * Source/JavaScriptCore/heap/Weak.h: * Source/JavaScriptCore/jit/RegisterSet.h: * Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructor.cpp: (JSC::decodeHexImpl): (JSC::decodeHex): * Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructor.h: * Source/JavaScriptCore/runtime/JSObject.h: (JSC::JSObject::ensureLength): * Source/JavaScriptCore/runtime/PropertyTable.h: (JSC::PropertyTable::add): * Source/JavaScriptCore/wasm/WasmBBQJIT.cpp: (JSC::Wasm::BBQJITImpl::BBQJIT::addTableSet): (JSC::Wasm::BBQJITImpl::BBQJIT::addTableInit): (JSC::Wasm::BBQJITImpl::BBQJIT::addElemDrop): (JSC::Wasm::BBQJITImpl::BBQJIT::addTableSize): (JSC::Wasm::BBQJITImpl::BBQJIT::addTableGrow): (JSC::Wasm::BBQJITImpl::BBQJIT::addTableFill): (JSC::Wasm::BBQJITImpl::BBQJIT::addTableCopy): (JSC::Wasm::BBQJITImpl::BBQJIT::getLocal): (JSC::Wasm::BBQJITImpl::BBQJIT::setLocal): (JSC::Wasm::BBQJITImpl::BBQJIT::teeLocal): (JSC::Wasm::BBQJITImpl::BBQJIT::addGrowMemory): (JSC::Wasm::BBQJITImpl::BBQJIT::addCurrentMemory): (JSC::Wasm::BBQJITImpl::BBQJIT::addMemoryFill): (JSC::Wasm::BBQJITImpl::BBQJIT::addMemoryCopy): (JSC::Wasm::BBQJITImpl::BBQJIT::addMemoryInit): (JSC::Wasm::BBQJITImpl::BBQJIT::addDataDrop): (JSC::Wasm::BBQJITImpl::BBQJIT::atomicLoad): (JSC::Wasm::BBQJITImpl::BBQJIT::atomicStore): (JSC::Wasm::BBQJITImpl::BBQJIT::atomicBinaryRMW): (JSC::Wasm::BBQJITImpl::BBQJIT::atomicCompareExchange): (JSC::Wasm::BBQJITImpl::BBQJIT::atomicWait): (JSC::Wasm::BBQJITImpl::BBQJIT::atomicNotify): (JSC::Wasm::BBQJITImpl::BBQJIT::atomicFence): (JSC::Wasm::BBQJITImpl::BBQJIT::truncTrapping): (JSC::Wasm::BBQJITImpl::BBQJIT::truncSaturated): (JSC::Wasm::BBQJITImpl::BBQJIT::addArrayNewData): (JSC::Wasm::BBQJITImpl::BBQJIT::addArrayNewElem): (JSC::Wasm::BBQJITImpl::BBQJIT::addArrayCopy): (JSC::Wasm::BBQJITImpl::BBQJIT::addArrayInitElem): (JSC::Wasm::BBQJITImpl::BBQJIT::addArrayInitData): (JSC::Wasm::BBQJITImpl::BBQJIT::addAnyConvertExtern): (JSC::Wasm::BBQJITImpl::BBQJIT::addExternConvertAny): (JSC::Wasm::BBQJITImpl::BBQJIT::addSelect): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32Add): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Add): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Add): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32Sub): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Sub): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Sub): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32Mul): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Mul): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Mul): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32DivS): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64DivS): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32DivU): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64DivU): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32RemS): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64RemS): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32RemU): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64RemU): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Div): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Div): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Min): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Min): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Max): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Max): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32And): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32Xor): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32Or): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32Shl): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32ShrS): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32ShrU): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32Rotl): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32Rotr): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32Clz): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32Ctz): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32Eq): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Eq): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32Ne): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Ne): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32LtS): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64LtS): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32LeS): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64LeS): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32GtS): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64GtS): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32GeS): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64GeS): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32LtU): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64LtU): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32LeU): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64LeU): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32GtU): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64GtU): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32GeU): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64GeU): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Eq): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Eq): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Ne): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Ne): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Lt): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Lt): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Le): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Le): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Gt): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Gt): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Ge): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Ge): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32Extend16S): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32Eqz): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32Popcnt): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Popcnt): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32ReinterpretF32): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32ReinterpretI32): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32DemoteF64): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64PromoteF32): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Copysign): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32ConvertSI32): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64ConvertSI32): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Copysign): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Abs): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Abs): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Sqrt): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Sqrt): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Neg): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Neg): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32TruncSF32): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32TruncSF64): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32TruncUF32): (JSC::Wasm::BBQJITImpl::BBQJIT::addI32TruncUF64): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64TruncSF32): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64TruncSF64): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64TruncUF32): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64TruncUF64): (JSC::Wasm::BBQJITImpl::BBQJIT::addRefEq): (JSC::Wasm::BBQJITImpl::BBQJIT::addRefFunc): (JSC::Wasm::BBQJITImpl::BBQJIT::addTopLevel): (JSC::Wasm::BBQJITImpl::BBQJIT::addBlock): (JSC::Wasm::BBQJITImpl::BBQJIT::addLoop): (JSC::Wasm::BBQJITImpl::BBQJIT::addIf): (JSC::Wasm::BBQJITImpl::BBQJIT::addElse): (JSC::Wasm::BBQJITImpl::BBQJIT::addElseToUnreachable): (JSC::Wasm::BBQJITImpl::BBQJIT::addTry): (JSC::Wasm::BBQJITImpl::BBQJIT::addTryTable): (JSC::Wasm::BBQJITImpl::BBQJIT::addCatch): (JSC::Wasm::BBQJITImpl::BBQJIT::addCatchToUnreachable): (JSC::Wasm::BBQJITImpl::BBQJIT::addCatchAll): (JSC::Wasm::BBQJITImpl::BBQJIT::addCatchAllToUnreachable): (JSC::Wasm::BBQJITImpl::BBQJIT::addDelegate): (JSC::Wasm::BBQJITImpl::BBQJIT::addDelegateToUnreachable): (JSC::Wasm::BBQJITImpl::BBQJIT::addThrow): (JSC::Wasm::BBQJITImpl::BBQJIT::addReturn): (JSC::Wasm::BBQJITImpl::BBQJIT::addBranch): (JSC::Wasm::BBQJITImpl::BBQJIT::addSwitch): (JSC::Wasm::BBQJITImpl::BBQJIT::endBlock): (JSC::Wasm::BBQJITImpl::BBQJIT::addEndToUnreachable): (JSC::Wasm::BBQJITImpl::BBQJIT::endTopLevel): (JSC::Wasm::BBQJITImpl::BBQJIT::addCall): (JSC::Wasm::BBQJITImpl::BBQJIT::addCallIndirect): (JSC::Wasm::BBQJITImpl::BBQJIT::addUnreachable): (JSC::Wasm::BBQJITImpl::BBQJIT::addCrash): (JSC::Wasm::BBQJITImpl::BBQJIT::addFusedIfCompare): * Source/JavaScriptCore/wasm/WasmBBQJIT.h: * Source/JavaScriptCore/wasm/WasmBBQJIT32_64.cpp: (JSC::Wasm::BBQJITImpl::BBQJIT::addTableGet): (JSC::Wasm::BBQJITImpl::BBQJIT::getGlobal): (JSC::Wasm::BBQJITImpl::BBQJIT::setGlobal): (JSC::Wasm::BBQJITImpl::BBQJIT::load): (JSC::Wasm::BBQJITImpl::BBQJIT::store): (JSC::Wasm::BBQJITImpl::BBQJIT::emitAtomicLoadOp): (JSC::Wasm::BBQJITImpl::BBQJIT::emitAtomicCompareExchange): (JSC::Wasm::BBQJITImpl::BBQJIT::addRefI31): (JSC::Wasm::BBQJITImpl::BBQJIT::addI31GetS): (JSC::Wasm::BBQJITImpl::BBQJIT::addI31GetU): (JSC::Wasm::BBQJITImpl::BBQJIT::addArrayNew): (JSC::Wasm::BBQJITImpl::BBQJIT::addArrayNewFixed): (JSC::Wasm::BBQJITImpl::BBQJIT::addArrayNewDefault): (JSC::Wasm::BBQJITImpl::BBQJIT::addArrayGet): (JSC::Wasm::BBQJITImpl::BBQJIT::addArraySet): (JSC::Wasm::BBQJITImpl::BBQJIT::addArrayLen): (JSC::Wasm::BBQJITImpl::BBQJIT::addArrayFill): (JSC::Wasm::BBQJITImpl::BBQJIT::addStructNewDefault): (JSC::Wasm::BBQJITImpl::BBQJIT::addStructNew): (JSC::Wasm::BBQJITImpl::BBQJIT::addStructGet): (JSC::Wasm::BBQJITImpl::BBQJIT::addStructSet): (JSC::Wasm::BBQJITImpl::BBQJIT::addRefCast): (JSC::Wasm::BBQJITImpl::BBQJIT::addRefTest): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Add): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Sub): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Mul): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64And): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Xor): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Or): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Shl): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64ShrS): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64ShrU): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Rotl): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Rotr): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Clz): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Ctz): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Extend8S): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Extend16S): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Extend32S): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64ExtendSI32): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64ExtendUI32): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Eqz): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64ReinterpretF64): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64ReinterpretI64): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32ConvertUI32): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32ConvertSI64): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32ConvertUI64): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64ConvertUI32): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64ConvertSI64): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64ConvertUI64): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Floor): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Floor): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Ceil): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Ceil): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Nearest): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Nearest): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Trunc): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Trunc): (JSC::Wasm::BBQJITImpl::BBQJIT::addRefIsNull): (JSC::Wasm::BBQJITImpl::BBQJIT::addRefAsNonNull): (JSC::Wasm::BBQJITImpl::BBQJIT::addThrowRef): (JSC::Wasm::BBQJITImpl::BBQJIT::addRethrow): (JSC::Wasm::BBQJITImpl::BBQJIT::addBranchNull): (JSC::Wasm::BBQJITImpl::BBQJIT::addBranchCast): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDLoad): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDStore): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDSplat): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDShuffle): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDShift): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDExtmul): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDLoadSplat): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDLoadLane): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDStoreLane): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDLoadExtend): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDLoadPad): (JSC::Wasm::BBQJITImpl::BBQJIT::addExtractLane): (JSC::Wasm::BBQJITImpl::BBQJIT::addReplaceLane): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDI_V): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDV_V): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDBitwiseSelect): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDRelOp): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDV_VV): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDRelaxedFMA): (JSC::Wasm::BBQJITImpl::BBQJIT::addCallRef): * Source/JavaScriptCore/wasm/WasmBBQJIT64.cpp: (JSC::Wasm::BBQJITImpl::BBQJIT::addTableGet): (JSC::Wasm::BBQJITImpl::BBQJIT::getGlobal): (JSC::Wasm::BBQJITImpl::BBQJIT::setGlobal): (JSC::Wasm::BBQJITImpl::BBQJIT::load): (JSC::Wasm::BBQJITImpl::BBQJIT::store): (JSC::Wasm::BBQJITImpl::BBQJIT::emitAtomicLoadOp): (JSC::Wasm::BBQJITImpl::BBQJIT::emitAtomicCompareExchange): (JSC::Wasm::BBQJITImpl::BBQJIT::addRefI31): (JSC::Wasm::BBQJITImpl::BBQJIT::addI31GetS): (JSC::Wasm::BBQJITImpl::BBQJIT::addI31GetU): (JSC::Wasm::BBQJITImpl::BBQJIT::addArrayNew): (JSC::Wasm::BBQJITImpl::BBQJIT::addArrayNewFixed): (JSC::Wasm::BBQJITImpl::BBQJIT::addArrayNewDefault): (JSC::Wasm::BBQJITImpl::BBQJIT::addArrayGet): (JSC::Wasm::BBQJITImpl::BBQJIT::addArraySet): (JSC::Wasm::BBQJITImpl::BBQJIT::addArrayLen): (JSC::Wasm::BBQJITImpl::BBQJIT::addArrayFill): (JSC::Wasm::BBQJITImpl::BBQJIT::addStructNewDefault): (JSC::Wasm::BBQJITImpl::BBQJIT::addStructNew): (JSC::Wasm::BBQJITImpl::BBQJIT::addStructGet): (JSC::Wasm::BBQJITImpl::BBQJIT::addStructSet): (JSC::Wasm::BBQJITImpl::BBQJIT::addRefCast): (JSC::Wasm::BBQJITImpl::BBQJIT::addRefTest): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Add): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Sub): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Mul): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64And): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Xor): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Or): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Shl): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64ShrS): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64ShrU): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Rotl): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Rotr): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Clz): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Ctz): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Extend8S): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Extend16S): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Extend32S): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64ExtendSI32): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64ExtendUI32): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64Eqz): (JSC::Wasm::BBQJITImpl::BBQJIT::addI64ReinterpretF64): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64ReinterpretI64): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32ConvertUI32): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32ConvertSI64): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32ConvertUI64): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64ConvertUI32): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64ConvertSI64): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64ConvertUI64): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Floor): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Floor): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Ceil): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Ceil): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Nearest): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Nearest): (JSC::Wasm::BBQJITImpl::BBQJIT::addF32Trunc): (JSC::Wasm::BBQJITImpl::BBQJIT::addF64Trunc): (JSC::Wasm::BBQJITImpl::BBQJIT::addRefIsNull): (JSC::Wasm::BBQJITImpl::BBQJIT::addRefAsNonNull): (JSC::Wasm::BBQJITImpl::BBQJIT::addThrowRef): (JSC::Wasm::BBQJITImpl::BBQJIT::addRethrow): (JSC::Wasm::BBQJITImpl::BBQJIT::addBranchNull): (JSC::Wasm::BBQJITImpl::BBQJIT::addBranchCast): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDLoad): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDStore): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDSplat): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDShuffle): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDShift): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDExtmul): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDLoadSplat): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDLoadLane): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDStoreLane): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDLoadExtend): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDLoadPad): (JSC::Wasm::BBQJITImpl::BBQJIT::addConstant): (JSC::Wasm::BBQJITImpl::BBQJIT::addExtractLane): (JSC::Wasm::BBQJITImpl::BBQJIT::addReplaceLane): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDI_V): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDV_V): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDBitwiseSelect): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDRelOp): (JSC::Wasm::BBQJITImpl::BBQJIT::fixupOutOfBoundsIndicesForSwizzle): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDV_VV): (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDRelaxedFMA): (JSC::Wasm::BBQJITImpl::BBQJIT::addCallRef): * Source/JavaScriptCore/wasm/WasmConstExprGenerator.cpp: (JSC::Wasm::ConstExprGenerator::fail const): (JSC::Wasm::ConstExprGenerator::getGlobal): (JSC::Wasm::ConstExprGenerator::addRefI31): (JSC::Wasm::ConstExprGenerator::addArrayNew): (JSC::Wasm::ConstExprGenerator::addArrayNewDefault): (JSC::Wasm::ConstExprGenerator::addArrayNewFixed): (JSC::Wasm::ConstExprGenerator::addStructNewDefault): (JSC::Wasm::ConstExprGenerator::addStructNew): (JSC::Wasm::ConstExprGenerator::addAnyConvertExtern): (JSC::Wasm::ConstExprGenerator::addExternConvertAny): (JSC::Wasm::ConstExprGenerator::addI32Add): (JSC::Wasm::ConstExprGenerator::addI64Add): (JSC::Wasm::ConstExprGenerator::addI32Sub): (JSC::Wasm::ConstExprGenerator::addI64Sub): (JSC::Wasm::ConstExprGenerator::addI32Mul): (JSC::Wasm::ConstExprGenerator::addI64Mul): (JSC::Wasm::ConstExprGenerator::addRefFunc): (JSC::Wasm::ConstExprGenerator::endBlock): (JSC::Wasm::ConstExprGenerator::endTopLevel): (JSC::Wasm::ConstExprGenerator::addConstant): * Source/JavaScriptCore/wasm/WasmFunctionParser.h: (JSC::Wasm::FunctionParser::simd): (JSC::Wasm::FunctionParser::validationFail const): (JSC::Wasm::FunctionParser::validationFailHelper const): * Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp: (JSC::Wasm::IPIntGenerator::fail const): (JSC::Wasm::IPIntGenerator::addFusedBranchCompare): (JSC::Wasm::IPIntGenerator::addFusedIfCompare): (JSC::Wasm::IPIntGenerator::addDrop): (JSC::Wasm::IPIntGenerator::addSIMDLoad): (JSC::Wasm::IPIntGenerator::addSIMDStore): (JSC::Wasm::IPIntGenerator::addSIMDSplat): (JSC::Wasm::IPIntGenerator::addSIMDShuffle): (JSC::Wasm::IPIntGenerator::addSIMDShift): (JSC::Wasm::IPIntGenerator::addSIMDExtmul): (JSC::Wasm::IPIntGenerator::addSIMDLoadSplat): (JSC::Wasm::IPIntGenerator::addSIMDLoadLane): (JSC::Wasm::IPIntGenerator::addSIMDStoreLane): (JSC::Wasm::IPIntGenerator::addSIMDLoadExtend): (JSC::Wasm::IPIntGenerator::addSIMDLoadPad): (JSC::Wasm::IPIntGenerator::addExtractLane): (JSC::Wasm::IPIntGenerator::addReplaceLane): (JSC::Wasm::IPIntGenerator::addSIMDI_V): (JSC::Wasm::IPIntGenerator::addSIMDV_V): (JSC::Wasm::IPIntGenerator::addSIMDBitwiseSelect): (JSC::Wasm::IPIntGenerator::addSIMDRelOp): (JSC::Wasm::IPIntGenerator::addSIMDV_VV): (JSC::Wasm::IPIntGenerator::addSIMDRelaxedFMA): (JSC::Wasm::IPIntGenerator::addRefIsNull): (JSC::Wasm::IPIntGenerator::addRefFunc): (JSC::Wasm::IPIntGenerator::addRefAsNonNull): (JSC::Wasm::IPIntGenerator::addRefEq): (JSC::Wasm::IPIntGenerator::addTableGet): (JSC::Wasm::IPIntGenerator::addTableSet): (JSC::Wasm::IPIntGenerator::addTableInit): (JSC::Wasm::IPIntGenerator::addElemDrop): (JSC::Wasm::IPIntGenerator::addTableSize): (JSC::Wasm::IPIntGenerator::addTableGrow): (JSC::Wasm::IPIntGenerator::addTableFill): (JSC::Wasm::IPIntGenerator::addTableCopy): (JSC::Wasm::IPIntGenerator::addArguments): (JSC::Wasm::IPIntGenerator::addLocal): (JSC::Wasm::IPIntGenerator::getLocal): (JSC::Wasm::IPIntGenerator::setLocal): (JSC::Wasm::IPIntGenerator::teeLocal): (JSC::Wasm::IPIntGenerator::getGlobal): (JSC::Wasm::IPIntGenerator::setGlobal): (JSC::Wasm::IPIntGenerator::load): (JSC::Wasm::IPIntGenerator::store): (JSC::Wasm::IPIntGenerator::addGrowMemory): (JSC::Wasm::IPIntGenerator::addCurrentMemory): (JSC::Wasm::IPIntGenerator::addMemoryFill): (JSC::Wasm::IPIntGenerator::addMemoryCopy): (JSC::Wasm::IPIntGenerator::addMemoryInit): (JSC::Wasm::IPIntGenerator::addDataDrop): (JSC::Wasm::IPIntGenerator::atomicLoad): (JSC::Wasm::IPIntGenerator::atomicStore): (JSC::Wasm::IPIntGenerator::atomicBinaryRMW): (JSC::Wasm::IPIntGenerator::atomicCompareExchange): (JSC::Wasm::IPIntGenerator::atomicWait): (JSC::Wasm::IPIntGenerator::atomicNotify): (JSC::Wasm::IPIntGenerator::atomicFence): (JSC::Wasm::IPIntGenerator::addRefI31): (JSC::Wasm::IPIntGenerator::addI31GetS): (JSC::Wasm::IPIntGenerator::addI31GetU): (JSC::Wasm::IPIntGenerator::addArrayNew): (JSC::Wasm::IPIntGenerator::addArrayNewData): (JSC::Wasm::IPIntGenerator::addArrayNewElem): (JSC::Wasm::IPIntGenerator::addArrayNewFixed): (JSC::Wasm::IPIntGenerator::addArrayNewDefault): (JSC::Wasm::IPIntGenerator::addArrayGet): (JSC::Wasm::IPIntGenerator::addArraySet): (JSC::Wasm::IPIntGenerator::addArrayLen): (JSC::Wasm::IPIntGenerator::addArrayFill): (JSC::Wasm::IPIntGenerator::addArrayCopy): (JSC::Wasm::IPIntGenerator::addArrayInitElem): (JSC::Wasm::IPIntGenerator::addArrayInitData): (JSC::Wasm::IPIntGenerator::addStructNew): (JSC::Wasm::IPIntGenerator::addStructNewDefault): (JSC::Wasm::IPIntGenerator::addStructGet): (JSC::Wasm::IPIntGenerator::addStructSet): (JSC::Wasm::IPIntGenerator::addRefTest): (JSC::Wasm::IPIntGenerator::addRefCast): (JSC::Wasm::IPIntGenerator::addAnyConvertExtern): (JSC::Wasm::IPIntGenerator::addExternConvertAny): (JSC::Wasm::IPIntGenerator::addI32Add): (JSC::Wasm::IPIntGenerator::addI64Add): (JSC::Wasm::IPIntGenerator::addI32Sub): (JSC::Wasm::IPIntGenerator::addI64Sub): (JSC::Wasm::IPIntGenerator::addI32Mul): (JSC::Wasm::IPIntGenerator::addI64Mul): (JSC::Wasm::IPIntGenerator::addI32DivS): (JSC::Wasm::IPIntGenerator::addI32DivU): (JSC::Wasm::IPIntGenerator::addI64DivS): (JSC::Wasm::IPIntGenerator::addI64DivU): (JSC::Wasm::IPIntGenerator::addI32RemS): (JSC::Wasm::IPIntGenerator::addI32RemU): (JSC::Wasm::IPIntGenerator::addI64RemS): (JSC::Wasm::IPIntGenerator::addI64RemU): (JSC::Wasm::IPIntGenerator::addI32And): (JSC::Wasm::IPIntGenerator::addI64And): (JSC::Wasm::IPIntGenerator::addI32Xor): (JSC::Wasm::IPIntGenerator::addI64Xor): (JSC::Wasm::IPIntGenerator::addI32Or): (JSC::Wasm::IPIntGenerator::addI64Or): (JSC::Wasm::IPIntGenerator::addI32Shl): (JSC::Wasm::IPIntGenerator::addI32ShrU): (JSC::Wasm::IPIntGenerator::addI32ShrS): (JSC::Wasm::IPIntGenerator::addI64Shl): (JSC::Wasm::IPIntGenerator::addI64ShrU): (JSC::Wasm::IPIntGenerator::addI64ShrS): (JSC::Wasm::IPIntGenerator::addI32Rotl): (JSC::Wasm::IPIntGenerator::addI64Rotl): (JSC::Wasm::IPIntGenerator::addI32Rotr): (JSC::Wasm::IPIntGenerator::addI64Rotr): (JSC::Wasm::IPIntGenerator::addI32Popcnt): (JSC::Wasm::IPIntGenerator::addI64Popcnt): (JSC::Wasm::IPIntGenerator::addI32Clz): (JSC::Wasm::IPIntGenerator::addI64Clz): (JSC::Wasm::IPIntGenerator::addI32Ctz): (JSC::Wasm::IPIntGenerator::addI64Ctz): (JSC::Wasm::IPIntGenerator::addF32Add): (JSC::Wasm::IPIntGenerator::addF64Add): (JSC::Wasm::IPIntGenerator::addF32Sub): (JSC::Wasm::IPIntGenerator::addF64Sub): (JSC::Wasm::IPIntGenerator::addF32Mul): (JSC::Wasm::IPIntGenerator::addF64Mul): (JSC::Wasm::IPIntGenerator::addF32Div): (JSC::Wasm::IPIntGenerator::addF64Div): (JSC::Wasm::IPIntGenerator::addF32Min): (JSC::Wasm::IPIntGenerator::addF32Max): (JSC::Wasm::IPIntGenerator::addF64Min): (JSC::Wasm::IPIntGenerator::addF64Max): (JSC::Wasm::IPIntGenerator::addF32Nearest): (JSC::Wasm::IPIntGenerator::addF64Nearest): (JSC::Wasm::IPIntGenerator::addF32Floor): (JSC::Wasm::IPIntGenerator::addF64Floor): (JSC::Wasm::IPIntGenerator::addF32Ceil): (JSC::Wasm::IPIntGenerator::addF64Ceil): (JSC::Wasm::IPIntGenerator::addF32Copysign): (JSC::Wasm::IPIntGenerator::addF64Copysign): (JSC::Wasm::IPIntGenerator::addF32Sqrt): (JSC::Wasm::IPIntGenerator::addF64Sqrt): (JSC::Wasm::IPIntGenerator::addF32Neg): (JSC::Wasm::IPIntGenerator::addF64Neg): (JSC::Wasm::IPIntGenerator::addF32Abs): (JSC::Wasm::IPIntGenerator::addF64Abs): (JSC::Wasm::IPIntGenerator::addI32Eq): (JSC::Wasm::IPIntGenerator::addI32Ne): (JSC::Wasm::IPIntGenerator::addI32LtS): (JSC::Wasm::IPIntGenerator::addI32LtU): (JSC::Wasm::IPIntGenerator::addI32LeS): (JSC::Wasm::IPIntGenerator::addI32LeU): (JSC::Wasm::IPIntGenerator::addI32GtS): (JSC::Wasm::IPIntGenerator::addI32GtU): (JSC::Wasm::IPIntGenerator::addI32GeU): (JSC::Wasm::IPIntGenerator::addI32GeS): (JSC::Wasm::IPIntGenerator::addI32Eqz): (JSC::Wasm::IPIntGenerator::addI64Eq): (JSC::Wasm::IPIntGenerator::addI64Ne): (JSC::Wasm::IPIntGenerator::addI64GtS): (JSC::Wasm::IPIntGenerator::addI64GtU): (JSC::Wasm::IPIntGenerator::addI64GeS): (JSC::Wasm::IPIntGenerator::addI64GeU): (JSC::Wasm::IPIntGenerator::addI64LtS): (JSC::Wasm::IPIntGenerator::addI64LtU): (JSC::Wasm::IPIntGenerator::addI64LeS): (JSC::Wasm::IPIntGenerator::addI64LeU): (JSC::Wasm::IPIntGenerator::addI64Eqz): (JSC::Wasm::IPIntGenerator::addF32Eq): (JSC::Wasm::IPIntGenerator::addF32Ne): (JSC::Wasm::IPIntGenerator::addF32Lt): (JSC::Wasm::IPIntGenerator::addF32Le): (JSC::Wasm::IPIntGenerator::addF32Gt): (JSC::Wasm::IPIntGenerator::addF32Ge): (JSC::Wasm::IPIntGenerator::addF64Eq): (JSC::Wasm::IPIntGenerator::addF64Ne): (JSC::Wasm::IPIntGenerator::addF64Lt): (JSC::Wasm::IPIntGenerator::addF64Le): (JSC::Wasm::IPIntGenerator::addF64Gt): (JSC::Wasm::IPIntGenerator::addF64Ge): (JSC::Wasm::IPIntGenerator::addI64ExtendSI32): (JSC::Wasm::IPIntGenerator::addI64ExtendUI32): (JSC::Wasm::IPIntGenerator::addI32Extend8S): (JSC::Wasm::IPIntGenerator::addI32Extend16S): (JSC::Wasm::IPIntGenerator::addI64Extend8S): (JSC::Wasm::IPIntGenerator::addI64Extend16S): (JSC::Wasm::IPIntGenerator::addI64Extend32S): (JSC::Wasm::IPIntGenerator::addF64Trunc): (JSC::Wasm::IPIntGenerator::addF32Trunc): (JSC::Wasm::IPIntGenerator::addI32TruncSF64): (JSC::Wasm::IPIntGenerator::addI32TruncSF32): (JSC::Wasm::IPIntGenerator::addI32TruncUF64): (JSC::Wasm::IPIntGenerator::addI32TruncUF32): (JSC::Wasm::IPIntGenerator::addI64TruncSF64): (JSC::Wasm::IPIntGenerator::addI64TruncSF32): (JSC::Wasm::IPIntGenerator::addI64TruncUF64): (JSC::Wasm::IPIntGenerator::addI64TruncUF32): (JSC::Wasm::IPIntGenerator::truncSaturated): (JSC::Wasm::IPIntGenerator::addI32WrapI64): (JSC::Wasm::IPIntGenerator::addF32DemoteF64): (JSC::Wasm::IPIntGenerator::addF64PromoteF32): (JSC::Wasm::IPIntGenerator::addF32ReinterpretI32): (JSC::Wasm::IPIntGenerator::addI32ReinterpretF32): (JSC::Wasm::IPIntGenerator::addF64ReinterpretI64): (JSC::Wasm::IPIntGenerator::addI64ReinterpretF64): (JSC::Wasm::IPIntGenerator::addF32ConvertSI32): (JSC::Wasm::IPIntGenerator::addF32ConvertUI32): (JSC::Wasm::IPIntGenerator::addF32ConvertSI64): (JSC::Wasm::IPIntGenerator::addF32ConvertUI64): (JSC::Wasm::IPIntGenerator::addF64ConvertSI32): (JSC::Wasm::IPIntGenerator::addF64ConvertUI32): (JSC::Wasm::IPIntGenerator::addF64ConvertSI64): (JSC::Wasm::IPIntGenerator::addF64ConvertUI64): (JSC::Wasm::IPIntGenerator::addTopLevel): (JSC::Wasm::IPIntGenerator::addSelect): (JSC::Wasm::IPIntGenerator::addBlock): (JSC::Wasm::IPIntGenerator::addLoop): (JSC::Wasm::IPIntGenerator::addIf): (JSC::Wasm::IPIntGenerator::addElse): (JSC::Wasm::IPIntGenerator::addElseToUnreachable): (JSC::Wasm::IPIntGenerator::addTry): (JSC::Wasm::IPIntGenerator::addTryTable): (JSC::Wasm::IPIntGenerator::addCatch): (JSC::Wasm::IPIntGenerator::addCatchToUnreachable): (JSC::Wasm::IPIntGenerator::addCatchAll): (JSC::Wasm::IPIntGenerator::addCatchAllToUnreachable): (JSC::Wasm::IPIntGenerator::addDelegate): (JSC::Wasm::IPIntGenerator::addDelegateToUnreachable): (JSC::Wasm::IPIntGenerator::addThrow): (JSC::Wasm::IPIntGenerator::addRethrow): (JSC::Wasm::IPIntGenerator::addThrowRef): (JSC::Wasm::IPIntGenerator::addReturn): (JSC::Wasm::IPIntGenerator::addBranch): (JSC::Wasm::IPIntGenerator::addBranchNull): (JSC::Wasm::IPIntGenerator::addBranchCast): (JSC::Wasm::IPIntGenerator::addSwitch): (JSC::Wasm::IPIntGenerator::endBlock): (JSC::Wasm::IPIntGenerator::addEndToUnreachable): (JSC::Wasm::IPIntGenerator::addCall): (JSC::Wasm::IPIntGenerator::addCallIndirect): (JSC::Wasm::IPIntGenerator::addCallRef): (JSC::Wasm::IPIntGenerator::addUnreachable): (JSC::Wasm::IPIntGenerator::addCrash): * Source/JavaScriptCore/wasm/WasmNameSectionParser.h: * Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp: (JSC::Wasm::OMGIRGenerator::fail const): (JSC::Wasm::OMGIRGenerator::addConstant): (JSC::Wasm::OMGIRGenerator::addEndToUnreachable): (JSC::Wasm::OMGIRGenerator::endTopLevel): (JSC::Wasm::OMGIRGenerator::addFusedBranchCompare): (JSC::Wasm::OMGIRGenerator::addFusedIfCompare): (JSC::Wasm::OMGIRGenerator::emitStructSet): (JSC::Wasm::OMGIRGenerator::addThrowRef): * Source/JavaScriptCore/wasm/WasmOMGIRGenerator32_64.cpp: (JSC::Wasm::OMGIRGenerator::fail const): (JSC::Wasm::OMGIRGenerator::addConstant): (JSC::Wasm::OMGIRGenerator::addEndToUnreachable): (JSC::Wasm::OMGIRGenerator::endTopLevel): (JSC::Wasm::OMGIRGenerator::addFusedBranchCompare): (JSC::Wasm::OMGIRGenerator::addFusedIfCompare): (JSC::Wasm::OMGIRGenerator::emitStructSet): (JSC::Wasm::OMGIRGenerator::addThrowRef): * Source/JavaScriptCore/wasm/WasmParser.h: (JSC::Wasm::ParserBase::fail const): * Source/JavaScriptCore/wasm/WasmPlan.h: (JSC::Wasm::Plan::failed const): * Source/JavaScriptCore/wasm/WasmSectionParser.h: * Source/JavaScriptCore/wasm/WasmStreamingParser.cpp: (JSC::Wasm::StreamingParser::fail): * Source/JavaScriptCore/wasm/WasmStreamingParser.h: * Source/JavaScriptCore/wasm/js/JSWebAssemblyTable.h: * Source/JavaScriptCore/yarr/YarrInterpreter.cpp: (JSC::Yarr::ByteCompiler::emitDisjunction): * Source/JavaScriptCore/yarr/YarrPattern.cpp: (JSC::Yarr::YarrPatternConstructor::setupAlternativeOffsets): * Source/WTF/wtf/AllocSpanMixin.h: (WTF::AllocSpanMixin::leakSpan): * Source/WTF/wtf/CheckedArithmetic.h: * Source/WTF/wtf/Compiler.h: * Source/WTF/wtf/CompletionHandler.h: (WTF::CompletionHandler<Out): * Source/WTF/wtf/FileSystem.h: * Source/WTF/wtf/Function.h: (WTF::Function<Out): * Source/WTF/wtf/InlineWeakPtr.h: * Source/WTF/wtf/InlineWeakRef.h: * Source/WTF/wtf/LEBDecoder.h: (WTF::LEBDecoder::decodeUInt): (WTF::LEBDecoder::decodeInt): (WTF::LEBDecoder::decodeUInt32): (WTF::LEBDecoder::decodeUInt64): (WTF::LEBDecoder::decodeInt32): (WTF::LEBDecoder::decodeInt64): * Source/WTF/wtf/MachSendRight.h: * Source/WTF/wtf/MallocCommon.h: * Source/WTF/wtf/MallocPtr.h: (WTF::MallocPtr::leakPtr): * Source/WTF/wtf/MappedFileData.h: (WTF::FileSystemImpl::MappedFileData::leakHandle): * Source/WTF/wtf/OSObjectPtr.h: (WTF::OSObjectPtr::leakRef): * Source/WTF/wtf/OptionSet.h: (WTF::isValidOptionSet): * Source/WTF/wtf/Ref.h: (WTF::Ref::copyRef const): (WTF::Ref::leakRef): * Source/WTF/wtf/RefPtr.h: (WTF::RefPtr::copyRef const): * Source/WTF/wtf/RetainPtr.h: * Source/WTF/wtf/Scope.h: * Source/WTF/wtf/glib/GMallocString.h: * Source/WTF/wtf/glib/GRefPtr.h: (WTF::GRefPtr::leakRef): (WTF::GRefPtr::ref): * Source/WTF/wtf/glib/GThreadSafeWeakPtr.h: (WTF::GThreadSafeWeakPtr::get): * Source/WTF/wtf/persistence/PersistentDecoder.h: * Source/WTF/wtf/text/AtomString.h: (WTF::makeStringByReplacingAll): * Source/WTF/wtf/text/MakeString.h: (WTF::makeStringByInserting): * Source/WTF/wtf/text/StringView.h: (WTF::makeStringByReplacingAll): (WTF::makeStringByReplacing): (WTF::makeStringBySimplifyingNewLines): * Source/WTF/wtf/text/WTFString.h: (WTF::makeStringByReplacingAll): * Source/WTF/wtf/unix/UnixFileDescriptor.h: (WTF::UnixFileDescriptor::release): * Source/WTF/wtf/win/GDIObject.h: * Source/WTF/wtf/win/Win32Handle.h: * Source/WebCore/Modules/WebGPU/GPUPresentationContext.h: * Source/WebCore/Modules/WebGPU/InternalAPI/WebGPUPresentationContext.h: * Source/WebCore/Modules/indexeddb/IDBKeyData.h: * Source/WebCore/Modules/indexeddb/server/IDBSerialization.cpp: (WebCore::decodeKey): * Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.h: * Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpTransceiverBackend.cpp: (WebCore::toRtpCodecCapability): * Source/WebCore/Modules/mediastream/gstreamer/GStreamerWebRTCUtils.h: * Source/WebCore/css/CSSStyleProperties.h: (WebCore::PropertySetCSSStyleProperties::willMutate): * Source/WebCore/css/PropertySetCSSDescriptors.h: * Source/WebCore/css/values/primitives/CSSUnevaluatedCalc.h: * Source/WebCore/editing/ReplaceSelectionCommand.cpp: (WebCore::collectStylesToRemove): * Source/WebCore/fileapi/URLKeepingBlobAlive.h: * Source/WebCore/inspector/InspectorResourceUtilities.cpp: (Inspector::ResourceUtilities::decodeBuffer): * Source/WebCore/loader/FetchOptions.h: * Source/WebCore/page/OpportunisticTaskScheduler.h: * Source/WebCore/page/csp/ContentSecurityPolicy.h: * Source/WebCore/platform/KeyedCoding.h: * Source/WebCore/platform/audio/cocoa/AudioFileReaderCocoa.cpp: (WebCore::tryCreateAudioBufferList): * Source/WebCore/platform/cf/KeyedDecoderCF.h: * Source/WebCore/platform/encryptedmedia/CDMProxy.h: (WebCore::KeyStoreBase::keyHandle const): (WebCore::KeyStoreBase::allKeysAs const): (WebCore::KeyStoreBase::convertToJSKeyStatusVector const): * Source/WebCore/platform/generic/KeyedDecoderGeneric.h: * Source/WebCore/platform/glib/KeyedDecoderGlib.h: * Source/WebCore/platform/graphics/IntRect.h: * Source/WebCore/platform/graphics/TrackBuffer.cpp: (WebCore::decodeTimeComparator): * Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.h: * Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp: (WebCore::webkitGstGhostPadFromStaticTemplate): * Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h: * Source/WebCore/platform/graphics/gstreamer/GStreamerVideoFrameConverter.h: * Source/WebCore/platform/graphics/gstreamer/VideoFrameMetadataGStreamer.h: * Source/WebCore/platform/graphics/transforms/TransformationMatrix.h: * Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDevice.h: (WebCore::GStreamerCaptureDevice::caps const): * Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.h: * Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp: (mediaStreamTrackPrivateGetTags): * Source/WebCore/platform/mediastream/gstreamer/GStreamerRTPPacketizer.h: * Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceGStreamer.h: * Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.h: * Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceGStreamer.h: * Source/WebCore/platform/mediastream/libwebrtc/gstreamer/GStreamerVideoFrameLibWebRTC.h: * Source/WebCore/rendering/RenderWidget.h: * Source/WebCore/rendering/style/RenderStyle.h: * Source/WebCore/rendering/updating/RenderTreeBuilder.h: * Source/WebCore/rendering/updating/RenderTreeBuilderBlock.h: * Source/WebCore/rendering/updating/RenderTreeBuilderFormControls.h: * Source/WebCore/rendering/updating/RenderTreeBuilderSVG.h: * Source/WebGPU/WGSL/TypeCheck.cpp: (WGSL::TypeChecker::check): * Source/WebGPU/WebGPU/BindGroup.mm: (WebGPU::setArgumentBuffer): * Source/WebGPU/WebGPU/Queue.h: * Source/WebGPU/WebGPU/RenderPassEncoder.h: * Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: * Source/WebKit/NetworkProcess/DatabaseUtilities.h: * Source/WebKit/NetworkProcess/cache/NetworkCacheKey.h: (WebKit::NetworkCache::DataKey::decodeForPersistence): * Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::decodeRecordMetaData): (WebKit::NetworkCache::decodeRecordHeader): * Source/WebKit/Platform/IPC/ArgumentCoders.cpp: (IPC::ArgumentCoder<String>::decode): * Source/WebKit/Platform/IPC/ConnectionHandle.h: (IPC::ConnectionHandle::release): (IPC::ConnectionHandle::leak): (IPC::ConnectionHandle::leakSendRight): * Source/WebKit/Platform/IPC/DaemonDecoder.h: (WebKit::Daemon::Decoder::bufferIsLargeEnoughToContain const): * Source/WebKit/Platform/IPC/Decoder.h: (IPC::Decoder::isValid const): * Source/WebKit/Shared/Cocoa/SandboxExtensionCocoa.mm: (WebKit::SandboxExtensionImpl::consume): * Source/WebKit/Shared/SandboxExtension.h: * Source/WebKit/UIProcess/Cocoa/SessionStateCoding.h: * Source/WebKit/UIProcess/LegacySessionStateCoding.h: * Source/WebKit/UIProcess/mac/LegacySessionStateCoding.cpp: (WebKit::decodeSessionHistoryEntryData): (WebKit::decodeSessionHistoryEntry): (WebKit::decodeSessionHistoryEntries): (WebKit::decodeV0SessionHistory): (WebKit::decodeV1SessionHistory): (WebKit::decodeSessionHistory): * Source/WebKit/WebProcess/GPU/graphics/Model/RemoteDDMeshProxy.h: * Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h: (WebKit::RemoteGraphicsContextGLProxy::send): (WebKit::RemoteGraphicsContextGLProxy::sendSync): * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteAdapterProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteBindGroupLayoutProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteBindGroupProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteBufferProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteCommandBufferProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteCommandEncoderProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteCompositorIntegrationProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteComputePassEncoderProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteComputePipelineProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteDeviceProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteExternalTextureProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteGPUProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemotePipelineLayoutProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemotePresentationContextProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteQuerySetProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteQueueProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteRenderBundleEncoderProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteRenderBundleProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteRenderPassEncoderProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteRenderPipelineProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteSamplerProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteShaderModuleProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteTextureProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteTextureViewProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteXRBindingProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteXRProjectionLayerProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteXRSubImageProxy.h: * Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteXRViewProxy.h: * Source/WebKit/WebProcess/WebPage/WebCookieCache.h: Canonical link: https://commits.webkit.org/305420@main
https://bugs.webkit.org/show_bug.cgi?id=305276 rdar://167917471 Reviewed by Ryosuke Niwa. The fix is similar to 305404@main, which was to fix about:blank case, we had similar issue for about:srcdoc, where isProhibitedSelfReference incorrectly determines about:srcdoc inside another about:srcdoc as self referencing. * Source/WebCore/html/HTMLFrameOwnerElement.cpp: (WebCore::HTMLFrameOwnerElement::isProhibitedSelfReference const): * LayoutTests/fast/frames/nested-about-srcdocs-expected.html: Added. * LayoutTests/fast/frames/nested-about-srcdocs.html: Added. Canonical link: https://commits.webkit.org/305421@main
Key changes: - Microtask queue API changes (payload parameter added) - Async function visibility fix for stack traces - Various JSC optimizations Co-Authored-By: Claude <[email protected]>
- Add performPromiseThenWithContext for passing extra context to handlers - Fix PromiseReactionJob to check isEmpty() || isUndefinedOrNull() before passing context argument (empty JSValue != undefined) - Add @then property to JSInternalPromisePrototype via addOwnInternalSlots - Make addOwnInternalSlots protected in JSPromisePrototype for subclass access - Add missing BunPerformMicrotaskJob and BunInvokeJobWithArguments cases Co-Authored-By: Claude <[email protected]>
|
Caution Review failedThe pull request is closed. WalkthroughThe PR increments the WebKit version from 625.7 to 625.1 and adds extensive new test coverage for JavaScript operations (Array.from, Array.flat, String methods), async patterns, RegExp functionality, and layout/accessibility features, alongside supporting test infrastructure and resource updates. Changes
Possibly Related PRs
📜 Recent review detailsConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Disabled knowledge base sources:
📒 Files selected for processing (300)
Comment |
Summary
performPromiseThenWithContextfor passing extra context to promise handlersPromiseReactionJobto checkisEmpty() || isUndefinedOrNull()before passing context argument (empty JSValue is different from undefined)@thenproperty toJSInternalPromisePrototypeviaaddOwnInternalSlotsaddOwnInternalSlotsprotected inJSPromisePrototypefor subclass accessBunPerformMicrotaskJobandBunInvokeJobWithArgumentscases in switch statementTest plan
test/js/bun/plugin/plugins.test.tspassestest/js/node/test/parallel/test-readable-from.jspassestest/js/node/test/parallel/test-stream-duplex-from.jspassestest/js/web/streams/streams.test.jsReadableStream for Blob test passes🤖 Generated with Claude Code