Timeline



Jul 16, 2021:

10:42 PM Changeset in webkit [280017] by Simon Fraser
  • 26 edits in trunk

getBoundingClientRect() returns the incorrect rectangle on elements whose parent element is set -webkit-column-count
https://bugs.webkit.org/show_bug.cgi?id=99959
rdar://80106111

Reviewed by Alan Bujtas.
Source/WebCore:

getBoundingClientRect() and getClientRects() for elements inside multicol had a quick
and dirty implementation that just mapped the element center point into a column. This
resulted in odd, negative top/left in some cases.

Fix by correctly generating multiple rects for elements that span columns, following
the repaint code path that already knew how to do this correctly.

The entry point is RenderFragmentContainer::absoluteQuadsForBox() which now has a
real implementation. For each fragment that the box covers, it calls fragmentRectsForFlowContentRect()
which generates one or more rects; RenderMultiColumnSet overrides this to
compute rects for multicol.

We have to take care not to eliminate empty rects, since the API does return these.

Tested by existing tests.

  • dom/Element.cpp:

(WebCore::Element::absoluteEventBounds):

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::absoluteQuadsIgnoringContinuation const):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::absoluteQuads const):

  • rendering/RenderFragmentContainer.cpp:

(WebCore::RenderFragmentContainer::fragmentedFlowContentRectangle):
(WebCore::RenderFragmentContainer::fragmentRectsForFlowContentRect):

  • rendering/RenderFragmentContainer.h:

(WebCore::RenderFragmentContainer::absoluteQuadsForBoxInFragment): Deleted.

  • rendering/RenderFragmentedFlow.cpp:

(WebCore::RenderFragmentedFlow::absoluteQuadsForBox const):

  • rendering/RenderFragmentedFlow.h:
  • rendering/RenderMultiColumnFlow.h:
  • rendering/RenderMultiColumnSet.cpp:

(WebCore::RenderMultiColumnSet::firstAndLastColumnsFromOffsets const):
(WebCore::RenderMultiColumnSet::repaintFragmentedFlowContent):
(WebCore::RenderMultiColumnSet::fragmentRectsForFlowContentRect):
(WebCore::RenderMultiColumnSet::collectLayerFragments):

  • rendering/RenderMultiColumnSet.h:

LayoutTests:

These tests have all progressed.

  • fast/multicol/client-rects-spanners-complex.html:
  • fast/multicol/client-rects-spanners.html:
  • fast/multicol/client-rects.html:
  • fast/multicol/newmulticol/client-rects.html:
  • imported/blink/fast/multicol/client-rects-rtl-expected.html:
  • imported/blink/fast/multicol/client-rects-rtl.html: This test appeared to be hand-coded to the incorrect old behavior.
  • platform/ios/fast/multicol/client-rects-expected.txt:
  • platform/ios/fast/multicol/client-rects-spanners-complex-expected.txt:
  • platform/ios/fast/multicol/client-rects-spanners-expected.txt:
  • platform/ios/fast/multicol/newmulticol/client-rects-expected.txt:
  • platform/mac/fast/multicol/client-rects-expected.txt:
  • platform/mac/fast/multicol/client-rects-spanners-complex-expected.txt:
  • platform/mac/fast/multicol/client-rects-spanners-expected.txt:
  • platform/mac/fast/multicol/newmulticol/client-rects-expected.txt:
8:24 PM Changeset in webkit [280016] by Kate Cheney
  • 8 edits in trunk

WKWebView javascript injection doesn't work if app includes WKAppBoundDomains
https://bugs.webkit.org/show_bug.cgi?id=227589
<rdar://problem/80327452>

Reviewed by Brent Fulgham.

Source/WebCore:

Update service worker code to always allow workers on localhost to be
registered. Also add logic so localhost registrations aren't added
to the total count of 3 registrations.

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::addRegistration):
We only want to increment the count if this registration is not
already in the mapping, otherwise it gets double counted.

(WebCore::SWServer::removeRegistration):
Ditto for removing a registration, we should only decrement the count
if we find a matching key.

(WebCore::SWServer::validateRegistrationDomain):
(WebCore::SWServer::removeFromScopeToRegistrationMap):
Ditto.

  • workers/service/server/SWServer.h:

Source/WebKit:

Apps should not have to specify localhost in their Info.plist in order
to load local content in app-bound mode. This patch adds a check for
localhost or a loopback IP address and forces an app into app-bound
mode in this case.

Since all layout tests use localhost and 127.0.0.1 as test domains,
this patch also adds a check for enableInAppBrowserPrivacyForTesting()
which determines if we are running layout tests and does not trigger
this check in that case so we can test other behavior.

  • UIProcess/WebPageProxy.cpp:

(WebKit::shouldTreatURLProtocolAsAppBound):
(WebKit::WebPageProxy::setIsNavigatingToAppBoundDomainAndCheckIfPermitted):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):

Tools:

Added new tests. Removed localhost and 127.0.0.1 from the Info.plist
to avoid false positive tests. Replace them with other domains so we
still test the max count.

  • TestWebKitAPI/Info.plist:
  • TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:

(TEST):

6:02 PM Changeset in webkit [280015] by achristensen@apple.com
  • 14 edits
    1 add in trunk

Prevent HSTS tracking mitigation for top level navigation requests
https://bugs.webkit.org/show_bug.cgi?id=227936

Reviewed by Brady Eidson.

Source/WebCore/PAL:

  • pal/spi/cf/CFNetworkSPI.h:

Source/WebKit:

Use NSURLRequest.URL as the first party for cookies for HSTS purposes during redirects instead of NSURLRequest.mainDocumentURL,
which hasn't been updated because CFNetwork doesn't know that this is the main document request and when redirected, the main document URL also changes.

Covered by API tests, which will start covering this case once rdar://80550123 is integrated.

  • NetworkProcess/NetworkSessionCreationParameters.cpp:

(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):

  • NetworkProcess/NetworkSessionCreationParameters.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
(-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]):
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:

(-[_WKWebsiteDataStoreConfiguration allowsHSTSWithUntrustedRootCertificate]):
(-[_WKWebsiteDataStoreConfiguration setAllowsHSTSWithUntrustedRootCertificate:]):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:

(WebKit::WebsiteDataStoreConfiguration::copy const):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:

(WebKit::WebsiteDataStoreConfiguration::allowsHSTSWithUntrustedRootCertificate const):
(WebKit::WebsiteDataStoreConfiguration::setAllowsHSTSWithUntrustedRootCertificate):

Tools:

  • TestWebKitAPI/SourcesCocoa.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/HSTS.mm: Added.

(TestWebKitAPI::hasRadar80550123):
(TestWebKitAPI::hstsWebViewAndDelegate):
(TestWebKitAPI::hstsServer):
(TestWebKitAPI::TEST):

6:00 PM Changeset in webkit [280014] by achristensen@apple.com
  • 9 edits
    1 add in trunk

Network access prevention SPI should prevent preconnecting, and it should first allow injected bundle to change request
https://bugs.webkit.org/show_bug.cgi?id=228044
<rdar://72995136>

Reviewed by Tim Horton.

Source/WebCore:

WKWebViewConfiguration._loadsFromNetwork and its successor _allowedNetworkHosts have two issues:

  1. They allow link rel=preconnect to still preconnect to a host. While this doesn't reveal much information, it does reveal some.
  2. It blocks loads before giving the injected bundle a chance to change the scheme of the request. This SPI is relatively new and intended to replace the injected bundle, but the user from this radar needs to have an injected bundle make changes first.

Both problems are fixed and covered by API tests.

  • loader/ResourceLoadNotifier.cpp:

(WebCore::ResourceLoadNotifier::dispatchWillSendRequest):

  • page/Page.h:

Source/WebKit:

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::preconnectTo):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/Preconnect.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/SchemeChangingPlugIn.mm: Added.

(-[SchemeChangingPlugIn webProcessPlugIn:didCreateBrowserContextController:]):
(-[SchemeChangingPlugIn webProcessPlugInBrowserContextController:frame:willSendRequest:redirectResponse:]):

  • TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:
5:53 PM Changeset in webkit [280013] by Yijia Huang
  • 7 edits in trunk/Source/JavaScriptCore

Add ExtendType to Air::Arg Index to fully utilize address computation in memory instruction for ARM64
https://bugs.webkit.org/show_bug.cgi?id=227970

Reviewed by Saam Barati.

The pattern recognition of address computation in the instructions, e.g., Load
Resistor (LDR), Store Register (STR), etc., can benefit the instruction selector.
Then, the Air operand BaseIndex containing base, index, and scale is introduced
to Air opcode. However, the <extend> option of index address is not fully leveraged
in the previous implementation.

To fill that gap, this patch adds a new member, MacroAssembler::Extend, to the current
design of BaseIndex to trigger zero/sign extension on the Index address. And this is
enabled for Store/Load with valid index address and shift amount.

Maybe, the ideal approach is to introduce a decorator (Index@EXT) to the Air operand
to provide an extension opportunity for the specific form of the Air opcode.

Load Register (LDR) calculates an address from a base register value and an
offset register value, loads a word from memory, and writes it to a register.
The offset register value can optionally be shifted and extended.

Given B3 IR:
Int @0 = ArgumentReg(%x0)
Int @1 = Z/SExt32(Trunc(ArgumentReg(%x1)))
Int @2 = scale
Int @3 = Shl(@1, @2)
Int @4 = Add(@0, @3)
Int @5 = Load(@4, ControlDependent|Reads:Top)
Void@6 = Return(@5, Terminal)

Old optimized AIR
Move %x1, %x1, @1
Move (%x0,%x1,2scale), %x0, @5
Ret %x0, @6

New optimized AIR
Move (%x0,%x1,2scale), %x0, @5
Ret %x0, @6

Store Register (STR) calculates an address from a base register value and an
offset register value, and stores a 32-bit word or a 64-bit doubleword to the
calculated address, from a register.

Given B3 IR:
Int @0 = value
Int @1 = ArgumentReg(%x0)
Int @2 = Z/SExt32(Trunc(ArgumentReg(%x1))
Int @3 = scale
Int @4 = Shl(@2, @3)
Int @5 = Add(@1, @4)
Void@6 = Store(@0, @5, ControlDependent|Writes:Top)
Void@7 = Return(@0, Terminal)

Old optimized AIR
Move32 %x1, %x1, @2
Store32 %xzr, (%x0,%x1,2scale), @6
Move $0, %x0, @7
Ret32 %x0, @7

New optimized AIR
Store32 %xzr, (%x0,%x1,2scale), @6
Move $0, %x0, @7
Ret32 %x0, @7

  • assembler/AbstractMacroAssembler.h:

(JSC::AbstractMacroAssembler::BaseIndex::BaseIndex):

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::indexExtendType):
(JSC::MacroAssemblerARM64::load64):
(JSC::MacroAssemblerARM64::load32):
(JSC::MacroAssemblerARM64::load16):
(JSC::MacroAssemblerARM64::load16SignedExtendTo32):
(JSC::MacroAssemblerARM64::load8):
(JSC::MacroAssemblerARM64::load8SignedExtendTo32):
(JSC::MacroAssemblerARM64::store64):
(JSC::MacroAssemblerARM64::store32):
(JSC::MacroAssemblerARM64::store16):
(JSC::MacroAssemblerARM64::store8):
(JSC::MacroAssemblerARM64::loadDouble):
(JSC::MacroAssemblerARM64::loadFloat):
(JSC::MacroAssemblerARM64::storeDouble):
(JSC::MacroAssemblerARM64::storeFloat):

  • b3/B3LowerToAir.cpp:
  • b3/air/AirArg.h:

(JSC::B3::Air::Arg::index):
(JSC::B3::Air::Arg::asBaseIndex const):

  • b3/testb3.h:
  • b3/testb3_2.cpp:

(testLoadZeroExtendIndexAddress):
(testLoadSignExtendIndexAddress):
(testStoreZeroExtendIndexAddress):
(testStoreSignExtendIndexAddress):
(addBitTests):

5:47 PM Changeset in webkit [280012] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[MacOS Release wk1] media/modern-media-controls/volume-support/volume-support-drag-to-mute.html is a flaky fail and timeout.
https://bugs.webkit.org/show_bug.cgi?id=228042.

Unreviewed test gardening.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-16

  • platform/mac-wk1/TestExpectations:
5:15 PM Changeset in webkit [280011] by ysuzuki@apple.com
  • 3 edits in trunk/JSTests

[JSC] Simplify sampling-profiler-regexp.js test
https://bugs.webkit.org/show_bug.cgi?id=228040

Reviewed by Saam Barati.

In this new test case, only thing we care is regexp appears on sampling-profiler regardless of whether the other functions are inlined / tail-called or not.
We change the sampling-profiler/samplingProfiler.js runTest to add a mode which searches specific signature in the call tree.

  • stress/sampling-profiler-regexp.js:

(platformSupportsSamplingProfiler):

  • stress/sampling-profiler/samplingProfiler.js:

(doesTreeHaveStackTrace):
(runTest):

4:59 PM Changeset in webkit [280010] by Kyle Piddington
  • 5 edits
    2 adds in trunk/Source/ThirdParty/ANGLE

Build Default Metal library offline
https://bugs.webkit.org/show_bug.cgi?id=227333

<rdar://79923371>

This patch compiles and creates a Metal library at build time, storing
the library as a compiled binary file. This library is baked into the dylib,
and is loaded at context creation time.

Unlike the previous version of this patch, this patch does not save or store the .metallib on disk, but rather
bakes it into a binary.

Fixed internal build breaks by skipping Metallib bake script.

Reviewed by Kenneth Russell.

  • ANGLE.xcodeproj/project.pbxproj:
  • Configurations/ANGLE-dynamic.xcconfig:
  • src/libANGLE/renderer/metal/DisplayMtl.mm:

(rx::DisplayMtl::initializeShaderLibrary):

  • src/libANGLE/renderer/metal/mtl_utils.h:
4:53 PM Changeset in webkit [280009] by wilander@apple.com
  • 2 edits in trunk/Source/WebKit

PCM: Add early return when unlinkable token is used and add more happy path Web Inspector logging
https://bugs.webkit.org/show_bug.cgi?id=228039
<rdar://problem/80705989>

Reviewed by Kate Cheney.

There's a missing return after an accepted unlinkable token transaction. The
attribution object is therefore moved and stored twice.

This patch also adds more Web Inspector logging to the happy path for better
developer feedback.

No new tests.

  • NetworkProcess/PrivateClickMeasurementManager.cpp:

(WebKit::PrivateClickMeasurementManager::storeUnattributed):

Add the missing return.

(WebKit::PrivateClickMeasurementManager::getTokenPublicKey):

Add Web Inspector logging.

(WebKit::PrivateClickMeasurementManager::getSignedUnlinkableToken):

Add Web Inspector logging.

(WebKit::PrivateClickMeasurementManager::handleAttribution):

Add Web Inspector logging.

4:40 PM Changeset in webkit [280008] by sbarati@apple.com
  • 3 edits
    1 add in trunk

Grab the lock in FTL::Thunks::keyForSlowPathCallThunk
https://bugs.webkit.org/show_bug.cgi?id=227988
<rdar://problem/80627901>

Reviewed by Mark Lam.

JSTests:

  • stress/thunks-hash-map-should-grab-lock.js: Added.

Source/JavaScriptCore:

Both FTL::Thunks::keyForSlowPathCallThunk and FTL::Thunks::getSlowPathCallThunk
both touch the thunks hash map. In r278030, when I added the lock, I grabbed it
in getSlowPathCallThunk, but forgot to also grab it in keyForSlowPathCallThunk.

  • ftl/FTLThunks.h:

(JSC::FTL::Thunks::keyForSlowPathCallThunk):

4:23 PM Changeset in webkit [280007] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

Fix Apple internal build

Unreviewed.

No new tests because there is no behavior change.

  • platform/mac/PlatformSpeechSynthesizerMac.mm:

(WebCore::speechSynthesisGetDefaultVoiceIdentifierForLocale):

4:22 PM Changeset in webkit [280006] by Wenson Hsieh
  • 4 edits in trunk/Source/WebKit

REGRESSION (r277820): Can't scroll up and down using trackpad in Mail message viewer when in Slide Over
https://bugs.webkit.org/show_bug.cgi?id=228033
rdar://80663917

Reviewed by Tim Horton.

This started happening after the changes in r277820, since UIHoverGestureRecognizer contained several internal
facilities in UIKit for avoiding failure dependencies to other (non-hover) gestures. After removing the
subclass, various UIKit gestures now attempt to add failure requirements to WKMouseGestureRecognizer, thereby
linking WKMouseGestureRecognizer to other gestures in the gesture dependency graph.

This means that all gestures connected to the same subgraph as WKMouseGestureRecognizer are unable to be reset
until WKMouseGestureRecognizer transitions to either Ended or Failed state; however, since this only happens
once the trackpad goes into idle state, these subgraph-connected gestures can effectively only recognize once
per trackpad interaction (resetting only after the trackpad goes idle). Since scroll view pan gesture
recognizers are indirectly connected to WKMouseGestureRecognizer in Slide Over mode, this manifests in scrolling
being unresponsive after an initial scroll gesture has ended.

To address this, we subclass UIHoverGestureRecognizer once again, and (unfortunately) also restore the IPI
override for -_shouldReceiveTouch:forEvent:recognizerView:, to ensure that we're still able to detect and
dispatch mousedown and mousemove events.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView gestureRecognizer:shouldReceiveTouch:]):
(-[WKContentView gestureRecognizer:shouldReceivePress:]):

Remove a couple of delegate overridees here, which are now unnecessary since WKMouseGestureRecognizer is a
UIHoverGestureRecognizer once again.

  • UIProcess/ios/WKMouseGestureRecognizer.h:
  • UIProcess/ios/WKMouseGestureRecognizer.mm:

(-[WKMouseGestureRecognizer _shouldReceiveTouch:forEvent:recognizerView:]):

3:59 PM Changeset in webkit [280005] by beidson@apple.com
  • 5 edits in trunk/Source/WebCore

FetchBodySource/FetchBodyOwner cleanup
<rdar://80318044> and https://bugs.webkit.org/show_bug.cgi?id=228035

Reviewed by Geoffrey Garen.

FetchBodyOwner should have a WeakPtr factory, and FetchBodySource should use it.

  • Modules/fetch/FetchBodyOwner.h:
  • Modules/fetch/FetchBodySource.cpp:

(WebCore::FetchBodySource::FetchBodySource):
(WebCore::FetchBodySource::doCancel):
(WebCore::FetchBodySource::close):

  • Modules/fetch/FetchBodySource.h:
  • Modules/fetch/FetchResponse.h:
3:18 PM Changeset in webkit [280004] by commit-queue@webkit.org
  • 6 edits in trunk

Unreviewed, reverting r279916.
https://bugs.webkit.org/show_bug.cgi?id=228037

some of tests are timing out

Reverted changeset:

"Convert small JIT pool tests into executable fuzzing"
https://bugs.webkit.org/show_bug.cgi?id=226279
https://commits.webkit.org/r279916

3:07 PM Changeset in webkit [280003] by Truitt Savell
  • 2 edits in trunk/LayoutTests

accessibility/loading-iframe-sends-notification.html is a flaky timeout
rdar://80331434

Unreviewed test gardening.

2:42 PM Changeset in webkit [280002] by Robert Jenner
  • 2 edits in trunk/LayoutTests

Multiple Canvas tests flaky crash, flaky fail.
https://bugs.webkit.org/show_bug.cgi?id=227881.

Unreviewed test gardening.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-16

  • platform/mac-wk2/TestExpectations:
2:26 PM Changeset in webkit [280001] by Kate Cheney
  • 2 edits in trunk/Source/WebKit

macOS Safari network sessions not being marked as being from a browser
https://bugs.webkit.org/show_bug.cgi?id=228028
<rdar://problem/80648664>

Reviewed by Brent Fulgham.

Move WebKitAdditions to open source to communicate full web browser
status to the networking stack. In the macOS case, we don't have
a full browser entitlement, so we should check for Safari.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::SessionWrapper::initialize):
The name com.apple.WebKit.InAppBrowser is not the most accurate name,
but changing it would require syncing with other parts of the network
stack. We should do this in a separate bug.

2:22 PM Changeset in webkit [280000] by Ruben Turcios
  • 1 copy in tags/Safari-612.1.24

Tag Safari-612.1.24.

2:11 PM Changeset in webkit [279999] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[MacOS wk2] inspector/canvas/recording-bitmaprenderer-frameCount.html is flaky failing and timing out.
https://bugs.webkit.org/show_bug.cgi?id=228034

Unreviewed test gardeing.

Patch by Ayumi Kojima <Ayumi Kojima> on 2021-07-16

  • platform/mac-wk2/TestExpectations:
2:01 PM Changeset in webkit [279998] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[MacOS wk2] inspector/canvas/setShaderProgramHighlighted.html is flaky failing and timing out.
https://bugs.webkit.org/show_bug.cgi?id=228030

Unreviewed test gardeing.

Patch by Ayumi Kojima <Ayumi Kojima> on 2021-07-16

  • platform/mac-wk2/TestExpectations:
2:01 PM Changeset in webkit [279997] by ysuzuki@apple.com
  • 3 edits
    1 add in trunk

[JSC] RegExp::dumpToStream must not ref Strings since it is called concurrently
https://bugs.webkit.org/show_bug.cgi?id=228031
rdar://80686425

Reviewed by Mark Lam.

JSTests:

  • stress/regexp-dump-concurrently.js: Added.

(let.code):

Source/JavaScriptCore:

RegExp::dumpToStream's escapedPattern can return m_pattern. In that case, it is refed in the concurrent thread.
This is wrong since StringImpl must not be ref-ed concurrently. This patch just revert this function to the old behavior.

  • runtime/RegExp.cpp:

(JSC::RegExp::dumpToStream):

1:34 PM Changeset in webkit [279996] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[RenderTreeBuilder] Update the fragmented status of the renderer when it becomes in-flow
https://bugs.webkit.org/show_bug.cgi?id=228025
<rdar://80458138>

Reviewed by Antti Koivisto.

This patch ensures that we update fragmented status of the renderer when it becomes in-flow and not just when the containing block's childrenInline status needs updating.
(e.g. the block renderer goes from out-of-flow to in-flow, and the containing block already has block level children, we don't call childFlowStateChangesAndAffectsParentBlock)

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::normalizeTreeAfterStyleChange): Move the update logic out from childFlowStateChangesAndAffectsParentBlock to here and run it unconditionally.
(WebCore::RenderTreeBuilder::childFlowStateChangesAndAffectsParentBlock):

1:25 PM Changeset in webkit [279995] by Truitt Savell
  • 3 edits in trunk/LayoutTests

Modify expectations for media/modern-media-controls/overflow-support/chapters.html
https://bugs.webkit.org/show_bug.cgi?id=227055

Unreviewed test gardening.

1:22 PM Changeset in webkit [279994] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Modify expectations for media/modern-media-controls/overflow-support/chapters.html
https://bugs.webkit.org/show_bug.cgi?id=227055

Unreviewed test gardening.

1:19 PM Changeset in webkit [279993] by Fujii Hironori
  • 5 edits in trunk/Source/WebCore

[curl] Use curl_multi_poll and curl_multi_wakeup instead of select
https://bugs.webkit.org/show_bug.cgi?id=227966

Reviewed by Don Olmstead.

libcurl 7.68.0 added curl_multi_poll and curl_multi_wakeup.

  • platform/network/curl/CurlContext.cpp:

(WebCore::CurlMultiHandle::poll): Added.
(WebCore::CurlMultiHandle::wakeUp): Added.

  • platform/network/curl/CurlContext.h:
  • platform/network/curl/CurlRequestScheduler.cpp:

(WebCore::CurlRequestScheduler::add):
(WebCore::CurlRequestScheduler::callOnWorkerThread):
(WebCore::CurlRequestScheduler::startOrWakeUpThread):
(WebCore::CurlRequestScheduler::wakeUpThreadIfPossible): Added.
(WebCore::CurlRequestScheduler::stopThread):
(WebCore::CurlRequestScheduler::workerThread):
(WebCore::CurlRequestScheduler::startThreadIfNeeded): Deleted.

  • platform/network/curl/CurlRequestScheduler.h:
11:24 AM Changeset in webkit [279992] by timothy_horton@apple.com
  • 7 edits in trunk/Source/WebKit

Adopt BifurcatedGraphicsContext for backing store + display list RemoteLayerBackingStore
https://bugs.webkit.org/show_bug.cgi?id=226425
<rdar://77929299>

Reviewed by Sam Weinig.

Instead of "display list backed RemoteLayerBackingStore" being its own
backing store type, we make "includes a display list" a separate bit.
This way, we can paint both a bitmap (IOSurface or CG bitmap, all
exactly as it normally is), and also carry a sidecar display list.

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::ensureBackingStore):
(WebKit::RemoteLayerBackingStore::encode const):
(WebKit::RemoteLayerBackingStore::decode):
(WebKit::RemoteLayerBackingStore::swapToValidFrontBuffer):
(WebKit::RemoteLayerBackingStore::supportsPartialRepaint):
We can't partially repaint the display list, and require its rendering
to match the painted backing store, so disable partial repaint entirely
if display lists are being used.

(WebKit::RemoteLayerBackingStore::display):
(WebKit::RemoteLayerBackingStore::drawInContext):
Adopt BifurcatedGraphicsContext in order to paint into the aforementioned
bitmap and display list simultaneously.
A future patch may abstract this into a new ImageBuffer type
instead of polluting RemoteLayerBackingStore with it.

Leave a temporary workaround for a CoreAnimation bug, which can be
disabled via defaults write, but is enabled by default.

(WebKit::layerContentsForBufferHandle):
(WebKit::RemoteLayerBackingStore::applyBackingStoreToLayer):
(WebKit::RemoteLayerBackingStore::Buffer::discard):

  • UIProcess/RemoteLayerTree/cocoa/RemoteLayerTreeLayers.h:
  • UIProcess/RemoteLayerTree/cocoa/RemoteLayerTreeLayers.mm:

(-[WKCompositingLayer _setWKContents:withDisplayList:]):
(-[WKCompositingLayer _setWKContentsDisplayList:]): Deleted.
(-[WKCompositingLayer _wkContentsDisplayList]): Deleted.
Pass the display list data to CoreAnimation alongside the bitmap.

  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:

(WebKit::PlatformCALayerRemote::updateBackingStore):

11:18 AM Changeset in webkit [279991] by Jonathan Bedard
  • 5 edits in trunk/Tools

[webkitscmpy] Provide API to access SVN cache
https://bugs.webkit.org/show_bug.cgi?id=228000
<rdar://problem/80646471>

Reviewed by Dewei Zhu.

Create a Svn cache with the same API as the Git cache. This allows
git and svn to share logic when inserting identifiers in log and blame.

  • Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/local/svn.py:

(Svn.Cache.path): Path to cahce file.
(Svn.Cache.populate): Fill cache from svn log operation.
(Svn.Cache.to_hash): Svn is unaware of hashes, and can never map them.
(Svn.Cache.to_revision): Map identifiers to revisions.
(Svn.Cache.to_identifier): Map revisions to identifiers.
(Svn.init): Use cache object instead of _metadata_cache.
(Svn._commit_count): Access cache object.
(Svn._branch_for): Ditto.
(Svn.commit): Ditto.
(Svn._cache_path): Deleted.
(Svn._cache_revisions): Deleted.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/svn_unittest.py:

(TestLocalSvn.test_revision_cache):

11:02 AM Changeset in webkit [279990] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

Make the lack of an ANGLE dylib unconditionally log
https://bugs.webkit.org/show_bug.cgi?id=228010

Reviewed by Dean Jackson.

WebCore should complain louder when all of WebGL is disabled because of a packaging misconfiguration.

No new tests because there is no behavior change.

  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:

(WebCore::GraphicsContextGLOpenGL::create):

10:59 AM Changeset in webkit [279989] by Robert Jenner
  • 2 edits in trunk/LayoutTests

Updated test expectations for inspector/canvas/css-canvas-clients.html is a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=174272.

Unreviewed test gardeing.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-16

  • platform/mac/TestExpectations:
10:17 AM Changeset in webkit [279988] by Megan Gardner
  • 38 edits in trunk/Source

Pipe App Highlight scrolling through UI Process in preparation for Note Overlay avoidance.
https://bugs.webkit.org/show_bug.cgi?id=227914

Reviewed by Tim Horton.

Source/WebCore:

In order to correctly avoid the note overlay that can potentially obscure the web view,
we need to pipe the scrolling through the UI process. This patch does that work
and will be followed up shortly by one that does the actual work of overlay avoidance.
For iOS, this just uses the main frame UI Scrolling that we already use, but for
mac, we need to do the last scroll in the web process after adjusting it with the overlay
information.

  • Modules/highlight/AppHighlightStorage.cpp:

(WebCore::AppHighlightStorage::attemptToRestoreHighlightAndScroll):

  • dom/Element.cpp:

(WebCore::Element::scrollIntoView):

  • editing/Editor.cpp:

(WebCore::TemporarySelectionChange::setSelection):

  • editing/Editor.h:
  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::moveWithoutValidationTo):
(WebCore::FrameSelection::setSelection):
(WebCore::FrameSelection::updateAndRevealSelection):
(WebCore::FrameSelection::revealSelection):

  • editing/FrameSelection.h:
  • loader/EmptyClients.h:
  • page/Chrome.cpp:

(WebCore::Chrome::scrollMainFrameToRevealRect const):
(WebCore::Chrome::scrollRectIntoView const): Deleted.

  • page/Chrome.h:
  • page/ChromeClient.h:

(WebCore::ChromeClient::scrollMainFrameToRevealRect const):
(WebCore::ChromeClient::scrollRectIntoView const): Deleted.

  • page/ScrollBehavior.cpp:

(WebCore::useSmoothScrolling):

  • page/ScrollBehavior.h:
  • platform/ScrollTypes.h:
  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::scrollRectToVisible):

  • rendering/RenderLayer.h:

Source/WebKit:

In order to correctly avoid the note overlay that can potentially obscure the web view,
we need to pipe the scrolling through the UI process. This patch does that work
and will be followed up shortly by one that does the actual work of overlay avoidance.
For iOS, this just uses the main frame UI Scrolling that we already use, but for
mac, we need to do the last scroll in the web process after adjusting it with the overlay
information.

  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::requestScrollToRect):

  • UIProcess/API/gtk/PageClientImpl.h:
  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::requestScrollToRect):
(WebKit::WebPageProxy::scrollToRect):

  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::scrollToRect):

  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::requestScrollToRect):

  • UIProcess/mac/PageClientImplMac.h:
  • UIProcess/mac/PageClientImplMac.mm:

(WebKit::PageClientImpl::requestScrollToRect):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::scrollMainFrameToRevealRect const):
(WebKit::WebChromeClient::scrollRectIntoView const): Deleted.

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::scrollToRect):

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::scrollMainFrameToRevealRect const):

Source/WebKitLegacy/win:

  • WebCoreSupport/WebChromeClient.h:
9:39 AM Changeset in webkit [279987] by commit-queue@webkit.org
  • 18 edits
    1 delete in trunk

[GTK][WPE] Support color-schemes CSS property
https://bugs.webkit.org/show_bug.cgi?id=208204

Patch by Alexander Mikhaylenko <Alexander Mikhaylenko> on 2021-07-16
Reviewed by Adrian Perez de Castro.

.:

  • Source/cmake/OptionsGTK.cmake:

Enable HAVE_OS_DARK_MODE_SUPPORT.

  • Source/cmake/OptionsWPE.cmake:

Enable ENABLE_DARK_MODE_CSS and HAVE_OS_DARK_MODE_SUPPORT.

Source/WebCore:

Last time we tried enabling dark mode, we broke many webpages since we couldn't have diferent
controls, and more importantly, different system colors and defaults for pages that do and
don't support dark mode.

Now that we don't use GTK for this, we can try again. This time, use hardcoded system colors
and return different colors depending on StyleColor::Options::UseDarkAppearance.

To avoid dark-on-dark text on entries, we also need to enable HAVE_OS_DARK_MODE_SUPPORT for GTK
and make sure it's passed to use agent CSS. And since Adwaita controls are also used in WPE, we
need to enable it for WPE as well, and since WPE didn't have ENABLE_DARK_MODE_CSS, flip that as
well, all in lockstep.

No new tests, reenabled the existing css-dark-mode tests.

  • PlatformGTK.cmake:
  • PlatformWPE.cmake:

Pass HAVE_OS_DARK_MODE_SUPPORT to user agent CSS.

  • css/CSSValueKeywords.in:

Expose -webkit-control-background for anything with HAVE_OS_DARK_MODE_SUPPORT.

  • css/themeAdwaita.css:

(input[type="search"]::-webkit-search-results-button,):
(input[type="search"]::-webkit-search-cancel-button):
(body[dir="rtl"] input[type="search"]::-webkit-search-cancel-button):
(input[type="search"]::-webkit-search-results-button:hover,):
(input[type="search"]::-webkit-search-cancel-button:hover): Deleted.
Use mask images instead of content so we can recolor them. Change
color on hover as opacity and inherit entry's color otherwise to
make sure it's legible with dark appearance.

  • page/FrameView.cpp:

(WebCore::FrameView::updateBackgroundRecursively):
Use CSSValueWindow for background instead of CSSValueAppleSystemControlBackground
when the latter is not available.

  • platform/adwaita/ThemeAdwaita.cpp:

(WebCore::ThemeAdwaita::focusColor):
(WebCore::ThemeAdwaita::paintFocus):
(WebCore::ThemeAdwaita::paintArrow):
(WebCore::ThemeAdwaita::paint):
(WebCore::ThemeAdwaita::paintCheckbox):
(WebCore::ThemeAdwaita::paintRadio):
(WebCore::ThemeAdwaita::paintButton):
(WebCore::ThemeAdwaita::paintSpinButton):

  • platform/adwaita/ThemeAdwaita.h:
  • rendering/RenderThemeAdwaita.cpp:

(WebCore::RenderThemeAdwaita::platformFocusRingColor const):
(WebCore::RenderThemeAdwaita::systemColor const):
(WebCore::RenderThemeAdwaita::paintTextField):
(WebCore::RenderThemeAdwaita::adjustTextFieldStyle const):
(WebCore::RenderThemeAdwaita::adjustTextAreaStyle const):
(WebCore::RenderThemeAdwaita::adjustSearchFieldStyle const):
Add a border radius to the default style, so the background doesn't bleed through
the corners.
(WebCore::RenderThemeAdwaita::paintMenuList):
(WebCore::RenderThemeAdwaita::paintProgressBar):
(WebCore::RenderThemeAdwaita::paintSliderTrack):
(WebCore::RenderThemeAdwaita::paintSliderThumb):

  • rendering/RenderThemeAdwaita.h:

Source/WTF:

  • wtf/PlatformHave.h:

Enable HAVE_OS_DARK_MODE_SUPPORT for GTK and WPE.

LayoutTests:

Reenable css-dark-mode tests for GTK as they pass now. Enable the same tests in WPE.
Keep css-dark-mode/older-syntax/supported-color-schemes-css.html as [ Pass Crash ] for now,
according to https://bugs.webkit.org/show_bug.cgi?id=202229#c2

  • platform/gtk/TestExpectations:
  • platform/gtk/css-dark-mode/color-scheme-css-expected.txt: Removed.
  • platform/gtk/css-dark-mode/color-scheme-meta-expected.txt: Removed.
  • platform/gtk/css-dark-mode/color-scheme-priority-expected.txt: Removed.
  • platform/gtk/css-dark-mode/default-colors-expected.txt: Removed.
  • platform/gtk/css-dark-mode/older-syntax/supported-color-schemes-css-expected.txt: Removed.
  • platform/gtk/css-dark-mode/older-syntax/supported-color-schemes-meta-expected.txt: Removed.
  • platform/wpe/TestExpectations:
9:13 AM Changeset in webkit [279986] by Truitt Savell
  • 5 edits
    2 deletes in trunk/Source/ThirdParty/ANGLE

Unreviewed, reverting r279980.

Broke Internal Builds

Reverted changeset:

"Build Default Metal library offline"
https://bugs.webkit.org/show_bug.cgi?id=227333
https://commits.webkit.org/r279980

8:32 AM Changeset in webkit [279985] by commit-queue@webkit.org
  • 4 edits
    3 moves in trunk

[GStreamer] RealtimeMediaSourceCenter and VideoEncoder are not libwebrtc-specific
https://bugs.webkit.org/show_bug.cgi?id=228020

Patch by Philippe Normand <pnormand@igalia.com> on 2021-07-16
Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

Those two are actually not using libwebrtc-related code, so a better place for them is
platform/mediastream/gstreamer.

  • platform/GStreamer.cmake:
  • platform/mediastream/gstreamer/GStreamerVideoEncoder.cpp: Renamed from Source/WebCore/platform/mediastream/libwebrtc/gstreamer/GStreamerVideoEncoder.cpp.

(Encoders::singleton):
(Encoders::registerEncoder):
(Encoders::definition):
(webrtcVideoEncoderGetProperty):
(webrtcVideoEncoderSetBitrate):
(webrtcVideoEncoderSetEncoder):
(webrtcVideoEncoderSetFormat):
(webrtcVideoEncoderSetProperty):
(setBitrateKbitPerSec):
(setBitrateBitPerSec):
(webrtcVideoEncoderConstructed):
(webkit_webrtc_video_encoder_class_init):

  • platform/mediastream/gstreamer/GStreamerVideoEncoder.h: Renamed from Source/WebCore/platform/mediastream/libwebrtc/gstreamer/GStreamerVideoEncoder.h.
  • platform/mediastream/gstreamer/RealtimeMediaSourceCenterGStreamer.cpp: Renamed from Source/WebCore/platform/mediastream/libwebrtc/gstreamer/RealtimeMediaSourceCenterLibWebRTC.cpp.

(WebCore::RealtimeMediaSourceCenter::defaultAudioCaptureFactory):
(WebCore::RealtimeMediaSourceCenter::defaultVideoCaptureFactory):
(WebCore::RealtimeMediaSourceCenter::defaultDisplayCaptureFactory):

Tools:

  • Scripts/webkitpy/style/checker.py:
7:25 AM Changeset in webkit [279984] by Angelos Oikonomopoulos
  • 4 edits
    5 adds in trunk/Tools

Bundle libraries for remote execution in run-jsc-benchmarks
https://bugs.webkit.org/show_bug.cgi?id=227579

Reviewed by Carlos Alberto Lopez Perez.

Similarly to run-jsc-stress-tests, introduce a bundling step that
ships all library dependencies to the remote system when using
run-jsc-benchmarks --remote.

This patch factors out the code to

  • lookup the ELF interpreter/libraries and to
  • strip the rpath and create a wrapper script

from generate-bundle and places it webkitpy/binary_bundling.

It also introduces a simpler script that only bundles a single
binary (bundle-binary) and switches run-jsc-benchmarks and
run-jsc-stress-tests to use it.

It also updates run-jsc-benchmark to propagate any environment
variables intended for consumption by the JSC binary.

  • Scripts/generate-bundle: Factor out reusable bundling code.
  • Scripts/run-jsc-benchmarks: Do bundling and variable propagation.
  • Scripts/run-jsc-stress-tests: Switch to bundle-binary.
  • Scripts/webkitpy/binary_bundling/init.py: Added.
  • Scripts/webkitpy/binary_bundling/bundle.py: Added.

(BinaryBundler):
(BinaryBundler.init):
(BinaryBundler.destination_dir):
(BinaryBundler.copy_and_remove_rpath):
(BinaryBundler.generate_wrapper_script):

  • Scripts/webkitpy/binary_bundling/ldd.py: Added.

(SharedObjectResolver):
(SharedObjectResolver.init):
(SharedObjectResolver._run_cmd_and_get_output):
(SharedObjectResolver._get_interpreter_objname):
(SharedObjectResolver._get_libs_and_interpreter):
(SharedObjectResolver._ldd_recursive_get_libs_and_interpreter):
(SharedObjectResolver.get_libs_and_interpreter):

  • Scripts/bundle-binary: Added.
  • Scripts/generate-bundle:
  • Scripts/run-jsc-benchmarks:
  • Scripts/run-jsc-stress-tests:
  • Scripts/webkitpy/binary_bundling/init.py: Added.
  • Scripts/webkitpy/binary_bundling/bundle.py: Added.

(BinaryBundler):
(BinaryBundler.init):
(BinaryBundler.destination_dir):
(BinaryBundler.copy_and_remove_rpath):
(BinaryBundler.generate_wrapper_script):

  • Scripts/webkitpy/binary_bundling/ldd.py: Added.

(SharedObjectResolver):
(SharedObjectResolver.init):
(SharedObjectResolver._run_cmd_and_get_output):
(SharedObjectResolver._get_interpreter_objname):
(SharedObjectResolver._get_libs_and_interpreter):
(SharedObjectResolver._ldd_recursive_get_libs_and_interpreter):
(SharedObjectResolver.get_libs_and_interpreter):

5:04 AM WebKitGTK/2.32.x edited by Adrian Perez de Castro
(diff)
4:16 AM Changeset in webkit [279983] by Carlos Garcia Campos
  • 4 edits in trunk/Source/WebKit

[GTK][WPE] PSON: accessibility doesn't work after a cross site navigation
https://bugs.webkit.org/show_bug.cgi?id=228021

Reviewed by Adrian Perez de Castro.

The provisional page is not handling the BindAccessibilityTree message and we never embed the new web process
plug into the UI process socket.

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::bindAccessibilityTree): Save the a11y plug ID.
(WebKit::ProvisionalPageProxy::didReceiveMessage): Handle BindAccessibilityTree message.

  • UIProcess/ProvisionalPageProxy.h:

(WebKit::ProvisionalPageProxy::accessibilityPlugID): Returns the a11y plug ID.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::swapToProvisionalPage): If the provisional page has a plug ID, bind the a11y tree.

4:12 AM WebKitGTK/2.32.x edited by Philippe Normand
(diff)
1:43 AM Changeset in webkit [279982] by commit-queue@webkit.org
  • 4 edits
    21 moves
    1 add in trunk

[GStreamer] LibWebRTC files should be in libwebrtc/gstreamer
https://bugs.webkit.org/show_bug.cgi?id=227991

Patch by Philippe Normand <pnormand@igalia.com> on 2021-07-16
Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

For consistency purposes, the GStreamer backend modules used by LibWebRTC are now in
platform/mediastream/libwebrtc/gstreamer. platform/mediastream/ contains the pure GStreamer
modules related with media capture.

  • platform/GStreamer.cmake:
  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoCommon.cpp: Renamed from Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoCommon.cpp.

(WebCore::createH264Format):
(WebCore::supportedH264Formats):

  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoCommon.h: Renamed from Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoCommon.h.
  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoDecoderFactory.cpp: Renamed from Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp.

(WebCore::GStreamerVideoDecoder::GStreamerVideoDecoder):
(WebCore::GStreamerVideoDecoder::decodebinPadAddedCb):
(WebCore::GStreamerVideoDecoder::pipeline):
(WebCore::GStreamerVideoDecoder::makeElement):
(WebCore::GStreamerVideoDecoder::handleError):
(WebCore::GStreamerVideoDecoder::CreateFilter):
(WebCore::GStreamerVideoDecoder::pullSample):
(WebCore::GStreamerVideoDecoder::GetCapsForFrame):
(WebCore::GStreamerVideoDecoder::AddDecoderIfSupported):
(WebCore::GStreamerVideoDecoder::ConfigureSupportedDecoder):
(WebCore::GStreamerVideoDecoder::GstDecoderFactory):
(WebCore::GStreamerVideoDecoder::HasGstDecoder):
(WebCore::H264Decoder::H264Decoder):
(WebCore::VP8Decoder::VP8Decoder):
(WebCore::VP8Decoder::Create):
(WebCore::VP9Decoder::VP9Decoder):
(WebCore::VP9Decoder::Create):
(WebCore::GStreamerVideoDecoderFactory::CreateVideoDecoder):
(WebCore::GStreamerVideoDecoderFactory::GStreamerVideoDecoderFactory):
(WebCore::GStreamerVideoDecoderFactory::GetSupportedFormats const):

  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoDecoderFactory.h: Renamed from Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.h.
  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoEncoder.cpp: Renamed from Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp.

(Encoders::singleton):
(Encoders::registerEncoder):
(Encoders::definition):
(webrtcVideoEncoderGetProperty):
(webrtcVideoEncoderSetBitrate):
(webrtcVideoEncoderSetEncoder):
(webrtcVideoEncoderSetFormat):
(webrtcVideoEncoderSetProperty):
(setBitrateKbitPerSec):
(setBitrateBitPerSec):
(webrtcVideoEncoderConstructed):
(webkit_webrtc_video_encoder_class_init):

  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoEncoder.h: Renamed from Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.h.
  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoEncoderFactory.cpp: Renamed from Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp.

(WebCore::GStreamerEncodedImageBuffer::create):
(WebCore::GStreamerEncodedImageBuffer::getBuffer const):
(WebCore::GStreamerEncodedImageBuffer::getVideoResolution const):
(WebCore::GStreamerEncodedImageBuffer::GStreamerEncodedImageBuffer):
(WebCore::GStreamerVideoEncoder::GStreamerVideoEncoder):
(WebCore::GStreamerVideoEncoder::pipeline):
(WebCore::GStreamerVideoEncoder::makeElement):
(WebCore::GStreamerVideoEncoder::returnFromFlowReturn):
(WebCore::GStreamerVideoEncoder::createEncoder):
(WebCore::GStreamerVideoEncoder::AddCodecIfSupported):
(WebCore::GStreamerVideoEncoder::Caps):
(WebCore::GStreamerVideoEncoder::ConfigureSupportedCodec):
(WebCore::GStreamerVideoEncoder::SetRestrictionCaps):
(WebCore::GStreamerH264Encoder::GStreamerH264Encoder):
(WebCore::GStreamerVideoEncoderFactory::CreateVideoEncoder):
(WebCore::GStreamerVideoEncoderFactory::GStreamerVideoEncoderFactory):
(WebCore::GStreamerVideoEncoderFactory::GetSupportedFormats const):

  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoEncoderFactory.h: Renamed from Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.h.
  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoFrameLibWebRTC.cpp: Renamed from Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoFrameLibWebRTC.cpp.

(WebCore::GStreamerSampleFromLibWebRTCVideoFrame):
(WebCore::GStreamerVideoFrameLibWebRTC::create):
(WebCore::LibWebRTCVideoFrameFromGStreamerSample):
(WebCore::GStreamerVideoFrameLibWebRTC::ToI420):

  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoFrameLibWebRTC.h: Renamed from Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoFrameLibWebRTC.h.

(WebCore::GStreamerVideoFrameLibWebRTC::GStreamerVideoFrameLibWebRTC):
(WebCore::GStreamerVideoFrameLibWebRTC::takeSample):

  • platform/mediastream/libwebrtc/gstreamer/LibWebRTCProviderGStreamer.cpp: Renamed from Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProviderGStreamer.cpp.

(WebCore::LibWebRTCProvider::create):
(WebCore::LibWebRTCProvider::webRTCAvailable):
(WebCore::LibWebRTCProviderGStreamer::createDecoderFactory):
(WebCore::LibWebRTCProviderGStreamer::createEncoderFactory):

  • platform/mediastream/libwebrtc/gstreamer/LibWebRTCProviderGStreamer.h: Renamed from Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProviderGStreamer.h.
  • platform/mediastream/libwebrtc/gstreamer/RealtimeIncomingAudioSourceLibWebRTC.cpp: Renamed from Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingAudioSourceLibWebRTC.cpp.

(WebCore::RealtimeIncomingAudioSource::create):
(WebCore::RealtimeIncomingAudioSourceLibWebRTC::create):
(WebCore::RealtimeIncomingAudioSourceLibWebRTC::RealtimeIncomingAudioSourceLibWebRTC):
(WebCore::RealtimeIncomingAudioSourceLibWebRTC::OnData):

  • platform/mediastream/libwebrtc/gstreamer/RealtimeIncomingAudioSourceLibWebRTC.h: Renamed from Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingAudioSourceLibWebRTC.h.
  • platform/mediastream/libwebrtc/gstreamer/RealtimeIncomingVideoSourceLibWebRTC.cpp: Renamed from Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingVideoSourceLibWebRTC.cpp.

(WebCore::RealtimeIncomingVideoSource::create):
(WebCore::RealtimeIncomingVideoSourceLibWebRTC::create):
(WebCore::RealtimeIncomingVideoSourceLibWebRTC::RealtimeIncomingVideoSourceLibWebRTC):
(WebCore::RealtimeIncomingVideoSourceLibWebRTC::OnFrame):

  • platform/mediastream/libwebrtc/gstreamer/RealtimeIncomingVideoSourceLibWebRTC.h: Renamed from Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingVideoSourceLibWebRTC.h.
  • platform/mediastream/libwebrtc/gstreamer/RealtimeMediaSourceCenterLibWebRTC.cpp: Renamed from Source/WebCore/platform/mediastream/gstreamer/RealtimeMediaSourceCenterLibWebRTC.cpp.

(WebCore::RealtimeMediaSourceCenter::defaultAudioCaptureFactory):
(WebCore::RealtimeMediaSourceCenter::defaultVideoCaptureFactory):
(WebCore::RealtimeMediaSourceCenter::defaultDisplayCaptureFactory):

  • platform/mediastream/libwebrtc/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.cpp: Renamed from Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.cpp.

(WebCore::RealtimeOutgoingAudioSourceLibWebRTC::RealtimeOutgoingAudioSourceLibWebRTC):
(WebCore::RealtimeOutgoingAudioSourceLibWebRTC::~RealtimeOutgoingAudioSourceLibWebRTC):
(WebCore::RealtimeOutgoingAudioSource::create):
(WebCore::libwebrtcAudioFormat):
(WebCore::RealtimeOutgoingAudioSourceLibWebRTC::audioSamplesAvailable):
(WebCore::RealtimeOutgoingAudioSourceLibWebRTC::pullAudioData):
(WebCore::RealtimeOutgoingAudioSourceLibWebRTC::isReachingBufferedAudioDataHighLimit):
(WebCore::RealtimeOutgoingAudioSourceLibWebRTC::isReachingBufferedAudioDataLowLimit):
(WebCore::RealtimeOutgoingAudioSourceLibWebRTC::hasBufferedEnoughData):

  • platform/mediastream/libwebrtc/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.h: Renamed from Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.h.
  • platform/mediastream/libwebrtc/gstreamer/RealtimeOutgoingVideoSourceLibWebRTC.cpp: Renamed from Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceLibWebRTC.cpp.

(WebCore::RealtimeOutgoingVideoSource::create):
(WebCore::RealtimeOutgoingVideoSourceLibWebRTC::create):
(WebCore::RealtimeOutgoingVideoSourceLibWebRTC::RealtimeOutgoingVideoSourceLibWebRTC):
(WebCore::RealtimeOutgoingVideoSourceLibWebRTC::videoSampleAvailable):
(WebCore::RealtimeOutgoingVideoSourceLibWebRTC::createBlackFrame):

  • platform/mediastream/libwebrtc/gstreamer/RealtimeOutgoingVideoSourceLibWebRTC.h: Renamed from Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceLibWebRTC.h.

Tools:

  • Scripts/webkitpy/style/checker.py:
1:32 AM Changeset in webkit [279981] by Manuel Rego Casasnovas
  • 1 edit
    13 deletes in trunk/PerformanceTests

Remove CSS Regions perf tests
https://bugs.webkit.org/show_bug.cgi?id=228016

Reviewed by Ryosuke Niwa.

The feature has been removed long time ago, so let's do the same with the associated perf tests.

  • Layout/RegionsAuto.html: Removed.
  • Layout/RegionsAutoMaxHeight.html: Removed.
  • Layout/RegionsExtendingSelectionMixedContent.html: Removed.
  • Layout/RegionsFixed.html: Removed.
  • Layout/RegionsFixedShort.html: Removed.
  • Layout/RegionsSelectAllMixedContent.html: Removed.
  • Layout/RegionsSelection.html: Removed.
  • Layout/RegionsShapes.html: Removed.
  • Layout/Shapes/RegionsShapesNoShapes.html: Removed.
  • Layout/Shapes/resources/RegionsShapesContent.html: Removed.
  • Layout/Shapes/resources/RegionsShapesContentNoShapes.html: Removed.
  • Layout/resources/regions.css: Removed.
  • Layout/resources/regions.js: Removed.
12:19 AM Changeset in webkit [279980] by Kyle Piddington
  • 5 edits
    2 adds in trunk/Source/ThirdParty/ANGLE

Build Default Metal library offline
https://bugs.webkit.org/show_bug.cgi?id=227333

<rdar://79923371>

This patch compiles and creates a Metal library at build time, storing
the library as a compiled binary file. This library is baked into the dylib,
and is loaded at context creation time.

Unlike the previous version of this patch, this patch does not save or store the .metallib on disk, but rather
bakes it into a binary.

Reviewed by Kenneth Russell.

  • ANGLE.xcodeproj/project.pbxproj:
  • Configurations/ANGLE-dynamic.xcconfig:
  • src/libANGLE/renderer/metal/DisplayMtl.mm:

(rx::DisplayMtl::initializeShaderLibrary):

  • src/libANGLE/renderer/metal/mtl_utils.h:

Jul 15, 2021:

11:52 PM Changeset in webkit [279979] by Chris Dumez
  • 17 edits
    3 adds in trunk

Implement 'SubmitEvent' interface
https://bugs.webkit.org/show_bug.cgi?id=202978

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that more checks are passing.

  • web-platform-tests/html/semantics/forms/form-submission-0/SubmitEvent.window-expected.txt:
  • web-platform-tests/html/semantics/forms/form-submission-0/implicit-submission.optional-expected.txt:

Source/WebCore:

Implement 'SubmitEvent' interface as per:

Both Chrome and Firefox already ship this.

No new tests, rebaselined existing tests.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/EventNames.in:
  • html/HTMLFormElement.cpp:

(WebCore::HTMLFormElement::submitIfPossible):

  • html/SubmitEvent.cpp: Added.

(WebCore::SubmitEvent::create):
(WebCore::SubmitEvent::SubmitEvent):
(WebCore::SubmitEvent::eventInterface const):

  • html/SubmitEvent.h: Added.

(WebCore::SubmitEvent::submitter const):

  • html/SubmitEvent.idl: Added.
  • html/SubmitInputType.cpp:

(WebCore::SubmitInputType::handleDOMActivateEvent):
Make sure SubmitInputType::handleDOMActivateEvent() passes its element as submitter
when submitting the form. One of the subtests in html/semantics/forms/form-submission-0/implicit-submission.optional.html
covers this.

LayoutTests:

Rebaseline WPT test now that more checks are passing.

  • platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
11:15 PM Changeset in webkit [279978] by Chris Dumez
  • 8 edits in trunk

Add support for MediaError.message
https://bugs.webkit.org/show_bug.cgi?id=228008

Reviewed by Alex Christensen.

Source/WebCore:

Add support for MediaError.message:

Both Chrome and Firefox already support this.

No new tests, rebaselined existing test.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::noneSupported):
(WebCore::HTMLMediaElement::mediaLoadingFailedFatally):
(WebCore::HTMLMediaElement::mediaPlayerKeyNeeded):
(WebCore::HTMLMediaElement::userCancelledLoad):

  • html/MediaError.h:

(WebCore::MediaError::create):
(WebCore::MediaError::message const):
(WebCore::MediaError::MediaError):

  • html/MediaError.idl:

LayoutTests:

Rebaseline WPT test now that more checks are passing.

  • platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
10:02 PM Changeset in webkit [279977] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Alias JSC graph dumping options
https://bugs.webkit.org/show_bug.cgi?id=228015

Reviewed by Yusuke Suzuki.

My brain seems to associate the phases with the tier we are compiling in
rather than the type of graph we are processing. At this point it's
probably easier to just add an alias rather than convince me otherwise.

  • runtime/OptionsList.h:
9:10 PM Changeset in webkit [279976] by ysuzuki@apple.com
  • 14 edits
    2 adds in trunk

[JSC] SamplingProfiler should recognize RegExp execution
https://bugs.webkit.org/show_bug.cgi?id=201702

Reviewed by Saam Barati.

JSTests:

  • stress/sampling-profiler-regexp.js: Added.

(platformSupportsSamplingProfiler.getText):
(platformSupportsSamplingProfiler.test):
(platformSupportsSamplingProfiler.baz):
(platformSupportsSamplingProfiler):

  • stress/sampling-profiler/samplingProfiler.js: Extend samplingProfiler to show better error information when VERBOSE = true.

(doesTreeHaveStackTrace):

Source/JavaScriptCore:

This patch extends SamplingProfiler to recognize RegExp execution. We record
executing RegExp in VM via MatchingContextHolder so that SamplingProfiler can detect it.
We use MatchingContextHolder even if the RegExp is interpreter mode so that we can still
catch non-JIT RegExp in SamplingProfiler.

The example output is the following.

Sampling rate: 1000.000000 microseconds. Total samples: 1830
Top functions as <numSamples 'functionName#hash:sourceID'>

466 'Exec#<nil>:4'
225 '/(|[
])\"
\/Qngr\((-?[0-9]+)\)
\/\"/g#<nil>:-1'
173 'runBlock1#<nil>:4'

88 '/NQ_VQ/g#<nil>:-1'
83 '/d2/g#<nil>:-1'
78 '/d1/g#<nil>:-1'
70 '/\s?;\s?/#<nil>:-1'
68 'replace#<nil>:3'
50 '/(((\w+):\/\/)([\/:]*)(:(\d+))?)?([#?]*)(\?([#]*))?(#(.*))?/#<nil>:-1'
49 'runBlock0#<nil>:4'
46 '#<nil>:-1'
24 '/
\s*|\s*$/g#<nil>:-1'

Sampling rate: 1000.000000 microseconds. Total samples: 1830

Tier breakdown:
-----------------------------------
LLInt: 13 (0.710383%)
Baseline: 54 (2.950820%)
DFG: 187 (10.218579%)
FTL: 612 (33.442623%)
js builtin: 73 (3.989071%)
Wasm: 0 (0.000000%)
Host: 0 (0.000000%)
RegExp: 907 (49.562842%)
C/C++: 0 (0.000000%)
Unknown Executable: 57 (3.114754%)

Hottest bytecodes as <numSamples 'functionName#hash:JITType:bytecodeIndex'>

378 'Exec#<nil>:FTL:bc#27'
225 '/(|[
])\"
\/Qngr\((-?[0-9]+)\)
\/\"/g#<nil>:RegExp:<nil>'

88 '/NQ_VQ/g#<nil>:RegExp:<nil>'
83 '/d2/g#<nil>:RegExp:<nil>'
78 '/d1/g#<nil>:RegExp:<nil>'
70 '/\s?;\s?/#<nil>:RegExp:<nil>'
62 'replace#<nil>:FTL:bc#63'
53 'Exec#<nil>:DFG:bc#27'
50 '/(((\w+):\/\/)([\/:]*)(:(\d+))?)?([#?]*)(\?([#]*))?(#(.*))?/#<nil>:RegExp:<nil>'
46 '#<nil>:None:<nil>'
42 'runBlock1#<nil>:FTL:bc#1795'
29 'runBlock1#<nil>:FTL:bc#1849'
29 'runBlock1#<nil>:FTL:bc#1741'
24 '/
\s*|\s*$/g#<nil>:RegExp:<nil>'
17 'runBlock1#<nil>:DFG:bc#1741'
17 'runBlock1#<nil>:DFG:bc#1795'
16 '/\b\w+\b/g#<nil>:RegExp:<nil>'
14 '/TNQP=([;]*)/i#<nil>:RegExp:<nil>'
13 '/%\w?$/#<nil>:RegExp:<nil>'
12 '/
ba/#<nil>:RegExp:<nil>'
11 '/\s*(\S*(\s+\S+)*)\s*$/#<nil>:RegExp:<nil>'
10 'runBlock0#<nil>:FTL:bc#400'
10 'runBlock1#<nil>:DFG:bc#1849'
10 'Exec#<nil>:DFG:bc#16'

9 '/(?:ZFVR.(\d+\.\d+))|(?:(?:Sversbk|TenaCnenqvfb|Vprjrnfry).(\d+\.\d+))|(?:Bcren.(\d+\.\d+))|(?:NccyrJroXvg.(\d+(?:\.\d+)?))/#<nil>:RegExp:<nil>'
8 '/##yv18##/gi#<nil>:RegExp:<nil>'
8 '/([a-zA-Z]|\s)+/#<nil>:RegExp:<nil>'
7 '/JroXvg\/(\S+)/#<nil>:RegExp:<nil>'
7 'runBlock0#<nil>:FTL:bc#2671'
7 '/(#.?)((?:[\w\u0128-\uffff*_-]|
.)*)/#<nil>:RegExp:<nil>'
6 '/##oe##/gi#<nil>:RegExp:<nil>'
6 'runBlock1#<nil>:FTL:bc#124'
6 '/[+, ]/#<nil>:RegExp:<nil>'
6 'runBlock1#<nil>:FTL:bc#1903'
6 'replace#<nil>:DFG:bc#63'
5 'runBlock0#<nil>:FTL:bc#3378'
5 '/'/g#<nil>:RegExp:<nil>'
5 '/##yv20##/gi#<nil>:RegExp:<nil>'
4 '/\?[\w\W]*(sevraqvq|punaaryvq|tebhcvq)=([
\&\?#]*)/i#<nil>:RegExp:<nil>'
4 'load#<nil>:None:<nil>'

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • runtime/RegExp.cpp:

(JSC::RegExp::matchCompareWithInterpreter):
(JSC::RegExp::dumpToStream):
(JSC::appendLineTerminatorEscape<LChar>):
(JSC::appendLineTerminatorEscape<UChar>):
(JSC::escapePattern):
(JSC::RegExp::escapedPattern const): Moved from RegExpPrototype.cpp to implement RegExp::toSourceString and RegExp::escapedPattern.
(JSC::RegExp::toSourceString const):
(JSC::regexpToSourceString): Deleted.

  • runtime/RegExp.h:
  • runtime/RegExpInlines.h:

(JSC::RegExp::matchInline):

  • runtime/RegExpPrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::appendLineTerminatorEscape<LChar>): Deleted.
(JSC::appendLineTerminatorEscape<UChar>): Deleted.
(JSC::regExpProtoGetterSourceInternal): Deleted.

  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::takeSample):
(JSC::SamplingProfiler::processUnverifiedStackTraces):
(JSC::SamplingProfiler::StackFrame::nameFromCallee):
(JSC::SamplingProfiler::StackFrame::displayName):
(JSC::SamplingProfiler::StackFrame::displayNameForJSONTests):
(JSC::SamplingProfiler::StackFrame::functionStartLine):
(JSC::SamplingProfiler::StackFrame::functionStartColumn):
(JSC::SamplingProfiler::StackFrame::sourceID):
(JSC::SamplingProfiler::StackFrame::url):
(JSC::SamplingProfiler::reportTopBytecodes):
(WTF::printInternal):

  • runtime/SamplingProfiler.h:
  • runtime/VM.h:
  • yarr/YarrJIT.cpp:

(JSC::Yarr::MatchingContextHolder::MatchingContextHolder): Deleted.
(JSC::Yarr::MatchingContextHolder::~MatchingContextHolder): Deleted.

  • yarr/YarrJIT.h:

(JSC::Yarr::MatchingContextHolder::offsetOfStackLimit): Deleted.
(JSC::Yarr::MatchingContextHolder::offsetOfPatternContextBuffer): Deleted.
(JSC::Yarr::MatchingContextHolder::offsetOfPatternContextBufferSize): Deleted.

  • yarr/YarrMatchingContextHolder.h: Added.

(JSC::Yarr::MatchingContextHolder::offsetOfStackLimit):
(JSC::Yarr::MatchingContextHolder::offsetOfPatternContextBuffer):
(JSC::Yarr::MatchingContextHolder::offsetOfPatternContextBufferSize):
(JSC::Yarr::MatchingContextHolder::MatchingContextHolder):
(JSC::Yarr::MatchingContextHolder::~MatchingContextHolder):

9:01 PM Changeset in webkit [279975] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

[iOS] WKMouseGestureRecognizer should not have failure requirements on WKDeferringGestureRecognizer
https://bugs.webkit.org/show_bug.cgi?id=228013
rdar://80342462

Reviewed by Tim Horton.

Avoid adding a gesture failure requirement between any WKDeferringGestureRecognizers and
WKMouseGestureRecognizer; It doesn't make sense to claim that WKMouseGestureRecognizer should only recognize
once active touch events have been handled by the web page. Under normal circumstances, this gesture failure
requirement is actually completely benign, since touch events should never be received by
WKMouseGestureRecognizer in the first place, and when using a trackpad, deferring gesture recognizers are not
triggered.

However, if an app were to (hypothetically) swizzle out -gestureRecognizer:shouldReceiveTouch: to force
WKMouseGestureRecognizer to receive normal (non-trackpad) touch events, this could cause nearly all gesture
recognizers in the window to become unresponsive, since WKMouseGestureRecognizer would be stuck in Changed state
long after other gestures in the same subgraph have transitioned to Ended or Failed state, thereby preventing
all of these gestures from being reset to Possible state.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView deferringGestureRecognizer:shouldDeferOtherGestureRecognizer:]):

7:09 PM Changeset in webkit [279974] by Jean-Yves Avenard
  • 11 edits in trunk/Source

[Wk1] media/media-source/media-webm-opus-partial.html is a consistent failure (Enable VP8/VP9/Vorbis/Opus in WebKitLegacy)
https://bugs.webkit.org/show_bug.cgi?id=228005
rdar://80346720

Reviewed by Jer Noble.

Source/WebCore:

There are already tests running under Wk1 that will exercise this code (and will no longer fail)

  • page/RuntimeEnabledFeatures.cpp:

(WebCore::RuntimeEnabledFeatures::setVorbisDecoderEnabled):
Carry settings to PlatformMediaSessionManager
(WebCore::RuntimeEnabledFeatures::setOpusDecoderEnabled):
Carry settings to PlatformMediaSessionManager

  • page/RuntimeEnabledFeatures.h:

Source/WebKit:

  • Shared/WebPreferencesDefaultValues.cpp:
  • Shared/WebPreferencesDefaultValues.h: Don't make webm parser conditional on VP9

being enabled; it's used with other codecs too and is codec-agnostic to start with.

Source/WebKitLegacy/mac:

  • WebView/WebPreferencesDefaultValues.h: Add relevant settings getter methods.
  • WebView/WebPreferencesDefaultValues.mm:

(WebKit::defaultWebMParserEnabled):
(WebKit::defaultVP8DecoderEnabled):
(WebKit::defaultVP9DecoderEnabled):

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml: Enable VP8/VP9/Vorbis/Opus

codecs for WebKitLegacy, no reasons they weren't already enabled.

7:07 PM Changeset in webkit [279973] by Jean-Yves Avenard
  • 8 edits
    2 adds in trunk

[MSE] sequence mode is broken if GPU Process is enabled
https://bugs.webkit.org/show_bug.cgi?id=227864
<rdar://problem/80445041>

Reviewed by Jer Noble.

Source/WebCore:

When the source buffer's mode is set to sequence, the timestampOffset attribute
should be updated after each appendBuffer operation. However, when the GPU process
is enabled, the timestampOffset calculations are all done in the GPU process and
its result wasn't communicated back to the WebContent process leading its value
to always be 0 on read.
Fly-by fix: the timestamp offset calculation was incorrect, per spec
https://w3c.github.io/media-source/#sourcebuffer-coded-frame-processing
step 3.5.8.3.1 we read:
Set timestampOffset equal to group start timestamp - presentation timestamp.
but the code did otherwise.

Test: media/media-source/media-mp4-h264-sequence-mode.html

  • platform/graphics/SourceBufferPrivate.cpp:

(WebCore::SourceBufferPrivate::didReceiveSample): Offset m_timestampOffset by
the sample's presentation timestamp

Source/WebKit:

When the source buffer's mode is set to sequence, the timestampOffset attribute

should be updated after each appendBuffer operation. However, when the GPU process
is enabled, the timestampOffset calculations are all done in the GPU process and
its result wasn't communicated back to the WebContent process leading its value
to always be 0 on read.

  • GPUProcess/media/RemoteSourceBufferProxy.cpp:

(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateAppendComplete): Add value of
the potentially updated timestamp offset back to the content process.

  • WebProcess/GPU/media/SourceBufferPrivateRemote.cpp:

(WebKit::SourceBufferPrivateRemote::sourceBufferPrivateAppendComplete):

  • WebProcess/GPU/media/SourceBufferPrivateRemote.h:
  • WebProcess/GPU/media/SourceBufferPrivateRemote.messages.in: Add extra timestampOffset

parameter.

LayoutTests:

Note: we had tests checking on the correctness of the operation; however it's
using a mock SourceBuffer which doesn't run in the GPU process. Doing bug 225367
should be a priority so we get better code coverage and such bugs don't skip
under the radar.
To get around this issue, we write a new test that uses a mp4 and a h264 video track.

  • media/media-source/media-mp4-h264-sequence-mode-expected.txt: Added.
  • media/media-source/media-mp4-h264-sequence-mode.html: Added.
6:25 PM Changeset in webkit [279972] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WTF

Unreviewed. Fix the build warning below since r279895.
warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare]

  • wtf/URL.cpp:

(WTF::URL::setPath):

5:36 PM Changeset in webkit [279971] by Chris Dumez
  • 81 edits
    1 copy
    22 adds
    2 deletes in trunk

Add initial support for BroadcastChannel behind a runtime flag
https://bugs.webkit.org/show_bug.cgi?id=227924

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that more tests are running and we are passing more checks.

  • web-platform-tests/FileAPI/url/url-in-tags-revoke.window-expected.txt:
  • web-platform-tests/html/browsers/the-window-object/noopener-noreferrer-BarProp.window-expected.txt:
  • web-platform-tests/html/browsers/the-window-object/noopener-noreferrer-sizing.window-expected.txt:
  • web-platform-tests/html/browsers/the-window-object/window-open-noreferrer-expected.txt:
  • web-platform-tests/html/cross-origin-embedder-policy/report-only-require-corp.https-expected.txt:
  • web-platform-tests/html/cross-origin-embedder-policy/require-corp.https-expected.txt:
  • web-platform-tests/html/dom/idlharness.worker-expected.txt:
  • web-platform-tests/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/broadcastchannel-success.https-expected.txt:
  • web-platform-tests/html/semantics/forms/form-submission-target/rel-base-target-expected.txt:
  • web-platform-tests/html/semantics/forms/form-submission-target/rel-button-target-expected.txt:
  • web-platform-tests/html/semantics/forms/form-submission-target/rel-form-target-expected.txt:
  • web-platform-tests/html/semantics/forms/form-submission-target/rel-input-target-expected.txt:
  • web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener-expected.txt:
  • web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener-expected.txt:
  • web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener_base-expected.txt:
  • web-platform-tests/wasm/serialization/module/broadcastchannel-success-and-failure-expected.txt:
  • web-platform-tests/wasm/serialization/module/broadcastchannel-success-expected.txt:
  • web-platform-tests/webmessaging/MessageEvent-trusted.any-expected.txt:
  • web-platform-tests/webmessaging/MessageEvent-trusted.any.worker-expected.txt:
  • web-platform-tests/webmessaging/broadcastchannel/basics-expected.txt: Removed.
  • web-platform-tests/webmessaging/broadcastchannel/basics.any-expected.txt:
  • web-platform-tests/webmessaging/broadcastchannel/basics.any.worker-expected.txt:
  • web-platform-tests/webmessaging/broadcastchannel/blobs-expected.txt:
  • web-platform-tests/webmessaging/broadcastchannel/interface-expected.txt: Removed.
  • web-platform-tests/webmessaging/broadcastchannel/interface.any-expected.txt:
  • web-platform-tests/webmessaging/broadcastchannel/interface.any.worker-expected.txt:
  • web-platform-tests/webmessaging/broadcastchannel/sandbox-expected.txt:
  • web-platform-tests/webmessaging/broadcastchannel/workers-expected.txt: Added.
  • web-platform-tests/webmessaging/multi-globals/broadcastchannel-current.sub-expected.txt:
  • web-platform-tests/webstorage/storage_session_window_noopener.window-expected.txt:
  • web-platform-tests/workers/semantics/interface-objects/001.worker-expected.txt:

Source/WebCore:

Add initial support for BroadcastChannel behind a runtime flag, off by default:

Both Firefox and Blink have been supporting BroadcastChannel for a long time.

The implementation is complete and spec-compliant. It works both in Window and Worker environments,
in WebKit1 and WebKit2. However, the feature is off-by-default because of privacy concerns that have
not been addresssed yet:

We should be able to add partioning to address the privacy concerns and ship this later on. In the mean
time though, having a working BroadcastChannel implementation in the context of layout tests is already
very useful because a lot of Web-Platform-Tests are relying on it to test other Web features. This means
better test coverage for WebKit.

Tests:

  • fast/html/broadcast-channel-between-different-sessions.html
  • Rebaselined WPT tests
  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/WebCoreBuiltinNames.h:
  • dom/BroadcastChannel.cpp: Added.

(WebCore::channelToContextIdentifier):
(WebCore::BroadcastChannel::BroadcastChannel):
(WebCore::BroadcastChannel::~BroadcastChannel):
(WebCore::BroadcastChannel::postMessage):
(WebCore::BroadcastChannel::close):
(WebCore::BroadcastChannel::dispatchMessageTo):
(WebCore::BroadcastChannel::dispatchMessage):
(WebCore::BroadcastChannel::ensureOnMainThread):
(WebCore::BroadcastChannel::activeDOMObjectName const):
(WebCore::BroadcastChannel::eventListenersDidChange):
(WebCore::BroadcastChannel::virtualHasPendingActivity const):

  • dom/BroadcastChannel.h: Added.

(WebCore::BroadcastChannel::create):
(WebCore::BroadcastChannel::identifier const):
(WebCore::BroadcastChannel::name const):

  • dom/BroadcastChannel.idl: Added.
  • dom/BroadcastChannelIdentifier.h: Added.
  • dom/BroadcastChannelRegistry.h: Added.

(WebCore::BroadcastChannelRegistry::~BroadcastChannelRegistry):

  • dom/DeviceOrientationAndMotionAccessController.h:
  • dom/DeviceOrientationEvent.cpp:
  • dom/DeviceOrientationEvent.h:
  • dom/EventTargetFactory.in:
  • loader/EmptyClients.cpp:

(WebCore::pageConfigurationWithEmptyClients):

  • page/Page.cpp:

(WebCore::Page::Page):
(WebCore::Page::setBroadcastChannelRegistry):

  • page/Page.h:

(WebCore::Page::broadcastChannelRegistry):

  • page/PageConfiguration.cpp:

(WebCore::PageConfiguration::PageConfiguration):

  • page/PageConfiguration.h:

Source/WebKit:

Add initial support for BroadcastChannel behind a runtime flag, off by default:

Both Firefox and Blink have been supporting BroadcastChannel for a long time.

The implementation is complete and spec-compliant. It works both in Window and Worker environments,
in WebKit1 and WebKit2. However, the feature is off-by-default because of privacy concerns that have
not been addresssed yet:

We should be able to add partioning to address the privacy concerns and ship this later on. In the mean
time though, having a working BroadcastChannel implementation in the context of layout tests is already
very useful because a lot of Web-Platform-Tests are relying on it to test other Web features. This means
better test coverage for WebKit.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • NetworkProcess/Downloads/DownloadManager.cpp:
  • NetworkProcess/NetworkBroadcastChannelRegistry.cpp: Added.

(WebKit::NetworkBroadcastChannelRegistry::registerChannel):
(WebKit::NetworkBroadcastChannelRegistry::unregisterChannel):
(WebKit::NetworkBroadcastChannelRegistry::postMessage):
(WebKit::NetworkBroadcastChannelRegistry::removeConnection):

  • NetworkProcess/NetworkBroadcastChannelRegistry.h: Added.

(WebKit::NetworkBroadcastChannelRegistry::GlobalBroadcastChannelIdentifier::operator== const):

  • NetworkProcess/NetworkBroadcastChannelRegistry.messages.in: Added.
  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::didReceiveMessage):
(WebKit::NetworkConnectionToWebProcess::didClose):

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::NetworkSession):

  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::broadcastChannelRegistry):

  • Scripts/webkit/messages.py:

(types_that_cannot_be_forward_declared):

  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Network/NetworkProcessConnection.cpp:

(WebKit::NetworkProcessConnection::didReceiveMessage):

  • WebProcess/WebCoreSupport/WebBroadcastChannelRegistry.cpp: Added.

(WebKit::networkProcessConnection):
(WebKit::WebBroadcastChannelRegistry::registerChannel):
(WebKit::WebBroadcastChannelRegistry::unregisterChannel):
(WebKit::WebBroadcastChannelRegistry::postMessage):
(WebKit::WebBroadcastChannelRegistry::postMessageToRemote):

  • WebProcess/WebCoreSupport/WebBroadcastChannelRegistry.h: Added.
  • WebProcess/WebCoreSupport/WebBroadcastChannelRegistry.messages.in: Added.
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_appHighlightsVisible):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::WebProcess):

  • WebProcess/WebProcess.h:

(WebKit::WebProcess::broadcastChannelRegistry):

Source/WebKitLegacy:

Add BroadcastChannelRegistry implementation for WebKitLegacy.

  • Sources.txt:
  • WebCoreSupport/WebBroadcastChannelRegistry.cpp: Added.

(WebBroadcastChannelRegistry::getOrCreate):
(WebBroadcastChannelRegistry::registerChannel):
(WebBroadcastChannelRegistry::unregisterChannel):
(WebBroadcastChannelRegistry::postMessage):

  • WebCoreSupport/WebBroadcastChannelRegistry.h: Added.
  • WebKitLegacy.xcodeproj/project.pbxproj:

Source/WebKitLegacy/mac:

  • WebView/WebView.mm:

(-[WebView _commonInitializationWithFrameName:groupName:]):
(-[WebView _preferencesChanged:]):

Source/WebKitLegacy/win:

  • WebView.cpp:

(WebView::initWithFrame):
(WebView::notifyPreferencesChanged):

Source/WTF:

Add experimental feature flag for BroadcastChannel, off by default.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

LayoutTests:

  • TestExpectations:
  • fast/html/broadcast-channel-between-different-sessions-expected.txt: Added.
  • fast/html/broadcast-channel-between-different-sessions.html: Added.
  • fast/html/resources/broadcast-channel-between-different-sessions-window.html: Added.

Add layout test coverage to make sure that windows belonging to different session are unable to communicate
via BroadcastChannel.

  • platform/ios-wk2/imported/w3c/web-platform-tests/html/browsers/the-window-object/noopener-noreferrer-sizing.window-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/noopener-noreferrer-sizing.window-expected.txt.
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/browsers/the-window-object/noopener-noreferrer-BarProp.window-expected.txt: Added.
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener-expected.txt: Added.
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/win/TestExpectations:
  • platform/wk2/TestExpectations:

Update test expectations now that we support BroadcastChannel.

5:35 PM Changeset in webkit [279970] by Robert Jenner
  • 2 edits in trunk/LayoutTests

inspector/canvas/setRecordingAutoCaptureFrameCount.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=228011.

Unreviewed test gardening.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-15

  • platform/mac/TestExpectations:
4:24 PM Changeset in webkit [279969] by Chris Dumez
  • 7 edits in trunk

FetchResponse.formData() should reject promise with a TypeError if the body is null
https://bugs.webkit.org/show_bug.cgi?id=228007

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that more checks are passing.

  • web-platform-tests/fetch/api/request/request-consume-empty.any-expected.txt:
  • web-platform-tests/fetch/api/request/request-consume-empty.any.worker-expected.txt:
  • web-platform-tests/fetch/api/response/response-consume-empty.any-expected.txt:
  • web-platform-tests/fetch/api/response/response-consume-empty.any.worker-expected.txt:

Source/WebCore:

FetchResponse.formData() should reject promise with a TypeError if the body is null, to match
the behavior of Chrome and Firefox.

No new tests, rebaselined existing tests.

  • Modules/fetch/FetchBodyOwner.cpp:

(WebCore::FetchBodyOwner::formData):

3:56 PM Changeset in webkit [279968] by Kyle Piddington
  • 3 edits
    2 adds in trunk

WebGL2 demo doesn't work due to failing compilation to metal backend
https://bugs.webkit.org/show_bug.cgi?id=226865
Source/ThirdParty/ANGLE:

Fix translation of struct-arrays to contain the array type as well.
Reviewed by Dean Jackson.

  • src/compiler/translator/TranslatorMetalDirect/SeparateCompoundStructDeclarations.cpp:

LayoutTests:

Fix translation of struct-arrays to contain the array type as well.
Reviewed by Dean Jackson.

  • fast/canvas/webgl/shader-with-struct-array.html: Added.
  • fast/canvas/webgl/shader-with-struct-array-expected.txt: Added.
3:52 PM Changeset in webkit [279967] by Chris Dumez
  • 6 edits in trunk

Sync XHR 'load' event is always has total/loaded=0
https://bugs.webkit.org/show_bug.cgi?id=228004

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Rebaseline WPT test that is now passing.

  • web-platform-tests/xhr/send-sync-response-event-order-expected.txt:

Source/WebCore:

XMLHttpRequest::didReceiveData() was not calling XMLHttpRequestProgressEventThrottle::dispatchThrottledProgressEvent()
for sync XHRs because we don't want to fire 'progress' events for sync XHR. However, dispatchThrottledProgressEvent()
also updates XMLHttpRequestProgressEventThrottle's m_loaded / m_total members and we do want those to get updated for
sync XHRs, since they get used later on for the 'load' event.

No new tests, rebaselined existing test.

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::didReceiveData):

  • xml/XMLHttpRequestProgressEventThrottle.cpp:

(WebCore::XMLHttpRequestProgressEventThrottle::updateProgress):
(WebCore::XMLHttpRequestProgressEventThrottle::dispatchThrottledProgressEvent): Deleted.

  • xml/XMLHttpRequestProgressEventThrottle.h:
3:45 PM Changeset in webkit [279966] by sihui_liu@apple.com
  • 13 edits in trunk/Source

Do not abort ongoing IDB transaction synchronously on non-imminent PrepareToSuspend message
https://bugs.webkit.org/show_bug.cgi?id=227778
<rdar://problem/80602557>

Reviewed by Chris Dumez.

Source/WebCore:

  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::hasDatabaseActivitiesOnMainThread const):

  • Modules/indexeddb/server/IDBServer.h:
  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::hasActiveTransactions const):

  • Modules/indexeddb/server/UniqueIDBDatabase.h:

Source/WebKit:

Currently we abort IDB transactions and suspend IDB thread synchronously in NetworkProcess::prepareToSuspend.
As UI process does not know the file locking state in network process now (because network process tracks
the state and takes the assertion by itself), UI process may send non-imminent PrepareToSuspend more often,
and we may abort transaction too aggressively (e.g. UI process may send the message as soon as app is in
background). To fix the possible regression of data loss, we will schedule a task with 5s delay to abort
transactions after prepareToSuspend. In this case, transactions finished in 5s can have a chance to finish.

  • NetworkProcess/IndexedDB/WebIDBServer.cpp:
  • NetworkProcess/IndexedDB/WebIDBServer.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::suspendIDBServers):
(WebKit::NetworkProcess::prepareToSuspend):
(WebKit::NetworkProcess::resume):
(WebKit::NetworkProcess::createWebIDBServer):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/ios/NetworkProcessIOS.mm:

(WebKit::NetworkProcess::setIsHoldingLockedFiles):

  • UIProcess/ProcessAssertion.h:

(WebKit::ProcessAssertion::setPrepareForInvalidationHandler):

  • UIProcess/ios/ProcessAssertionIOS.mm:

(-[WKRBSAssertionDelegate dealloc]):
(-[WKRBSAssertionDelegate assertionWillInvalidate:]):
(WebKit::ProcessAssertion::ProcessAssertion):
(WebKit::ProcessAssertion::~ProcessAssertion):
(WebKit::ProcessAssertion::processAssertionWillBeInvalidated):

3:26 PM Changeset in webkit [279965] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[Big Sur wk1 Debug] imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-duration-loop.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=228006

Unreviewed test gardening.

Patch by Ayumi Kojima <Ayumi Kojima> on 2021-07-15

  • platform/mac-wk1/TestExpectations:
2:24 PM WebKitGTK/2.32.x edited by Adrian Perez de Castro
(diff)
2:17 PM WebKitGTK/2.32.x edited by Adrian Perez de Castro
(diff)
2:08 PM Changeset in webkit [279964] by Peng Liu
  • 2 edits in trunk/Source/WebCore

Reddit PiP video pauses when scrolling
https://bugs.webkit.org/show_bug.cgi?id=227999

Reviewed by Jer Noble.

Enable the requiresUserGestureToPauseInPictureInPicture quirk for reddit.com.

  • page/Quirks.cpp:

(WebCore::Quirks::requiresUserGestureToPauseInPictureInPicture const):

2:04 PM Changeset in webkit [279963] by Megan Gardner
  • 13 edits in trunk/Source

Rename scrollRectIntoView to scrollContainingScrollViewsToRevealRect for clarity.
https://bugs.webkit.org/show_bug.cgi?id=227995

Reviewed by Tim Horton.

Source/WebCore:

No behavior change.

  • loader/EmptyClients.h:
  • page/Chrome.cpp:

(WebCore::Chrome::scrollContainingScrollViewsToRevealRect const):
(WebCore::Chrome::scrollRectIntoView const): Deleted.

  • page/Chrome.h:
  • page/ChromeClient.h:

(WebCore::ChromeClient::scrollContainingScrollViewsToRevealRect const):
(WebCore::ChromeClient::scrollRectIntoView const): Deleted.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::scrollRectToVisible):

Source/WebKit:

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::scrollContainingScrollViewsToRevealRect const):
(WebKit::WebChromeClient::scrollRectIntoView const): Deleted.

  • WebProcess/WebCoreSupport/WebChromeClient.h:

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::scrollContainingScrollViewsToRevealRect const):
(WebChromeClient::scrollRectIntoView const): Deleted.

1:44 PM Changeset in webkit [279962] by ysuzuki@apple.com
  • 4 edits
    1 add in trunk

[JSC] Harden defaultTimeZone retrieval
https://bugs.webkit.org/show_bug.cgi?id=227996
JSTests:

Reviewed by Mark Lam.

  • complex.yaml:
  • complex/intl-timezone-check.js: Added.

(shouldBe):

Source/JavaScriptCore:

rdar://80540300

Reviewed by Mark Lam.

We received the report that "UTC" can appear in Intl.DateTimeFormat's default timezone.
While we cannot reproduce it, this patch attempts to avoid using TimeZone from UCalendar
so that the code gets the same to the old defaultTimeZone implementation.

  • runtime/JSDateMath.cpp:

(JSC::DateCache::defaultTimeZone):
(JSC::DateCache::timeZoneCacheSlow):

1:42 PM Changeset in webkit [279961] by mark.lam@apple.com
  • 5 edits
    1 add in trunk

JITWorklist::waitUntilAllPlansForVMAreReady() should also be notified when plans are cancelled.
https://bugs.webkit.org/show_bug.cgi?id=228003
rdar://78314543

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/waitUntilAllPlansForVMAreReady-should-be-notified-of-cancelled-plans-too.js: Added.

Source/JavaScriptCore:

Previously, it only gets notified when plans are done compiling. As a result, if
JITWorklist::waitUntilAllPlansForVMAreReady() found non-ready plans and started
waiting, and those plans were canceled, then JITWorklist::waitUntilAllPlansForVMAreReady()
can hang indefinitely.

This patch renames JITWorklist::::m_planCompiled to m_planCompiledOrCancelled,
and notifies it also when plans are cancelled.

  • jit/JITWorklist.cpp:

(JSC::JITWorklist::waitUntilAllPlansForVMAreReady):
(JSC::JITWorklist::removeMatchingPlansForVM):

  • jit/JITWorklist.h:
  • jit/JITWorklistThread.cpp:

(JSC::JITWorklistThread::work):

1:40 PM Changeset in webkit [279960] by beidson@apple.com
  • 4 edits in trunk/Source/WebCore

Use WeakPtr with UniqueIDBDatabaseConnection
<rdar://79447808> and https://bugs.webkit.org/show_bug.cgi?id=227969

Reviewed by Geoff Garen.

No new tests possible.

Noticed this raw ptr which was raw to break a ref cycle.
WeakPtr works better.

  • Modules/indexeddb/server/UniqueIDBDatabaseConnection.h:
  • Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp:

(WebCore::IDBServer::UniqueIDBDatabaseTransaction::UniqueIDBDatabaseTransaction):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::~UniqueIDBDatabaseTransaction):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::databaseConnection):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::abort):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::abortWithoutCallback):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::commit):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::createObjectStore):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::deleteObjectStore):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::renameObjectStore):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::clearObjectStore):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::createIndex):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::deleteIndex):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::renameIndex):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::putOrAdd):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::getRecord):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::getAllRecords):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::getCount):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::deleteRecord):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::openCursor):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::iterateCursor):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::objectStoreIdentifiers):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::didActivateInBackingStore):

  • Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h:

(WebCore::IDBServer::UniqueIDBDatabaseTransaction::databaseConnection): Deleted.

1:39 PM Changeset in webkit [279959] by Truitt Savell
  • 3 edits in trunk/LayoutTests

[Mac OS & iOS] imported/w3c/web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-network-error.sub.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=227998

Unreviewed test gardening.

Patch by Ayumi Kojima <Ayumi Kojima> on 2021-07-15

  • platform/ios-wk2/TestExpectations:
  • platform/mac/TestExpectations:
1:30 PM Changeset in webkit [279958] by Simon Fraser
  • 8 edits in trunk/Source/WebCore

Improve multicol logging in render tree dumps, and cleanup
https://bugs.webkit.org/show_bug.cgi?id=227994

Reviewed by Alan Bujtas.

For a RenderFragmentedFlow dump the list of fragment containers, and clean up the existing
dumping of containers for a renderer inside a fragmented flow. Also dump column information
for RenderMultiColumnSet.

Use initializers for member variables in various fragmentation-related renderers.

  • rendering/RenderFragmentContainer.cpp:

(WebCore::RenderFragmentContainer::RenderFragmentContainer):

  • rendering/RenderFragmentContainer.h:
  • rendering/RenderMultiColumnFlow.cpp:

(WebCore::RenderMultiColumnFlow::RenderMultiColumnFlow):

  • rendering/RenderMultiColumnFlow.h:
  • rendering/RenderMultiColumnSet.cpp:

(WebCore::RenderMultiColumnSet::RenderMultiColumnSet):

  • rendering/RenderMultiColumnSet.h:
  • rendering/RenderObject.cpp:

(WebCore::enclosingFragmentedFlowFromRenderer):
(WebCore::RenderObject::outputRegionsInformation const):
(WebCore::RenderObject::outputRenderObject const):

1:15 PM Changeset in webkit [279957] by Robert Jenner
  • 2 edits in trunk/LayoutTests

transitions/transition-end-event-nested.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=228002.

Unreviewed test gardening.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-15

  • platform/mac/TestExpectations:
1:12 PM Changeset in webkit [279956] by beidson@apple.com
  • 3 edits in trunk/Source/WebCore

MemoryIDBBackingStore cleanup.
<rdar://79497380> and https://bugs.webkit.org/show_bug.cgi?id=227993

Reviewed by Geoffrey Garen.

  • Modules/indexeddb/server/MemoryIDBBackingStore.cpp:

(WebCore::IDBServer::MemoryIDBBackingStore::registerObjectStore):

  • Modules/indexeddb/server/MemoryIDBBackingStore.h:
11:29 AM Changeset in webkit [279955] by ysuzuki@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

[JSC] Add samplingProfilerIgnoreExternalSourceID option
https://bugs.webkit.org/show_bug.cgi?id=227985

Reviewed by Mark Lam.

We can ignore sourceID when aggregating samples. By doing so, we can open Speedometer2 style iframes
and still aggregate all the functions even though each script in iframe has different source ID.

  • runtime/OptionsList.h:
  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::StackFrame::sourceID):
(JSC::SamplingProfiler::reportTopFunctions):

  • runtime/SamplingProfiler.h:
10:45 AM Changeset in webkit [279954] by Ryan Haddad
  • 2 edits in trunk/Tools

Unreviewed, update my status in contributors.json to reviewer.

  • Scripts/webkitpy/common/config/contributors.json:
10:17 AM Changeset in webkit [279953] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

Add unit-tests for InstallBuiltProduct step
https://bugs.webkit.org/show_bug.cgi?id=227990

Reviewed by Philippe Normand.

  • CISupport/build-webkit-org/steps_unittest.py:
  • CISupport/ews-build/steps_unittest.py:
9:50 AM Changeset in webkit [279952] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[Big Sur wk1 arm64] http/tests/security/frameNavigation/xss-DENIED-plugin-navigation.html is timing out
https://bugs.webkit.org/show_bug.cgi?id=227973

Unreviewed test gardening.

Patch by Ayumi Kojima <Ayumi Kojima> on 2021-07-15

  • platform/mac-wk1/TestExpectations:
9:43 AM Changeset in webkit [279951] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[macOS] Expand GPU sandbox to support multi-target AirPlay
https://bugs.webkit.org/show_bug.cgi?id=227972
<rdar://problem/76029596>

Reviewed by Eric Carlson.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
9:16 AM Changeset in webkit [279950] by ntim@apple.com
  • 5 edits in trunk

<dialog> element: do not perform close() method steps when removing open attribute.
https://bugs.webkit.org/show_bug.cgi?id=227872

Reviewed by Chris Dumez.

Test: web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-open.html

The close function now follows the steps at: https://html.spec.whatwg.org/multipage/interactive-elements.html#close-the-dialog

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-open-expected.txt:

Source/WebCore:

  • html/HTMLDialogElement.cpp:

(WebCore::HTMLDialogElement::show):
(WebCore::HTMLDialogElement::showModal):
(WebCore::HTMLDialogElement::close):
(WebCore::HTMLDialogElement::dispatchPendingEvent):
(WebCore::HTMLDialogElement::isOpen const): Deleted.
(WebCore::HTMLDialogElement::returnValue): Deleted.
(WebCore::HTMLDialogElement::setReturnValue): Deleted.
(WebCore::HTMLDialogElement::parseAttribute): Deleted.
(WebCore::HTMLDialogElement::isModal const): Deleted.

  • html/HTMLDialogElement.h:
9:15 AM Changeset in webkit [279949] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore
REGRESSION (r279119?): [iOS] ASSERTION FAILED: !m_impl
!m_shouldEnableAssertions m_impl->wasConstructedOnMainThread() == isMainThread() seen with 3 WebKitLegacy media API tests

https://bugs.webkit.org/show_bug.cgi?id=227930
<rdar://problem/80545962>

Reviewed by Eric Carlson.

Dispatch to the WebThread if necessary.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):

9:09 AM Changeset in webkit [279948] by Ruben Turcios
  • 8 edits in trunk/Source

Versioning.

WebKit-7612.1.25

8:53 AM Changeset in webkit [279947] by Ruben Turcios
  • 1 copy in branches/safari-612.1.24-branch

New branch.

7:59 AM Changeset in webkit [279946] by Razvan Caliman
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Regression (r278607) Jump to CSS variable declaration from Computed panel not working
https://bugs.webkit.org/show_bug.cgi?id=227811
<rdar://problem/80339360>

Reviewed by Devin Rousso.

When attempting to highlight a hidden unused CSS variable, use the same method to identify a corresponding WI.CSSProperty
as used with other CSS property types. The method checks the canonical property name instead of strict object equality.

When a CSS variable is shown in the Computed panel, its corresponding WI.CSSProperty instance has slightly different
properties than the WI.CSSProperty used in the Styles panel. The instances are generated by different calls to
WI.DOMNodeStyles._parseStylePropertyPayload(), one for the payload of matching styles and another for computed styles.

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:

(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.highlightProperty.propertiesMatch):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.highlightProperty.hasMatchingLonghandProperty):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.highlightProperty):

7:26 AM Changeset in webkit [279945] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[iOS]TestWebKitAPI.InAppBrowserPrivacy.AppBoundDomainAllowsServiceWorkers is failing
https://bugs.webkit.org/show_bug.cgi?id=227918
<rdar://problem/80535625>

Unreviewed test gardening.

  • TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm: Disabled the test for now to speed up EWS.
6:48 AM Changeset in webkit [279944] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[GTK] Can't click links with touchscreen
https://bugs.webkit.org/show_bug.cgi?id=226679

Patch by Alexander Mikhaylenko <Alexander Mikhaylenko> on 2021-07-15
Reviewed by Michael Catanzaro.

Currently, when we emulate mouse events for touch, we send events with touch
pointer type, however the way we do it doesn't really match how touch type
events are supposed to behave: for example, we won't send a press event until
a finger release, and will then send both together. And touch pointer type
events are also supposed to support multitouch (or at least they do in iOS),
while with this scheme they really can't.

Not only all of this produces weird results for pointer events, but the actual
mouse emulation doesn't really work as intended. For example, when tapping
empty space on the page, and then a link, the latter won't do anything.
Meanwhile, it's possible to accidentally open a link while pinch zooming.

Switch back to emulating mouse pointer type events for now, as it was before
the rewrite to avoid this. Touch pointer type events don't work properly
anyway.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseTouchRelease):
(webkitWebViewBaseTouchDragUpdate):
(webkitWebViewBaseTouchDragEnd):

6:44 AM WebKitGTK/2.32.x edited by Adrian Perez de Castro
(diff)
6:09 AM Changeset in webkit [279943] by ntim@apple.com
  • 7 edits in trunk/LayoutTests

Re-import html/semantics/interactive-elements/the-dialog-element WPT
https://bugs.webkit.org/show_bug.cgi?id=227986

Unreviewed.

Upstream commit: https://github.com/web-platform-tests/wpt/commit/10a8411ba8ed0012da5ecefc6eba9956a13b2c21

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-form-submission-expected.txt:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-form-submission.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-open-expected.txt:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-open.html:

LayoutTests:

  • platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-form-submission-expected.txt:
5:54 AM Changeset in webkit [279942] by Philippe Normand
  • 2 edits in trunk

Unreviewed, CMake fix-up after r279940

  • Source/cmake/FindLIBPORTAL.cmake: Fix libportal detection.
5:40 AM Changeset in webkit [279941] by Adrian Perez de Castro
  • 14 edits in trunk/Source

Non-unified build fixes, mid-July 2021 edition
https://bugs.webkit.org/show_bug.cgi?id=227981

Unreviewed non-unified build fixes.

Source/JavaScriptCore:

  • ftl/FTLState.cpp: Add missing B3ValueInlines.h header.
  • runtime/TemporalNow.cpp: Add missing JSCJSValueInlines.h and JSObjectInlines.h headers.
  • runtime/TemporalObject.cpp: Ditto.

Source/WebCore:

  • accessibility/AXObjectCache.cpp: Add missing AXImage.h and RenderImage.h headers.
  • bindings/js/JSIntersectionObserverCustom.cpp:

(WebCore::JSIntersectionObserverOwner::isReachableFromOpaqueRoots): Add missing namespace to
usage of JSC::jsCast<T>() template.

  • bindings/js/JSResizeObserverCustom.cpp: Add missing Element.h and JSNodeCustom.h headers.

(WebCore::JSResizeObserverOwner::isReachableFromOpaqueRoots): Add missing namespace to usage
of JSC::jsCast<T>() template.

  • css/CSSCrossfadeValue.h: Add missing forward declaration of Style::BuilderState.
  • css/parser/CSSPropertyParserWorkerSafe.cpp: Add missing ParsingUtilities.h header.
  • platform/graphics/cairo/GradientCairo.cpp: Replace GraphicsContext.h header with

GraphicsContextCairo.h to avoid errors about undefined types.

  • rendering/style/RenderStyleConstants.cpp: Add missing CSSPrimitiveValueMappings.h header.

Source/WebKit:

  • UIProcess/ProcessAssertion.cpp: Add missing wtf/RunLoop.h header.
4:48 AM Changeset in webkit [279940] by Philippe Normand
  • 28 edits
    1 add in trunk

[GStreamer][Pipewire] Implement getDisplayMedia() backend
https://bugs.webkit.org/show_bug.cgi?id=210926

Reviewed by Xabier Rodriguez-Calvar.

.:

  • Source/cmake/FindLIBPORTAL.cmake: Added.
  • Source/cmake/GStreamerChecks.cmake: Enable Pipewire support if libportal was found.

Source/WebCore:

Display capture is now supported by GStreamer ports. When requested, the capture device
manager queries the host through the libportal API. The user is presented with a prompt
allowing to select either a monitor or an application window. Once selected, the manager
creates the associated CaptureDevice, passing the pipewire file descriptor along. The
existing GStreamer video capture source infrastructure is reused, leveraging the GStreamer
pipewiresrc element to generate a live video stream of the display device.

As display capture devices need to respect the aspect-ratio of the video frame, taking into
account max-{widther,height}, some code was reused from the Cocoa display capture code and
placed in RealtimeVideoCaptureSource as ensureIntrinsicSizeMaintainsAspectRatio().

Unfortunately this aspect-ratio enforcing feature is currently used only for mock capture
sources. The GStreamer pipewiresrc doesn't support caps renegotiation well yet, so we can't
comply with the aspect-ratio enforcing, for the time being.

This patch is covered by newly unskipped layout tests and API tests.

  • platform/GStreamer.cmake:
  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::setIntrinsicSize):
(WebCore::RealtimeMediaSource::hashedId const):

  • platform/mediastream/RealtimeMediaSource.h:
  • platform/mediastream/RealtimeVideoCaptureSource.cpp:

(WebCore::RealtimeVideoCaptureSource::ensureIntrinsicSizeMaintainsAspectRatio):

  • platform/mediastream/RealtimeVideoCaptureSource.h:
  • platform/mediastream/RealtimeVideoSource.cpp:

(WebCore::RealtimeVideoSource::sourceSettingsChanged):

  • platform/mediastream/gstreamer/GStreamerAudioCapturer.cpp:

(WebCore::GStreamerAudioCapturer::GStreamerAudioCapturer):

  • platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp:

(WebCore::GStreamerDisplayCaptureDeviceManager::GStreamerDisplayCaptureDeviceManager):
(WebCore::GStreamerDisplayCaptureDeviceManager::~GStreamerDisplayCaptureDeviceManager):
(WebCore::GStreamerDisplayCaptureDeviceManager::computeCaptureDevices):
(WebCore::GStreamerDisplayCaptureDeviceManager::setSession):
(WebCore::GStreamerDisplayCaptureDeviceManager::sessionStarted):
(WebCore::GStreamerDisplayCaptureDeviceManager::notifyClient):
(WebCore::GStreamerDisplayCaptureDeviceManager::sessionWasClosed):

  • platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.h:
  • platform/mediastream/gstreamer/GStreamerCapturer.cpp:

(WebCore::GStreamerCapturer::GStreamerCapturer):
(WebCore::GStreamerCapturer::Observer::~Observer):
(WebCore::GStreamerCapturer::addObserver):
(WebCore::GStreamerCapturer::removeObserver):
(WebCore::GStreamerCapturer::forEachObserver):
(WebCore::GStreamerCapturer::createSource):

  • platform/mediastream/gstreamer/GStreamerCapturer.h:

(WebCore::GStreamerCapturer::Observer::sourceCapsChanged):
(WebCore::GStreamerCapturer::deviceType const):

  • platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:

(WebCore::GStreamerVideoCaptureSource::create):
(WebCore::GStreamerVideoCaptureSource::createPipewireSource):
(WebCore::GStreamerVideoCaptureSource::GStreamerVideoCaptureSource):
(WebCore::m_deviceType):
(WebCore::GStreamerVideoCaptureSource::~GStreamerVideoCaptureSource):
(WebCore::GStreamerVideoCaptureSource::sourceCapsChanged):
(WebCore::GStreamerVideoCaptureSource::startProducingData):
(WebCore::GStreamerVideoCaptureSource::stopProducingData):
(WebCore::m_capturer): Deleted.

  • platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:
  • platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:

(WebCore::initializeDebugCategory):
(WebCore::GStreamerVideoCapturer::GStreamerVideoCapturer):
(WebCore::GStreamerVideoCapturer::createSource):
(WebCore::GStreamerVideoCapturer::setPipewireFD):
(WebCore::GStreamerVideoCapturer::setSize):
(WebCore::GStreamerVideoCapturer::setFrameRate):

  • platform/mediastream/gstreamer/GStreamerVideoCapturer.h:
  • platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp:

(WebCore::MockRealtimeVideoSource::create):
(WebCore::MockRealtimeVideoSourceGStreamer::createMockDisplayCaptureSource):

  • platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.h:
  • platform/mock/MockRealtimeMediaSourceCenter.cpp:
  • platform/mock/MockRealtimeVideoSource.cpp:

(WebCore::MockRealtimeVideoSource::capabilities):
(WebCore::MockRealtimeVideoSource::generateFrame):

  • platform/mock/MockRealtimeVideoSource.h:

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml: Enable screen-capture if libportal

was found.

LayoutTests:

  • platform/glib/TestExpectations: Unskip now-passing getDisplayMedia tests.
1:42 AM Changeset in webkit [279939] by Ziran Sun
  • 19 edits
    7 copies
    7 moves
    2 adds
    5 deletes in trunk/LayoutTests

Resync web-platform-tests/css/css-grid tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=227901

Reviewed by Manuel Rego Casasnovas.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-003-expected.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-004-expected.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-003-expected.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-004-expected.html:
  • web-platform-tests/css/css-grid/alignment/grid-item-aspect-ratio-stretch-1-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4-expected.html.
  • web-platform-tests/css/css-grid/alignment/grid-item-aspect-ratio-stretch-1.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4.html.
  • web-platform-tests/css/css-grid/alignment/grid-item-aspect-ratio-stretch-2-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-5-expected.html.
  • web-platform-tests/css/css-grid/alignment/grid-item-aspect-ratio-stretch-2.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-10.html.
  • web-platform-tests/css/css-grid/alignment/grid-item-aspect-ratio-stretch-3-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6-expected.html.
  • web-platform-tests/css/css-grid/alignment/grid-item-aspect-ratio-stretch-3.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6.html.
  • web-platform-tests/css/css-grid/alignment/grid-item-aspect-ratio-stretch-4-expected.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-7-expected.html.
  • web-platform-tests/css/css-grid/alignment/grid-item-aspect-ratio-stretch-4.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-7.html.
  • web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-10-expected.html: Removed.
  • web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4-expected.html:
  • web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4.html:
  • web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-5-expected.html:
  • web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-5.html:
  • web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6-expected.html:
  • web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6.html:
  • web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-8-expected.html: Removed.
  • web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-8.html: Removed.
  • web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-9-expected.html: Removed.
  • web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-9.html: Removed.
  • web-platform-tests/css/css-grid/alignment/w3c-import.log:
  • web-platform-tests/css/css-grid/grid-item-percentage-quirk-001-expected.html: Removed.
  • web-platform-tests/css/css-grid/grid-item-percentage-quirk-002-expected.html: Removed.
  • web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-002-expected.xht: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-002.tentative-expected.xht.
  • web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-002.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-002.tentative.html.
  • web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-003-expected.xht: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-003.tentative-expected.xht.
  • web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-003.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-003.tentative.html.
  • web-platform-tests/css/css-grid/grid-items/grid-items-contribution-negative-margins-expected.xht: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-002.tentative-expected.xht.
  • web-platform-tests/css/css-grid/grid-items/grid-items-contribution-negative-margins.html: Added.
  • web-platform-tests/css/css-grid/grid-items/w3c-import.log:
  • web-platform-tests/css/css-grid/grid-model/grid-areas-overflowing-grid-container-004.html:
  • web-platform-tests/css/css-grid/grid-model/grid-areas-overflowing-grid-container-005.html:
  • web-platform-tests/css/css-grid/layout-algorithm/grid-find-fr-size-restart-algorithm-expected.xht: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-002.tentative-expected.xht.
  • web-platform-tests/css/css-grid/layout-algorithm/grid-find-fr-size-restart-algorithm.html: Added.
  • web-platform-tests/css/css-grid/layout-algorithm/w3c-import.log:
  • web-platform-tests/css/css-grid/w3c-import.log:

LayoutTests:

1:08 AM Changeset in webkit [279938] by magomez@igalia.com
  • 10 edits in trunk/Source/WebCore

[GStreamer][GL] A420 compositing support
https://bugs.webkit.org/show_bug.cgi?id=227953

Reviewed by Xabier Rodriguez-Calvar.

A420 is YUV+alpha in a separate component. vp9dec outputs this format for assets encoded
with alpha support. Our GL sink now supports this format and lets the TextureMapper handle the
final conversion to RGBA.

  • platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp:
  • platform/graphics/gstreamer/GStreamerVideoFrameHolder.cpp:

(WebCore::GstVideoFrameHolder::platformLayerBuffer):

  • platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:

(WebCore::VideoTextureCopierGStreamer::copyVideoTextureToPlatformTexture):

  • platform/graphics/texmap/TextureMapperGL.cpp:

(WebCore::TextureMapperGL::drawTexturePlanarYUV):

  • platform/graphics/texmap/TextureMapperGL.h:
  • platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:

(WebCore::TextureMapperPlatformLayerBuffer::paintToTextureMapper):

  • platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h:
  • platform/graphics/texmap/TextureMapperShaderProgram.cpp:

(WebCore::TextureMapperShaderProgram::create):

  • platform/graphics/texmap/TextureMapperShaderProgram.h:

Jul 14, 2021:

8:11 PM Changeset in webkit [279937] by Devin Rousso
  • 10 edits
    8 adds in trunk

Implement Array.prototype.findLast and Array.prototype.findLastIndex
https://bugs.webkit.org/show_bug.cgi?id=227939

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/typedarray-findLast.js: Added.

(keepEven):
(keepEvenAndChange):
(isBigEnoughAndException):

  • stress/typedarray-findLastIndex.js: Added.

(keepEven):
(keepEvenAndChange):
(isBigEnoughAndException):

Source/JavaScriptCore:

  • builtins/ArrayPrototype.js:

(findLast): Added.
(findLastIndex): Added.
(JSC::ArrayPrototype::finishCreation):

  • runtime/JSTypedArrayViewPrototype.cpp:
  • builtins/TypedArrayPrototype.js:

(findLast): Added.
(findLastIndex): Added.

  • runtime/ArrayPrototype.cpp:

(JSC::JSTypedArrayViewPrototype::finishCreation):

  • runtime/OptionsList.h:

Source/WebInspectorUI:

  • UserInterface/Models/NativeFunctionParameters.js:

LayoutTests:

  • js/array-findLast.html: Added.
  • js/array-findLast-expected.txt: Added.
  • js/script-tests/array-findLast.js: Added.

(passUndefined):
(passZero):
(passNull):
(passFalse):
(passEmptyString):
(passEven):
(passAfter5):
(toObject):
(findItemAddedDuringSearch):
(numberOfCallbacksInFindInArrayWithHoles):
(throwError):

  • js/array-findLastIndex.html: Added.
  • js/array-findLastIndex-expected.txt: Added.
  • js/script-tests/array-findLastIndex.js: Added.

(passUndefined):
(passZero):
(passNull):
(passFalse):
(passEmptyString):
(passEven):
(passAfter5):
(toObject):
(findItemAddedDuringSearch):
(numberOfCallbacksInFindIndexInArrayWithHoles):
(throwError):

6:20 PM Changeset in webkit [279936] by Robert Jenner
  • 2 edits in trunk/LayoutTests

Update expectations for webanimations/multiple-transform-properties-and-multiple-transform-properties-animation-with-delay-on-forced-layer.html.
https://bugs.webkit.org/show_bug.cgi?id=227976.

Unreviewed test gardening.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-14

  • platform/mac-wk2/TestExpectations:
5:53 PM Changeset in webkit [279935] by Brent Fulgham
  • 2 edits in trunk/Tools

[iOS & Mac Big Sur Release] Two SOAuthorizationSubFrame API tests are failing
https://bugs.webkit.org/show_bug.cgi?id=227925
<rdar://problem/80543830>

Reviewed by Kate Cheney.

In Bug 227729 I added a number of extra tests that an Extensible SSO delegate method
was called. I did a search/paste and added them to all SSO flows without much detailed
analysis. Testing shows that on Simulator, these delegate are not always called, perhaps
because the test case involves loads to live websites that might take longer than the
hard-coded timeout used to move to the next step of the test.

Because these failures are slowing down our EWS, I'm removing these two checks. We
can consider adding them back if we need such checks in the future.

  • TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm:

(TestWebKitAPI::TEST):

5:09 PM Changeset in webkit [279934] by Robert Jenner
  • 2 edits in trunk/LayoutTests

Unreviewed, reverting r279851.

Overrode previously set test expectations.

Reverted changeset:

"[Mac wk1 Debug] webaudio/audioworket-out-of-memory.html is a
flaky timeout."
https://bugs.webkit.org/show_bug.cgi?id=227845
https://commits.webkit.org/r279851

5:07 PM Changeset in webkit [279933] by Alan Coon
  • 1 copy in tags/Safari-612.1.23.0.1

Tag Safari-612.1.23.0.1.

4:38 PM Changeset in webkit [279932] by Robert Jenner
  • 2 edits in trunk/LayoutTests

REGRESSION (r279806): [ iOS/macOS ] fast/canvas/canvas-overloads-strokeText.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=227881

Unreviewed test gardening.

Patch by Ayumi Kojima <Ayumi Kojima> on 2021-07-14

  • platform/mac-wk2/TestExpectations:
4:27 PM Changeset in webkit [279931] by Alan Coon
  • 8 edits in branches/safari-612.1.23.0-branch/Source

Versioning.

WebKit-7612.1.23.0.1

4:02 PM Changeset in webkit [279930] by Alan Coon
  • 1 copy in branches/safari-612.1.23.0-branch

New branch.

3:56 PM Changeset in webkit [279929] by jer.noble@apple.com
  • 8 edits in trunk/Source

Source/WebCore/PAL:
Unreviewed build fix after r279912 (239661@main); Adopt HAVE(SYSTEM_STATUS) macro.

  • pal/ios/SystemStatusSoftLink.h:
  • pal/ios/SystemStatusSoftLink.mm:

Source/WebKit:
Unreviewed build fix after r279912 (239661@main); Adopt HAVE(SYSTEM_STATUS) macro.

  • GPUProcess/cocoa/GPUConnectionToWebProcessCocoa.mm:

(WebKit::GPUConnectionToWebProcess::setCaptureAttributionString):

  • Platform/spi/ios/SystemStatusSPI.h:

Source/WTF:
Unreviewed build fix after r279912 (239661@main); Add a HAVE(SYSTEM_STATUS) macro.

  • wtf/PlatformHave.h:
3:55 PM Changeset in webkit [279928] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[Tools] linkify first line of commit message in tooltip
https://bugs.webkit.org/show_bug.cgi?id=227968
<rdar://problem/80596878>

Patch by Kevin Neal <kevin_neal@apple.com> on 2021-07-14
Reviewed by Jonathan Bedard.

  • Scripts/libraries/resultsdbpy/resultsdbpy/view/static/js/timeline.js:

(xAxisFromScale):

3:37 PM Changeset in webkit [279927] by msaboff@apple.com
  • 5 edits in trunk/Source

[macOS] Add new entitlement to limit process to a single JIT region
https://bugs.webkit.org/show_bug.cgi?id=227956

Reviewed by Mark Lam.

This macOS entitlement limits a process to a single JIT region.
This matches the behavior on iOS.

  • Scripts/process-entitlements.sh:

Source/JavaScriptCore:

  • entitlements.plist:
3:12 PM Changeset in webkit [279926] by Wenson Hsieh
  • 9 edits
    2 adds in trunk/Source/WebKit

[GPU Process] Dump basic RemoteRenderingBackend state when taking system diagnostics
https://bugs.webkit.org/show_bug.cgi?id=227917

Reviewed by Tim Horton.

Make it possible to diagnose issues where the GPU Process is stuck (e.g. failing to acknowledge context flushes
from the web process) by dumping information about the states of all RemoteRenderingBackends in the GPU process.
See comments below for more detail.

  • GPUProcess/GPUConnectionToWebProcess.h:

(WebKit::GPUConnectionToWebProcess::remoteRenderingBackendMap const):

Expose this const getter, so that GPUProcess can iterate over remote rendering backends when collecting
diagnostic information in additionalStateForDiagnosticReport().

  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::initializeGPUProcess):

  • GPUProcess/GPUProcess.h:
  • GPUProcess/cocoa/GPUProcessCocoa.mm: Added.

(WebKit::GPUProcess::additionalStateForDiagnosticReport const):

Override this method and return a dictionary containing information about each RemoteRenderingBackend for all
GPUConnectionToWebProcesses. This is an example of a state dictionary:

`
{

"RemoteRenderingBackend states" = {

<WP ID> = {

<RRB ID> = FinishedReplayingDisplayList;

};

};

}
`

Importantly, this reveals RemoteRenderingBackends that are stuck waiting for newly created display list item
buffers, missing cached resources, or destination image buffers (essentially a special case of "missing cached
resources"), and also cases where display list playback infinitely loops or otherwise hangs.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::nextDestinationImageBufferAfterApplyingDisplayLists):
(WebKit::RemoteRenderingBackend::wakeUpAndApplyDisplayList):
(WebKit::RemoteRenderingBackend::setNextItemBufferToRead):
(WebKit::RemoteRenderingBackend::lastKnownState const):
(WebKit::RemoteRenderingBackend::updateLastKnownState):

Add a state flag to RemoteRenderingBackend, so that it can remember its last known state. This state is updated
when entering or exiting the main display list processing loop (wakeUpAndApplyDisplayList); if we're about to
go to sleep with pending wakeup arguments, then we'll set the last known state to one of the WaitingFor_______
states.

This state is wrapped in an Atomic, since it's only updated from the rendering backend's background queue, but
it's only read from within the OS state handler block on the main queue.

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackendState.h: Added.

Add a new 8-bit enum representing the state of a RemoteRenderingBackend. See above for more details.

(WebKit::name):

  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::waitForDidFlushWithTimeout):

Add fault logging in the case where we've reached the maximum number of timeouts while waiting for a display
list context flush. Importantly, we include the remote rendering backend's identifier here to make it easier to
correlate with information from GPU Process state dumping above.

3:12 PM Changeset in webkit [279925] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Link against Catalyst ANGLE-shared.dylib when linking Catalyst WebCore.framework
https://bugs.webkit.org/show_bug.cgi?id=227965
<rdar://76284889>

Reviewed by Tim Horton.

r274742 put the dylib into the correct location, but when linking WebCore we are still looking in the
location of the non-Catalyst dylib, which happens to have all the symbols we are looking for so linking succeeds.
At runtime, though, we realize we are opening the wrong dylib and bad things happen.

The solution is to look in the Catalyst WebCore framework directory when WK_USE_ALTERNATE_FRAMEWORKS_DIR is YES,
which is only in the Catalyst build.

  • Configurations/WebCore.xcconfig:
3:10 PM Changeset in webkit [279924] by mark.lam@apple.com
  • 5 edits in trunk/Source

Speculative fix for failed scope.releaseAssertNoException() after calls to JSMap::create().
https://bugs.webkit.org/show_bug.cgi?id=227964
rdar://78013960

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

There have been reports of flaky failures on the scope.releaseAssertNoException()
after the call to JSMap::create() in JSModuleLoader::finishCreation().

The scope.releaseAssertNoException() says that we don't expect the JSMap::create()
to ever throw an exception. If the assertion is true, the only way that we can
see an exception there is if we're throwing an asynchronous TerminationException.

Since JSModuleLoader::finishCreation() does not have any long running loops, we can
just DeferTerminationForAWhile and let the next exception check site throw the
asynchronous TerminationException. We don't want to just use DeferTermination
because it will throw the TerminationException right at the end of
JSModuleLoader::finishCreation(), and the caller of JSModuleLoader::finishCreation()
may be similarly not expecting an exception to be thrown there.

Also apply the same treatment to AbstractModuleRecord::finishCreation(), and
getBackingMap() in WebCore for the same reason. Other than those, other sites that
call JSMap::create() already check for exceptions. So, those sites do not need to
DeferTerminationForAWhile.

  • runtime/AbstractModuleRecord.cpp:

(JSC::AbstractModuleRecord::finishCreation):

  • runtime/JSModuleLoader.cpp:

(JSC::JSModuleLoader::finishCreation):

Source/WebCore:

  • bindings/js/JSDOMMapLike.cpp:

(WebCore::getBackingMap):

3:04 PM Changeset in webkit [279923] by keith_miller@apple.com
  • 3 edits in trunk/JSTests

Unreviewed, test gardening.

  • stress/bit-op-with-object-returning-int32.js:
  • stress/bitwise-not-fixup-rules.js:

(jscOptions):

2:18 PM Changeset in webkit [279922] by msaboff@apple.com
  • 3 edits in trunk/Source/bmalloc

[BMalloc] Lazily allocate physical pages
https://bugs.webkit.org/show_bug.cgi?id=227957

Reviewed by Mark Lam.

For the Darwin platform we don't need to call madvise(..., MADV_FREE_REUSE) to commit physical
memory to back a range of allocated virtual memory. Instead the kernel will commit pages
as they are touched. This can reduce the footprint of a process when there is sparse access
of allocated memory.

Also fixed a minor bug where we allocate memory, but don't update the amount of physical memory
associated with it.

  • bmalloc/Heap.cpp:

(bmalloc::Heap::tryAllocateLargeChunk):

  • bmalloc/VMAllocate.h:

(bmalloc::vmAllocatePhysicalPages):

2:07 PM Changeset in webkit [279921] by Alan Coon
  • 1 copy in tags/Safari-611.3.10.1.5

Tag Safari-611.3.10.1.5.

1:48 PM Changeset in webkit [279920] by Alan Coon
  • 8 edits in branches/safari-611.3.10.1-branch/Source

Versioning.

WebKit-7611.3.10.1.5

1:44 PM Changeset in webkit [279919] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

[Cocoa] Null-pointer deref in MediaKeySystemAccess::createMediaKeys()
https://bugs.webkit.org/show_bug.cgi?id=227911
<rdar://80325855>

Reviewed by Chris Dumez.

In r278481, we moved from a (timer-based) GenericTaskQueue to the document's event loop, but in so
doing, allowed the passed-in lambda to be called after the underlying object had been destroyed.
Make MediaKeySystemAccess a CanMakeWeakPtr and pass in a WeakPtr to the lambda. To ensure that the
lambda itself keeps MediaKeySystemAccess during the execution of the lambda, also add a Ref to
the object after null-checking weakThis.

  • Modules/encryptedmedia/MediaKeySystemAccess.cpp:

(WebCore::MediaKeySystemAccess::createMediaKeys):

  • Modules/encryptedmedia/MediaKeySystemAccess.h:
1:40 PM Changeset in webkit [279918] by commit-queue@webkit.org
  • 40 edits in trunk/Source

Rename hasOverflowClip() to prepare for the real overflow:clip
https://bugs.webkit.org/show_bug.cgi?id=227899

Patch by Rob Buis <rbuis@igalia.com> on 2021-07-14
Reviewed by Simon Fraser.

Rename hasOverflowClip() to prepare for the real overflow:clip.

Source/WebCore:

No new tests since no change in behavior.

  • dom/Document.cpp:

(WebCore::Document::isBodyPotentiallyScrollable):
(WebCore::computeIntersectionState):

  • dom/Element.cpp:

(WebCore::Element::scrollTo):
(WebCore::Element::scrollByUnits):

  • editing/TextIterator.cpp:

(WebCore::fullyClipsContents):

  • layout/integration/LayoutIntegrationInlineContentBuilder.cpp:

(WebCore::LayoutIntegration::lineOverflowWidth):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::collectOverflow):

  • page/ios/FrameIOS.mm:

(WebCore::Frame::nodeRespondingToScrollWheelEvents):

  • rendering/LegacyLineLayout.cpp:

(WebCore::LegacyLineLayout::layoutLineBoxes):
(WebCore::LegacyLineLayout::addOverflowFromInlineChildren):

  • rendering/RenderBlock.cpp:

(WebCore::OverflowEventDispatcher::OverflowEventDispatcher):
(WebCore::RenderBlock::endAndCommitUpdateScrollInfoAfterLayoutTransaction):
(WebCore::RenderBlock::updateScrollInfoAfterLayout):
(WebCore::RenderBlock::computeOverflow):
(WebCore::RenderBlock::paint):
(WebCore::RenderBlock::isSelectionRoot const):
(WebCore::RenderBlock::nodeAtPoint):
(WebCore::RenderBlock::addFocusRingRects):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlock):
(WebCore::RenderBlockFlow::adjustForBorderFit const):

  • rendering/RenderBlockFlow.h:

(WebCore::RenderBlockFlow::endPaddingWidthForCaret const):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::styleWillChange):
(WebCore::RenderBox::styleDidChange):
(WebCore::RenderBox::updateFromStyle):
(WebCore::RenderBox::scrollWidth const):
(WebCore::RenderBox::scrollHeight const):
(WebCore::RenderBox::scrollLeft const):
(WebCore::RenderBox::scrollTop const):
(WebCore::RenderBox::setScrollLeft):
(WebCore::RenderBox::setScrollTop):
(WebCore::RenderBox::setScrollPosition):
(WebCore::RenderBox::includeVerticalScrollbarSize const):
(WebCore::RenderBox::includeHorizontalScrollbarSize const):
(WebCore::RenderBox::intrinsicScrollbarLogicalWidth const):
(WebCore::RenderBox::requiresLayerWithScrollableArea const):
(WebCore::RenderBox::canBeProgramaticallyScrolled const):
(WebCore::RenderBox::usesCompositedScrolling const):
(WebCore::RenderBox::hasAutoScrollbar const):
(WebCore::RenderBox::hasAlwaysPresentScrollbar const):
(WebCore::RenderBox::scrollPosition const):
(WebCore::RenderBox::cachedSizeForOverflowClip const):
(WebCore::RenderBox::backgroundHasOpaqueTopLayer const):
(WebCore::RenderBox::pushContentsClip):
(WebCore::RenderBox::popContentsClip):
(WebCore::RenderBox::computeVisibleRectInContainer const):
(WebCore::RenderBox::createsNewFormattingContext const):
(WebCore::RenderBox::addOverflowFromChild):
(WebCore::RenderBox::addLayoutOverflow):
(WebCore::RenderBox::layoutOverflowRectForPropagation const):

  • rendering/RenderBox.h:

(WebCore::RenderBox::scrollsOverflowX const):
(WebCore::RenderBox::scrollsOverflowY const):

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::paintFillLayerExtended):
(WebCore::RenderBoxModelObject::boxShadowShouldBeAppliedToBackground const):

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::styleWillChange):
(WebCore::RenderElement::mayCauseRepaintInsideViewport const):

  • rendering/RenderElement.h:

(WebCore::RenderElement::hasClipOrNonVisibleOverflow const):
(WebCore::RenderElement::hasClipOrOverflowClip const): Deleted.

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::hitTestChildren):

  • rendering/RenderFragmentContainer.cpp:

(WebCore::RenderFragmentContainer::shouldClipFragmentedFlowContent const):
(WebCore::RenderFragmentContainer::layoutOverflowRectForBoxForPropagation):

  • rendering/RenderFragmentedFlow.cpp:

(WebCore::RenderFragmentedFlow::addFragmentsOverflowFromChild):

  • rendering/RenderInline.cpp:

(WebCore::RenderInline::clippedOverflowRect const):
(WebCore::RenderInline::computeVisibleRectInContainer const):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::shouldBeNormalFlowOnly const):
(WebCore::RenderLayer::updateLayerPositionsAfterScroll):
(WebCore::RenderLayer::enclosingOverflowClipLayer const):
(WebCore::RenderLayer::updateLayerPosition):
(WebCore::RenderLayer::allowsCurrentScroll const):
(WebCore::RenderLayer::canResize const):
(WebCore::RenderLayer::clipToRect):
(WebCore::RenderLayer::setupFontSubpixelQuantization):
(WebCore::RenderLayer::paintLayerContents):
(WebCore::RenderLayer::calculateClipRects const):
(WebCore::outputPaintOrderTreeRecursive):

  • rendering/RenderLayerBacking.cpp:

(WebCore::clippingLayerBox):
(WebCore::RenderLayerBacking::updateCompositedBounds):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::enclosingNonStackingClippingLayer const):
(WebCore::RenderLayerCompositor::computeAncestorClippingStack const):
(WebCore::RenderLayerCompositor::clipsCompositingDescendants):

  • rendering/RenderLayerScrollableArea.cpp:

(WebCore::RenderLayerScrollableArea::paintOverflowControls):
(WebCore::RenderLayerScrollableArea::updateScrollCornerStyle):
(WebCore::RenderLayerScrollableArea::updateResizerStyle):
(WebCore::RenderLayerScrollableArea::scrollByRecursively):

  • rendering/RenderLayoutState.cpp:

(WebCore::RenderLayoutState::RenderLayoutState):
(WebCore::RenderLayoutState::computeOffsets):
(WebCore::RenderLayoutState::computeClipRect):

  • rendering/RenderListItem.cpp:

(WebCore::RenderListItem::paint):

  • rendering/RenderListMarker.cpp:

(WebCore::RenderListMarker::addOverflowFromListMarker):

  • rendering/RenderMultiColumnSet.cpp:

(WebCore::RenderMultiColumnSet::addOverflowFromChildren):

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::enclosingScrollableContainerForSnapping const):
(WebCore::objectIsRelayoutBoundary):
(WebCore::RenderObject::computeVisibleRectInContainer const):
(WebCore::RenderObject::outputRenderObject const):

  • rendering/RenderObject.h:

(WebCore::RenderObject::hasNonVisibleOverflow const):
(WebCore::RenderObject::setHasNonVisibleOverflow):
(WebCore::RenderObject::RenderObjectBitfields::RenderObjectBitfields):
(WebCore::RenderObject::hasOverflowClip const): Deleted.
(WebCore::RenderObject::setHasOverflowClip): Deleted.

  • rendering/RenderScrollbarPart.cpp:

(WebCore::RenderScrollbarPart::styleDidChange):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::nodeAtPoint):

  • rendering/RenderTableRow.h:
  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::nodeAtPoint):

  • rendering/RenderTextControl.cpp:

(WebCore::RenderTextControl::canScroll const):

  • rendering/RenderTextControlSingleLine.cpp:

(WebCore::RenderTextControlSingleLine::styleDidChange):

  • rendering/RenderTreeAsText.cpp:
  • rendering/svg/RenderSVGBlock.cpp:

(WebCore::RenderSVGBlock::updateFromStyle):

Source/WebKitLegacy/mac:

  • DOM/DOMHTML.mm:

(-[DOMHTMLElement scrollXOffset]):
(-[DOMHTMLElement scrollYOffset]):
(-[DOMHTMLElement setScrollXOffset:scrollYOffset:adjustForIOSCaret:]):

1:39 PM Changeset in webkit [279917] by Chris Dumez
  • 35 edits
    5 adds in trunk

Fix type of exceptions thrown in the WebAudio API
https://bugs.webkit.org/show_bug.cgi?id=227959

Reviewed by Yusuke Suzuki.

LayoutTests/imported/w3c:

Resync WebAudio WPT tests from upstream 04ab41dced1f354873cab0 to gain test coverage and
rebaseline those tests.

  • web-platform-tests/webaudio/resources/audit.js:

(Should.prototype.throw):

  • web-platform-tests/webaudio/the-audio-api/the-analysernode-interface/ctor-analyser-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html:
  • web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audionode-interface/different-contexts-expected.txt: Added.
  • web-platform-tests/webaudio/the-audio-api/the-audionode-interface/different-contexts.html: Added.
  • web-platform-tests/webaudio/the-audio-api/the-audionode-interface/w3c-import.log:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-registerprocessor-dynamic.https-expected.txt: Added.
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-registerprocessor-dynamic.https.html: Added.
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-constructor-options.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/processors/dynamic-register-processor.js: Added.

(ProcessorA.prototype.process):
(ProcessorA):
(ProcessorB):
(ProcessorB.prototype.process):

  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/processors/w3c-import.log:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/w3c-import.log:
  • web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-basic-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/ctor-biquadfilter-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-channelsplitternode-interface/ctor-channelsplitter-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-channelsplitternode-interface/ctor-channelsplitter.html:
  • web-platform-tests/webaudio/the-audio-api/the-delaynode-interface/ctor-delay-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-gainnode-interface/ctor-gain-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-iirfilternode-interface/ctor-iirfilter-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-mediastreamaudiodestinationnode-interface/ctor-mediastreamaudiodestination-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-offlineaudiocontext-interface/ctor-offlineaudiocontext-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-oscillatornode-interface/ctor-oscillator-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-waveshapernode-interface/ctor-waveshaper-expected.txt:

Source/WebCore:

The upstream webaudio web-platform-tests were updated to validate the types of
exceptions thrown by various WebAudio APIs. It became obvious that our implementation
was not always throwing the right exception type and didn't match other browsers.

This patch updates our WebAudio implementation to keep the WebAudio WPT tests passing
now that they properly validate exception types.

No new tests, re-sync'd and rebaselined existing WPT webaudio tests.

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::create):

  • Modules/webaudio/AudioNode.cpp:

(WebCore::AudioNode::connect):
(WebCore::AudioNode::setChannelCount):

  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::BaseAudioContext::createScriptProcessor):

  • Modules/webaudio/BiquadFilterNode.cpp:

(WebCore::BiquadFilterNode::getFrequencyResponse):

  • Modules/webaudio/ChannelSplitterNode.cpp:

(WebCore::ChannelSplitterNode::setChannelCount):

  • Modules/webaudio/OfflineAudioContext.cpp:

(WebCore::OfflineAudioContext::create):

  • Modules/webaudio/ScriptProcessorNode.cpp:

(WebCore::ScriptProcessorNode::setChannelCount):

LayoutTests:

Resync audit.js from upstream WPT and rebaseline webaudio tests.

  • webaudio/OfflineAudioContext/offlineaudiocontext-constructor-expected.txt:
  • webaudio/dom-exceptions-expected.txt:
  • webaudio/resources/audit.js:

(Should.prototype.throw):

12:58 PM Changeset in webkit [279916] by keith_miller@apple.com
  • 6 edits in trunk

Convert small JIT pool tests into executable fuzzing
https://bugs.webkit.org/show_bug.cgi?id=226279

Source/JavaScriptCore:

Right now, we try to test our engine on a small JIT pool. This isn't a known configuration for any
actual ports and causes issues if we run out of JIT memory when we need to compile an OSR exit.
Instead of testing such a small pool we should just fuzz each executable allocation that says it
can fail.

The current fuzzing doesn't do a good job tracking the number of DFG/FTL compiles when allocations
fail, so when enabled those tests will just exit early. Also, right now we use a random seed picked
by the engine for these tests, which makes it hard to reproduce crashes on the bots. If we see
flakiness on the bots we can have the harness pass in a number so it gets logged in the repro command.

Reviewed by Michael Saboff.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::numberOfDFGCompiles):

  • jit/ExecutableAllocationFuzz.cpp:

(JSC::doExecutableAllocationFuzzing):

  • jsc.cpp:

(runJSC):

Tools:

Reviewed by Michael Saboff.

Right now, we try to test our engine on a small JIT pool. This isn't a known configuration for any
actual ports and causes issues if we run out of JIT memory when we need to compile an OSR exit.
Instead of testing such a small pool we should just fuzz each executable allocation that says it
can fail.

The current fuzzing doesn't do a good job tracking the number of DFG/FTL compiles when allocations
fail, so when enabled those tests will just exit early. Also, right now we use a random seed picked
by the engine for these tests, which makes it hard to reproduce crashes on the bots. If we see
flakiness on the bots we can have the harness pass in a number so it gets logged in the repro command.

  • Scripts/jsc-stress-test-helpers/js-executable-allocation-fuzz:
  • Scripts/run-jsc-stress-tests:
12:15 PM Changeset in webkit [279915] by mark.lam@apple.com
  • 3 edits
    1 add in trunk

Check for out of memory in JSC::globalFuncEscape() and JSC::globalFuncUnescape().
https://bugs.webkit.org/show_bug.cgi?id=227962
rdar://78392251

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/out-of-memory-in-globalFuncUnescape.js: Added.

Source/JavaScriptCore:

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

11:39 AM Changeset in webkit [279914] by Devin Rousso
  • 12 edits in trunk/Source

[iOS] REGRESSION(r279720): changing Subtitles to Off doesn't hide them or do anything
https://bugs.webkit.org/show_bug.cgi?id=227937
<rdar://problem/79069662>

Reviewed by Eric Carlson.

r279720 made it so that CaptionUserPreferencesMediaAF::setCaptionDisplayMode no longer
directly modifies kMACaptionAppearanceDomainUser in the WebProcess, using a cached value
as a way of preventing the WebProcess from trying to read back that value after it's set,
instead having the UIProcess send Messages::WebProcess::SetMediaAccessibilityPreferences
whenever this changes to update that cached value. Unfortunately, because the WebProcess
needs to read this value immediately after changing it, this IPC round trip causes the
WebProcess to read the old value, which results in no observable changes. In order to fix
this, notify CaptionUserPreferences that captionPreferencesChanged when the above IPC
message is received (which will also handle cases when the value changes outside WebKit).

Source/WebCore:

  • Modules/mediacontrols/MediaControlsHost.cpp:

(WebCore::MediaControlsHost::sortedTrackListForMenu):
(WebCore::MediaControlsHost::displayNameForTrack):
(WebCore::MediaControlsHost::captionDisplayMode const):
(WebCore::MediaControlsHost::showMediaControlsContextMenu):

  • dom/Document.cpp:

(WebCore::Document::registerForCaptionPreferencesChangedCallbacks):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::addTextTrack):
(WebCore::HTMLMediaElement::configureTextTrackGroup):
(WebCore::HTMLMediaElement::setSelectedTextTrack):
(WebCore::HTMLMediaElement::captionPreferencesChanged):
(WebCore::HTMLMediaElement::captionDisplayMode):
(WebCore::HTMLMediaElement::mediaPlayerPreferredAudioCharacteristics const):

  • html/shadow/MediaControlTextTrackContainerElement.cpp:

(WebCore::MediaControlTextTrackContainerElement::updateActiveCuesFontSize):
(WebCore::MediaControlTextTrackContainerElement::updateTextStrokeStyle):

  • page/PageGroup.h:

(WebCore::PageGroup::captionPreferences const): Added.

  • page/PageGroup.cpp:

(WebCore::PageGroup::ensureCaptionPreferences): Added.
(WebCore::PageGroup::captionPreferences): Deleted.

  • platform/cocoa/PlaybackSessionModelMediaElement.mm:

(WebCore::PlaybackSessionModelMediaElement::updateMediaSelectionOptions):
(WebCore::PlaybackSessionModelMediaElement::audioMediaSelectionOptions const):
(WebCore::PlaybackSessionModelMediaElement::legibleMediaSelectionOptions const):

  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::setShouldDisplayTrackKind):
(WebCore::InternalSettings::shouldDisplayTrackKind):

  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::Internals):
(WebCore::Internals::userPreferredAudioCharacteristics const):
(WebCore::Internals::setUserPreferredAudioCharacteristic):
(WebCore::Internals::captionsStyleSheetOverride):
(WebCore::Internals::setCaptionsStyleSheetOverride):
(WebCore::Internals::setPrimaryAudioTrackLanguageOverride):
(WebCore::Internals::setCaptionDisplayMode):
Rename PageGroup::captionPreferences to PageGroup::ensureCaptionPreferences so that it's
possible to get the CaptionUserPreferences without always creating it.

Source/WebKit:

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::setMediaAccessibilityPreferences):
Make sure to also update every CaptionUserPreferences once the cached preference values
are saved so that any active media can update accordingly.

11:31 AM Changeset in webkit [279913] by ysuzuki@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

libpas executable-allocator should reserve more than 256KB for non-fail region at least
https://bugs.webkit.org/show_bug.cgi?id=227927

Reviewed by Keith Miller.

libpas jit_heap has mediam allocator which allocates 128KB pages at once. However, our JSC stress tests are setting 100KB
for small executable memory tests. As a result, under this configuration, we fail immediately after using medium allocator.

But this test's "total size of executable memory is 100KB" is unrealistic: it is possible that only 100KB memory remains,
but it is impossible that we reserve only 25KB for non-fail reservation. In production, we are always reserving 128MB. So
this configuration is not realistic actually.

So, this patch changes,

  1. If non-fail region is less than 256KB, then we add 256KB and keep this 256KB as non-fail executable allocation. If not,

use 0.25 ratio as we are doing. This means that Options::jitMemoryReservationSize configures failable region of
executable memory.

  1. We also revive bytesReserved and bytesAllocated to make memoryPressureMultiplier and early-fail allocation (when there is

not enough memory and allocation can fail, then we should fail).

  • jit/ExecutableAllocator.cpp:

(JSC::initializeJITPageReservation):
(JSC::ExecutableAllocator::underMemoryPressure):
(JSC::ExecutableAllocator::memoryPressureMultiplier):
(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableMemoryHandle::createImpl):
(JSC::ExecutableMemoryHandle::~ExecutableMemoryHandle):
(JSC::ExecutableMemoryHandle::shrink):
(JSC::ExecutableMemoryHandle::sizeInBytes const): Deleted.

  • jit/ExecutableMemoryHandle.h:

(JSC::ExecutableMemoryHandle::sizeInBytes const):
(JSC::ExecutableMemoryHandle::ExecutableMemoryHandle):

11:06 AM Changeset in webkit [279912] by eric.carlson@apple.com
  • 19 edits
    5 adds in trunk/Source

[iOS] Dynamically set capture attribution
https://bugs.webkit.org/show_bug.cgi?id=227871
rdar://70241665

Reviewed by Jer Noble.

Source/WebCore:

No new tests, tested manually.

  • en.lproj/Localizable.strings:

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:
  • pal/ios/SystemStatusSoftLink.h: Added.
  • pal/ios/SystemStatusSoftLink.mm: Added.

Source/WebKit:

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::GPUConnectionToWebProcess): Initialize m_captureOrigin.
(WebKit::GPUConnectionToWebProcess::updateCaptureOrigin): Update.
(WebKit::GPUConnectionToWebProcess::setCaptureAttributionString const): Non-Cocoa stub.

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::updateCaptureOrigin): Call same method in WebProcessConnection,
if it exists.

  • GPUProcess/GPUProcess.h:
  • GPUProcess/GPUProcess.messages.in:
  • GPUProcess/cocoa/GPUConnectionToWebProcessCocoa.mm: Added.

(WebKit::GPUConnectionToWebProcess::setCaptureAttributionString): Set the attribution
string to "[domain] in [application]".

  • Platform/spi/ios/SystemStatusSPI.h: Added.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb: Allow "com.apple.systemstatus.activityattribution"

to be looked up.

  • Scripts/process-entitlements.sh: Add the entitlements required to use the

SystemStatus SPI.

  • SourcesCocoa.txt:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:

(WebKit::UserMediaCaptureManagerProxy::startProducingData): Fail capture
if setCaptureAttributionString returns false.

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:

(WebKit::UserMediaCaptureManagerProxy::ConnectionProxy::setCaptureAttributionString):

  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::GPUProcessProxy::updateCaptureOrigin): Call gpuProcess.updateCaptureOrigin
so the capture origin is correct when capture begins.

  • UIProcess/GPU/GPUProcessProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didChangeMainDocument): Update the capture origin.
(WebKit::WebPageProxy::willStartCapture): Ditto.
(WebKit::WebPageProxy::gpuProcessExited): Drive-by - update local variable names
to make their purpose clearer.

  • WebKit.xcodeproj/project.pbxproj:
10:54 AM Changeset in webkit [279911] by Robert Jenner
  • 2 edits in trunk/LayoutTests

Update test expectations for storage/indexeddb/detached-iframe.html.
https://bugs.webkit.org/show_bug.cgi?id=207844

Unreviewed test gardening.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-14

  • platform/ios-wk2/TestExpectations:
10:25 AM Changeset in webkit [279910] by mark.lam@apple.com
  • 3 edits
    1 add in trunk

Placate exception checker validation in operationObjectAssignUntyped.
https://bugs.webkit.org/show_bug.cgi?id=227955
rdar://80503746

Reviewed by Michael Saboff.

JSTests:

  • stress/exception-check-in-operationObjectAssignUntyped.js: Added.

Source/JavaScriptCore:

  • dfg/DFGOperations.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

8:00 AM Changeset in webkit [279909] by keith_miller@apple.com
  • 3 edits in trunk/JSTests

Fix more tests around fuzzing executable allocations
https://bugs.webkit.org/show_bug.cgi?id=226663

Reviewed by Mark Lam.

  • stress/bit-op-with-object-returning-int32.js:

(numberOfDFGCompiles): Deleted.

  • stress/bitwise-not-fixup-rules.js:

(jscOptions):
(numberOfDFGCompiles): Deleted.

4:55 AM Changeset in webkit [279908] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

Add step name and description to InstallBuiltProduct build step
https://bugs.webkit.org/show_bug.cgi?id=227935

Reviewed by Carlos Alberto Lopez Perez.

  • CISupport/build-webkit-org/steps.py:

(InstallBuiltProduct):

  • CISupport/ews-build/steps.py:

(InstallBuiltProduct):

3:53 AM Changeset in webkit [279907] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GStreamer] mark media/media-source/media-webm-vorbis-partial.html and media/media-source/media-webm-opus-partial.html as failing
https://bugs.webkit.org/show_bug.cgi?id=227934

Unreviewed test gardening.

Patch by Arcady Goldmints-Orlov <agoldmints@igalia.com> on 2021-07-14

  • platform/glib/TestExpectations:
12:13 AM Changeset in webkit [279906] by Said Abou-Hallawa
  • 5 edits in trunk/Source/WebCore

RenderElement::updateFillImages must fix the clients of the CSS image whose URL is invalid
https://bugs.webkit.org/show_bug.cgi?id=227926
<rdar://80457956>

Reviewed by Simon Fraser.

Per CSS2 specs, if the value of the url() is the empty string, then it
must be resolved to the URL of the style sheet which is an invalid URI
for an image. The issue https://github.com/w3c/csswg-drafts/issues/2211
was filed to change this behavior.

In RenderElement::updateFillImages() we fix the old and new fill images
only if they are different. But we consider them equal if their URIs are
equal and they are not data URIs. If the two URIs are empty strings, the
fill images will be considered equal although their CachedImages might
be different.

We need to fix the clients of the fill images always if their CachedImages
have errorOccured() true or have hasImage() false.

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::updateFillImages):

  • rendering/style/StyleCachedImage.cpp:

(WebCore::StyleCachedImage::hasImage const):

  • rendering/style/StyleCachedImage.h:
  • rendering/style/StyleImage.h:

(WebCore::StyleImage::hasImage const):

Jul 13, 2021:

10:57 PM Changeset in webkit [279905] by Jean-Yves Avenard
  • 2 edits in trunk/Source/WebCore

MediaSessionManagerCocoa::ensureCodecsRegistered() isn't thread-safe
https://bugs.webkit.org/show_bug.cgi?id=227940

Reviewed by Maciej Stachowiak.

C++11 static initializers aren't thread-safe due to architectural and compilation
option choices. So we use Grand Central Dispatch's dispatch_once instead.

  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(WebCore::MediaSessionManagerCocoa::ensureCodecsRegistered):

10:12 PM Changeset in webkit [279904] by Jean-Yves Avenard
  • 19 edits
    6 adds in trunk

SourceBuffer.abort() doesn't go back to state WAITING_FOR_SEGMENT properly
https://bugs.webkit.org/show_bug.cgi?id=227559
<rdar://problem/79996056>

Reviewed by Jer Noble.

Source/WebCore:

Per spec, calling sourcebuffer.abort method should allow you to add a new segment
immediately after, as abort moves the append state back to WAITING_FOR_SEGMENT.
A segment can be either an init segment or a media segment.
We used to discard all further content until an init segment was encountered.
This could be problematic due to the typical use case of abort:
1- Seek to a location
2- Append a partial media segment long enough to finish seeking and display the

new content at the new position.

If multiple seeks were done in rapid succession, abort() is called right after
before starting the new seek so that we can add the new segment, regardless of what
was appended before.
YouTube applies a workaround for Safari where it will always append an init segment
after calling abort, this is different to what they do with Firefox (and likely Chrome).
To be able to resume after appending a partial media segment we must ensure that the
SourceBufferParser is always left in a sane context, and not be interrupted at some
random points. The abort() call used to interrupt the buffer parsing on the fly and
then reset things which would require a new init segment to restart.
Instead we always fully parse the pending buffer received befofe the call to abort
and drop all demuxed samples.
The SourceBufferParserAVFObjC could already properly deal with discontinuity unlike
SourceBufferParserWebM.
To ensure that buffers sent after the call to abort() are only ever processed once
the pending ones have been parsed, and in order to avoid having blocking calls
we play with the order in which tasks are scheduled.

Fly-by fixes:

  • The SourceBufferParser handle two type of parser: SourceBufferParser and the

platform specific AVStreamDataParser. Rename the accessor method to more clearly
differentate which parser we are dealing with.

  • The SourceBufferParserWebM and SourceBufferPrivateAVFObjC used different task dispatching

mechanisms. We make them both share the same one now found in the base class.

  • If SourceBufferPrivateAVFObjC::m_hasPendingAppendCompletedCallback had been set prior an

abort() it wouldn't have been reset, causing the need for a new init segment.

  • If abort() had been called while samples were pending, the source buffer content was

undefined if timestamp offset or append windows start/end were changed immediately after.

  • When an error occurs during the Segment Parser Loop, we should abort and run the append

error algorithm. We instead fired an error event for each sample found in the media segment.
In a debug built it was have asserted. We can't actually abort, so instead we ignore all
further samples once an error is encountered.

Tests: media/media-source/media-mp4-h264-partial-abort.html

media/media-source/media-webm-opus-partial-abort.html

  • platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:

(WebCore::CDMSessionAVContentKeySession::~CDMSessionAVContentKeySession): rename method.

  • platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm:

(WebCore::CDMSessionAVStreamSession::~CDMSessionAVStreamSession): rename method.
(WebCore::CDMSessionAVStreamSession::update): rename method.

  • platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.mm: rename method.

(WebCore::CDMSessionMediaSourceAVFObjC::addSourceBuffer): rename method.
(WebCore::CDMSessionMediaSourceAVFObjC::removeSourceBuffer): rename method.

  • platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.h: rename method, remove

now unused member.

  • platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm:

(WebCore::SourceBufferPrivateAVFObjC::removeCodedFrames): Postpone call to ensure
we are running the remove frame algorithm once all pending frames have been processed.
(WebCore::SourceBufferParserAVFObjC::resetParserState): Remove use of m_discardSamplesUntilNextInitializationSegment.
(WebCore::SourceBufferParserAVFObjC::didParseStreamDataAsAsset): Change to base dispatch method.
(WebCore::SourceBufferParserAVFObjC::didFailToParseStreamDataWithError): Change to base dispatch method.
(WebCore::SourceBufferParserAVFObjC::didProvideMediaDataForTrackID): Change to base dispatch method.

  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h: Rename methods. Remove no longer used

members.

  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:

(WebCore::SourceBufferPrivateAVFObjC::~SourceBufferPrivateAVFObjC):
(WebCore::SourceBufferPrivateAVFObjC::didParseInitializationData): No longer use a Cancellable task
as we never cancel it anymore.
(WebCore::SourceBufferPrivateAVFObjC::append): re-schedule the append task immediately to ensure
that processed packets flushed on the parser queue during abort are handled in the right order on
the main thread.
(WebCore::SourceBufferPrivateAVFObjC::appendCompleted): Check that abort wasn't called since append started
to ensure that no updateend event is incorrectly fired twice.
(WebCore::SourceBufferPrivateAVFObjC::abort): Abort is now a no-op that only set the m_abortCalled member.
(WebCore::SourceBufferPrivateAVFObjC::resetParserState): Change the order of operations so that the
SourceBufferParser is only reset after it has finished processing its data.
(WebCore::SourceBufferPrivateAVFObjC::destroyStreamDataParser): Use rename method.
(WebCore::SourceBufferPrivateAVFObjC::removedFromMediaSource): Use rename method.
(WebCore::SourceBufferPrivateAVFObjC::streamDataParser const): Renamed method from "parser"
(WebCore::SourceBufferPrivateAVFObjC::attemptToDecrypt): Use renamed method.

  • platform/graphics/cocoa/SourceBufferParser.cpp:

(WebCore::callOnMainThreadCallback): Move dispatch method from SourceBufferParserWebM
(WebCore::SourceBufferParser::setCallOnClientThreadCallback):
(WebCore::SourceBufferParser::SourceBufferParser):

  • platform/graphics/cocoa/SourceBufferParser.h:
  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::SourceBufferParserWebM::SourceBufferParserWebM):
(WebCore::SourceBufferParserWebM::resetParserState): Don't clear the data set by parsing
the previous init segment. Set the parsing state to waiting for a new segment if an
init segment has been fully parsed.
(WebCore::SourceBufferParserWebM::OnElementEnd):
(WebCore::SourceBufferParserWebM::OnEbml):
(WebCore::SourceBufferParserWebM::VideoTrackData::reset):
(WebCore::SourceBufferParserWebM::VideoTrackData::consumeFrameData):
(WebCore::SourceBufferParserWebM::AudioTrackData::reset):

  • platform/graphics/cocoa/SourceBufferParserWebM.h:

LayoutTests:

  • media/media-source/content/test-fragmented-video-manifest.json: Added.
  • media/media-source/content/test-fragmented-video.mp4: Added.
  • media/media-source/media-mp4-h264-partial-abort-expected.txt: Added.
  • media/media-source/media-mp4-h264-partial-abort.html: Added.
  • media/media-source/media-webm-opus-partial-abort-expected.txt: Added.
  • media/media-source/media-webm-opus-partial-abort.html: Added.
  • media/media-source/media-webm-opus-partial.html: fix title.
  • media/media-source/media-webm-vorbis-partial.html: fix title.
  • platform/mac/TestExpectations:
8:21 PM Changeset in webkit [279903] by rmorisset@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Invalid machine code emitted by SpeculativeJIT::emitObjectOrOtherBranch
https://bugs.webkit.org/show_bug.cgi?id=227869
<rdar://problem/80457566>

Reviewed by Mark Lam.

SpeculativeJIT::emitObjectOrOtherBranch used to check the validity of the masqueradesAsUndefined watchpoint twice, and assumed that it could not change in between.
That is clearly incorrect as the main thread is running concurrently with it, and so the watchpoint could fire at any time.
The fix is trivial: just check the validity once, and store the result in a boolean.
If the watchpoint triggers later that is fine: we'll notice and cancel the compilation (see WatchpointCollectionPhase, Plan::isStillValid() and Plan::finalize()).
The change only protects us from rare and hard-to-reproduce crashes on debug builds caused by an ASSERT firing.

I did not add a testcase, as I can only reproduce the bug by adding an extra wait in the middle of emitObjectOrOtherBranch.

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::emitObjectOrOtherBranch):

7:42 PM Changeset in webkit [279902] by Wenson Hsieh
  • 5 edits in trunk/Source/WebKit

[WK2] Push OS state dumping logic down from WebProcess to AuxiliaryProcess
https://bugs.webkit.org/show_bug.cgi?id=227916

Reviewed by Tim Horton.

Refactor state dumping registration code in preparation for supporting state dumping in the GPU process on Cocoa
platforms when triggering system diagnostics. The logic that currently lives in
WebProcess::registerWithStateDumper is comprised of two parts: (1) code that calls os_state_add_handler with
a os_state_data_t provider, and (2) code that builds a dictionary containing diagnostic information specific
to the web process.

Since GPUProcess will require only the former, we hoist logic for (1) into the superclass (AuxiliaryProcess) so
that both GPUProcess and WebProcess can invoke it, and refactor (2) to be a virtual method that may be
overridden by subclasses to provide process-specific information.

  • Shared/AuxiliaryProcess.h:

(WebKit::AuxiliaryProcess::additionalStateForDiagnosticReport const):

  • Shared/Cocoa/AuxiliaryProcessCocoa.mm:

(WebKit::AuxiliaryProcess::registerWithStateDumper):

Additionally make this take the title string that will be used to label the state data, to avoid the need for a
second subclassing method to provide the title.

  • WebProcess/WebProcess.h:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::additionalStateForDiagnosticReport const):

Pull logic for collecting diagnostic information in the web process out into a separate helper method.

(WebKit::WebProcess::platformInitializeProcess):
(WebKit::WebProcess::registerWithStateDumper): Deleted.

6:19 PM WebKitGTK/2.32.x edited by clopez@igalia.com
(diff)
5:36 PM Changeset in webkit [279901] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[iOS] imported/w3c/web-platform-tests/css/conditional/idlharness.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=227931.

Unreviewed test gardening.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-13

  • platform/ios-wk2/TestExpectations:
5:24 PM Changeset in webkit [279900] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[Mac wk2] inspector/canvas/setShaderProgramDisabled.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=227922.

Unreviewed test gardening.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-13

  • platform/mac-wk2/TestExpectations:
5:00 PM Changeset in webkit [279899] by Alan Coon
  • 1 copy in tags/Safari-612.1.22.11.4

Tag Safari-612.1.22.11.4.

4:58 PM Changeset in webkit [279898] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitscmpy] Handle failed git log process
https://bugs.webkit.org/show_bug.cgi?id=227709
<rdar://problem/80520002>

Rubber-stamped by Aakash Jain.

  • Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:

(Git.Cache.populate): Do not populate cache if git log fails.

4:56 PM Changeset in webkit [279897] by Alan Coon
  • 8 edits in branches/safari-612.1.22.11-branch/Source

Versioning.

WebKit-7612.1.22.11.4

3:55 PM Changeset in webkit [279896] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION(r279069): http/tests/websocket/tests/hybi/too-long-payload.html is a constant timeout when using NSURLSESSION_WEBSOCKET
https://bugs.webkit.org/show_bug.cgi?id=227923
<rdar://80343436>

Reviewed by Chris Dumez.

We need to add a large maximum frame size that was first introduced to WebKit in r91243
Covered by existing tests.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::createWebSocketTask):

3:54 PM Changeset in webkit [279895] by achristensen@apple.com
  • 15 edits
    1 delete in trunk

Update and fix URL WPT tests
https://bugs.webkit.org/show_bug.cgi?id=227820

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/url/failure-expected.txt:
  • web-platform-tests/url/resources/a-element-origin.js:

(runURLTests):

  • web-platform-tests/url/resources/a-element.js:

(runURLTests):

  • web-platform-tests/url/resources/setters_tests.json:
  • web-platform-tests/url/resources/urltestdata.json:
  • web-platform-tests/url/url-constructor.any-expected.txt:
  • web-platform-tests/url/url-constructor.any.js:

(bURL):

  • web-platform-tests/url/url-constructor.any.worker-expected.txt:
  • web-platform-tests/url/url-origin.any.js:

(bURL):

  • web-platform-tests/url/url-setters-a-area.window-expected.txt:
  • web-platform-tests/url/url-setters.any-expected.txt:
  • web-platform-tests/url/url-setters.any.worker-expected.txt:

Source/WTF:

There was an edge case where if we set a path to an empty string, it would add a slash. No more.

  • wtf/URL.cpp:

(WTF::URL::setPath):

3:40 PM Changeset in webkit [279894] by Chris Dumez
  • 10 edits
    6 copies
    26 moves
    99 adds
    3 deletes in trunk/LayoutTests

Resync webmessaging WPT tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=227919

Reviewed by Geoffrey Garen.

Resync webmessaging WPT tests from upstream 42c571ee2ec9742f0c46ca.

  • resources/resource-files.json:
  • web-platform-tests/webmessaging/*: Updated.
2:54 PM Changeset in webkit [279893] by Truitt Savell
  • 5 edits in trunk/LayoutTests

Creating or modifying expectations for many test failing on Monterey

Unreviewed test gardening.

2:53 PM Changeset in webkit [279892] by commit-queue@webkit.org
  • 4 edits in trunk

Remove USE_64KB_PAGE_BLOCK
https://bugs.webkit.org/show_bug.cgi?id=227905

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-07-13
Reviewed by Yusuke Suzuki.

.:

I added the USE_64KB_PAGE_BLOCK build option in bug #217989 for use by RHEL. But going
forward, I don't need it anymore, and can maintain it downstream where it is needed. (This
option might also be useful to SUSE, but they already don't use it, so won't miss it.)

I've seen users who don't understand the consequences of this option enabling it on x86_64,
even though there are serious negative consequences and zero benefits to using it. So let's
get rid of it.

  • Source/cmake/WebKitFeatures.cmake:

Source/WTF:

  • wtf/PageBlock.h:
2:08 PM Changeset in webkit [279891] by Peng Liu
  • 2 edits in trunk/Source/WebKit

[GPUP] RemoteMediaPlayerProxy may not send the latest "naturalSize" to MediaPlayerPrivateRemote
https://bugs.webkit.org/show_bug.cgi?id=227894

Reviewed by Jer Noble.

When a MediaPlayerPrivateMediaSourceAVFObjC in the GPU process changes its naturalSize,
the new value will be sent to the WebContent process in the IPC message
MediaPlayerPrivateRemote::SizeChanged. However, RemoteMediaPlayerProxy won't update
m_cachedState.naturalSize. So the next MediaPlayerPrivateRemote::UpdateCachedState
message will use the old naturalSize and the WebContent process will drop the correct value
after receiving the message.

  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::mediaPlayerSizeChanged):

1:56 PM Changeset in webkit [279890] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Unreviewed, reverting r279647.
<rdar://80519938>

Introduced a crash

Reverted changeset:

"XPC services should release their os transaction when given a
SIGTERM signal"
https://bugs.webkit.org/show_bug.cgi?id=227747
https://commits.webkit.org/r279647

1:38 PM Changeset in webkit [279889] by Yijia Huang
  • 13 edits in trunk/Source/JavaScriptCore

Add a new Air::Arg kind ZeroReg to let AIR recognise the new instructions/forms accepting zero register in ARM64
https://bugs.webkit.org/show_bug.cgi?id=227510

Reviewed by Saam Barati.

B3 is designed to be portable to many kinds of CPUs. However, to effectively
compile code to different CPUs, the compiler must eventually make explicit
instruction set details. Then, Air is introduced, and it is designed to target
individual CPU architectures and generate instructions specific to those CPUs.

Previously, Air don't recognize the zero register. This problem has been pointed
out in #174821, which was trying to introduce the new opcodes to handle the zero
register.

To solve this problem in a modular reasoning approach, a new Air operand ZeroReg
should be introduced. Its goal is to closely match the CPU instructions
accepting the zero register in ARM64. Another reason is that the new overloads
of the instructions taking the zero register can benefit instruction selection
with this implementation.

Here, the ZeroReg is added as a new kind for Air::Arg, which acts as a "high
level" operand to be emitted with the associative opcodes. In ARM64, the ZeroReg
would be emitted as a zero register.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::storeZero64): Deleted.
(JSC::MacroAssemblerARM64::storeZero32): Deleted.
(JSC::MacroAssemblerARM64::storeZero16): Deleted.

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::storeZero32): Deleted.
(JSC::MacroAssemblerX86Common::storeZero16): Deleted.

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::storeZero64): Deleted.

  • b3/B3LowerToAir.cpp:
  • b3/air/AirArg.cpp:

(JSC::B3::Air::Arg::jsHash const):
(JSC::B3::Air::Arg::dump const):
(WTF::printInternal):

  • b3/air/AirArg.h:

(JSC::B3::Air::Arg::zeroReg):
(JSC::B3::Air::Arg::isZeroReg const):
(JSC::B3::Air::Arg::isGP const):
(JSC::B3::Air::Arg::isFP const):
(JSC::B3::Air::Arg::isValidForm const):
(JSC::B3::Air::Arg::asZeroReg const):

  • b3/air/AirLowerStackArgs.cpp:

(JSC::B3::Air::lowerStackArgs):

  • b3/air/AirOpcode.opcodes:
  • b3/air/opcode_generator.rb:
  • b3/testb3.h:
  • b3/testb3_1.cpp:

(run):

  • b3/testb3_3.cpp:

(testStoreZeroReg):

1:13 PM Changeset in webkit [279888] by Russell Epstein
  • 1 copy in tags/Safari-612.1.15.4.6

Tag Safari-612.1.15.4.6.

1:13 PM Changeset in webkit [279887] by commit-queue@webkit.org
  • 1 edit
    3 deletes in trunk/LayoutTests

[GLIB] Test gardening, remove platform specific expected files
https://bugs.webkit.org/show_bug.cgi?id=227908

These tests now pass with the generic expected files.
Unreviewed test gardening.

Patch by Arcady Goldmints-Orlov <agoldmints@igalia.com> on 2021-07-13

  • platform/glib/crypto/subtle/ec-generate-key-malformed-parameters-expected.txt: Removed.
  • platform/glib/imported/w3c/web-platform-tests/content-security-policy/frame-ancestors/frame-ancestors-nested-same-in-same-self-allow-expected.txt: Removed.
  • platform/wpe/crypto/subtle/ecdh-import-pkcs8-key-p521-validate-ecprivatekey-parameters-publickey-expected.txt: Removed.
  • platform/wpe/crypto/subtle/ecdsa-import-pkcs8-key-p521-validate-ecprivatekey-parameters-publickey-expected.txt: Removed.
12:43 PM Changeset in webkit [279886] by commit-queue@webkit.org
  • 4 edits in trunk

4K Referer should have tailing /

https://bugs.webkit.org/show_bug.cgi?id=227795

Patch by Alex Christensen <achristensen@webkit.org> on 2021-07-13
Reviewed by Chris Dumez.

Source/WebCore:

This matches the behavior of other browsers.
Covered by existing tests and web platform tests we haven't imported yet.

  • platform/network/ResourceRequestBase.cpp:

(WebCore::ResourceRequestBase::setHTTPReferrer):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/NetworkProcess.mm:

(TEST):

12:38 PM Changeset in webkit [279885] by Said Abou-Hallawa
  • 4 edits in trunk

[CG] REGRESSION(r278863): The destination rectangle is truncated when the sub-image is used
https://bugs.webkit.org/show_bug.cgi?id=227614
<rdar://79840643>

Reviewed by Simon Fraser.

Source/WebCore:

This patch gets the calculation of the destRect in the case of the sub-
image as it was before r278863.

The size of the destRect has to be equal to the backend size of the
ImageBuffer in logical coordinates.

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContextCG::drawNativeImage):

Tools:

Add an API test to test drawing an ImageBuffer into another and both
have the logicalSize scaled such that they have pixels.

  • TestWebKitAPI/Tests/WebCore/ImageBufferTests.cpp:

(TestWebKitAPI::TEST):

12:35 PM Changeset in webkit [279884] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] imported/w3c/web-platform-tests/webrtc/RTCDtlsTransport-state.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=227910.

Unreviewed test gardening.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-13

  • platform/mac-wk2/TestExpectations:
12:28 PM Changeset in webkit [279883] by Kyle Piddington
  • 10 edits in trunk/Source

rAF driven WebGL submits excessive amount of GPU work when frames are slow
https://bugs.webkit.org/show_bug.cgi?id=227059

Reviewed by Dean Jackson.

Advertise GL_ARB_sync for the Metal backend.

Since GL_ARB_sync is core in OpenGL ES 3.0 and the Metal backend advertises OpenGL ES 3.0,
the API must be working already.

Limit in-flight WebGL frames to three frames. Do not continue preparation for display

until the commands for the oldest frame have been executed by the GPU.

This limits the impact slow frames have, especially in the

case where the compositor skip frames and WebKit would issue a new slow frame
on top of the skipped frame.

Source/ThirdParty/ANGLE:

An additional change ensures that Nvidia configs, which do not support MTLEvents
to a level of conformance required (See http://crbug.com/1136673), continue to run. The more powerful eGPUs will not experience throttling to the same level as integrated GPUS.

  • src/libANGLE/renderer/metal/DisplayMtl.mm:

(rx::DisplayMtl::initializeExtensions const):

Source/WebCore:

An additional change ensures that Nvidia configs, which do not support MTLEvents
to a level of conformance required (See http://crbug.com/1136673), continue to run. The more powerful eGPUs will not experience throttling to the same level as integrated GPUS.

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/GraphicsContextGLAttributes.h:
  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLOpenGL::waitAndUpdateOldestFrame):

  • platform/graphics/angle/GraphicsContextGLANGLEUtilities.h:

(WebCore::ScopedGLFence::ScopedGLFence):
(WebCore::ScopedGLFence::~ScopedGLFence):
(WebCore::ScopedGLFence::operator=):
(WebCore::ScopedGLFence::reset):
(WebCore::ScopedGLFence::abandon):
(WebCore::ScopedGLFence::fenceSync):
(WebCore::ScopedGLFence::operator GLsync const):
(WebCore::ScopedGLFence::operator bool const):

  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:

(WebCore::InitializeEGLDisplay):
(WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL):
(WebCore::GraphicsContextGLOpenGL::~GraphicsContextGLOpenGL):
(WebCore::GraphicsContextGLOpenGL::prepareForDisplay):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
12:20 PM Changeset in webkit [279882] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[iOS] http/tests/appcache/fail-on-update.html is a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=227891

Unreviewed test gardening.

Patch by Ayumi Kojima <Ayumi Kojima> on 2021-07-13

  • platform/ios-wk2/TestExpectations:
12:18 PM Changeset in webkit [279881] by Chris Dumez
  • 10 edits in trunk

Revoking Blob URL after calling XMLHttpRequest::open() causes the XHR to fail
https://bugs.webkit.org/show_bug.cgi?id=227821

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that more checks are passing.

  • web-platform-tests/FileAPI/url/url-with-xhr.any-expected.txt:
  • web-platform-tests/FileAPI/url/url-with-xhr.any.worker-expected.txt:

Source/WebCore:

Revoking Blob URL after calling XMLHttpRequest::open() causes the XHR to fail. This doesn't match the behavior of
other browsers and is causing WebKit to fail one of the subtests on:

XMLHttpRequest::open() now extends the lifetime of the Blob URL as necessary in order to complete the load.

No new tests, rebaselined existing tests.

  • fileapi/BlobURL.cpp:

(WebCore::URLWithBlobURLLifetimeExtension::URLWithBlobURLLifetimeExtension):
(WebCore::URLWithBlobURLLifetimeExtension::~URLWithBlobURLLifetimeExtension):

  • fileapi/BlobURL.h:

(WebCore::BlobURLLifeTimeExtender::url const):

  • loader/PolicyChecker.cpp:

(WebCore::FrameLoader::PolicyChecker::extendBlobURLLifetimeIfNecessary const):
(WebCore::FrameLoader::PolicyChecker::checkNavigationPolicy):

  • loader/PolicyChecker.h:
  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::XMLHttpRequest):
(WebCore::XMLHttpRequest::setResponseType):
(WebCore::XMLHttpRequest::open):
(WebCore::XMLHttpRequest::prepareToSend):
(WebCore::XMLHttpRequest::send):
(WebCore::XMLHttpRequest::createRequest):

  • xml/XMLHttpRequest.h:
11:50 AM Changeset in webkit [279880] by Russell Epstein
  • 8 edits in branches/safari-612.1.15.4-branch/Source

Versioning.

WebKit-7612.1.15.4.6

10:58 AM Changeset in webkit [279879] by Kate Cheney
  • 3 edits in trunk/Source/WebKit

Unreviewed iOS/tvOS/watchOS build fix.

  • UIProcess/API/APIPageConfiguration.cpp:

(API::PageConfiguration::copy const):

  • UIProcess/API/APIPageConfiguration.h:
10:43 AM Changeset in webkit [279878] by Truitt Savell
  • 2 edits in trunk/LayoutTests

REGRESSION: [wk2 Debug] accessibility/table-title.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=227504

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
10:10 AM Changeset in webkit [279877] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Regression(r279601) ProcessAssertion may get destroyed on a background thread
https://bugs.webkit.org/show_bug.cgi?id=227875
<rdar://76972252>

Reviewed by Geoffrey Garen.

r279601 added an internal WorkQueue to ProcessAssertion, so that we could acquire the RunningBoard assertion
asynchronously on the background queue. When dispatching to the background queue, we capture |protectedThis|,
which means that ProcessAssertion may now get destroyed on the background queue. To address the isuse, we
now make sure to dispatch |protectedThis| back to the main thread in acquireAsync().

  • UIProcess/ios/ProcessAssertionIOS.mm:

(WebKit::ProcessAssertion::acquireAsync):

10:05 AM Changeset in webkit [279876] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

[results.webkit.org] linkify urls in commit messages
https://bugs.webkit.org/show_bug.cgi?id=227549
<rdar://problem/79988762>

Patch by Kevin Neal <kevin_neal@apple.com> on 2021-07-13
Reviewed by Jonathan Bedard.

  • Scripts/libraries/resultsdbpy/resultsdbpy/view/static/js/commit.js:

(thead.tbody.rows.map.):
(thead.tbody.rows.map):
(CommitTable):

  • Scripts/libraries/resultsdbpy/resultsdbpy/view/static/js/common.js:
9:46 AM Changeset in webkit [279875] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[build.webkit.org] Upload layout-tests results immediately after running layout-tests
https://bugs.webkit.org/show_bug.cgi?id=227889

Reviewed by Carlos Alberto Lopez Perez.

  • CISupport/build-webkit-org/factories.py:
9:40 AM Changeset in webkit [279874] by Kate Cheney
  • 11 edits
    11 copies
    13 moves
    3 adds in trunk

Allow layout tests to specify app initiated loads or not
https://bugs.webkit.org/show_bug.cgi?id=227825
<rdar://problem/80355582>

Reviewed by Brent Fulgham.

Source/WebKit:

Tests: http/tests/app-privacy-report/app-attribution-load-url.html

http/tests/app-privacy-report/app-attribution-ping-load.html
http/tests/app-privacy-report/app-attribution-post-request.html
http/tests/app-privacy-report/app-attribution-preflight-async.html
http/tests/app-privacy-report/app-attribution-preflight-sync.html
http/tests/app-privacy-report/app-attribution-speculative-revalidation.html
http/tests/app-privacy-report/user-attribution-load-url.html
http/tests/app-privacy-report/user-attribution-ping-load.html
http/tests/app-privacy-report/user-attribution-post-request.html
http/tests/app-privacy-report/user-attribution-preflight-async.html
http/tests/app-privacy-report/user-attribution-preflight-sync.html
http/tests/app-privacy-report/user-attribution-speculative-revalidation.html

Add a parameter to the WebView configuration that allows a test to
override the default NSURLRequest attribution value. We don't need
this to be dynamic per-test, so we can store it in the configuration.

  • UIProcess/API/APIPageConfiguration.cpp:

(API::PageConfiguration::copy const):

  • UIProcess/API/APIPageConfiguration.h:

(API::PageConfiguration::appInitiatedOverrideValueForTesting const):
(API::PageConfiguration::setAppInitiatedOverrideValueForTesting):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(toWKAttributionOverrideTesting):
(toAttributionOverrideTesting):
(-[WKWebViewConfiguration _setAppInitiatedOverrideValueForTesting:]):
(-[WKWebViewConfiguration _appInitiatedOverrideValueForTesting]):

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::setLastNavigationWasAppInitiated):

Tools:

Add a test option that specifies whether the test should mark the
main page navigation as app-initiated or not.

  • WebKitTestRunner/TestOptions.cpp:

(WTR::TestOptions::defaults):
(WTR::TestOptions::keyTypeMapping):

  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::isAppInitiated const):

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::platformCreateWebView):

LayoutTests:

Added new tests to cover the user initiated case.

  • http/tests/app-privacy-report/app-attribution-load-url-expected.txt: Renamed from LayoutTests/http/tests/app-privacy-report/attribution-load-url-expected.txt.
  • http/tests/app-privacy-report/app-attribution-load-url.html: Copied from LayoutTests/http/tests/app-privacy-report/attribution-load-url.html.
  • http/tests/app-privacy-report/app-attribution-ping-load-expected.txt: Copied from LayoutTests/http/tests/app-privacy-report/attribution-ping-load-expected.txt.
  • http/tests/app-privacy-report/app-attribution-ping-load.html: Copied from LayoutTests/http/tests/app-privacy-report/attribution-ping-load.html.
  • http/tests/app-privacy-report/app-attribution-post-request-expected.txt: Renamed from LayoutTests/http/tests/app-privacy-report/attribution-post-request-expected.txt.
  • http/tests/app-privacy-report/app-attribution-post-request.html: Copied from LayoutTests/http/tests/app-privacy-report/attribution-post-request.html.
  • http/tests/app-privacy-report/app-attribution-preflight-async-expected.txt: Copied from LayoutTests/http/tests/app-privacy-report/attribution-preflight-async-expected.txt.
  • http/tests/app-privacy-report/app-attribution-preflight-async.html: Copied from LayoutTests/http/tests/app-privacy-report/attribution-preflight-async.html.
  • http/tests/app-privacy-report/app-attribution-preflight-sync-expected.txt: Copied from LayoutTests/http/tests/app-privacy-report/attribution-preflight-sync-expected.txt.
  • http/tests/app-privacy-report/app-attribution-preflight-sync.html: Copied from LayoutTests/http/tests/app-privacy-report/attribution-preflight-sync.html.
  • http/tests/app-privacy-report/app-attribution-speculative-revalidation-expected.txt: Copied from LayoutTests/http/tests/app-privacy-report/attribution-speculative-revalidation-expected.txt.
  • http/tests/app-privacy-report/app-attribution-speculative-revalidation.html: Copied from LayoutTests/http/tests/app-privacy-report/attribution-speculative-revalidation.html.
  • http/tests/app-privacy-report/resources/app-initiated-post.py: Copied from LayoutTests/http/tests/app-privacy-report/resources/post.py.
  • http/tests/app-privacy-report/resources/user-initiated-post.py: Renamed from LayoutTests/http/tests/app-privacy-report/resources/post.py.
  • http/tests/app-privacy-report/user-attribution-load-url-expected.txt: Added.
  • http/tests/app-privacy-report/user-attribution-load-url.html: Renamed from LayoutTests/http/tests/app-privacy-report/attribution-load-url.html.
  • http/tests/app-privacy-report/user-attribution-ping-load-expected.txt: Renamed from LayoutTests/http/tests/app-privacy-report/attribution-ping-load-expected.txt.
  • http/tests/app-privacy-report/user-attribution-ping-load.html: Renamed from LayoutTests/http/tests/app-privacy-report/attribution-ping-load.html.
  • http/tests/app-privacy-report/user-attribution-post-request-expected.txt: Added.
  • http/tests/app-privacy-report/user-attribution-post-request.html: Renamed from LayoutTests/http/tests/app-privacy-report/attribution-post-request.html.
  • http/tests/app-privacy-report/user-attribution-preflight-async-expected.txt: Renamed from LayoutTests/http/tests/app-privacy-report/attribution-preflight-async-expected.txt.
  • http/tests/app-privacy-report/user-attribution-preflight-async.html: Renamed from LayoutTests/http/tests/app-privacy-report/attribution-preflight-async.html.
  • http/tests/app-privacy-report/user-attribution-preflight-sync-expected.txt: Renamed from LayoutTests/http/tests/app-privacy-report/attribution-preflight-sync-expected.txt.
  • http/tests/app-privacy-report/user-attribution-preflight-sync.html: Renamed from LayoutTests/http/tests/app-privacy-report/attribution-preflight-sync.html.
  • http/tests/app-privacy-report/user-attribution-speculative-revalidation-expected.txt: Renamed from LayoutTests/http/tests/app-privacy-report/attribution-speculative-revalidation-expected.txt.
  • http/tests/app-privacy-report/user-attribution-speculative-revalidation.html: Renamed from LayoutTests/http/tests/app-privacy-report/attribution-speculative-revalidation.html.
  • http/tests/navigation/resources/check-ping-user-initiated-data.py: Added.
9:33 AM Changeset in webkit [279873] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GStreamer] Allow runtime opt-out of GL rendering
https://bugs.webkit.org/show_bug.cgi?id=227873

Patch by Philippe Normand <pnormand@igalia.com> on 2021-07-13
Reviewed by Xabier Rodriguez-Calvar.

In some cases GL rendering is not really useful, such as on machines without GPU. In those
cases currently Mesa's llvmpipe is used, introducing CPU and RAM usage increase compared to
the non-gl rendering path. For these cases the user can set a new env var,
WEBKIT_GST_DISABLE_GL_SINK=1, allowing the player to use the Cairo sink.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::createVideoSinkGL):

7:19 AM Changeset in webkit [279872] by Carlos Garcia Campos
  • 33 edits
    2 adds in trunk

[GTK][WPE] Expose support for client certificate auth
https://bugs.webkit.org/show_bug.cgi?id=200805

Reviewed by Michael Catanzaro.

.:

Bump libsoup3 required version.

  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsWPE.cmake:

Source/WebCore:

  • platform/Soup.cmake:
  • platform/SourcesSoup.txt:
  • platform/network/Credential.h:
  • platform/network/ProtectionSpaceBase.cpp:

(WebCore::ProtectionSpaceBase::isPasswordBased const):

  • platform/network/ProtectionSpaceBase.h:
  • platform/network/soup/AuthenticationChallenge.h:
  • platform/network/soup/AuthenticationChallengeSoup.cpp:

(WebCore::protectionSpaceForClientCertificate):
(WebCore::AuthenticationChallenge::AuthenticationChallenge):
(WebCore::protectionSpaceForClientCertificatePassword):
(WebCore::AuthenticationChallenge::platformCompare):

  • platform/network/soup/CertificateInfoSoup.cpp:

(WebCore::CertificateInfo::isolatedCopy const):

  • platform/network/soup/CredentialSoup.cpp: Added.

(WebCore::Credential::Credential):
(WebCore::m_certificate):
(WebCore::Credential::isEmpty const):
(WebCore::Credential::platformCompare):

  • platform/network/soup/CredentialSoup.h: Added.

(WebCore::Credential::Credential):
(WebCore::Credential::encodingRequiresPlatformData const):
(WebCore::Credential::certificate const):

  • platform/network/soup/NetworkStorageSessionSoup.cpp:

(WebCore::authTypeFromProtectionSpaceAuthenticationScheme):

Source/WebKit:

Add new API to handle certificate and pin certificate authentication requests.

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::createRequest):
(WebKit::NetworkDataTaskSoup::completeAuthentication):
(WebKit::NetworkDataTaskSoup::cancelAuthentication):
(WebKit::NetworkDataTaskSoup::authenticate):
(WebKit::NetworkDataTaskSoup::continueAuthenticate):
(WebKit::NetworkDataTaskSoup::requestCertificateCallback):
(WebKit::NetworkDataTaskSoup::requestCertificatePasswordCallback):

  • NetworkProcess/soup/NetworkDataTaskSoup.h:
  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<AuthenticationChallenge>::encode):
(IPC::ArgumentCoder<AuthenticationChallenge>::decode):

  • Shared/glib/ArgumentCodersGLib.cpp:

(IPC::ArgumentCoder<GRefPtr<GTlsCertificate>>::encode):
(IPC::ArgumentCoder<GRefPtr<GTlsCertificate>>::decode):

  • Shared/soup/WebCoreArgumentCodersSoup.cpp:

(IPC::ArgumentCoder<Credential>::encodePlatformData):
(IPC::ArgumentCoder<Credential>::decodePlatformData):

  • UIProcess/API/glib/WebKitAuthenticationRequest.cpp:

(webkit_authentication_request_get_certificate_pin_flags):

  • UIProcess/API/glib/WebKitCredential.cpp:

(webkit_credential_new_for_certificate_pin):
(webkit_credential_new_for_certificate):
(webkit_credential_get_certificate):

  • UIProcess/API/gtk/WebKitAuthenticationRequest.h:
  • UIProcess/API/gtk/WebKitCredential.h:
  • UIProcess/API/gtk/WebKitWebViewGtk.cpp:

(webkitWebViewAuthenticate):

  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
  • UIProcess/API/wpe/WebKitAuthenticationRequest.h:
  • UIProcess/API/wpe/WebKitCredential.h:
  • UIProcess/API/wpe/docs/wpe-1.0-sections.txt:

Tools:

Add a simple implementation in MiniBrowser using a file chooser to ask for the certificate from a file and unit
tests for the client certificate request. Unfortunately we can't easily test pin certificates.

  • MiniBrowser/gtk/BrowserTab.c:

(certificateDialogResponse):
(webViewAuthenticate):
(browserTabConstructed):

  • TestWebKitAPI/Tests/WebKitGLib/TestSSL.cpp:

(ClientSideCertificateTest::acceptCertificateCallback):
(ClientSideCertificateTest::requestStartedCallback):
(ClientSideCertificateTest::authenticateCallback):
(ClientSideCertificateTest::ClientSideCertificateTest):
(ClientSideCertificateTest::~ClientSideCertificateTest):
(ClientSideCertificateTest::authenticate):
(ClientSideCertificateTest::acceptCertificate):
(ClientSideCertificateTest::waitForAuthenticationRequest):
(testClientSideCertificate):
(beforeAll):

  • TestWebKitAPI/Tests/WebKitGLib/WebExtensionTest.cpp:
  • TestWebKitAPI/glib/WebKitGLib/WebKitTestServer.h:

(WebKitTestServer::soupServer const):

5:54 AM Changeset in webkit [279871] by commit-queue@webkit.org
  • 1 edit
    3 deletes in trunk/LayoutTests

Unreviewed, reverting r279705.
https://bugs.webkit.org/show_bug.cgi?id=227903

Added a broken test

Reverted changeset:

"Only first set-cookie HTTP header in websocket http response
is accepted"
https://bugs.webkit.org/show_bug.cgi?id=227739
https://commits.webkit.org/r279705

4:44 AM Changeset in webkit [279870] by commit-queue@webkit.org
  • 5 edits in trunk/LayoutTests

[GLIB] Update baselines after r279673
https://bugs.webkit.org/show_bug.cgi?id=227886

Unreviewed test gardening.

Patch by Arcady Goldmints-Orlov <agoldmints@igalia.com> on 2021-07-13

  • platform/gtk/fast/multicol/vertical-lr/float-multicol-expected.txt:
  • platform/gtk/fast/multicol/vertical-lr/nested-columns-expected.txt:
  • platform/wpe/fast/multicol/vertical-lr/float-multicol-expected.txt:
  • platform/wpe/fast/multicol/vertical-lr/nested-columns-expected.txt:
1:17 AM Changeset in webkit [279869] by commit-queue@webkit.org
  • 5 edits in trunk

RenderLayerScrollableArea::updateScrollPosition assumes that it can scroll to the targeted scroll position
https://bugs.webkit.org/show_bug.cgi?id=227803

Patch by Martin Robinson <mrobinson@igalia.com> on 2021-07-13
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-scroll-snap/nested-scrollIntoView-snaps-expected.txt: Update test result to reflect newly passing test.

Source/WebCore:

No new tests. This is covered by an existing WPT test:

  • web-platform-tests/css/css-scroll-snap/nested-scrollIntoView-snaps.html
  • rendering/RenderLayerScrollableArea.cpp:

(WebCore::RenderLayerScrollableArea::scrollToOffset): Modified this method to return the snapped
scroll offset.
(WebCore::RenderLayerScrollableArea::updateScrollPosition): Instead of using the original target offset,
use the return value from scrollToOffset to adjust the output rectangle.

  • rendering/RenderLayerScrollableArea.h: Update the method definition.
12:52 AM Changeset in webkit [279868] by mmaxfield@apple.com
  • 4 edits
    3 adds in trunk

PUA characters have the wrong advance in the fast text codepath
https://bugs.webkit.org/show_bug.cgi?id=227896
<rdar://problem/80037103>

Reviewed by Tim Horton.

Source/WebCore:

There were 2 problems:

  1. We were passing a UChar32 to this function:

static bool treatAsSpace(UChar c) { return c == ' ' ... }
This means that passing in U+10020 erroneously returns true

  1. Because of https://bugs.webkit.org/show_bug.cgi?id=221356,

if the prevous character is in SMP, our logic to determine
the previous advance would erroneously return 0.

Test: fast/text/pua-charactersTreatedAsSpace.html

  • platform/graphics/FontCascade.h:

(WebCore::FontCascade::treatAsSpace):
(WebCore::FontCascade::treatAsZeroWidthSpace):
(WebCore::FontCascade::treatAsZeroWidthSpaceInComplexScript):

  • platform/graphics/WidthIterator.cpp:

(WebCore::WidthIterator::advanceInternal):

LayoutTests:

  • fast/text/pua-charactersTreatedAsSpace-expected.html: Added.
  • fast/text/pua-charactersTreatedAsSpace.html: Added.
  • fast/text/resources/Ahem-10000A.ttf: Added.
12:39 AM Changeset in webkit [279867] by ysuzuki@apple.com
  • 34 edits
    218 copies
    356 adds in trunk

New malloc algorithm
https://bugs.webkit.org/show_bug.cgi?id=226404

Reviewed by Yusuke Suzuki.

Source/bmalloc:

This change replaces bmalloc with libpas, by importing libpas and making it expose API that
looks like the current bmalloc API. Libpas replaces everything bmalloc gave us: the main
bmalloc API, the Gigacage API, and the IsoHeap API. Libpas also replaces the JSC
ExecutableAllocator (more on that in the JSC ChangeLog). I've been working on libpas for about
three years, and you'll be able to see the age of some of it in the copyrights.

Libpas is a totally new malloc implementation that focuses on allowing for the creation of lots
of isolated heaps, and making it possible for those heaps to provide certain type guarantees.
I'm not going to summarize everything that it does in this changelog; I'll mostly focus on
things that are interesting to its use in WebKit.

Libpas tries hard to make having lots of heaps cheap both by having a good isolated heap
implementation and by offsetting the cost by having a bunch of space saving improvements for all
kinds of heaps. Libpas heaps can be configured to be either very compact or very fast. In
WebKit, we configure libpas to be as fast as possible, except for the jit_heap, where we
configure it to be as compact as possible. The fast configuration relies on the segregated heap
for most allocations, while the compact configuration relies on bitfit for most configurations.
It's possible to use both in combination with any size cut-off before you switch to bitfit.

Libpas's segregated heap is competitive to bmalloc in speed. This patch is a speed-up on AS, and
it's only enabled on AS for now. Libpas is still a regression relative to bmalloc on some
devices that I have measured, so it should probably stay enabled on AS only for now. This patch
ought to be a 1% speed-up on Speedometer and MotionMark and be neutral elsewhere.

When it comes to memory usage, libpas's segregated heap is a 19% improvement on membuster and a
11% improvement on RAMification on AS, with most other devices exhibiting similar wins if you
enable libpas on them.

Here's the basic design:

  • Libpas makes extreme use of generic programming in C, sometimes using macros, but mostly using a technique where ALWAYS_INLINE functions are passed structs with function pointers to other ALWAYS_INLINE functions, sometimes many layers deep. I've perfected this so that I can cause outlining to happen wherever I want without losing the specialization, and I can cause anything I want to become generic (i.e. it gets a pointer to that struct with function pointers and it really has to call them).

This allows libpas to have many copies of the same algorithm, but configured differently.
That's why, for example, I was able to make libpas's bitfit obey ExecutableAllocator rules
like that you cannot put any metadata inside the memory you're managing. That's also how
libpas "scales" it's algorithm: there are the small configurations, and then with a different
struct, we get the medium configurations (larger overall page size, ability to decommit each
physical page within the logical page), and the marge configurations (optimized for even
bigger object sizes).

  • Allocation uses thread-local caches that hold on to up to a page of memory. This is similar overall to bmalloc, but rather different in the details. When allocating from that memory (see bmalloc_heap_inlines.h, then pas_try_allocate_intrinsic_primitive.h, then pas_try_allocate_common.h, then pas_local_allocator_inlines.h), libpas uses either bump pointer or bit search. The bit search is optimized to death. Libpas does lots of clever things with bits: for example, each bit represents just a "minalign" worth of memory (so like 16 bytes), and bits are set at the beginnings of objects. Lots of interesting bit manipulation happens on the slow path to quickly turn this into a bitvector where the bits are set at free object beginnings, which is what the allocator consumes (see for example pas_local_allocator_scan_bits_to_set_up_free_bits() in pas_local_allocator_inlines.h). This saves libpas from having to use multiplications on the allocation and deallocation paths.

Allocation fast paths are super fast and require no locks. Slow paths use fine-grained
locking so the likelihood of contention is very low. Each page has a lock, and they do crazy
things with their locks: pages will all share the same lock so long as that's efficient, but
will pick up different locks if that causes contention, and then they will share the same
lock again if contention goes away.

Allocation caches can be reclaimed by the scavenger. This is done using an
ask-nicely-then-more-firmly kind of mechanism: first the scavenger will just ask allocators
that haven't been used in a while to return their memory, and the thread will service this
request on the next allocation slow path for any thread-local allocator. But if the thread
doesn't do this, then the scavenger will eventually suspend the thread and take its caches.

  • Deallocation uses a log. The log flush amortizes lock acquisition and memory access to libpas metadata. This is quite a bit like bmalloc. The differences are: libpas may acquire multiple locks during deallocation log flush, but because pages try to share locks, that usually doesn't happen. Usually, all pages that were most recently used by some CPU will share the same lock. The other difference is that the libpas scavenger can flush deallocation logs, and does so on every tick.

The design described so far is for the libpas segregated heap, which is the most
performance-optimized heap, as well as the heap most suited for isoheaps. Segregated heap has
many isoheap optimizations, like allowing multiple heaps to share different slabs of the same
page. But libpas also has two other heap kinds:

  • Bitfit. The bitfit heap uses a bit-per-minalign but uses it to implement first-fit. Allocation searches for a span of set "free" bits and then clears them. Deallocation uses a second bitvector, the "object ends" bits, to find the end of the object and then sets the whole range of free bits. This allocator uses per-page locking and a clever short-circuiting algorithm to find the first page that will have a contiguous slab of free memory big enough for the size you're trying to allocate. This is much slower than the segregated heap, but also much faster than the other option, which is the libpas large allocator. Bitfit is the most space-efficient heap in libpas, except for super large objects. The space efficiency comes from the fact that it's first-fit. It should be noted that segregated is also first-fit, but within size classes, so segregated gets more external fragmentation than bitfit.

This patch causes us to use bitfit for the mini mode. We also use bitfit for marge allocations
(so bigger than segregated medium but too small for large) and for jit_heap.

I think the most interesting file for bitfit is pas_bitfit_page_inlines.h.

  • Large. This is a first-fit allocator implemented using cartesian trees. Something special about it is that it can do type-safe array allocations with complex combinations of memalign. For example, you can tell it to create a heap that allocates arrays of a type whose size is 42, and then it will guarantee you that no matter how big or how small of an array you allocate, no element of that array will ever be an "offset overlap" with a previously freed element. So, it won't create any type confusions. It will guarantee this even if you did memalign with any alignment (I needed to use extended GCD for this -- see pas_extended_gcd.c and pas_coalign.c). The large algorithm is implemented generically (pas_generic_large_free_heap.h), so it can use either cartesian trees (pas_fast_large_free_heap.c) or just an array (pas_simple_large_free_heap.c). The large heap is used internally in libpas a lot, for example for the bootstrap heap, which is how all of libpas gets its memory. One particularly neat thing about this is that the bootstrap heap allocates a freelist array inside of the memory it is managing using a kind of wild metacircular design.

One of the main space saving features is that libpas has a fine-grained-locked LRU decommit
policy using a 10Hz scavenger thread. This scavenger incurs almost no perf cost but is able
to return a ton of memory. At any tick, it will decommit any totally free pages that haven't
been used in the last 300ms. This includes pages used for internal libpas metadata, like the
thread-local caches. Decommitting pages holds locks that other threads are unlikely to want to
grab (because of policies that actively avoid it), so decommit happens with minimal interference
to the running program.

Libpas is written in C and strongly assumes that the C compiler is modern enough to fixpoint
inlining of always-inline functions with the right other optimizations. Llvm does this, which
enables a wonderful style of generic programming. The fact that the same code can be used
for generic, specialized-and-inline, and specialized-but-out-of-line functions is great. I use
WebKit C++ style (so foo* p rather than foo *p) but with lower_case_identifiers for anything
that isn't a macro. Anything that isn't static is prefixed pas_, unless it's some specific
heap configuration, like the bmalloc one, which prefixes every non-static with bmalloc_.

Libpas includes a giant test suite. Lots of the heap configurations (iso_test, thingy,
minalign32, pagesize64k) are just for testing. The test suite has both unit tests and chaos
tests as well as everything in between. The test suite is written in C++.

This glues libpas into the DebugHeap mechanism in bmalloc, so Malloc=1 will give you system
malloc. Libpas supports libmalloc enumeration, and this patch exposes it (though you need a
shared cache rebuild to enjoy the benefits).

All of bmalloc's external-facing API are replaced with libpas when the BUSE(LIBPAS) flag is
set (so the bmalloc::XYZ functions, Gigacage::XYZ, and IsoHeap<> and friends). This also
exposes the jit_heap API for the ExecutableAllocator to use.

Notes for porting: this uses lots of Darwin APIs, like the APIs for getting an approximate time
very quickly, APIs for fast TLS, thread suspension, and probably other stuff. It'll be hard,
but possible, to port to Linux. It may never perform as well on Linux as it does on Darwin.
It's also worth noting that libpas strongly assumes 64-bit, that the CPU can do 128-bit
compare-and-swap, that there is no big downside to misaligned loads and stores, and that the
memory model is either the one in ARM64 or the one on x86_64 (or something not weaker than
either of them). Trying to make libpas work on 32-bit CPUs will quickly run into cases where
some pointer math doesn't work right because it was written strongly assuming properties
unique to 64-bit CPUs (like that some number of top bits are not used for the address), as well
as cases where lock-free algorithms are using uintptr_t for a versioning scheme (which may not
be as reliable as you want on 32-bit).

  • CMakeLists.txt:
  • Configurations/Base.xcconfig:
  • bmalloc.xcodeproj/project.pbxproj:
  • bmalloc/BPlatform.h:
  • bmalloc/DebugHeap.cpp:

(bmalloc::DebugHeap::tryGetSlow):
(pas_debug_heap_is_enabled):
(pas_debug_heap_malloc):
(pas_debug_heap_memalign):
(pas_debug_heap_realloc):
(pas_debug_heap_free):

  • bmalloc/DebugHeap.h:

(bmalloc::debugHeapDisabled):
(bmalloc::DebugHeap::tryGet):
(bmalloc::DebugHeap::getExisting):

  • bmalloc/Gigacage.cpp:

(Gigacage::ensureGigacage):
(Gigacage::allocBase):
(Gigacage::size):

  • bmalloc/Gigacage.h:
  • bmalloc/GigacageConfig.h:

(Gigacage::Config::allocBasePtr const):
(Gigacage::Config::setAllocBasePtr):
(Gigacage::Config::allocSize const):
(Gigacage::Config::setAllocSize):

  • bmalloc/Heap.cpp:

(bmalloc::Heap::gigacageSize):

  • bmalloc/Heap.h:
  • bmalloc/IsoHeap.cpp: Added.

(bmalloc::api::isoAllocate):
(bmalloc::api::isoTryAllocate):
(bmalloc::api::isoDeallocate):

  • bmalloc/IsoHeap.h:

(bmalloc::api::IsoHeap::IsoHeap):
(bmalloc::api::IsoHeap::allocate):
(bmalloc::api::IsoHeap::tryAllocate):
(bmalloc::api::IsoHeap::deallocate):
(bmalloc::api::IsoHeap::scavenge):
(bmalloc::api::IsoHeap::initialize):
(bmalloc::api::IsoHeap::isInitialized):

  • bmalloc/IsoHeapImplInlines.h:

(bmalloc::IsoHeapImpl<Config>::IsoHeapImpl):

  • bmalloc/IsoHeapInlines.h:
  • bmalloc/IsoMallocFallback.cpp: Added.

(bmalloc::IsoMallocFallback::tryMalloc):
(bmalloc::IsoMallocFallback::tryFree):

  • bmalloc/IsoMallocFallback.h: Copied from Source/bmalloc/bmalloc/DebugHeap.h.

(bmalloc::IsoMallocFallback::shouldTryToFallBack):
(bmalloc::IsoMallocFallback::MallocResult::MallocResult):

  • bmalloc/IsoTLS.cpp:

(bmalloc::IsoTLS::determineMallocFallbackState): Deleted.

  • bmalloc/IsoTLS.h:
  • bmalloc/IsoTLSInlines.h:

(bmalloc::IsoTLS::allocateSlow):
(bmalloc::IsoTLS::deallocateSlow):

  • bmalloc/PerThread.h:

(bmalloc::PerThreadStorage<PerHeapKind<Cache>>::init):

  • bmalloc/bmalloc.cpp:

(bmalloc::api::tryLargeZeroedMemalignVirtual):
(bmalloc::api::freeLargeVirtual):
(bmalloc::api::scavengeThisThread):
(bmalloc::api::scavenge):
(bmalloc::api::setScavengerThreadQOSClass):
(bmalloc::api::commitAlignedPhysical):
(bmalloc::api::decommitAlignedPhysical):
(bmalloc::api::enableMiniMode):
(bmalloc::api::disableScavenger):

  • bmalloc/bmalloc.h:

(bmalloc::api::heapForKind):
(bmalloc::api::tryMalloc):
(bmalloc::api::malloc):
(bmalloc::api::tryMemalign):
(bmalloc::api::memalign):
(bmalloc::api::tryRealloc):
(bmalloc::api::realloc):
(bmalloc::api::free):
(bmalloc::api::scavengeThisThread): Deleted.

  • libpas/.gitignore: Added.
  • libpas/build.sh: Added.
  • libpas/build_and_test.sh: Added.
  • libpas/common.sh: Added.
  • libpas/libpas.xcodeproj/project.pbxproj: Added.
  • libpas/scripts/tally_verifier_output: Added.
  • libpas/src/chaos/Chaos.cpp: Added.

(std::Object::Object):
(std::Packet::~Packet):
(std::Locker::Locker):
(std::Locker::~Locker):
(std::threadMain):
(main):

  • libpas/src/libpas/bmalloc_heap.c: Added.

(bmalloc_try_allocate):
(bmalloc_try_allocate_with_alignment):
(bmalloc_try_allocate_zeroed):
(bmalloc_allocate):
(bmalloc_allocate_with_alignment):
(bmalloc_allocate_zeroed):
(bmalloc_try_reallocate):
(bmalloc_reallocate):
(bmalloc_try_iso_allocate):
(bmalloc_iso_allocate):
(bmalloc_heap_ref_get_heap):
(bmalloc_try_allocate_auxiliary):
(bmalloc_allocate_auxiliary):
(bmalloc_try_allocate_auxiliary_zeroed):
(bmalloc_allocate_auxiliary_zeroed):
(bmalloc_try_allocate_auxiliary_with_alignment):
(bmalloc_allocate_auxiliary_with_alignment):
(bmalloc_try_reallocate_auxiliary):
(bmalloc_reallocate_auxiliary):
(bmalloc_deallocate):
(bmalloc_force_auxiliary_heap_into_reserved_memory):

  • libpas/src/libpas/bmalloc_heap.h: Added.
  • libpas/src/libpas/bmalloc_heap_config.c: Copied from Source/WTF/wtf/FastTLS.h.

(bmalloc_heap_config_activate):

  • libpas/src/libpas/bmalloc_heap_config.h: Added.
  • libpas/src/libpas/bmalloc_heap_inlines.h: Added.

(bmalloc_try_allocate_inline):
(bmalloc_try_allocate_with_alignment_inline):
(bmalloc_try_allocate_zeroed_inline):
(bmalloc_allocate_inline):
(bmalloc_allocate_with_alignment_inline):
(bmalloc_allocate_zeroed_inline):
(bmalloc_try_reallocate_inline):
(bmalloc_reallocate_inline):
(bmalloc_try_iso_allocate_inline):
(bmalloc_iso_allocate_inline):
(bmalloc_try_allocate_auxiliary_inline):
(bmalloc_allocate_auxiliary_inline):
(bmalloc_try_allocate_auxiliary_zeroed_inline):
(bmalloc_allocate_auxiliary_zeroed_inline):
(bmalloc_try_allocate_auxiliary_with_alignment_inline):
(bmalloc_allocate_auxiliary_with_alignment_inline):
(bmalloc_try_reallocate_auxiliary_inline):
(bmalloc_reallocate_auxiliary_inline):
(bmalloc_deallocate_inline):

  • libpas/src/libpas/bmalloc_heap_innards.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/bmalloc_heap_ref.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/hotbit_heap.c: Copied from Source/WTF/wtf/FastTLS.h.

(hotbit_try_allocate):
(hotbit_try_allocate_with_alignment):
(hotbit_try_reallocate):
(hotbit_deallocate):

  • libpas/src/libpas/hotbit_heap.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/hotbit_heap_config.c: Copied from Source/WTF/wtf/FastTLS.h.

(hotbit_heap_config_activate):

  • libpas/src/libpas/hotbit_heap_config.h: Added.
  • libpas/src/libpas/hotbit_heap_inlines.h: Added.

(hotbit_try_allocate_inline):
(hotbit_try_allocate_with_alignment_inline):
(hotbit_try_reallocate_inline):
(hotbit_deallocate_inline):

  • libpas/src/libpas/hotbit_heap_innards.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/iso_heap.c: Added.

(iso_try_allocate_common_primitive):
(iso_try_allocate_common_primitive_with_alignment):
(iso_try_allocate_common_primitive_zeroed):
(iso_allocate_common_primitive):
(iso_allocate_common_primitive_with_alignment):
(iso_allocate_common_primitive_zeroed):
(iso_try_reallocate_common_primitive):
(iso_reallocate_common_primitive):
(iso_try_allocate_dynamic_primitive):
(iso_try_allocate_dynamic_primitive_with_alignment):
(iso_try_allocate_dynamic_primitive_zeroed):
(iso_try_reallocate_dynamic_primitive):
(iso_heap_ref_construct):
(iso_try_allocate):
(iso_allocate):
(iso_try_allocate_array):
(iso_allocate_array):
(iso_try_allocate_array_zeroed):
(iso_allocate_array_zeroed):
(iso_try_reallocate_array):
(iso_reallocate_array):
(iso_heap_ref_get_heap):
(iso_primitive_heap_ref_construct):
(iso_try_allocate_primitive):
(iso_allocate_primitive):
(iso_try_allocate_primitive_zeroed):
(iso_allocate_primitive_zeroed):
(iso_try_allocate_primitive_with_alignment):
(iso_allocate_primitive_with_alignment):
(iso_try_reallocate_primitive):
(iso_reallocate_primitive):
(iso_try_allocate_for_objc):
(iso_has_object):
(iso_get_allocation_size):
(iso_get_heap):
(iso_deallocate):
(iso_force_primitive_heap_into_reserved_memory):

  • libpas/src/libpas/iso_heap.h: Added.
  • libpas/src/libpas/iso_heap_config.c: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/iso_heap_config.h: Added.
  • libpas/src/libpas/iso_heap_inlines.h: Added.

(iso_try_allocate_common_primitive_inline):
(iso_try_allocate_common_primitive_with_alignment_inline):
(iso_try_allocate_common_primitive_zeroed_inline):
(iso_allocate_common_primitive_inline):
(iso_allocate_common_primitive_with_alignment_inline):
(iso_allocate_common_primitive_zeroed_inline):
(iso_try_reallocate_common_primitive_inline):
(iso_reallocate_common_primitive_inline):
(iso_try_allocate_inline):
(iso_allocate_inline):
(iso_try_allocate_array_inline):
(iso_allocate_array_inline):
(iso_try_allocate_array_zeroed_inline):
(iso_allocate_array_zeroed_inline):
(iso_try_reallocate_array_inline):
(iso_reallocate_array_inline):
(iso_try_allocate_primitive_inline):
(iso_allocate_primitive_inline):
(iso_try_allocate_primitive_zeroed_inline):
(iso_allocate_primitive_zeroed_inline):
(iso_try_allocate_primitive_with_alignment_inline):
(iso_allocate_primitive_with_alignment_inline):
(iso_try_reallocate_primitive_inline):
(iso_reallocate_primitive_inline):
(iso_try_allocate_for_objc_inline):
(iso_has_object_inline):
(iso_get_allocation_size_inline):
(iso_get_heap_inline):
(iso_deallocate_inline):

  • libpas/src/libpas/iso_heap_innards.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/iso_heap_ref.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/iso_test_heap.c: Added.

(iso_test_allocate_common_primitive):
(iso_test_allocate):
(iso_test_allocate_array):
(iso_test_deallocate):
(iso_test_heap_ref_get_heap):

  • libpas/src/libpas/iso_test_heap.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/iso_test_heap_config.c: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/iso_test_heap_config.h: Added.
  • libpas/src/libpas/jit_heap.c: Added.

(jit_heap_add_fresh_memory):
(jit_heap_try_allocate):
(jit_heap_shrink):
(jit_heap_get_size):
(jit_heap_deallocate):

  • libpas/src/libpas/jit_heap.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/jit_heap_config.c: Added.

(fresh_memory_aligned_allocator):
(initialize_fresh_memory_config):
(allocate_from_fresh):
(page_provider):
(jit_page_header_for_boundary_remote):
(jit_small_bitfit_allocate_page):
(jit_small_bitfit_create_page_header):
(jit_small_bitfit_destroy_page_header):
(jit_medium_bitfit_allocate_page):
(jit_medium_bitfit_create_page_header):
(jit_medium_bitfit_destroy_page_header):
(jit_aligned_allocator):
(jit_prepare_to_enumerate):
(jit_heap_config_for_each_shared_page_directory):
(jit_heap_config_for_each_shared_page_directory_remote):
(jit_heap_config_add_fresh_memory):

  • libpas/src/libpas/jit_heap_config.h: Added.

(jit_type_size):
(jit_type_alignment):
(jit_heap_config_fast_megapage_kind):
(jit_small_bitfit_page_header_for_boundary):
(jit_small_bitfit_boundary_for_page_header):
(jit_medium_bitfit_page_header_for_boundary):
(jit_medium_bitfit_boundary_for_page_header):
(jit_heap_config_page_header):

  • libpas/src/libpas/jit_heap_config_root_data.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/minalign32_heap.c: Added.

(minalign32_allocate_common_primitive):
(minalign32_allocate):
(minalign32_allocate_array):
(minalign32_deallocate):
(minalign32_heap_ref_get_heap):

  • libpas/src/libpas/minalign32_heap.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/minalign32_heap_config.c: Copied from Source/WTF/wtf/FastTLS.h.

(minalign32_heap_config_activate):

  • libpas/src/libpas/minalign32_heap_config.h: Added.
  • libpas/src/libpas/pagesize64k_heap.c: Added.

(pagesize64k_allocate_common_primitive):
(pagesize64k_allocate):
(pagesize64k_allocate_array):
(pagesize64k_deallocate):
(pagesize64k_heap_ref_get_heap):

  • libpas/src/libpas/pagesize64k_heap.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pagesize64k_heap_config.c: Copied from Source/WTF/wtf/FastTLS.h.

(pagesize64k_heap_config_activate):

  • libpas/src/libpas/pagesize64k_heap_config.h: Added.
  • libpas/src/libpas/pas_aligned_allocation_result.h: Added.

(pas_aligned_allocation_result_create_empty):
(pas_aligned_allocation_result_as_allocation_result):

  • libpas/src/libpas/pas_aligned_allocator.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_alignment.c: Copied from Source/WTF/wtf/FastTLS.h.

(pas_alignment_dump):

  • libpas/src/libpas/pas_alignment.h: Added.

(pas_alignment_create):
(pas_alignment_create_traditional):
(pas_alignment_create_trivial):
(pas_alignment_validate):
(pas_alignment_is_ptr_aligned):
(pas_alignment_round_up):
(pas_alignment_is_equal):

  • libpas/src/libpas/pas_all_biasing_directories.c: Added.

(pas_all_biasing_directories_append):
(pas_all_biasing_directories_activate):
(scavenge_for_each_set_bit_bits_source):
(scavenge_for_each_set_bit_callback):
(scavenge_bitvector_word_callback):
(pas_all_biasing_directories_scavenge):

  • libpas/src/libpas/pas_all_biasing_directories.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_all_heap_configs.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_all_heaps.c: Added.

(pas_all_heaps_add_heap):
(pas_all_heaps_for_each_static_heap):
(pas_all_heaps_for_each_dynamic_heap):
(pas_all_heaps_for_each_heap):
(pas_all_heaps_for_each_static_segregated_heap_not_part_of_a_heap):
(for_each_segregated_heap_callback):
(pas_all_heaps_for_each_static_segregated_heap):
(pas_all_heaps_for_each_segregated_heap):
(get_num_free_bytes_for_each_heap_callback):
(pas_all_heaps_get_num_free_bytes):
(reset_heap_ref_for_each_heap_callback):
(pas_all_heaps_reset_heap_ref):
(for_each_segregated_directory_global_size_directory_callback):
(for_each_segregated_directory_shared_page_directory_callback):
(for_each_segregated_directory_segregated_heap_callback):
(pas_all_heaps_for_each_segregated_directory):
(dump_directory_nicely):
(dump_view_nicely):
(verify_in_steady_state_segregated_directory_callback):
(pas_all_heaps_verify_in_steady_state):
(compute_total_non_utility_segregated_summary_directory_callback):
(pas_all_heaps_compute_total_non_utility_segregated_summary):
(compute_total_non_utility_bitfit_summary_heap_callback):
(pas_all_heaps_compute_total_non_utility_bitfit_summary):
(compute_total_non_utility_large_summary_heap_callback):
(pas_all_heaps_compute_total_non_utility_large_summary):
(pas_all_heaps_compute_total_non_utility_summary):

  • libpas/src/libpas/pas_all_heaps.h: Added.
  • libpas/src/libpas/pas_all_magazines.c: Added.

(pas_all_magazines_get_current):

  • libpas/src/libpas/pas_all_magazines.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_all_shared_page_directories.c: Copied from Source/WTF/wtf/FastTLS.h.

(pas_all_shared_page_directories_add):
(pas_all_shared_page_directories_for_each):

  • libpas/src/libpas/pas_all_shared_page_directories.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_allocation_callbacks.c: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_allocation_callbacks.h: Added.

(pas_did_allocate):
(pas_will_deallocate):

  • libpas/src/libpas/pas_allocation_config.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_allocation_kind.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_allocation_kind_get_string):

  • libpas/src/libpas/pas_allocation_result.c: Copied from Source/WTF/wtf/FastTLS.h.

(pas_allocation_result_zero):

  • libpas/src/libpas/pas_allocation_result.h: Added.

(pas_allocation_result_create_failure):
(pas_allocation_result_create_success_with_zero_mode):
(pas_allocation_result_create_success):

  • libpas/src/libpas/pas_allocator_counts.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_allocator_index.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_allocator_scavenge_action.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_allocator_scavenge_action_get_string):

  • libpas/src/libpas/pas_baseline_allocator.c: Copied from Source/WTF/wtf/FastTLS.h.

(pas_baseline_allocator_attach_directory):
(pas_baseline_allocator_detach_directory):

  • libpas/src/libpas/pas_baseline_allocator.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_baseline_allocator_result.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_baseline_allocator_result_create_failure):
(pas_baseline_allocator_result_create_success):

  • libpas/src/libpas/pas_baseline_allocator_table.c: Added.

(initialize):
(pas_baseline_allocator_table_initialize_if_necessary):
(pas_baseline_allocator_table_get_random_index):
(pas_baseline_allocator_table_for_all):

  • libpas/src/libpas/pas_baseline_allocator_table.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_basic_heap_config_enumerator_data.c: Added.

(pas_basic_heap_config_enumerator_data_add_page_header_table):

  • libpas/src/libpas/pas_basic_heap_config_enumerator_data.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_basic_heap_config_root_data.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_basic_heap_page_caches.h: Added.

(pas_basic_heap_page_caches_get_shared_page_directories):

  • libpas/src/libpas/pas_basic_heap_runtime_config.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_basic_segregated_page_caches.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_biasing_directory.c: Added.

(pas_biasing_directory_construct):
(pas_biasing_directory_get_sharing_pool):
(pas_biasing_directory_did_create_delta):
(pas_biasing_directory_take_last_unused):
(pas_biasing_directory_did_use_index_slow):
(pas_biasing_directory_index_did_become_eligible):

  • libpas/src/libpas/pas_biasing_directory.h: Added.

(pas_is_segregated_biasing_directory):
(pas_is_bitfit_biasing_directory):
(pas_biasing_directory_magazine_index):
(pas_biasing_directory_ownership_threshold):
(pas_biasing_directory_unused_span_size):
(pas_biasing_directory_did_use_index):

  • libpas/src/libpas/pas_biasing_directory_inlines.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_unwrap_segregated_biasing_directory):
(pas_unwrap_bitfit_biasing_directory):

  • libpas/src/libpas/pas_biasing_directory_kind.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_biasing_directory_kind_get_string):

  • libpas/src/libpas/pas_bitfield_vector.h: Added.

(pas_bitfield_vector_get):
(pas_bitfield_vector_set):

  • libpas/src/libpas/pas_bitfit_allocation_result.h: Added.

(pas_bitfit_allocation_result_create_success):
(pas_bitfit_allocation_result_create_failure):
(pas_bitfit_allocation_result_create_empty):
(pas_bitfit_allocation_result_create_need_to_lock_commit_lock):

  • libpas/src/libpas/pas_bitfit_allocator.c: Added.

(pas_bitfit_allocator_commit_view):
(pas_bitfit_allocator_finish_failing):

  • libpas/src/libpas/pas_bitfit_allocator.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_bitfit_allocator_inlines.h: Added.

(pas_bitfit_allocator_reset):
(pas_bitfit_allocator_assert_reset):
(pas_bitfit_allocator_try_allocate):

  • libpas/src/libpas/pas_bitfit_biasing_directory.c: Added.

(pas_bitfit_biasing_directory_create):
(pas_bitfit_biasing_directory_take_last_unused):

  • libpas/src/libpas/pas_bitfit_biasing_directory.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_bitfit_directory.c: Added.

(pas_bitfit_directory_construct):
(pas_bitfit_directory_update_biasing_eligibility):
(pas_bitfit_directory_max_free_did_become_unprocessed):
(pas_bitfit_directory_max_free_did_become_unprocessed_unchecked):
(pas_bitfit_directory_max_free_did_become_empty_without_biasing_update):
(pas_bitfit_directory_max_free_did_become_empty):
(pas_bitfit_directory_get_first_free_view):
(pas_bitfit_directory_compute_summary):
(for_each_live_object_callback):
(pas_bitfit_directory_for_each_live_object):

  • libpas/src/libpas/pas_bitfit_directory.h: Added.

(pas_bitfit_directory_size):
(pas_bitfit_directory_get_max_free_ptr):
(pas_bitfit_directory_get_max_free):
(pas_bitfit_directory_set_max_free_unchecked):
(pas_bitfit_directory_set_max_free_not_empty_impl):
(pas_bitfit_directory_set_processed_max_free):
(pas_bitfit_directory_set_unprocessed_max_free_unchecked):
(pas_bitfit_directory_set_empty_max_free):
(pas_bitfit_directory_set_unprocessed_max_free):
(pas_bitfit_directory_get_view_ptr):
(pas_bitfit_directory_get_view):

  • libpas/src/libpas/pas_bitfit_directory_and_index.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_bitfit_directory_and_index_create):

  • libpas/src/libpas/pas_bitfit_directory_inlines.h: Added.

(pas_bitfit_directory_get_global):
(pas_bitfit_directory_find_first_free_for_num_bits_iterate_callback):
(pas_bitfit_directory_find_first_free_for_num_bits):
(pas_bitfit_directory_find_first_free):
(pas_bitfit_directory_find_first_empty_iterate_callback):
(pas_bitfit_directory_find_first_empty):

  • libpas/src/libpas/pas_bitfit_directory_kind.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_bitfit_directory_kind_get_string):

  • libpas/src/libpas/pas_bitfit_global_directory.c: Added.

(pas_bitfit_global_directory_construct):
(pas_bitfit_global_directory_does_sharing):
(pas_bitfit_global_directory_get_use_epoch):
(pas_bitfit_global_directory_get_empty_bit_at_index):
(pas_bitfit_global_directory_set_empty_bit_at_index):
(pas_bitfit_global_directory_view_did_become_empty_at_index):
(pas_bitfit_global_directory_view_did_become_empty):
(pas_bitfit_global_directory_take_last_empty):
(pas_bitfit_global_directory_dump_reference):
(pas_bitfit_global_directory_dump_for_spectrum):

  • libpas/src/libpas/pas_bitfit_global_directory.h: Added.
  • libpas/src/libpas/pas_bitfit_global_size_class.c: Added.

(pas_bitfit_global_size_class_create):
(pas_bitfit_global_size_class_select_for_magazine):

  • libpas/src/libpas/pas_bitfit_global_size_class.h: Added.
  • libpas/src/libpas/pas_bitfit_heap.c: Added.

(pas_bitfit_heap_create):
(pas_bitfit_heap_select_variant):
(pas_bitfit_heap_ensure_global_size_class):
(pas_bitfit_heap_compute_summary):
(for_each_live_object_callback):
(pas_bitfit_heap_for_each_live_object):

  • libpas/src/libpas/pas_bitfit_heap.h: Added.

(pas_bitfit_heap_get_directory):

  • libpas/src/libpas/pas_bitfit_max_free.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_bitfit_page.c: Added.

(pas_bitfit_page_construct):
(pas_bitfit_page_get_config):
(pas_bitfit_page_log_bits):
(pas_bitfit_page_deallocation_did_fail):
(pas_bitfit_page_for_each_live_object):
(verify_for_each_object_callback):
(pas_bitfit_page_verify):

  • libpas/src/libpas/pas_bitfit_page.h: Added.

(pas_bitfit_page_header_size):
(pas_bitfit_page_free_bits):
(pas_bitfit_page_object_end_bits):
(pas_bitfit_page_get_granule_use_counts):
(pas_bitfit_page_offset_to_first_object):
(pas_bitfit_page_offset_to_end_of_last_object):
(pas_bitfit_page_payload_size):
(pas_bitfit_page_for_boundary):
(pas_bitfit_page_for_boundary_or_null):
(pas_bitfit_page_for_boundary_unchecked):
(pas_bitfit_page_boundary):
(pas_bitfit_page_boundary_or_null):
(pas_bitfit_page_for_address_and_page_config):
(pas_bitfit_page_testing_verify):

  • libpas/src/libpas/pas_bitfit_page_config.h: Added.

(pas_bitfit_page_config_is_enabled):
(pas_bitfit_page_config_num_alloc_bits):
(pas_bitfit_page_config_num_alloc_words):
(pas_bitfit_page_config_num_alloc_words64):
(pas_bitfit_page_config_num_alloc_bit_bytes):
(pas_bitfit_page_config_byte_offset_for_object_bits):
(pas_bitfit_page_config_uses_subpages):

  • libpas/src/libpas/pas_bitfit_page_config_inlines.h: Added.
  • libpas/src/libpas/pas_bitfit_page_config_kind.c: Added.

(pas_bitfit_page_config_kind_for_each):

  • libpas/src/libpas/pas_bitfit_page_config_kind.def: Added.
  • libpas/src/libpas/pas_bitfit_page_config_kind.h: Added.

(pas_bitfit_page_config_kind_get_string):
(pas_bitfit_page_config_kind_get_config):

  • libpas/src/libpas/pas_bitfit_page_config_utils.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_bitfit_page_config_utils_inlines.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_bitfit_page_config_variant.h: Added.

(pas_bitfit_page_config_variant_get_string):
(pas_bitfit_page_config_variant_get_capitalized_string):

  • libpas/src/libpas/pas_bitfit_page_inlines.h: Added.

(pas_bitfit_page_compute_offset):
(pas_bitfit_page_allocation_satisfies_alignment):
(pas_bitfit_page_allocation_commit_granules_or_reloop):
(pas_bitfit_page_finish_allocation):
(pas_bitfit_page_allocate):
(pas_bitfit_page_deallocate_with_page_impl_mode_get_string):
(pas_bitfit_page_deallocate_with_page_impl):
(pas_bitfit_page_deallocate_with_page):
(pas_bitfit_page_deallocate):
(pas_bitfit_page_get_allocation_size_with_page):
(pas_bitfit_page_get_allocation_size):
(pas_bitfit_page_shrink_with_page):
(pas_bitfit_page_shrink):

  • libpas/src/libpas/pas_bitfit_size_class.c: Added.

(pas_bitfit_size_class_find_insertion_point):
(pas_bitfit_size_class_construct):
(pas_bitfit_size_class_create):
(pas_bitfit_size_class_get_first_free_view):

  • libpas/src/libpas/pas_bitfit_size_class.h: Added.
  • libpas/src/libpas/pas_bitfit_view.c: Added.

(pas_bitfit_view_create):
(pas_bitfit_view_lock_ownership_lock_slow):
(pas_bitfit_view_note_nonemptiness):
(did_become_empty_for_bits):
(pas_bitfit_view_note_full_emptiness):
(pas_bitfit_view_note_partial_emptiness):
(pas_bitfit_view_note_max_free):
(compute_summary):
(pas_bitfit_view_compute_summary):
(for_each_live_object_callback):
(for_each_live_object):
(pas_bitfit_view_for_each_live_object):

  • libpas/src/libpas/pas_bitfit_view.h: Added.

(pas_bitfit_view_lock_ownership_lock):

  • libpas/src/libpas/pas_bitfit_view_and_index.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_bitfit_view_and_index_create):
(pas_bitfit_view_and_index_create_empty):

  • libpas/src/libpas/pas_bitfit_view_inlines.h: Added.

(pas_bitfit_view_current_directory_and_index):
(pas_bitfit_view_current_directory):
(pas_bitfit_view_index_in_current):
(pas_bitfit_view_is_empty):

  • libpas/src/libpas/pas_bitvector.h: Added.

(pas_bitvector_get_from_word):
(pas_bitvector_get):
(pas_bitvector_get_from_one_word):
(pas_backward_bitvector_get):
(pas_bitvector_set_in_word):
(pas_bitvector_set):
(pas_bitvector_set_in_one_word):
(pas_bitvector_set_atomic_in_word):
(pas_bitvector_set_atomic):
(pas_backward_bitvector_set):
(pas_bitvector_find_first_set):
(pas_bitvector_for_each_set_bit):
(pas_bitvector64_set_range):

  • libpas/src/libpas/pas_bootstrap_free_heap.c: Copied from Source/WTF/wtf/FastTLS.h.

(bootstrap_source_allocate_aligned):
(initialize_config):

  • libpas/src/libpas/pas_bootstrap_free_heap.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_bootstrap_heap_page_provider.c: Copied from Source/WTF/wtf/FastTLS.h.

(pas_bootstrap_heap_page_provider):

  • libpas/src/libpas/pas_bootstrap_heap_page_provider.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_cares_about_size_mode.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_cartesian_tree.h: Added.

(pas_cartesian_tree_node_child_ptr):
(pas_cartesian_tree_node_is_null_constrained):
(pas_cartesian_tree_node_minimum):
(pas_cartesian_tree_node_minimum_constrained):
(pas_cartesian_tree_node_maximum):
(pas_cartesian_tree_node_maximum_constrained):
(pas_cartesian_tree_node_successor):
(pas_cartesian_tree_node_successor_constrained):
(pas_cartesian_tree_node_predecessor):
(pas_cartesian_tree_node_predecessor_constrained):
(pas_cartesian_tree_node_reset):
(pas_cartesian_tree_construct):
(pas_cartesian_tree_node_find_exact):
(pas_cartesian_tree_find_exact):
(pas_cartesian_tree_node_find_least_greater_than_or_equal):
(pas_cartesian_tree_find_least_greater_than_or_equal):
(pas_cartesian_tree_node_find_least_greater_than):
(pas_cartesian_tree_find_least_greater_than):
(pas_cartesian_tree_node_find_greatest_less_than_or_equal):
(pas_cartesian_tree_find_greatest_less_than_or_equal):
(pas_cartesian_tree_node_find_greatest_less_than):
(pas_cartesian_tree_find_greatest_less_than):
(pas_cartesian_tree_minimum):
(pas_cartesian_tree_minimum_constrained):
(pas_cartesian_tree_maximum):
(pas_cartesian_tree_maximum_constrained):
(pas_cartesian_tree_is_empty):
(pas_cartesian_tree_insert):
(pas_cartesian_tree_remove):
(pas_cartesian_tree_validate_recurse):
(pas_cartesian_tree_validate):
(pas_cartesian_tree_size):

  • libpas/src/libpas/pas_coalign.c: Added.

(formal_mod):
(ceiling_div):
(pas_coalign_one_sided):
(pas_coalign):

  • libpas/src/libpas/pas_coalign.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_coalign_empty_result):
(pas_coalign_result_create):

  • libpas/src/libpas/pas_commit_mode.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_commit_mode_get_string):

  • libpas/src/libpas/pas_commit_span.c: Added.

(pas_commit_span_construct):
(pas_commit_span_add_to_change):
(pas_commit_span_add_unchanged):
(commit):
(pas_commit_span_add_unchanged_and_commit):
(decommit):
(pas_commit_span_add_unchanged_and_decommit):

  • libpas/src/libpas/pas_commit_span.h: Added.
  • libpas/src/libpas/pas_compact_atomic_allocator_index_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_atomic_biasing_directory_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_atomic_bitfit_biasing_directory_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_atomic_bitfit_global_size_class_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_atomic_bitfit_heap_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_atomic_bitfit_size_class_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_atomic_bitfit_view_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_atomic_enumerable_range_list_chunk_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_atomic_page_sharing_pool_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_atomic_ptr.h: Added.
  • libpas/src/libpas/pas_compact_atomic_segregated_exclusive_view_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_atomic_segregated_global_size_directory_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_atomic_segregated_heap_page_sharing_pools_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_atomic_segregated_partial_view_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_atomic_segregated_view.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_atomic_thread_local_cache_layout_node.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_atomic_unsigned_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_biasing_directory_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_bitfit_directory_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_bitfit_global_directory_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_bitfit_view_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_bootstrap_free_heap.c: Copied from Source/WTF/wtf/FastTLS.h.

(compact_bootstrap_source_allocate_aligned):
(initialize_config):

  • libpas/src/libpas/pas_compact_bootstrap_free_heap.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_cartesian_tree_node_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_heap_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_heap_reservation.c: Added.

(pas_compact_heap_reservation_try_allocate):

  • libpas/src/libpas/pas_compact_heap_reservation.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_large_utility_free_heap.c: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_large_utility_free_heap.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_page_granule_use_count_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_ptr.h: Added.
  • libpas/src/libpas/pas_compact_segregated_biasing_directory_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_segregated_global_size_directory_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_segregated_heap_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_segregated_shared_page_directory_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_segregated_shared_view_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_segregated_view.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_skip_list_node_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_skip_list_node_ptr_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_subpage_map_entry_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_tagged_atomic_ptr.h: Added.
  • libpas/src/libpas/pas_compact_tagged_page_granule_use_count_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_tagged_ptr.h: Added.
  • libpas/src/libpas/pas_compact_tagged_unsigned_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compact_unsigned_ptr.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_compute_summary_object_callbacks.c: Added.

(pas_compute_summary_live_object_callback):
(pas_compute_summary_live_object_callback_without_physical_sharing):
(config):
(pas_compute_summary_dead_object_callback):
(pas_compute_summary_dead_object_callback_without_physical_sharing):

  • libpas/src/libpas/pas_compute_summary_object_callbacks.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_config.h: Added.
  • libpas/src/libpas/pas_config_prefix.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_count_lookup_mode.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_count_lookup_mode_get_string):

  • libpas/src/libpas/pas_create_basic_heap_page_caches_with_reserved_memory.c: Added.

(pas_create_basic_heap_page_caches_with_reserved_memory):

  • libpas/src/libpas/pas_create_basic_heap_page_caches_with_reserved_memory.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_deallocate.c: Added.

(pas_try_deallocate_known_large):
(pas_deallocate_known_large):
(pas_try_deallocate_slow):
(deallocate_segregated):
(pas_try_deallocate_slow_no_cache):

  • libpas/src/libpas/pas_deallocate.h: Added.

(pas_deallocate_known_segregated_impl):
(pas_deallocate_known_segregated):
(pas_try_deallocate_not_small):
(pas_try_deallocate_impl):
(pas_try_deallocate):
(pas_deallocate):

  • libpas/src/libpas/pas_deallocation_mode.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_deallocation_mode_get_string):

  • libpas/src/libpas/pas_deallocator.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_deallocator_scavenge_action.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_deallocator_scavenge_action_get_string):

  • libpas/src/libpas/pas_debug_heap.h: Added.

(pas_debug_heap_is_enabled):
(pas_debug_heap_malloc):
(pas_debug_heap_memalign):
(pas_debug_heap_realloc):
(pas_debug_heap_free):

  • libpas/src/libpas/pas_debug_spectrum.c: Added.

(pas_debug_spectrum_add):
(pas_debug_spectrum_dump):
(pas_debug_spectrum_reset):

  • libpas/src/libpas/pas_debug_spectrum.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_deferred_decommit_log.c: Added.

(pas_deferred_decommit_log_construct):
(pas_deferred_decommit_log_destruct):
(already_holds_lock):
(pas_deferred_decommit_log_lock_for_adding):
(pas_deferred_decommit_log_add):
(pas_deferred_decommit_log_add_already_locked):
(pas_deferred_decommit_log_add_maybe_locked):
(pas_deferred_decommit_log_unlock_after_aborted_add):
(decommit_all):
(pas_deferred_decommit_log_decommit_all):
(pas_deferred_decommit_log_pretend_to_decommit_all):

  • libpas/src/libpas/pas_deferred_decommit_log.h: Added.
  • libpas/src/libpas/pas_designated_intrinsic_heap.c: Added.

(set_up_range):
(pas_designated_intrinsic_heap_initialize):

  • libpas/src/libpas/pas_designated_intrinsic_heap.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_designated_intrinsic_heap_inlines.h: Added.

(pas_designated_intrinsic_heap_num_allocator_indices):
(pas_designated_index_result_create_failure):
(pas_designated_index_result_create_success):
(pas_designated_intrinsic_heap_num_designated_indices):
(pas_designated_intrinsic_heap_designated_index):

  • libpas/src/libpas/pas_dyld_state.c: Added.

(pas_dyld_is_libsystem_initialized):

  • libpas/src/libpas/pas_dyld_state.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_dynamic_primitive_heap_map.c: Added.

(pas_dynamic_primitive_heap_map_find_slow):

  • libpas/src/libpas/pas_dynamic_primitive_heap_map.h: Added.

(pas_dynamic_primitive_heap_map_heaps_for_size_table_entry_create_empty):
(pas_dynamic_primitive_heap_map_heaps_for_size_table_entry_create_deleted):
(pas_dynamic_primitive_heap_map_heaps_for_size_table_entry_is_empty_or_deleted):
(pas_dynamic_primitive_heap_map_heaps_for_size_table_entry_is_empty):
(pas_dynamic_primitive_heap_map_heaps_for_size_table_entry_is_deleted):
(pas_dynamic_primitive_heap_map_heaps_for_size_table_entry_get_key):
(pas_dynamic_primitive_heap_map_heaps_for_size_table_key_get_hash):
(pas_dynamic_primitive_heap_map_heaps_for_size_table_key_is_equal):
(pas_dynamic_primitive_heap_map_hash):
(pas_dynamic_primitive_heap_map_find):

  • libpas/src/libpas/pas_ensure_heap_forced_into_reserved_memory.c: Copied from Source/WTF/wtf/FastTLS.h.

(pas_ensure_heap_forced_into_reserved_memory):

  • libpas/src/libpas/pas_ensure_heap_forced_into_reserved_memory.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_ensure_heap_with_page_caches.c: Copied from Source/WTF/wtf/FastTLS.h.

(pas_ensure_heap_with_page_caches):

  • libpas/src/libpas/pas_ensure_heap_with_page_caches.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_enumerable_page_malloc.c: Copied from Source/WTF/wtf/FastTLS.h.

(pas_enumerable_page_malloc_try_allocate_without_deallocating_padding):

  • libpas/src/libpas/pas_enumerable_page_malloc.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_enumerable_range_list.c: Added.

(pas_enumerable_range_list_append):
(pas_enumerable_range_list_iterate):
(pas_enumerable_range_list_iterate_remote):

  • libpas/src/libpas/pas_enumerable_range_list.h: Added.
  • libpas/src/libpas/pas_enumerate_bitfit_heaps.c: Added.

(view_callback):
(enumerate_bitfit_directory):
(enumerate_bitfit_heap_callback):
(pas_enumerate_bitfit_heaps):

  • libpas/src/libpas/pas_enumerate_bitfit_heaps.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_enumerate_initially_unaccounted_pages.c: Added.

(range_list_iterate_add_unaccounted_callback):
(range_list_iterate_exclude_accounted_callback):
(pas_enumerate_initially_unaccounted_pages):

  • libpas/src/libpas/pas_enumerate_initially_unaccounted_pages.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_enumerate_large_heaps.c: Added.

(range_list_iterate_add_large_payload_callback):
(record_span):
(large_map_hashtable_entry_callback):
(small_large_map_hashtable_entry_callback):
(tiny_large_map_second_level_hashtable_entry_callback):
(tiny_large_map_hashtable_entry_callback):
(pas_enumerate_large_heaps):

  • libpas/src/libpas/pas_enumerate_large_heaps.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_enumerate_segregated_heaps.c: Added.

(local_allocator_map_entry_create_empty):
(local_allocator_map_entry_create_deleted):
(local_allocator_map_entry_is_empty_or_deleted):
(local_allocator_map_entry_is_empty):
(local_allocator_map_entry_is_deleted):
(local_allocator_map_entry_get_key):
(local_allocator_map_key_get_hash):
(local_allocator_map_key_is_equal):
(for_each_view):
(collect_shared_page_directories_shared_page_directory_callback):
(collect_shared_page_directories_heap_callback):
(record_page_payload_and_meta):
(record_page_objects):
(enumerate_exclusive_view):
(enumerate_shared_view):
(enumerate_partial_view):
(shared_page_directory_view_callback):
(size_directory_view_callback):
(enumerate_segregated_heap_callback):
(consider_allocator):
(pas_enumerate_segregated_heaps):

  • libpas/src/libpas/pas_enumerate_segregated_heaps.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_enumerate_unaccounted_pages_as_meta.c: Added.

(pas_enumerate_unaccounted_pages_as_meta):

  • libpas/src/libpas/pas_enumerate_unaccounted_pages_as_meta.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_enumerator.c: Added.

(allocate):
(deallocate):
(pas_enumerator_create):
(pas_enumerator_destroy):
(pas_enumerator_allocate):
(pas_enumerator_read_compact):
(pas_enumerator_read):
(pas_enumerator_add_unaccounted_pages):
(pas_enumerator_exclude_accounted_page):
(pas_enumerator_exclude_accounted_pages):
(pas_enumerator_record):
(record_payload_span):
(pas_enumerator_record_page_payload_and_meta):
(pas_enumerator_for_each_heap):
(pas_enumerator_enumerate_all):

  • libpas/src/libpas/pas_enumerator.h: Added.

(pas_enumerator_record_kind_get_string):

  • libpas/src/libpas/pas_enumerator_internal.h: Added.
  • libpas/src/libpas/pas_enumerator_region.c: Added.

(pas_enumerator_region_allocate):
(pas_enumerator_region_destroy):

  • libpas/src/libpas/pas_enumerator_region.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_epoch.c: Copied from Source/WTF/wtf/FastTLS.h.

(pas_get_epoch):

  • libpas/src/libpas/pas_epoch.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_exclusive_view_template_memo_table.c: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_exclusive_view_template_memo_table.h: Added.

(pas_exclusive_view_template_memo_key_create):
(pas_exclusive_view_template_memo_entry_create_empty):
(pas_exclusive_view_template_memo_entry_create_deleted):
(pas_exclusive_view_template_memo_entry_is_empty_or_deleted):
(pas_exclusive_view_template_memo_entry_is_empty):
(pas_exclusive_view_template_memo_entry_is_deleted):
(pas_exclusive_view_template_memo_entry_get_key):
(pas_exclusive_view_template_memo_key_get_hash):
(pas_exclusive_view_template_memo_key_is_equal):

  • libpas/src/libpas/pas_extended_gcd.c: Added.

(pas_extended_gcd):

  • libpas/src/libpas/pas_extended_gcd.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_fast_large_free_heap.c: Added.

(key_compare_callback):
(get_x_key_callback):
(get_y_key_callback):
(initialize_cartesian_config):
(pas_fast_large_free_heap_construct):
(insert_node):
(remove_node):
(dump_heap):
(fast_find_first):
(fast_find_by_end):
(fast_read_cursor):
(fast_write_cursor):
(fast_merge):
(fast_remove):
(fast_append):
(fast_commit):
(fast_dump):
(fast_add_mapped_bytes):
(initialize_generic_heap_config):
(pas_fast_large_free_heap_try_allocate):
(pas_fast_large_free_heap_deallocate):
(pas_fast_large_free_heap_for_each_free):
(pas_fast_large_free_heap_get_num_free_bytes):
(pas_fast_large_free_heap_validate):
(pas_fast_large_free_heap_dump_to_printf):

  • libpas/src/libpas/pas_fast_large_free_heap.h: Added.

(pas_fast_large_free_heap_get_num_mapped_bytes):

  • libpas/src/libpas/pas_fast_megapage_cache.c: Added.

(table_set_by_index):
(pas_fast_megapage_cache_try_allocate):

  • libpas/src/libpas/pas_fast_megapage_cache.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_fast_megapage_kind.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_fast_megapage_kind_get_string):

  • libpas/src/libpas/pas_fast_megapage_table.c: Added.

(pas_fast_megapage_table_initialize_static):
(pas_fast_megapage_table_set_by_index):

  • libpas/src/libpas/pas_fast_megapage_table.h: Added.

(pas_fast_megapage_table_get_by_index):
(pas_fast_megapage_table_get):

  • libpas/src/libpas/pas_fast_path_allocation_result.h: Added.

(pas_fast_path_allocation_result_create):
(pas_fast_path_allocation_result_create_need_slow):
(pas_fast_path_allocation_result_create_out_of_memory):
(pas_fast_path_allocation_result_create_success):
(pas_fast_path_allocation_result_from_allocation_result):
(pas_fast_path_allocation_result_to_allocation_result):

  • libpas/src/libpas/pas_fast_path_allocation_result_kind.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_fast_path_allocation_result_kind_get_string):

  • libpas/src/libpas/pas_fast_tls.h: Added.
  • libpas/src/libpas/pas_fd_stream.c: Copied from Source/WTF/wtf/FastTLS.h.

(fd_stream_vprintf):
(pas_fd_stream_vprintf):

  • libpas/src/libpas/pas_fd_stream.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_first_level_tiny_large_map_entry.h: Added.

(pas_first_level_tiny_large_map_entry_create_empty):
(pas_first_level_tiny_large_map_entry_create_deleted):
(pas_first_level_tiny_large_map_entry_is_empty_or_deleted):
(pas_first_level_tiny_large_map_entry_is_empty):
(pas_first_level_tiny_large_map_entry_is_deleted):
(pas_first_level_tiny_large_map_entry_get_key):
(pas_first_level_tiny_large_map_key_get_hash):
(pas_first_level_tiny_large_map_key_is_equal):

  • libpas/src/libpas/pas_found_bit_index.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_found_bit_index_create_empty):
(pas_found_bit_index_create):

  • libpas/src/libpas/pas_found_index.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_found_index_create_empty):
(pas_found_index_create):
(pas_found_index_create_unsuccessful):

  • libpas/src/libpas/pas_free_granules.c: Added.

(pas_free_granules_compute_and_mark_decommitted):
(pas_free_granules_unmark_decommitted):
(pas_free_granules_decommit_after_locking_range):

  • libpas/src/libpas/pas_free_granules.h: Added.

(pas_free_granules_is_free):

  • libpas/src/libpas/pas_free_mode.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_free_range_kind.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_free_range_kind_get_string):

  • libpas/src/libpas/pas_full_alloc_bits.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_full_alloc_bits_create_empty):
(pas_full_alloc_bits_create):

  • libpas/src/libpas/pas_full_alloc_bits_inlines.h: Added.

(pas_full_alloc_bits_create_for_exclusive):
(pas_full_alloc_bits_create_for_partial):
(pas_full_alloc_bits_create_for_view_and_directory):
(pas_full_alloc_bits_create_for_view):

  • libpas/src/libpas/pas_generic_large_free_heap.h: Added.

(pas_generic_large_free_heap_merge_physical):
(pas_generic_large_free_heap_try_allocate_test_allocation_candidate):
(pas_generic_large_free_heap_try_allocate):

  • libpas/src/libpas/pas_get_allocation_size.h: Added.

(pas_get_allocation_size):

  • libpas/src/libpas/pas_get_heap.h: Added.

(pas_get_heap_known_segregated):
(pas_get_heap):

  • libpas/src/libpas/pas_get_object_kind.h: Added.

(pas_get_object_kind):

  • libpas/src/libpas/pas_get_page_base.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_get_page_base):

  • libpas/src/libpas/pas_has_object.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_has_object):

  • libpas/src/libpas/pas_hashtable.h: Added.
  • libpas/src/libpas/pas_heap.c: Added.

(pas_heap_create):
(pas_heap_get_type_size):
(pas_heap_get_num_free_bytes):
(for_each_live_object_small_object_callback):
(for_each_live_object_large_object_callback):
(pas_heap_for_each_live_object):
(pas_heap_compute_summary):
(pas_heap_reset_heap_ref):
(pas_heap_ensure_size_directory_for_count_slow):

  • libpas/src/libpas/pas_heap.h: Added.

(pas_heap_for_large_heap):
(pas_heap_for_segregated_heap):

  • libpas/src/libpas/pas_heap_config.c: Copied from Source/WTF/wtf/FastTLS.h.

(pas_heap_config_activate):

  • libpas/src/libpas/pas_heap_config.h: Added.

(pas_heap_config_segregated_page_config_ptr_for_variant):
(pas_heap_config_bitfit_page_config_ptr_for_variant):
(pas_heap_config_segregated_page_config_for_variant):
(pas_heap_config_bitfit_page_config_for_variant):

  • libpas/src/libpas/pas_heap_config_inlines.h: Added.
  • libpas/src/libpas/pas_heap_config_kind.c: Added.

(pas_heap_config_kind_for_each):

  • libpas/src/libpas/pas_heap_config_kind.def: Added.
  • libpas/src/libpas/pas_heap_config_kind.h: Added.

(pas_heap_config_kind_get_string):
(pas_heap_config_kind_get_config):
(pas_heap_config_kind_is_active):

  • libpas/src/libpas/pas_heap_config_utils.c: Added.

(pas_heap_config_utils_null_activate):
(pas_heap_config_utils_for_each_shared_page_directory):
(pas_heap_config_utils_for_each_shared_page_directory_remote):
(pas_heap_config_utils_allocate_aligned):
(pas_heap_config_utils_prepare_to_enumerate):

  • libpas/src/libpas/pas_heap_config_utils.h: Added.
  • libpas/src/libpas/pas_heap_config_utils_inlines.h: Added.
  • libpas/src/libpas/pas_heap_for_config.c: Added.

(pas_heap_for_config_allocate):
(pas_heap_for_page_config_kind_allocate):
(pas_heap_for_page_config_allocate):
(pas_heap_for_config_allocate_with_alignment):
(pas_heap_for_page_config_allocate_with_alignment):
(pas_heap_for_config_allocate_with_manual_alignment):
(pas_heap_for_page_config_kind_allocate_with_manual_alignment):
(pas_heap_for_page_config_allocate_with_manual_alignment):
(pas_heap_for_config_deallocate):
(pas_heap_for_page_config_kind_deallocate):
(pas_heap_for_page_config_deallocate):

  • libpas/src/libpas/pas_heap_for_config.h: Added.
  • libpas/src/libpas/pas_heap_inlines.h: Added.

(pas_heap_ensure_size_directory_for_count):

  • libpas/src/libpas/pas_heap_kind.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_heap_kind_get_string):

  • libpas/src/libpas/pas_heap_lock.c: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_heap_lock.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_heap_page_provider.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_heap_ref.c: Copied from Source/WTF/wtf/FastTLS.h.

(pas_ensure_heap_slow):

  • libpas/src/libpas/pas_heap_ref.h: Added.

(pas_ensure_heap):

  • libpas/src/libpas/pas_heap_ref_kind.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_heap_ref_kind_get_string):

  • libpas/src/libpas/pas_heap_ref_prefix.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_heap_runtime_config.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_heap_summary.c: Added.

(pas_heap_summary_validate):
(pas_heap_summary_dump):

  • libpas/src/libpas/pas_heap_summary.h: Added.

(pas_heap_summary_create_empty):
(pas_heap_summary_is_empty):
(pas_heap_summary_add):
(pas_heap_summary_committed_objects):
(pas_heap_summary_total):
(pas_heap_summary_fragmentation):

  • libpas/src/libpas/pas_heap_table.c: Copied from Source/WTF/wtf/FastTLS.h.

(pas_heap_table_try_allocate_index):

  • libpas/src/libpas/pas_heap_table.h: Added.

(pas_heap_table_has_index):
(pas_heap_table_get_index):

  • libpas/src/libpas/pas_heap_table_state.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_heap_table_state_get_string):

  • libpas/src/libpas/pas_immortal_heap.c: Added.

(bump_is_ok):
(pas_immortal_heap_allocate_with_manual_alignment):
(pas_immortal_heap_allocate_with_alignment):
(pas_immortal_heap_allocate):
(pas_immortal_heap_hold_lock_and_allocate):
(pas_immortal_heap_allocate_with_heap_lock_hold_mode):
(pas_immortal_heap_allocate_with_alignment_and_heap_lock_hold_mode):

  • libpas/src/libpas/pas_immortal_heap.h: Added.
  • libpas/src/libpas/pas_immutable_vector.h: Added.
  • libpas/src/libpas/pas_internal_config.h: Added.
  • libpas/src/libpas/pas_intrinsic_allocation_result.h: Added.

(pas_intrinsic_allocation_result_create_empty):
(pas_intrinsic_allocation_result_create):
(pas_intrinsic_allocation_result_identity):
(pas_intrinsic_allocation_result_zero):
(pas_intrinsic_allocation_result_set_errno):
(pas_intrinsic_allocation_result_crash_on_error):

  • libpas/src/libpas/pas_intrinsic_heap_support.h: Added.
  • libpas/src/libpas/pas_large_free.h: Added.

(pas_large_free_create_empty):
(pas_large_free_is_empty):
(pas_large_free_size):
(pas_large_free_offset_in_type_at_end):

  • libpas/src/libpas/pas_large_free_heap_config.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_large_free_heap_declarations.def: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_large_free_heap_deferred_commit_log.c: Added.

(pas_large_free_heap_deferred_commit_log_construct):
(pas_large_free_heap_deferred_commit_log_destruct):
(pas_large_free_heap_deferred_commit_log_add):
(dump_large_commit):
(commit):
(commit_all):
(pas_large_free_heap_deferred_commit_log_commit_all):
(pas_large_free_heap_deferred_commit_log_pretend_to_commit_all):

  • libpas/src/libpas/pas_large_free_heap_deferred_commit_log.h: Added.
  • libpas/src/libpas/pas_large_free_heap_definitions.def: Added.
  • libpas/src/libpas/pas_large_free_heap_helpers.c: Added.

(large_utility_aligned_allocator):
(initialize_config):
(pas_large_free_heap_helpers_try_allocate_with_alignment):
(pas_large_free_heap_helpers_deallocate):
(pas_large_free_heap_helpers_compute_summary):

  • libpas/src/libpas/pas_large_free_heap_helpers.h: Added.
  • libpas/src/libpas/pas_large_free_inlines.h: Added.

(pas_large_free_create_merged):
(pas_large_free_split):
(pas_large_free_allocation_candidate):
(pas_large_free_usable_space):
(pas_large_allocation_result_create_empty):
(pas_large_free_allocate):
(pas_large_free_create_merged_for_sure):
(pas_large_free_can_merge):
(pas_large_allocation_result_as_allocation_result):

  • libpas/src/libpas/pas_large_free_visitor.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_large_heap.c: Added.

(pas_large_heap_construct):
(aligned_allocator):
(initialize_config):
(pas_large_heap_try_allocate):
(pas_large_heap_try_deallocate):
(pas_large_heap_try_shrink):
(pas_large_heap_shove_into_free):
(for_each_live_object_entry_callback):
(pas_large_heap_for_each_live_object):
(pas_large_heap_for_object):
(pas_large_heap_get_num_free_bytes):
(compute_summary_live_object_callback):
(pas_large_heap_compute_summary):

  • libpas/src/libpas/pas_large_heap.h: Added.
  • libpas/src/libpas/pas_large_heap_physical_page_sharing_cache.c: Added.

(large_aligned_allocator):
(pas_large_heap_physical_page_sharing_cache_construct):
(pas_large_heap_physical_page_sharing_cache_try_allocate_with_alignment):

  • libpas/src/libpas/pas_large_heap_physical_page_sharing_cache.h: Added.
  • libpas/src/libpas/pas_large_map.c: Added.

(pas_large_map_find):
(pas_large_map_add):
(pas_large_map_take):
(pas_large_map_for_each_entry):

  • libpas/src/libpas/pas_large_map.h: Added.
  • libpas/src/libpas/pas_large_map_entry.h: Added.

(pas_large_map_entry_create_empty):
(pas_large_map_entry_create_deleted):
(pas_large_map_entry_is_empty_or_deleted):
(pas_large_map_entry_is_empty):
(pas_large_map_entry_is_deleted):
(pas_large_map_entry_get_key):
(pas_large_map_key_get_hash):
(pas_large_map_key_is_equal):

  • libpas/src/libpas/pas_large_sharing_pool.c: Added.

(node_compare_callback):
(inner_key_compare_callback):
(update_min_epoch):
(validate_min_heap):
(validate_node):
(validate_node_if_asserting_aggressively):
(create_node):
(create_and_insert):
(boot_tree):
(destroy_node):
(remove_from_min_heap):
(remove_and_destroy):
(predecessor):
(successor):
(states_match):
(is_eligible):
(belongs_in_min_heap):
(update_min_heap):
(split_node_and_get_right_impl):
(split_node_and_get_right):
(split_node_and_get_left):
(merge_if_possible):
(node_containing):
(min_node_for_range):
(max_node_for_range):
(splat_live_bytes):
(should_do_commit_stuff_to):
(splat_command_get_string):
(splat_command_get_free_mode):
(dump_large_commit):
(try_splat_impl):
(try_splat):
(splat):
(pas_large_sharing_pool_boot_free):
(pas_large_sharing_pool_free):
(pas_large_sharing_pool_allocate_and_commit):
(pas_large_sharing_pool_decommit_least_recently_used):
(pas_large_sharing_pool_validate):
(pas_large_sharing_pool_compute_summary):
(pas_large_sharing_pool_for_each):

  • libpas/src/libpas/pas_large_sharing_pool.h: Added.

(pas_large_sharing_node_heap_compare):
(pas_large_sharing_node_heap_get_index):
(pas_large_sharing_node_heap_set_index):

  • libpas/src/libpas/pas_large_sharing_pool_epoch_update_mode.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_large_sharing_pool_epoch_update_mode_get_string):

  • libpas/src/libpas/pas_large_utility_free_heap.c: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_large_utility_free_heap.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_line_word_config.h: Added.

(pas_line_word_config_count_low_zeroes_8_bit):
(pas_line_word_config_count_high_zeroes_8_bit):
(pas_line_word_config_count_low_zeroes_16_bit):
(pas_line_word_config_count_high_zeroes_16_bit):
(pas_line_word_config_count_low_zeroes_32_bit):
(pas_line_word_config_count_high_zeroes_32_bit):
(pas_line_word_config_count_low_zeroes_64_bit):
(pas_line_word_config_count_high_zeroes_64_bit):
(pas_line_word_config_construct):

  • libpas/src/libpas/pas_list_direction.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_list_direction_get_string):
(pas_list_direction_invert):

  • libpas/src/libpas/pas_local_allocator.c: Added.

(pas_local_allocator_construct):
(pas_local_allocator_destruct):
(pas_local_allocator_reset):
(pas_local_allocator_move):
(pas_local_allocator_refill_with_bitfit):
(pas_local_allocator_finish_refill_with_bitfit):
(stop_impl):
(pas_local_allocator_stop):
(pas_local_allocator_scavenge):

  • libpas/src/libpas/pas_local_allocator.h: Added.

(pas_local_allocator_is_null):
(pas_local_allocator_is_active):
(pas_local_allocator_has_bitfit):
(pas_local_allocator_get_bitfit):
(pas_local_allocator_page_boundary):
(pas_local_allocator_alignment):

  • libpas/src/libpas/pas_local_allocator_config_kind.h: Added.

(pas_local_allocator_config_kind_is_primordial_partial):
(pas_local_allocator_config_kind_is_bitfit):
(pas_local_allocator_config_kind_create_normal):
(pas_local_allocator_config_kind_create_primordial_partial):
(pas_local_allocator_config_kind_create_bitfit):
(pas_local_allocator_config_kind_get_segregated_page_config_kind):
(pas_local_allocator_config_kind_get_bitfit_page_config_kind):
(pas_local_allocator_config_kind_get_string):

  • libpas/src/libpas/pas_local_allocator_inlines.h: Added.

(pas_local_allocator_reset_impl):
(pas_local_allocator_set_up_bump):
(pas_local_allocator_scan_bits_to_set_up_use_counts_bits_source):
(pas_local_allocator_scan_bits_to_set_up_use_counts_bit_callback):
(pas_local_allocator_scan_bits_to_set_up_free_bits):
(pas_local_allocator_set_up_free_bits):
(pas_local_allocator_make_bump):
(pas_local_allocator_prepare_to_allocate):
(pas_local_allocator_set_up_primordial_bump):
(pas_local_allocator_start_allocating_in_primordial_partial_view):
(pas_local_allocator_bless_primordial_partial_view_before_stopping):
(pas_local_allocator_try_allocate_in_primordial_partial_view):
(pas_local_allocator_refill_with_known_config):
(pas_local_allocator_return_memory_to_page_bits_source):
(pas_local_allocator_return_memory_to_page_set_bit_callback):
(pas_local_allocator_return_memory_to_page):
(pas_local_allocator_try_allocate_with_free_bits):
(pas_local_allocator_try_allocate_inline_cases):
(pas_local_allocator_try_allocate_small_segregated_slow_impl):
(pas_local_allocator_try_allocate_small_segregated_slow):
(pas_local_allocator_try_allocate_out_of_line_cases):
(pas_local_allocator_try_allocate_slow_impl):
(pas_local_allocator_try_allocate_slow):
(pas_local_allocator_try_allocate):

  • libpas/src/libpas/pas_local_allocator_line.h: Added.

(pas_local_allocator_line_fits_without_shift):
(pas_local_allocator_line_decode):
(pas_local_allocator_line_encode):
(pas_local_allocator_line_remaining):
(pas_local_allocator_line_set_remaining):
(pas_local_allocator_line_payload_end_delta):
(pas_local_allocator_line_set_payload_end_delta):

  • libpas/src/libpas/pas_local_allocator_refill_mode.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_local_allocator_result.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_local_allocator_result_create_failure):
(pas_local_allocator_result_create_success):

  • libpas/src/libpas/pas_lock.c: Copied from Source/WTF/wtf/FastTLS.h.

(pas_lock_lock_slow):

  • libpas/src/libpas/pas_lock.h: Added.

(pas_lock_construct):
(pas_lock_construct_disabled):
(pas_lock_lock):
(pas_lock_try_lock):
(pas_lock_unlock):
(pas_lock_assert_held):
(pas_lock_testing_assert_held):
(pas_lock_lock_with_mode):
(pas_lock_switch_with_mode):
(pas_lock_switch):
(pas_lock_lock_conditionally):
(pas_lock_unlock_conditionally):
(pas_lock_for_switch_conditionally):
(pas_lock_switch_conditionally):

  • libpas/src/libpas/pas_lock_free_read_hashtable.h: Added.

(if):

  • libpas/src/libpas/pas_lock_free_read_ptr_ptr_hashtable.c: Added.

(pas_lock_free_read_ptr_ptr_hashtable_set):

  • libpas/src/libpas/pas_lock_free_read_ptr_ptr_hashtable.h: Added.

(pas_lock_free_read_ptr_ptr_hashtable_find):
(pas_lock_free_read_ptr_ptr_hashtable_size):

  • libpas/src/libpas/pas_log.c: Added.

(pas_vlog_fd):
(pas_log_fd):
(pas_vlog):
(pas_log):
(pas_start_crash_logging):

  • libpas/src/libpas/pas_log.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_magazine.c: Copied from Source/WTF/wtf/FastTLS.h.

(pas_magazine_create):

  • libpas/src/libpas/pas_magazine.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_medium_megapage_cache.c: Copied from Source/WTF/wtf/FastTLS.h.

(pas_medium_megapage_cache_try_allocate):

  • libpas/src/libpas/pas_medium_megapage_cache.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_megapage_cache.c: Added.

(megapage_cache_allocate_aligned):
(pas_megapage_cache_construct):
(pas_megapage_cache_try_allocate):

  • libpas/src/libpas/pas_megapage_cache.h: Added.
  • libpas/src/libpas/pas_min_heap.h: Added.
  • libpas/src/libpas/pas_monotonic_time.c: Copied from Source/WTF/wtf/FastTLS.h.

(get_timebase_info):
(pas_get_current_monotonic_time_nanoseconds):

  • libpas/src/libpas/pas_monotonic_time.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_mutation_count.h: Added.

(pas_mutation_count_start_mutating):
(pas_mutation_count_stop_mutating):
(pas_mutation_count_is_mutating):
(pas_mutation_count_matches):
(pas_mutation_count_depend):

  • libpas/src/libpas/pas_object_kind.h: Added.

(pas_object_kind_get_string):
(pas_object_kind_for_segregated_variant):
(pas_object_kind_for_bitfit_variant):

  • libpas/src/libpas/pas_object_size_mode.h: Added.

(pas_object_size_mode_get_string):

  • libpas/src/libpas/pas_page_base.c: Added.

(pas_page_base_get_config):
(pas_page_base_get_granule_use_counts):
(pas_page_base_compute_committed_when_owned):
(pas_page_base_is_empty):
(pas_page_base_add_free_range):

  • libpas/src/libpas/pas_page_base.h: Added.

(pas_page_base_construct):
(pas_page_base_get_kind):
(pas_page_base_get_config_kind):
(pas_page_base_is_segregated):
(pas_page_base_get_segregated):
(pas_page_base_is_bitfit):
(pas_page_base_get_bitfit):
(pas_page_base_index_of_object_at_offset_from_page_boundary):
(pas_page_base_object_offset_from_page_boundary_at_index):
(pas_page_base_boundary):
(pas_page_base_boundary_or_null):
(pas_page_base_for_boundary):
(pas_page_base_for_boundary_or_null):
(pas_page_base_boundary_for_address_and_page_config):
(pas_page_base_for_address_and_page_config):

  • libpas/src/libpas/pas_page_base_config.h: Added.

(pas_page_base_config_min_align):
(pas_page_base_config_object_payload_end_offset_from_boundary):
(pas_page_base_config_num_granule_bytes):
(pas_page_base_config_get_config_kind):
(pas_page_base_config_is_segregated):
(pas_page_base_config_is_bitfit):
(pas_page_base_config_get_segregated):
(pas_page_base_config_get_bitfit):

  • libpas/src/libpas/pas_page_base_config_inlines.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_page_base_config_is_utility):

  • libpas/src/libpas/pas_page_base_config_utils.h: Added.
  • libpas/src/libpas/pas_page_base_config_utils_inlines.h: Added.
  • libpas/src/libpas/pas_page_base_inlines.h: Added.

(pas_page_base_free_granule_uses_in_range_action):
(pas_page_base_free_granule_uses_in_range):

  • libpas/src/libpas/pas_page_config_kind.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_page_config_kind_get_string):

  • libpas/src/libpas/pas_page_granule_use_count.h: Added.

(pas_page_granule_get_indices):
(pas_page_granule_for_each_use_in_range):
(pas_page_granule_use_count_increment):
(pas_page_granule_increment_uses_for_range):

  • libpas/src/libpas/pas_page_header_placement_mode.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_page_header_placement_mode_get_string):

  • libpas/src/libpas/pas_page_header_table.c: Added.

(pas_page_header_table_add):
(pas_page_header_table_remove):

  • libpas/src/libpas/pas_page_header_table.h: Added.

(pas_page_header_table_hash):
(pas_page_header_table_get_boundary_ptr):
(pas_page_header_table_get_boundary):
(pas_page_header_table_get_for_boundary):
(pas_page_header_table_get_for_address):

  • libpas/src/libpas/pas_page_kind.h: Added.

(pas_page_kind_get_string):
(pas_page_kind_get_config_kind):
(pas_page_kind_get_segregated_variant):
(pas_page_kind_get_bitfit_variant):

  • libpas/src/libpas/pas_page_malloc.c: Added.

(pas_page_malloc_alignment_slow):
(pas_page_malloc_alignment_shift_slow):
(pas_page_malloc_try_allocate_without_deallocating_padding):
(pas_page_malloc_commit):
(pas_page_malloc_decommit):
(pas_page_malloc_deallocate):

  • libpas/src/libpas/pas_page_malloc.h: Added.

(pas_page_malloc_alignment):
(pas_page_malloc_alignment_shift):

  • libpas/src/libpas/pas_page_sharing_mode.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_page_sharing_mode_does_sharing):
(pas_page_sharing_mode_get_string):

  • libpas/src/libpas/pas_page_sharing_participant.c: Added.

(pas_page_sharing_participant_create):
(pas_page_sharing_participant_get_payload):
(pas_page_sharing_participant_payload_construct):
(pas_page_sharing_participant_payload_with_use_epoch_construct):
(pas_page_sharing_participant_get_use_epoch):
(pas_page_sharing_participant_set_parent_pool):
(pas_page_sharing_participant_get_parent_pool):
(pas_page_sharing_participant_is_eligible):
(pas_page_sharing_participant_take_least_recently_used):

  • libpas/src/libpas/pas_page_sharing_participant.h: Added.

(pas_page_sharing_participant_get_ptr):
(pas_page_sharing_participant_get_kind):

  • libpas/src/libpas/pas_page_sharing_participant_kind.h: Added.

(pas_page_sharing_participant_kind_select_for_segregated_directory):
(pas_page_sharing_participant_kind_get_string):

  • libpas/src/libpas/pas_page_sharing_pool.c: Added.

(verify_participants):
(verify_min_heap):
(dump_min_heap):
(pas_page_sharing_pool_construct):
(pas_page_sharing_pool_add_at_index):
(pas_page_sharing_pool_add):
(get_current_participant):
(take_from):
(pas_page_sharing_pool_take_least_recently_used):
(atomic_add_balance):
(pas_physical_page_sharing_pool_take):
(pas_physical_page_sharing_pool_scavenge):
(pas_physical_page_sharing_pool_take_later):
(pas_physical_page_sharing_pool_give_back):
(pas_physical_page_sharing_pool_take_for_page_config):
(pas_bias_page_sharing_pool_take):
(pas_page_sharing_pool_did_create_delta):
(pas_page_sharing_pool_verify):
(pas_page_sharing_pool_has_delta):
(pas_page_sharing_pool_has_current_participant):

  • libpas/src/libpas/pas_page_sharing_pool.h: Added.

(pas_page_sharing_participant_compare):
(pas_page_sharing_participant_get_index):
(pas_page_sharing_participant_set_index):
(pas_page_sharing_pool_num_participants):
(pas_page_sharing_pool_get_participant):

  • libpas/src/libpas/pas_page_sharing_pool_take_result.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_page_sharing_pool_take_result_get_string):

  • libpas/src/libpas/pas_payload_reservation_page_list.c: Copied from Source/WTF/wtf/FastTLS.h.

(pas_payload_reservation_page_list_append):

  • libpas/src/libpas/pas_payload_reservation_page_list.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_physical_memory_synchronization_style.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_physical_memory_synchronization_style_get_string):

  • libpas/src/libpas/pas_physical_memory_transaction.c: Added.

(pas_physical_memory_transaction_construct):
(pas_physical_memory_transaction_begin):
(pas_physical_memory_transaction_end):
(pas_physical_memory_transaction_did_fail_to_acquire_lock):

  • libpas/src/libpas/pas_physical_memory_transaction.h: Added.
  • libpas/src/libpas/pas_primitive_heap_ref.c: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_primitive_heap_ref.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_promote_intrinsic_heap.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_ptr_hash_map.h: Added.

(pas_ptr_hash_map_entry_create_empty):
(pas_ptr_hash_map_entry_create_deleted):
(pas_ptr_hash_map_entry_is_empty_or_deleted):
(pas_ptr_hash_map_entry_is_empty):
(pas_ptr_hash_map_entry_is_deleted):
(pas_ptr_hash_map_entry_get_key):
(pas_ptr_hash_map_key_get_hash):
(pas_ptr_hash_map_key_is_equal):

  • libpas/src/libpas/pas_ptr_hash_set.h: Added.

(pas_ptr_hash_set_entry_create_empty):
(pas_ptr_hash_set_entry_create_deleted):
(pas_ptr_hash_set_entry_is_empty_or_deleted):
(pas_ptr_hash_set_entry_is_empty):
(pas_ptr_hash_set_entry_is_deleted):
(pas_ptr_hash_set_entry_get_key):
(pas_ptr_hash_set_key_get_hash):
(pas_ptr_hash_set_key_is_equal):

  • libpas/src/libpas/pas_ptr_min_heap.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_ptr_min_heap_compare):
(pas_ptr_min_heap_get_index):
(pas_ptr_min_heap_set_index):

  • libpas/src/libpas/pas_ptr_worklist.c: Added.

(pas_ptr_worklist_construct):
(pas_ptr_worklist_destruct):
(pas_ptr_worklist_push):
(pas_ptr_worklist_pop):

  • libpas/src/libpas/pas_ptr_worklist.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_race_test_hooks.c: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_race_test_hooks.h: Added.

(pas_race_test_hook_kind_get_string):
(pas_race_test_hook):
(pas_race_test_will_lock):
(pas_race_test_did_lock):
(pas_race_test_did_try_lock):
(pas_race_test_will_unlock):

  • libpas/src/libpas/pas_random.c: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_random.h: Added.

(pas_get_random):

  • libpas/src/libpas/pas_range.h: Added.

(pas_range_create):
(pas_range_create_empty):
(pas_range_create_forgiving):
(pas_range_is_empty):
(pas_range_size):
(pas_range_contains):
(pas_range_subsumes):
(pas_range_overlaps):
(pas_range_create_intersection):
(pas_range_compare):

  • libpas/src/libpas/pas_range16.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_range16_create):

  • libpas/src/libpas/pas_range_begin_min_heap.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_range_begin_min_heap_compare):
(pas_range_begin_min_heap_get_index):
(pas_range_begin_min_heap_set_index):

  • libpas/src/libpas/pas_range_locked_mode.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_range_locked_mode_get_string):

  • libpas/src/libpas/pas_range_min_heap.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_range_compare_begin):
(pas_range_get_index):
(pas_range_set_index):

  • libpas/src/libpas/pas_reallocate_free_mode.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_reallocate_heap_teleport_rule.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_red_black_tree.c: Added.

(tree_insert):
(left_rotate):
(right_rotate):
(remove_fixup):
(pas_red_black_tree_insert):
(pas_red_black_tree_remove):
(pas_red_black_tree_size):

  • libpas/src/libpas/pas_red_black_tree.h: Added.

(pas_red_black_tree_validate_enumerable):
(pas_red_black_tree_get_root):
(pas_red_black_tree_node_get_left):
(pas_red_black_tree_node_get_right):
(pas_red_black_tree_node_get_parent):
(pas_red_black_tree_node_get_color):
(pas_red_black_tree_set_root):
(pas_red_black_tree_node_set_left):
(pas_red_black_tree_node_set_right):
(pas_red_black_tree_node_set_parent):
(pas_red_black_tree_node_set_color):
(pas_red_black_tree_node_minimum):
(pas_red_black_tree_node_maximum):
(pas_red_black_tree_node_successor):
(pas_red_black_tree_node_predecessor):
(pas_red_black_tree_node_reset):
(pas_red_black_tree_construct):
(pas_red_black_tree_node_find_exact):
(pas_red_black_tree_find_exact):
(pas_red_black_tree_node_find_least_greater_than_or_equal):
(pas_red_black_tree_find_least_greater_than_or_equal):
(pas_red_black_tree_node_find_least_greater_than):
(pas_red_black_tree_find_least_greater_than):
(pas_red_black_tree_node_find_greatest_less_than_or_equal):
(pas_red_black_tree_find_greatest_less_than_or_equal):
(pas_red_black_tree_node_find_greatest_less_than):
(pas_red_black_tree_find_greatest_less_than):
(pas_red_black_tree_minimum):
(pas_red_black_tree_maximum):
(pas_red_black_tree_is_empty):

  • libpas/src/libpas/pas_redundant_local_allocator_node.c: Copied from Source/WTF/wtf/FastTLS.h.

(pas_redundant_local_allocator_node_create):

  • libpas/src/libpas/pas_redundant_local_allocator_node.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_reserved_memory_provider.c: Added.

(null_aligned_allocator):
(initialize_config):
(pas_reserved_memory_provider_construct):
(pas_reserved_memory_provider_try_allocate):

  • libpas/src/libpas/pas_reserved_memory_provider.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_root.c: Added.

(count_static_heaps_callback):
(collect_static_heaps_callback):
(pas_root_construct):
(pas_root_create):
(default_reader):
(enumerator_reader):
(enumerator_recorder):
(pas_root_enumerate_for_libmalloc):
(pas_root_enumerate_for_libmalloc_with_root_after_zone):
(malloc_introspect_good_size):
(malloc_introspect_check):
(malloc_introspect_print):
(malloc_introspect_log):
(malloc_introspect_force_lock):
(malloc_introspect_force_unlock):
(malloc_introspect_statistics):
(pas_root_ensure_for_libmalloc_enumeration):

  • libpas/src/libpas/pas_root.h: Added.
  • libpas/src/libpas/pas_scavenger.c: Added.

(ensure_data_instance):
(get_time_in_milliseconds):
(timed_wait):
(scavenger_thread_main):
(pas_scavenger_did_create_eligible):
(pas_scavenger_notify_eligibility_if_needed):
(pas_scavenger_suspend):
(pas_scavenger_resume):
(pas_scavenger_clear_all_non_tlc_caches):
(pas_scavenger_clear_all_caches_except_remote_tlcs):
(pas_scavenger_clear_all_caches):
(pas_scavenger_decommit_free_memory):
(pas_scavenger_run_synchronously_now):
(pas_scavenger_perform_synchronous_operation):

  • libpas/src/libpas/pas_scavenger.h: Added.
  • libpas/src/libpas/pas_segmented_vector.h: Added.
  • libpas/src/libpas/pas_segregated_biasing_directory.c: Added.

(pas_segregated_biasing_directory_create):
(take_first_eligible_loop_head_callback):
(take_first_eligible_create_new_view_callback):
(pas_segregated_biasing_directory_take_first_eligible):
(pas_segregated_biasing_directory_take_last_unused):

  • libpas/src/libpas/pas_segregated_biasing_directory.h: Added.

(pas_segregated_biasing_directory_magazine_index):

  • libpas/src/libpas/pas_segregated_biasing_view.c: Added.

(pas_segregated_biasing_view_create):
(pas_segregated_biasing_view_is_owned):
(pas_segregated_biasing_view_lock_ownership_lock):
(pas_segregated_biasing_view_should_table):
(pas_segregated_biasing_view_note_eligibility):
(pas_segregated_biasing_view_note_emptiness):
(pas_segregated_biasing_view_compute_summary):
(pas_segregated_biasing_view_is_eligible):
(pas_segregated_biasing_view_is_empty):

  • libpas/src/libpas/pas_segregated_biasing_view.h: Added.

(pas_segregated_biasing_view_as_view):
(pas_segregated_biasing_view_as_ineligible_view):
(pas_segregated_biasing_view_as_view_non_null):
(pas_segregated_biasing_view_as_ineligible_view_non_null):

  • libpas/src/libpas/pas_segregated_directory.c: Added.

(pas_segregated_directory_construct):
(pas_segregated_directory_get_data_slow):
(pas_segregated_directory_get_use_epoch):
(pas_segregated_directory_get_sharing_payload):
(pas_segregated_directory_minimize_first_eligible):
(pas_segregated_directory_update_first_eligible_after_search):
(pas_segregated_directory_view_did_become_eligible_at_index_without_biasing_update):
(pas_segregated_directory_view_did_become_eligible_at_index):
(pas_segregated_directory_view_did_become_eligible_without_biasing_update):
(pas_segregated_directory_view_did_become_eligible):
(maximize_last_empty):
(pas_segregated_directory_view_did_become_empty_at_index):
(pas_segregated_directory_view_did_become_empty):
(pas_segregated_directory_is_committed):
(pas_segregated_directory_num_committed_views):
(num_empty_views_should_consider_view_parallel):
(pas_segregated_directory_num_empty_views):
(pas_segregated_directory_update_last_empty_plus_one_after_search):
(pas_segregated_directory_append):
(pas_segregated_directory_compute_summary):
(pas_segregated_directory_num_empty_granules):

  • libpas/src/libpas/pas_segregated_directory.h: Added.

(pas_segregated_directory_size):
(pas_segregated_directory_bits_get_by_mask):
(pas_segregated_directory_bits_set_by_mask):
(pas_segregated_directory_get_misc_bit):
(pas_segregated_directory_set_misc_bit):
(pas_segregated_directory_get_other_misc_bit):
(pas_segregated_directory_set_other_misc_bit):
(pas_segregated_directory_spoof_inline_segment):
(pas_segregated_directory_get_empty_bit):
(pas_segregated_directory_set_empty_bit):
(pas_segregated_directory_get_data):
(pas_segregated_directory_can_do_sharing):
(pas_segregated_directory_is_doing_sharing):
(pas_segregated_directory_data_try_get_sharing_payload):
(pas_segregated_directory_start_sharing_if_necessary):
(pas_segregated_directory_data_get_first_eligible_ptr):
(pas_segregated_directory_is_eligible):
(pas_segregated_directory_is_empty):
(pas_segregated_directory_is_tabled):
(pas_segregated_directory_get_first_eligible_impl):
(pas_segregated_directory_get_first_eligible):
(pas_segregated_directory_get_first_eligible_torn):
(pas_segregated_directory_watch_first_eligible):
(pas_segregated_directory_get_last_empty_plus_one_impl):
(pas_segregated_directory_get_last_empty_plus_one):
(pas_segregated_directory_get_last_empty_plus_one_value):
(pas_segregated_directory_watch_last_empty_plus_one):
(pas_segregated_directory_last_empty_plus_one):
(pas_segregated_directory_get):

  • libpas/src/libpas/pas_segregated_directory_bit_reference.h: Added.

(pas_segregated_directory_bit_reference_create_null):
(pas_segregated_directory_bit_reference_create_inline):
(pas_segregated_directory_bit_reference_create_out_of_line):
(pas_segregated_directory_bit_reference_is_null):
(pas_segregated_directory_bit_reference_is_inline):
(pas_segregated_directory_bit_reference_is_out_of_line):

  • libpas/src/libpas/pas_segregated_directory_first_eligible_kind.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_segregated_directory_find_eligible_kind_get_string):

  • libpas/src/libpas/pas_segregated_directory_inlines.h: Added.

(pas_segregated_directory_iterate_iterate_callback):
(pas_segregated_directory_iterate_forward_iterate_callback):
(pas_segregated_directory_iterate_forward):
(pas_segregated_directory_iterate_backward_iterate_callback):
(pas_segregated_directory_iterate_backward):
(pas_segregated_directory_iterate_forward_to_take_first_eligible):
(pas_segregated_directory_iterate_backward_to_take_last_empty):

  • libpas/src/libpas/pas_segregated_directory_kind.h: Added.

(pas_segregated_directory_kind_get_string):

  • libpas/src/libpas/pas_segregated_exclusive_view.c: Added.

(pas_segregated_exclusive_view_create):
(pas_segregated_exclusive_view_should_table):
(pas_segregated_exclusive_ish_view_note_eligibility_impl):
(pas_segregated_exclusive_view_note_eligibility):
(pas_segregated_exclusive_view_note_emptiness):
(pas_segregated_exclusive_ish_view_compute_summary_impl):
(pas_segregated_exclusive_view_compute_summary):
(pas_segregated_exclusive_view_install_full_use_counts):
(pas_segregated_exclusive_view_is_eligible):
(pas_segregated_exclusive_view_is_empty):

  • libpas/src/libpas/pas_segregated_exclusive_view.h: Added.

(pas_segregated_exclusive_view_as_view):
(pas_segregated_exclusive_view_as_ineligible_view):
(pas_segregated_exclusive_view_as_view_non_null):
(pas_segregated_exclusive_view_as_ineligible_view_non_null):

  • libpas/src/libpas/pas_segregated_exclusive_view_inlines.h: Added.

(pas_segregated_exclusive_ish_view_did_start_allocating):

  • libpas/src/libpas/pas_segregated_exclusive_view_ownership_kind.h: Added.

(pas_segregated_exclusive_view_ownership_kind_is_owned):
(pas_segregated_exclusive_view_ownership_kind_is_biased):
(pas_segregated_exclusive_view_ownership_kind_with_owned):
(pas_segregated_exclusive_view_ownership_kind_with_biased):
(pas_segregated_exclusive_view_ownership_kind_get_string):

  • libpas/src/libpas/pas_segregated_global_size_directory.c: Added.

(pas_segregated_global_size_directory_create):
(pas_segregated_global_size_directory_ensure_data):
(pas_segregated_global_size_directory_get_extended_data):
(pas_segregated_global_size_directory_create_tlc_allocator):
(pas_segregated_global_size_directory_enable_exclusive_views):
(pas_segregated_global_size_directory_explode):
(pas_segregated_global_size_directory_select_allocator_slow):
(take_first_eligible_direct_loop_head_callback):
(take_first_eligible_direct_create_new_view_callback):
(pas_segregated_global_size_directory_take_first_eligible_direct):
(pas_segregated_global_size_directory_take_first_eligible):
(take_last_empty_should_consider_view_parallel):
(take_last_empty_consider_view):
(pas_segregated_global_size_directory_take_last_empty):
(pas_segregated_global_size_directory_for_object):
(pas_segregated_global_size_directory_get_allocator_from_tlc):
(pas_segregated_global_size_directory_compute_summary_for_unowned_exclusive):
(for_each_live_object_callback):
(pas_segregated_global_size_directory_for_each_live_object):
(pas_segregated_global_size_directory_local_allocator_size):
(pas_segregated_global_size_directory_num_allocator_indices):
(pas_segregated_global_size_directory_dump_reference):
(pas_segregated_global_size_directory_dump_for_spectrum):

  • libpas/src/libpas/pas_segregated_global_size_directory.h: Added.

(pas_segregated_global_size_directory_as_view):
(pas_segregated_global_size_directory_alignment):
(pas_segregated_global_size_directory_contention_did_trigger_explosion):
(pas_segregated_global_size_directory_set_contention_did_trigger_explosion):
(pas_segregated_global_size_directory_has_tlc_allocator):
(pas_segregated_global_size_directory_are_exclusive_views_enabled):
(pas_segregated_global_size_directory_bias_sharing_pool):

  • libpas/src/libpas/pas_segregated_global_size_directory_inlines.h: Added.

(pas_segregated_global_size_directory_select_allocator):
(pas_segregated_global_size_directory_local_allocator_size_for_null_config):
(pas_segregated_global_size_directory_local_allocator_size_for_config):
(pas_segregated_global_size_directory_num_allocator_indices_for_allocator_size):
(pas_segregated_global_size_directory_num_allocator_indices_for_config):

  • libpas/src/libpas/pas_segregated_heap.c: Added.

(min_object_size_for_heap_config):
(max_count_for_page_config):
(max_object_size_for_page_config):
(max_small_count_for_heap_config):
(max_segregated_count_for_heap_config):
(max_bitfit_count_for_heap_config):
(max_count_for_heap_config):
(max_bitfit_object_size_for_heap_config):
(max_object_size_for_heap_config):
(pas_segregated_heap_construct):
(pas_segregated_heap_get_bitfit):
(medium_directory_tuple_for_index_impl):
(medium_directory_tuple_for_index_with_lock):
(pas_segregated_heap_medium_directory_tuple_for_index):
(pas_segregated_heap_medium_allocator_index_for_index):
(pas_segregated_heap_medium_size_directory_for_index):
(compute_small_index_upper_bound):
(ensure_count_lookup):
(pas_segregated_heap_ensure_allocator_index):
(compute_ideal_object_size):
(check_medium_directories):
(check_part_of_all_heaps_callback):
(check_part_of_all_segregated_heaps_callback):
(ensure_count_lookup_if_necessary):
(pas_segregated_heap_ensure_size_directory_for_count):
(pas_segregated_heap_get_num_free_bytes):
(pas_segregated_heap_for_each_global_size_directory):
(for_each_committed_size_directory_callback):
(pas_segregated_heap_for_each_committed_view):
(for_each_view_index_directory_callback):
(pas_segregated_heap_for_each_view_index):
(for_each_live_object_object_callback):
(for_each_live_object_directory_callback):
(for_each_live_object_bitfit_callback):
(pas_segregated_heap_for_each_live_object):
(num_committed_views_directory_callback):
(pas_segregated_heap_num_committed_views):
(num_empty_views_directory_callback):
(pas_segregated_heap_num_empty_views):
(num_empty_granules_directory_callback):
(pas_segregated_heap_num_empty_granules):
(num_views_directory_callback):
(pas_segregated_heap_num_views):
(compute_summary_directory_callback):
(pas_segregated_heap_compute_summary):

  • libpas/src/libpas/pas_segregated_heap.h: Added.

(pas_segregated_heap_index_for_primitive_count):
(pas_segregated_heap_primitive_count_for_index):
(pas_segregated_heap_index_for_count):
(pas_segregated_heap_count_for_index):
(pas_segregated_heap_allocator_index_for_index):
(pas_segregated_heap_allocator_index_for_count_not_primitive):

  • libpas/src/libpas/pas_segregated_heap_inlines.h: Added.

(pas_segregated_heap_size_directory_for_index):
(pas_segregated_heap_size_directory_for_count):

  • libpas/src/libpas/pas_segregated_heap_lookup_kind.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_segregated_heap_page_sharing_mode.h: Added.

(pas_segregated_heap_page_sharing_mode_does_any_sharing):
(pas_segregated_heap_page_sharing_mode_does_virtual_sharing):
(pas_segregated_heap_page_sharing_mode_does_physical_sharing):
(pas_segregated_heap_page_sharing_mode_get_string):

  • libpas/src/libpas/pas_segregated_page.c: Added.

(pas_segregated_page_switch_lock_slow):
(pas_segregated_page_switch_lock_and_rebias_to_magazine_while_ineligible_impl):
(pas_segregated_page_construct):
(pas_segregated_page_note_emptiness):
(commit_lock_for):
(pas_segregated_page_take_empty_granules):
(pas_segregated_page_take_physically):
(pas_segregated_page_commit_fully):
(verify_granules_live_object_callback):
(pas_segregated_page_verify_granules):
(pas_segregated_page_deallocation_did_fail):
(pas_segregated_page_get_num_empty_granules):
(pas_segregated_page_get_num_committed_granules):
(pas_segregated_page_get_config):
(pas_segregated_page_add_commit_range):
(pas_segregated_page_and_config_for_address_and_heap_config):
(pas_segregated_page_verify_num_non_empty_words):

  • libpas/src/libpas/pas_segregated_page.h: Added.

(pas_segregated_page_header_size):
(pas_segregated_page_offset_from_page_boundary_to_first_object_for_hugging_mode):
(pas_segregated_page_offset_from_page_boundary_to_end_of_last_object_for_hugging_mode):
(pas_segregated_page_useful_object_payload_size_for_hugging_mode):
(pas_segregated_page_best_hugging_mode):
(pas_segregated_page_offset_from_page_boundary_to_first_object_exclusive):
(pas_segregated_page_offset_from_page_boundary_to_end_of_last_object_exclusive):
(pas_segregated_page_useful_object_payload_size):
(pas_segregated_page_number_of_objects):
(pas_segregated_page_bytes_dirtied_per_object):
(pas_segregated_page_get_granule_use_counts):
(pas_segregated_page_for_boundary):
(pas_segregated_page_for_boundary_or_null):
(pas_segregated_page_for_boundary_unchecked):
(pas_segregated_page_boundary):
(pas_segregated_page_boundary_or_null):
(pas_segregated_page_for_address_and_page_config):
(pas_segregated_page_is_allocated_with_page):
(pas_segregated_page_is_allocated):
(pas_segregated_page_for_address_and_heap_config):

  • libpas/src/libpas/pas_segregated_page_and_config.h: Added.

(pas_segregated_page_and_config_create):
(pas_segregated_page_and_config_create_empty):
(pas_segregated_page_and_config_is_empty):

  • libpas/src/libpas/pas_segregated_page_config.c: Added.

(pas_segregated_page_config_validate):

  • libpas/src/libpas/pas_segregated_page_config.h: Added.

(pas_segregated_page_config_is_enabled):
(pas_segregated_page_config_min_align):
(pas_segregated_page_config_object_payload_end_offset_from_boundary):
(pas_segregated_page_config_num_alloc_words):
(pas_segregated_page_config_num_alloc_bytes):
(pas_segregated_page_config_get_kind):
(pas_segregated_page_config_kind_is_utility):
(pas_segregated_page_config_is_utility):
(pas_segregated_page_config_kind_heap_lock_hold_mode):
(pas_segregated_page_config_heap_lock_hold_mode):

  • libpas/src/libpas/pas_segregated_page_config_inlines.h: Added.
  • libpas/src/libpas/pas_segregated_page_config_kind.c: Copied from Source/WTF/wtf/FastTLS.h.

(pas_segregated_page_config_kind_for_each):

  • libpas/src/libpas/pas_segregated_page_config_kind.def: Added.
  • libpas/src/libpas/pas_segregated_page_config_kind.h: Added.

(pas_segregated_page_config_kind_get_string):
(pas_segregated_page_config_kind_get_config):

  • libpas/src/libpas/pas_segregated_page_config_utils.h: Added.

(pas_segregated_page_config_verify_dealloc):

  • libpas/src/libpas/pas_segregated_page_config_utils_inlines.h: Added.
  • libpas/src/libpas/pas_segregated_page_config_variant.h: Added.

(pas_segregated_page_config_variant_get_string):

  • libpas/src/libpas/pas_segregated_page_emptiness_kind.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_page_emptiness_kind_get_inverted):
(pas_page_emptiness_kind_get_string):

  • libpas/src/libpas/pas_segregated_page_granule_use_count.h: Added.

(pas_segregated_page_granule_use_count_increment):
(pas_segregated_page_granule_for_each_use_in_range):
(pas_segregated_page_granule_increment_uses_for_range):

  • libpas/src/libpas/pas_segregated_page_header_placement_mode.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_segregated_page_header_placement_mode_get_string):

  • libpas/src/libpas/pas_segregated_page_inlines.h: Added.

(pas_segregated_page_offset_from_page_boundary_to_first_object):
(pas_segregated_page_initialize_full_use_counts):
(pas_segregated_page_lock_with_unbias_not_utility):
(pas_segregated_page_lock_with_unbias):
(pas_segregated_page_lock):
(pas_segregated_page_unlock):
(pas_segregated_page_switch_lock_with_mode):
(pas_segregated_page_switch_lock):
(pas_segregated_page_switch_lock_and_rebias_to_magazine_while_ineligible):
(pas_segregated_page_deallocate_with_page):
(pas_segregated_page_deallocate):
(pas_segregated_page_qualifies_for_decommit):
(pas_segregated_page_get_directory_for_address_in_page):
(pas_segregated_page_get_directory_for_address_and_page_config):
(pas_segregated_page_get_object_size_for_address_in_page):
(pas_segregated_page_get_object_size_for_address_and_page_config):

  • libpas/src/libpas/pas_segregated_partial_view.c: Added.

(pas_segregated_partial_view_create):
(pas_segregated_partial_view_note_eligibility):
(pas_segregated_partial_view_set_is_in_use_for_allocation):
(pas_segregated_partial_view_should_table):
(compute_summary):
(pas_segregated_partial_view_compute_summary):
(pas_segregated_partial_view_is_eligible):

  • libpas/src/libpas/pas_segregated_partial_view.h: Added.

(pas_segregated_partial_view_as_view):
(pas_segregated_partial_view_as_view_non_null):

  • libpas/src/libpas/pas_segregated_partial_view_inlines.h: Added.

(pas_segregated_partial_view_tell_shared_handle_for_word_general_case_source):
(pas_segregated_partial_view_tell_shared_handle_for_word_general_case_callback):
(pas_segregated_partial_view_tell_shared_handle_for_word_general_case):
(pas_segregated_partial_view_did_start_allocating):

  • libpas/src/libpas/pas_segregated_shared_handle.c: Added.

(pas_segregated_shared_handle_create):
(pas_segregated_shared_handle_destroy):
(pas_segregated_shared_handle_note_emptiness):

  • libpas/src/libpas/pas_segregated_shared_handle.h: Added.

(pas_segregated_shared_handle_num_views):
(pas_segregated_shared_handle_size):
(pas_segregated_shared_handle_as_view):
(pas_segregated_shared_handle_as_view_non_null):

  • libpas/src/libpas/pas_segregated_shared_handle_inlines.h: Added.

(pas_segregated_shared_handle_partial_view_ptr_for_index):
(pas_segregated_shared_handle_partial_view_for_index):
(pas_segregated_shared_handle_partial_view_for_object):

  • libpas/src/libpas/pas_segregated_shared_page_directory.c: Added.

(find_first_eligible_should_consider_view_parallel):
(find_first_eligible_consider_view):
(pas_segregated_shared_page_directory_find_first_eligible):
(take_last_empty_should_consider_view_parallel):
(switch_to_ownership):
(take_last_empty_consider_view):
(pas_segregated_shared_page_directory_take_last_empty):
(pas_segregated_shared_page_directory_dump_reference):
(pas_segregated_shared_page_directory_dump_for_spectrum):

  • libpas/src/libpas/pas_segregated_shared_page_directory.h: Added.
  • libpas/src/libpas/pas_segregated_shared_view.c: Added.

(pas_segregated_shared_view_create):
(pas_segregated_shared_view_commit_page):
(compute_summary_for_each_live_object_callback):
(compute_summary):
(pas_segregated_shared_view_compute_summary):
(pas_segregated_shared_view_is_empty):

  • libpas/src/libpas/pas_segregated_shared_view.h: Added.

(pas_segregated_shared_view_as_view):
(pas_segregated_shared_view_as_view_non_null):
(pas_shared_view_computed_bump_result_create_empty):
(pas_segregated_shared_view_compute_initial_new_bump):
(pas_segregated_shared_view_can_bump):
(pas_segregated_shared_view_compute_new_bump):
(pas_segregated_shared_view_bump):

  • libpas/src/libpas/pas_segregated_shared_view_inlines.h: Added.

(pas_segregated_shared_view_commit_page_if_necessary):

  • libpas/src/libpas/pas_segregated_size_directory.c: Added.

(pas_segregated_size_directory_construct):
(for_each_live_object_object_callback):
(pas_segregated_size_directory_for_each_live_object):
(pas_segregated_size_directory_for_object):

  • libpas/src/libpas/pas_segregated_size_directory.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_segregated_size_directory_inlines.h: Added.

(pas_segregated_size_directory_take_first_eligible_impl_should_consider_view_not_tabled_parallel):
(pas_segregated_size_directory_take_first_eligible_impl_should_consider_view_tabled_parallel):
(pas_segregated_size_directory_take_first_eligible_impl):
(pas_segregated_size_directory_get_global):

  • libpas/src/libpas/pas_segregated_view.c: Added.

(pas_segregated_view_get_size_directory_slow):
(pas_segregated_view_get_global_size_directory_slow):
(pas_segregated_view_get_page_config_kind):
(pas_segregated_view_get_page_config):
(pas_segregated_view_get_index):
(pas_segregated_view_get_page_boundary):
(pas_segregated_view_get_page):
(pas_segregated_view_should_restart):
(pas_segregated_view_could_bump):
(pas_segregated_view_get_commit_lock):
(pas_segregated_view_get_ownership_lock):
(pas_segregated_view_is_owned):
(pas_segregated_view_should_table):
(pas_segregated_view_is_biased_exclusive):
(pas_segregated_view_lock_ownership_lock):
(pas_segregated_view_lock_ownership_lock_conditionally):
(pas_segregated_view_lock_ownership_lock_if_owned):
(pas_segregated_view_lock_ownership_lock_if_owned_conditionally):
(pas_segregated_view_unlock_ownership_lock):
(pas_segregated_view_unlock_ownership_lock_conditionally):
(pas_segregated_view_is_primordial_partial):
(pas_segregated_view_note_eligibility):
(pas_segregated_view_note_emptiness):
(for_each_live_object):
(pas_segregated_view_for_each_live_object):
(should_be_eligible):
(pas_segregated_view_should_be_eligible):
(pas_segregated_view_for_object):
(pas_segregated_view_compute_summary):
(pas_segregated_view_is_eligible):
(pas_segregated_view_is_eligible_or_biased):
(is_payload_empty_callback):
(pas_segregated_view_is_payload_empty):
(pas_segregated_view_is_empty):
(pas_segregated_view_is_empty_or_biased):

  • libpas/src/libpas/pas_segregated_view.h: Added.

(pas_segregated_view_create):
(pas_segregated_view_create_non_null):
(pas_segregated_view_get_ptr):
(pas_segregated_view_get_kind):
(pas_segregated_view_is_null):
(pas_segregated_view_is_exclusive):
(pas_segregated_view_is_ineligible_exclusive):
(pas_segregated_view_is_some_exclusive):
(pas_segregated_view_is_exclusive_ish):
(pas_segregated_view_is_biasing):
(pas_segregated_view_is_ineligible_biasing):
(pas_segregated_view_is_some_biasing):
(pas_segregated_view_get_biasing):
(pas_segregated_view_is_eligible_kind):
(pas_segregated_view_is_ineligible_kind):
(pas_segregated_view_as_ineligible):
(pas_segregated_view_as_eligible):
(pas_segregated_view_is_shared):
(pas_segregated_view_get_shared):
(pas_segregated_view_is_shared_handle):
(pas_segregated_view_get_shared_handle):
(pas_segregated_view_is_partial):
(pas_segregated_view_get_partial):
(pas_segregated_view_is_global_size_directory):
(pas_segregated_view_get_size_directory):
(pas_segregated_view_get_global_size_directory):

  • libpas/src/libpas/pas_segregated_view_allocator_inlines.h: Added.

(pas_segregated_view_will_start_allocating):
(pas_segregated_view_did_stop_allocating):

  • libpas/src/libpas/pas_segregated_view_inlines.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_segregated_view_get_exclusive):

  • libpas/src/libpas/pas_segregated_view_kind.h: Added.

(pas_segregated_view_kind_get_character_code):
(pas_segregated_view_kind_get_string):
(pas_segregated_view_kind_is_eligible):
(pas_segregated_view_kind_is_exclusive_ish):
(pas_segregated_view_kind_is_ineligible):
(pas_segregated_view_kind_can_become_empty):

  • libpas/src/libpas/pas_shared_handle_or_page.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_wrap_page):
(pas_is_wrapped_shared_handle):
(pas_is_wrapped_page):
(pas_unwrap_page):

  • libpas/src/libpas/pas_shared_handle_or_page_boundary.h: Added.

(pas_wrap_page_boundary):
(pas_is_wrapped_shared_handle):
(pas_is_wrapped_page_boundary):
(pas_unwrap_page_boundary):

  • libpas/src/libpas/pas_shared_handle_or_page_boundary_inlines.h: Added.

(pas_wrap_shared_handle):
(pas_unwrap_shared_handle_no_liveness_checks):
(pas_unwrap_shared_handle):
(pas_shared_handle_or_page_boundary_get_page_boundary_no_liveness_checks):
(pas_shared_handle_or_page_boundary_get_page_boundary):

  • libpas/src/libpas/pas_shared_handle_or_page_inlines.h: Added.

(pas_wrap_shared_handle):
(pas_unwrap_shared_handle_no_liveness_checks):
(pas_unwrap_shared_handle):
(pas_shared_handle_or_page_get_page_no_liveness_checks):
(pas_shared_handle_or_page_get_page):

  • libpas/src/libpas/pas_shared_page_directory_by_size.c: Added.

(pas_shared_page_directory_by_size_get):
(pas_shared_page_directory_by_size_for_each):
(pas_shared_page_directory_by_size_for_each_remote):

  • libpas/src/libpas/pas_shared_page_directory_by_size.h: Added.
  • libpas/src/libpas/pas_simple_free_heap_declarations.def: Added.
  • libpas/src/libpas/pas_simple_free_heap_definitions.def: Added.
  • libpas/src/libpas/pas_simple_free_heap_helpers.c: Added.

(pas_simple_free_heap_helpers_try_allocate_with_manual_alignment):
(pas_simple_free_heap_helpers_deallocate):

  • libpas/src/libpas/pas_simple_free_heap_helpers.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_simple_large_free_heap.c: Added.

(free_list_entry):
(pas_simple_large_free_heap_construct):
(dump_free_list):
(consider_expanding):
(append):
(merge):
(remove_entry):
(index_to_cursor):
(cursor_to_index):
(simple_find_first):
(simple_find_by_end):
(simple_read_cursor):
(simple_write_cursor):
(simple_merge):
(simple_remove):
(simple_append):
(simple_commit):
(simple_dump):
(simple_add_mapped_bytes):
(initialize_generic_heap_config):
(merge_physical):
(try_allocate_without_fixing):
(fix_free_list_if_necessary):
(pas_simple_large_free_heap_try_allocate):
(pas_simple_large_free_heap_deallocate):
(pas_simple_large_free_heap_for_each_free):
(pas_simple_large_free_heap_get_num_free_bytes):
(pas_simple_large_free_heap_dump_to_printf):

  • libpas/src/libpas/pas_simple_large_free_heap.h: Added.
  • libpas/src/libpas/pas_simple_type.h: Added.

(pas_simple_type_has_key):
(pas_simple_type_get_key_data):
(pas_simple_type_unwrap):
(pas_simple_type_size):
(pas_simple_type_alignment):
(pas_simple_type_key):
(pas_simple_type_create):
(pas_simple_type_create_with_key_data):
(pas_simple_type_as_heap_type_get_type_size):
(pas_simple_type_as_heap_type_get_type_alignment):

  • libpas/src/libpas/pas_size_thunk.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_trivial_size_thunk):

  • libpas/src/libpas/pas_skip_list.c: Added.

(pas_skip_list_construct):
(pas_skip_list_node_allocate_with_height):
(pas_skip_list_node_allocate):
(pas_skip_list_node_deallocate):
(pas_skip_list_remove):
(pas_skip_list_size):
(validate_other_node):
(pas_skip_list_validate):

  • libpas/src/libpas/pas_skip_list.h: Added.

(pas_skip_list_node_prev):
(pas_skip_list_node_next):
(pas_skip_list_head):
(pas_skip_list_is_empty):

  • libpas/src/libpas/pas_skip_list_inlines.h: Added.

(pas_skip_list_find_result_create_exact):
(pas_skip_list_find_result_create_inexact):
(pas_skip_list_level_get_direction):
(pas_skip_list_find_impl):
(pas_skip_list_find_ignore_head_attachment):
(pas_skip_list_find_ignore_pole_attachment):
(pas_skip_list_find):
(pas_skip_list_insert_after_note_head_attachment):
(pas_skip_list_insert_after_note_pole_attachment):
(pas_skip_list_insert):

  • libpas/src/libpas/pas_slow_path_mode.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_slow_path_mode_prefix.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_small_large_map_entry.h: Added.

(pas_small_large_map_entry_create_empty):
(pas_small_large_map_entry_create_deleted):
(pas_small_large_map_entry_is_empty_or_deleted):
(pas_small_large_map_entry_is_empty):
(pas_small_large_map_entry_is_deleted):
(pas_small_large_map_entry_create):
(pas_small_large_map_entry_begin):
(pas_small_large_map_entry_get_key):
(pas_small_large_map_entry_end):
(pas_small_large_map_entry_heap):
(pas_small_large_map_entry_get_entry):
(pas_small_large_map_entry_can_create):

  • libpas/src/libpas/pas_snprintf.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_status_reporter.c: Added.

(dump_ratio_initial):
(dump_occupancy_initial):
(dump_arrow):
(report_bitfit_directory_contents):
(pas_status_reporter_dump_bitfit_biasing_directory):
(pas_status_reporter_dump_bitfit_global_directory):
(report_segregated_directory_contents):
(pas_status_reporter_dump_segregated_biasing_directory):
(pas_status_reporter_dump_segregated_global_size_directory):
(pas_status_reporter_dump_segregated_shared_page_directory):
(pas_status_reporter_dump_large_heap):
(pas_status_reporter_dump_large_map):
(pas_status_reporter_dump_heap_table):
(pas_status_reporter_dump_immortal_heap):
(pas_status_reporter_dump_compact_large_utility_free_heap):
(pas_status_reporter_dump_large_utility_free_heap):
(pas_status_reporter_dump_compact_bootstrap_free_heap):
(pas_status_reporter_dump_bootstrap_free_heap):
(dump_segregated_heap_directory_callback):
(pas_status_reporter_dump_bitfit_heap):
(pas_status_reporter_dump_segregated_heap):
(pas_status_reporter_dump_heap):
(dump_all_heaps_heap_callback):
(pas_status_reporter_dump_all_heaps):
(dump_all_shared_page_directories_directory_callback):
(pas_status_reporter_dump_all_shared_page_directories):
(pas_status_reporter_dump_all_heaps_non_utility_summaries):
(pas_status_reporter_dump_utility_heap):
(add_to_size_histogram):
(dump_histogram):
(total_fragmentation_global_size_directory_callback):
(total_fragmentation_heap_callback):
(total_fragmentation_shared_page_directory_callback):
(pas_status_reporter_dump_total_fragmentation):
(tier_up_rate_global_size_directory_callback):
(tier_up_rate_heap_callback):
(dump_directory_tier_up_rate):
(pas_status_reporter_dump_tier_up_rates):
(allocator_state):
(pas_status_reporter_dump_baseline_allocators):
(pas_status_reporter_dump_thread_local_caches):
(pas_status_reporter_dump_configuration):
(pas_status_reporter_dump_everything):
(status_reporter_thread_main):
(start_reporter):
(pas_status_reporter_start_if_necessary):

  • libpas/src/libpas/pas_status_reporter.h: Added.
  • libpas/src/libpas/pas_stream.c: Copied from Source/WTF/wtf/FastTLS.h.

(pas_stream_vprintf):
(pas_stream_printf):

  • libpas/src/libpas/pas_stream.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_stream_print_comma):

  • libpas/src/libpas/pas_string_stream.c: Added.

(string_stream_vprintf):
(pas_string_stream_destruct):
(pas_string_stream_reset):
(pas_string_stream_vprintf):

  • libpas/src/libpas/pas_string_stream.h: Added.

(pas_string_stream_get_string):
(pas_string_stream_get_string_length):

  • libpas/src/libpas/pas_subpage_map.c: Added.

(pas_subpage_map_add):
(pas_subpage_map_get):
(pas_subpage_map_get_full_base):

  • libpas/src/libpas/pas_subpage_map.h: Added.

(pas_subpage_map_hashtable_entry_create_empty):
(pas_subpage_map_hashtable_entry_create_deleted):
(pas_subpage_map_hashtable_entry_is_empty_or_deleted):
(pas_subpage_map_hashtable_entry_is_empty):
(pas_subpage_map_hashtable_entry_is_deleted):
(pas_subpage_map_hashtable_entry_get_key):
(pas_subpage_map_hashtable_key_get_hash):
(pas_subpage_map_hashtable_key_is_equal):

  • libpas/src/libpas/pas_subpage_map_entry.c: Added.

(set_packed_value):
(pas_subpage_map_entry_create):
(prepare_indices):
(pas_subpage_map_assert_commit_state):
(set_bits):
(pas_subpage_map_entry_commit):
(pas_subpage_map_entry_decommit):

  • libpas/src/libpas/pas_subpage_map_entry.h: Added.

(pas_subpage_map_entry_full_base):
(pas_subpage_map_entry_bits):

  • libpas/src/libpas/pas_thread_local_cache.c: Added.

(pas_thread_local_cache_size_for_allocator_index_capacity):
(deallocate):
(destroy):
(destructor):
(allocate_cache):
(dump_thread_diagnostics):
(pas_thread_local_cache_create):
(pas_thread_local_cache_destroy):
(pas_thread_local_cache_get_slow):
(pas_thread_local_cache_get_local_allocator_slow):
(pas_thread_local_cache_get_local_allocator_if_can_set_cache_slow):
(pas_thread_local_cache_stop_local_allocators):
(stop_local_allocators_if_necessary_set_bit_source):
(stop_local_allocators_if_necessary_set_bit_callback):
(pas_thread_local_cache_stop_local_allocators_if_necessary):
(process_deallocation_log_with_config):
(flush_deallocation_log):
(pas_thread_local_cache_flush_deallocation_log):
(suspend):
(resume):
(pas_thread_local_cache_for_all):
(pas_thread_local_cache_append_deallocation_slow):
(pas_thread_local_cache_shrink):

  • libpas/src/libpas/pas_thread_local_cache.h: Added.

(pas_thread_local_cache_try_get):
(pas_thread_local_cache_is_guaranteed_to_destruct):
(pas_thread_local_cache_can_set):
(pas_thread_local_cache_set_impl):
(pas_thread_local_cache_get_already_initialized):
(pas_thread_local_cache_get_with_heap_lock_hold_mode):
(pas_thread_local_cache_get):
(pas_thread_local_cache_get_holding_heap_lock):
(pas_thread_local_cache_get_local_allocator_impl):
(pas_thread_local_cache_get_local_allocator):
(pas_thread_local_cache_try_get_local_allocator):
(pas_thread_local_cache_get_local_allocator_if_can_set_cache):
(pas_thread_local_cache_encode_object):
(pas_thread_local_cache_append_deallocation):
(pas_thread_local_cache_append_deallocation_with_size):

  • libpas/src/libpas/pas_thread_local_cache_layout.c: Added.

(pas_thread_local_cache_layout_add_node):
(pas_thread_local_cache_layout_add):
(pas_thread_local_cache_layout_duplicate):

  • libpas/src/libpas/pas_thread_local_cache_layout.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_thread_local_cache_layout_node.c: Added.

(pas_thread_local_cache_layout_node_get_directory):
(allocator_index_ptr):
(pas_thread_local_cache_layout_node_get_allocator_index):
(pas_thread_local_cache_layout_node_set_allocator_index):
(next_ptr):
(pas_thread_local_cache_layout_node_get_next):
(pas_thread_local_cache_layout_node_set_next):

  • libpas/src/libpas/pas_thread_local_cache_layout_node.h: Added.

(pas_wrap_segregated_global_size_directory):
(pas_wrap_redundant_local_allocator_node):
(pas_is_wrapped_segregated_global_size_directory):
(pas_is_wrapped_redundant_local_allocator_node):
(pas_unwrap_segregated_global_size_directory):
(pas_unwrap_redundant_local_allocator_node):

  • libpas/src/libpas/pas_thread_local_cache_node.c: Added.

(pas_thread_local_cache_node_allocate):
(pas_thread_local_cache_node_deallocate):

  • libpas/src/libpas/pas_thread_local_cache_node.h: Added.
  • libpas/src/libpas/pas_tiny_large_map_entry.h: Added.

(pas_tiny_large_map_entry_base):
(pas_tiny_large_map_entry_create):
(pas_tiny_large_map_entry_begin):
(pas_tiny_large_map_entry_end):
(pas_tiny_large_map_entry_heap):
(pas_tiny_large_map_entry_get_entry):
(pas_tiny_large_map_entry_can_create):
(pas_tiny_large_map_entry_create_empty):
(pas_tiny_large_map_entry_create_deleted):
(pas_tiny_large_map_entry_is_empty_or_deleted):
(pas_tiny_large_map_entry_is_empty):
(pas_tiny_large_map_entry_is_deleted):
(pas_tiny_large_map_entry_get_key):
(pas_tiny_large_map_key_get_hash):
(pas_tiny_large_map_key_is_equal):

  • libpas/src/libpas/pas_tree_direction.h: Added.

(pas_tree_direction_get_string):
(pas_tree_direction_invert):
(pas_tree_direction_invert_comparison_result_if_right):

  • libpas/src/libpas/pas_tri_state.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_tri_state_get_string):
(pas_tri_state_equals_boolean):

  • libpas/src/libpas/pas_try_allocate.h: Added.

(pas_try_allocate_impl_size_thunk):
(pas_try_allocate_impl):

  • libpas/src/libpas/pas_try_allocate_array.h: Added.

(pas_try_allocate_array_impl):

  • libpas/src/libpas/pas_try_allocate_common.h: Added.

(pas_try_allocate_common_can_go_fast):
(pas_try_allocate_common_impl_fast):
(pas_try_allocate_common_impl_slow):
(pas_try_allocate_common_impl):

  • libpas/src/libpas/pas_try_allocate_intrinsic_primitive.h: Added.

(pas_try_allocate_intrinsic_primitive_impl_medium_slow_case):
(pas_try_allocate_intrinsic_primitive_impl):

  • libpas/src/libpas/pas_try_allocate_primitive.h: Added.

(pas_try_allocate_primitive_impl):

  • libpas/src/libpas/pas_try_reallocate.h: Added.

(pas_try_allocate_for_reallocate_and_copy):
(pas_try_reallocate_table_segregated_case):
(pas_try_reallocate_table_bitfit_case):
(pas_try_reallocate):
(pas_try_reallocate_intrinsic_primitive_allocate_callback):
(pas_try_reallocate_intrinsic_primitive):
(pas_try_reallocate_single_allocate_callback):
(pas_try_reallocate_single):
(pas_try_reallocate_array_allocate_callback):
(pas_try_reallocate_array):
(pas_try_reallocate_primitive_allocate_callback):
(pas_try_reallocate_primitive):

  • libpas/src/libpas/pas_try_shrink.h: Added.

(pas_try_shrink):

  • libpas/src/libpas/pas_typed_allocation_result.h: Added.

(pas_typed_allocation_result_create_empty):
(pas_typed_allocation_result_create):
(pas_typed_allocation_result_as_intrinsic_allocation_result):
(pas_typed_allocation_result_create_with_intrinsic_allocation_result):
(pas_typed_allocation_result_zero):
(pas_typed_allocation_result_set_errno):
(pas_typed_allocation_result_crash_on_error):

  • libpas/src/libpas/pas_utility_heap.c: Added.

(pas_utility_heap_allocate_with_alignment):
(pas_utility_heap_try_allocate):
(pas_utility_heap_allocate):
(pas_utility_heap_deallocate):
(pas_utility_heap_get_num_free_bytes):
(for_each_live_object_small_object_callback):
(pas_utility_heap_for_each_live_object):
(pas_utility_heap_for_all_allocators):

  • libpas/src/libpas/pas_utility_heap.h: Added.

(pas_utility_heap_allocate_with_asserted_kind):
(pas_utility_heap_deallocate_with_ignored_size_and_asserted_kind):

  • libpas/src/libpas/pas_utility_heap_config.c: Added.

(pas_utility_heap_allocate_page):
(pas_utility_heap_config_for_each_shared_page_directory):

  • libpas/src/libpas/pas_utility_heap_config.h: Added.

(pas_utility_heap_page_header_for_boundary):
(pas_utility_heap_boundary_for_page_header):
(pas_utility_heap_shared_page_directory_selector):
(pas_utility_heap_create_page_header):
(pas_utility_heap_destroy_page_header):
(pas_heap_config_is_utility):
(pas_heap_config_heap_lock_hold_mode):

  • libpas/src/libpas/pas_utility_heap_support.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_utils.c: Added.

(pas_panic):
(pas_assertion_failed):
(pas_deallocation_did_fail):
(pas_set_deallocation_did_fail_callback):
(pas_reallocation_did_fail):
(pas_set_reallocation_did_fail_callback):

  • libpas/src/libpas/pas_utils.h: Added.

(pas_is_power_of_2):
(pas_round_down_to_power_of_2):
(pas_round_down):
(pas_round_up_to_power_of_2):
(pas_round_up):
(pas_modulo_power_of_2):
(pas_is_aligned):
(pas_reverse):
(pas_reverse64):
(pas_make_mask64):
(pas_compare_and_swap_uintptr_weak):
(pas_compare_and_swap_uintptr_strong):
(pas_compare_and_swap_bool_weak):
(pas_compare_and_swap_bool_strong):
(pas_compare_and_swap_uint16_weak):
(pas_compare_and_swap_uint32_weak):
(pas_compare_and_swap_uint32_strong):
(pas_compare_and_swap_uint64_weak):
(pas_compare_and_swap_uint64_strong):
(pas_compare_and_swap_ptr_weak):
(pas_compare_and_swap_ptr_strong):
(pas_fence_after_load):
(pas_store_store_fence):
(pas_opaque):
(pas_pair_create):
(pas_compare_and_swap_pair_weak):
(pas_compare_and_swap_pair_strong):
(pas_atomic_load_pair):
(pas_atomic_store_pair):
(pas_hash32):
(pas_hash64):
(pas_hash_intptr):
(pas_hash_ptr):
(pas_log2):
(pas_log2_rounded_up):
(pas_log2_rounded_up_safe):
(pas_non_empty_ranges_overlap):
(pas_ranges_overlap):
(pas_xorshift32):
(pas_large_object_hash):
(pas_is_divisible_by):

  • libpas/src/libpas/pas_utils_prefix.h: Added.

(pas_round_up_to_power_of_2):
(
pas_compiler_fence):
(pas_fence):
(
pas_depend_impl):
(pas_depend):
(
pas_depend_cpu_only):
(pas_memcpy):

  • libpas/src/libpas/pas_versioned_field.c: Added.

(pas_versioned_field_minimize):
(pas_versioned_field_maximize):
(pas_versioned_field_minimize_watched):
(pas_versioned_field_maximize_watched):

  • libpas/src/libpas/pas_versioned_field.h: Added.

(pas_versioned_field_construct):
(pas_versioned_field_create):
(pas_versioned_field_create_with_invalid_version):
(pas_versioned_field_create_empty):
(pas_versioned_field_with_version):
(pas_versioned_field_with_value):
(pas_versioned_field_as_pair):
(pas_versioned_field_from_pair):
(pas_versioned_field_equals):
(pas_versioned_field_read_torn):
(pas_versioned_field_read):
(pas_versioned_field_weak_cas):
(pas_versioned_field_strong_cas):
(pas_versioned_field_read_to_watch):
(pas_versioned_field_try_write):
(pas_versioned_field_try_write_watched):
(pas_versioned_field_write):

  • libpas/src/libpas/pas_virtual_range.c: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/pas_virtual_range.h: Added.

(pas_virtual_range_create):
(pas_virtual_range_create_empty):
(pas_virtual_range_get_range):
(pas_virtual_range_is_empty):
(pas_virtual_range_size):
(pas_virtual_range_overlaps):

  • libpas/src/libpas/pas_virtual_range_min_heap.h: Copied from Source/WTF/wtf/FastTLS.h.

(pas_virtual_range_compare_begin):
(pas_virtual_range_get_index):
(pas_virtual_range_set_index):

  • libpas/src/libpas/pas_zero_mode.h: Added.

(pas_zero_mode_get_string):
(pas_zero_mode_validate):
(pas_zero_mode_merge):

  • libpas/src/libpas/thingy_heap.c: Added.

(thingy_try_allocate_primitive):
(thingy_try_allocate_primitive_zeroed):
(thingy_try_allocate_primitive_with_alignment):
(thingy_try_reallocate_primitive):
(thingy_try_allocate):
(thingy_try_allocate_zeroed):
(thingy_try_allocate_array):
(thingy_try_allocate_zeroed_array):
(thingy_get_allocation_size):
(thingy_try_reallocate_array):
(thingy_deallocate):
(thingy_heap_ref_get_heap):
(thingy_utility_heap_allocate):

  • libpas/src/libpas/thingy_heap.h: Added.
  • libpas/src/libpas/thingy_heap_config.c: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/libpas/thingy_heap_config.h: Added.
  • libpas/src/libpas/thingy_heap_prefix.h: Added.
  • libpas/src/mbmalloc/mbmalloc_bmalloc.c: Copied from Source/WTF/wtf/FastTLS.h.

(mbmalloc):
(mbmemalign):
(mbrealloc):
(mbfree):
(mbscavenge):

  • libpas/src/mbmalloc/mbmalloc_hotbit.c: Copied from Source/WTF/wtf/FastTLS.h.

(mbmalloc):
(mbmemalign):
(mbrealloc):
(mbfree):
(mbscavenge):

  • libpas/src/mbmalloc/mbmalloc_iso_common_primitive.c: Added.

(install_verifier_if_necessary):
(mbmalloc):
(mbmemalign):
(mbrealloc):
(mbfree):
(dump_summary):
(mbscavenge):

  • libpas/src/mbmalloc/mbmalloc_lineref.c: Copied from Source/WTF/wtf/FastTLS.h.

(mbmalloc):
(mbmemalign):
(mbrealloc):
(mbfree):
(mbscavenge):

  • libpas/src/test/BitfieldVectorTests.cpp: Added.

(std::testBitfieldNumWords):
(std::testBitfieldNumFields):
(std::testBitfieldWordIndex):
(std::testBitfieldFieldIndex):
(std::testBitfieldFieldShift):
(std::BitfieldVector::BitfieldVector):
(std::BitfieldVector::get const):
(std::BitfieldVector::set):
(std::testBitfieldVectorForward):
(std::testBitfieldVectorBackward):
(addBitfieldVectorTests):

  • libpas/src/test/BitvectorTests.cpp: Added.

(std::testFindFirst):
(addBitvectorTests):

  • libpas/src/test/CartesianTreeTests.cpp: Added.

(std::TestNode::TestNode):
(std::TestNode::compare):
(std::TestNode::getXKey):
(std::TestNode::getYKey):
(std::Pair::Pair):
(std::Pair::operator== const):
(std::Pair::operator< const):
(std::findExact):
(std::remove):
(std::findLeastGreaterThanOrEqual):
(std::assertFoundAndRemove):
(std::assertEqual):
(std::assertSameValuesForKey):
(std::cartesianTreePrintWidth):
(std::printSpaces):
(std::dumpCartesianTree):
(std::dumpVector):
(std::testDriver):
(std::randomTestDriver):
(addCartesianTreeTests):

  • libpas/src/test/CoalignTests.cpp: Added.

(std::testCoalignOneSided):
(std::testCoalignOneSidedError):
(std::testCoalign):
(addCoalignTests):

  • libpas/src/test/ExtendedGCDTests.cpp: Copied from Source/WTF/wtf/FastTLS.h.

(std::testExtendedGCD):
(addExtendedGCDTests):

  • libpas/src/test/HashtableTests.cpp: Added.

(std::hashtableForEachEntryCallback):
(std::hashtableForEachEntry):
(std::Key::Key):
(std::CollidingEntry_create_empty):
(std::CollidingEntry_create_deleted):
(std::CollidingEntry_is_empty_or_deleted):
(std::CollidingEntry_is_empty):
(std::CollidingEntry_is_deleted):
(std::CollidingEntry_get_key):
(std::CollidingKey_get_hash):
(std::CollidingKey_is_equal):
(std::testEmptyCollidingHashtable):
(std::testCollidingHashtableAddFindTakeImpl):
(std::testCollidingHashtableAddFindTake):
(std::testCollidingHashtableAddAddTakeSet):
(std::testCollidingHashtableAddAddAddTakeTakeSet):
(std::testCollidingHashtableAddAddAddTakeTakeAddSet):
(std::OutOfLineEntry_create_empty):
(std::OutOfLineEntry_create_deleted):
(std::OutOfLineEntry_is_empty_or_deleted):
(std::OutOfLineEntry_is_empty):
(std::OutOfLineEntry_is_deleted):
(std::OutOfLineEntry_get_key):
(std::OutOfLineKey_get_hash):
(std::OutOfLineKey_is_equal):
(std::testOutOfLineHashtable):
(addHashtableTests):

  • libpas/src/test/HeapLocker.h: Copied from Source/WTF/wtf/FastTLS.h.

(HeapLocker::HeapLocker):
(HeapLocker::~HeapLocker):

  • libpas/src/test/IsoDynamicPrimitiveHeapTests.cpp: Added.

(std::allocate42):
(std::allocate42WithAlignment):
(std::allocate42Zeroed):
(std::reallocate42):
(std::testManySizesAndKeys):
(std::testManySizesAndKeysInTandem):
(addIsoDynamicPrimitiveHeapTests):

  • libpas/src/test/IsoHeapChaosTests.cpp: Added.

(std::flushDeallocationLogAndStopAllocators):
(std::verifyObjectSet):
(std::scavengerDidStart):
(std::scavengerWillShutDown):
(std::PageRange::PageRange):
(std::PageRange::operator< const):
(std::PageRange::end const):
(std::addPageRange):
(std::addPageRangeCallback):
(std::RecordedRange::RecordedRange):
(std::RecordedRange::operator< const):
(std::RecordedRange::end const):
(std::ReaderRange::ReaderRange):
(std::ReaderRange::operator< const):
(std::enumeratorReader):
(std::enumeratorRecorder):
(std::testAllocationChaos):
(std::addTheTests):
(std::addSpotTests):
(addIsoHeapChaosTests):

  • libpas/src/test/IsoHeapPageSharingTests.cpp: Added.

(std::testTakePages):
(std::testTakePagesFromCorrectHeap):
(std::testLargeHeapTakesPagesFromCorrectSmallHeap):
(std::testLargeHeapTakesPagesFromCorrectSmallHeapAllocateAfterFree):
(std::testLargeHeapTakesPagesFromCorrectSmallHeapWithFancyOrder):
(std::testLargeHeapTakesPagesFromCorrectLargeHeap):
(std::testLargeHeapTakesPagesFromCorrectLargeHeapAllocateAfterFreeOnSmallHeap):
(std::testLargeHeapTakesPagesFromCorrectLargeHeapAllocateAfterFreeOnAnotherLargeHeap):
(std::testLargeHeapTakesPagesFromCorrectLargeHeapWithFancyOrder):
(std::testSmallHeapTakesPagesFromCorrectLargeHeap):
(std::testSmallHeapTakesPagesFromCorrectLargeHeapWithFancyOrder):
(std::testSmallHeapTakesPagesFromCorrectLargeHeapAllocateAfterFreeOnSmallHeap):
(std::testSmallHeapTakesPagesFromCorrectLargeHeapAllocateAfterFreeOnAnotherLargeHeap):
(std::thingyName):
(std::forEachThingyKind):
(std::setupThingy):
(std::cleanThingy):
(std::checkThingy):
(std::addObject):
(std::deleteThingy):
(std::allocationKindName):
(std::allocateThingiesImpl):
(std::allocateThingies):
(std::heapSummaryFor):
(std::assertOnlyDecommitted):
(std::testFullVdirToVdirObvious):
(std::testFullVdirToVdirObviousBackwards):
(std::testFullVdirToVdirOpportunistic):
(std::testFullVdirToVdirOpportunisticBackwards):
(std::testFullVdirToVdirNewAllocation):
(std::testFullVdirToVdirNewLateAllocation):
(std::testFullVdirToVdirNewDirAllocation):
(std::testFullVdirToVdirNewLateDirAllocation):
(std::testFullVdirToVdirNewLargeAllocation):
(std::testFullVdirToVdirNewLateLargeAllocation):
(std::testFullVdirToDir):
(std::testFullVdirToDirBackwardsTarget):
(std::testFullVdirToDirBackwardsSource):
(std::testFullVdirToDirNewAllocation):
(std::testFullVdirToDirNewLateAllocation):
(std::testFullVdirToDirNewDirAllocation):
(std::testFullVdirToDirNewLateDirAllocation):
(std::testFullVdirToDirNewLargeAllocation):
(std::testFullNotVdirButLargeToDirNewLargeAllocation):
(std::testFullVdirToDirNewLateLargeAllocation):
(std::testFullVdirToDirNewAllocationAlsoPhysical):
(std::testFullVdirToDirNewLateAllocationAlsoPhysical):
(std::testFullVdirToLarge):
(std::testFullVdirToLargeBackwardsTarget):
(std::testFullVdirToLargeBackwardsSource):
(std::testFullVdirToLargeNewAllocation):
(std::testFullVdirToLargeNewLateAllocation):
(std::testFullVdirToLargeNewDirAllocation):
(std::testFullVdirToLargeNewLateDirAllocation):
(std::testFullVdirToLargeNewLargeAllocation):
(std::testFullNotVdirButLargeToLargeNewLargeAllocation):
(std::testFullVdirToLargeNewLateLargeAllocation):
(std::testFullVdirToLargeNewAllocationAlsoPhysical):
(std::testFullVdirToLargeNewLateAllocationAlsoPhysical):
(std::testFullDirToVdir):
(std::testFullDirToVdirBackwards):
(std::testFullDirToVdirNewAllocation):
(std::testFullDirToVdirNewLateAllocation):
(std::testFullDirToDir):
(std::testFullDirToDirBackwards):
(std::testFullDirToDirWithThree):
(std::testFullDirToDirWithThreeBackwards):
(std::testFullDirToDirWithThreeNewAllocation):
(std::testFullDirToDirWithThreeNewLateAllocation):
(std::testFullDirToDirWithThreeNewVdirAllocation):
(std::testFullDirToDirWithThreeNewLateVdirAllocation):
(std::testFullDirToLarge):
(std::testFullDirToLargeNewAllocation):
(std::testFullDirToLargeNewLateAllocation):
(std::testFullDirToLargeNewVdirAllocation):
(std::testFullDirToLargeNewLateVdirAllocation):
(std::testFullLargeToVdirForwardMinEpoch):
(std::testFullNotLargeButDirToVdirCombinedUseEpoch):
(std::testFullLargeToVdirCombinedUseEpoch):
(std::testFullLargeToVdirBackwards):
(std::testFullLargeToVdirNewAllocation):
(std::testFullLargeToVdirNewLateAllocation):
(std::testFullLargeToVdirNewDirAllocationForwardMinEpoch):
(std::testFullLargeToVdirNewDirAllocationCombinedUseEpoch):
(std::testFullLargeToVdirNewLateDirAllocationForwardMinEpoch):
(std::testFullLargeToVdirNewLateDirAllocationCombinedUseEpoch):
(std::testFullLargeToDirForwardMinEpoch):
(std::testFullLargeToDirCombinedUseEpoch):
(std::testFullLargeToDirBackwardsSource):
(std::testFullLargeToDirBackwardsTarget):
(std::testFullLargeToDirBackwardsSourceAndTarget):
(std::testFullLargeToDirNewAllocation):
(std::testFullLargeToDirNewLateAllocation):
(std::testFullLargeToDirNewVdirAllocationForwardMinEpoch):
(std::testFullLargeToDirNewVdirAllocationCombinedUseEpoch):
(std::testFullLargeToDirNewLateVdirAllocationForwardMinEpoch):
(std::testFullLargeToDirNewLateVdirAllocationCombinedUseEpoch):
(std::testFullLargeToDirNewDirAllocationForwardMinEpoch):
(std::testFullLargeToDirNewDirAllocationCombinedUseEpoch):
(std::testFullLargeToDirNewLateDirAllocationForwardMinEpoch):
(std::testFullLargeToDirNewLateDirAllocationCombinedUseEpoch):
(std::testFullLargeToLargeForwardMinEpoch):
(std::testFullLargeToLargeCombinedUseEpoch):
(std::testFullLargeToLargeReverse):
(std::testFullLargeToLargeNewAllocation):
(std::testFullLargeToLargeNewLateAllocation):
(std::testFullLargeToLargeNewVdirAllocation):
(std::testFullLargeToLargeNewLateVdirAllocation):
(std::testFullLargeToLargeNewDirAllocation):
(std::testFullLargeToLargeNewLateDirAllocation):
(std::testNewEligibleHasOlderEpoch):
(std::scavengerCompletionCallback):
(std::testScavengerEventuallyReturnsMemory):
(std::testScavengerEventuallyReturnsMemoryEvenWithoutManualShrink):
(std::scavengerShutDownCallback):
(std::testScavengerShutsDownEventually):
(std::addAllTests):
(addIsoHeapPageSharingTests):

  • libpas/src/test/IsoHeapPartialAndBaselineTests.cpp: Added.

(std::FreeOrder::setCount const):
(std::FreeOrder::didSetCount const):
(std::forEachSharedPageDirectoryCallbackAdaptor):
(std::forEachSharedPageDirectory):
(std::numSharedPages):
(std::numCommittedSharedPages):
(std::testSimplePartialAllocations):
(std::testFreeAroundPrimordialStop):
(std::testFreeInterleavedAroundPrimordialStop):
(std::PartialProgram::PartialProgram):
(std::testMultiplePartialsFromDifferentHeapsPerShared):
(std::addMultiplePartialsFromDifferentHeapsPerSharedTests):
(std::testMultiplePartialsFromDifferentThreadsPerShared):
(std::incrementalRandom):
(std::zeroRandom):
(std::testTwoBaselinesEvictions):
(std::addScavengerDependentTests):
(addIsoHeapPartialAndBaselineTests):

  • libpas/src/test/IsoHeapReservedMemoryTests.cpp: Added.

(std::testSizeProgression):
(addIsoHeapReservedMemoryTests):

  • libpas/src/test/IsoHeapTablingTests.cpp: Added.

(std::testTabling):
(std::testUntabling):
(std::addTablingTests):
(addIsoHeapTablingTests):

  • libpas/src/test/JITHeapTests.cpp: Added.

(std::testAllocateShrinkAndAllocate):
(addJITHeapTests):

  • libpas/src/test/LargeFreeHeapTests.cpp: Added.

(std::alignSimple):
(std::trappingAllocator):
(std::trappingDeallocator):
(std::failingAllocator):
(std::Action::allocate):
(std::Action::deallocate):
(std::Free::Free):
(std::Free::operator== const):
(std::Free::operator< const):
(std::Allocation::Allocation):
(std::function<pas_aligned_allocation_result):
(std::function<void):
(std::operator<<):
(std::allocatorAdapter):
(std::deallocatorAdapter):
(std::iterateAdapter):
(std::iterateHeap):
(std::testLargeFreeHeapImpl):
(std::testSimpleLargeFreeHeap):
(std::testFastLargeFreeHeap):
(std::testBootstrapHeap):
(std::freeListSize):
(addLargeFreeHeapTests):

  • libpas/src/test/LargeSharingPoolDump.cpp: Copied from Source/WTF/wtf/FastTLS.h.

(std::forEachAdapter):
(forEachLargeSharingPoolNode):
(dumpLargeSharingPool):

  • libpas/src/test/LargeSharingPoolDump.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/src/test/LargeSharingPoolTests.cpp: Added.

(std::Range::Range):
(std::assertState):
(std::testBadCoalesceEpochUpdate):
(addLargeSharingPoolTests):

  • libpas/src/test/LockFreeReadPtrPtrHashtableTests.cpp: Added.

(std::hashFunction):
(std::testChaos):
(addLockFreeReadPtrPtrHashtableTests):

  • libpas/src/test/MinHeapTests.cpp: Added.

(std::Element::Element):
(std::asChar):
(std::compare):
(std::getIndex):
(std::setIndex):
(std::dumpHeap):
(std::testMinHeap):
(std::minHeapChaos):
(std::testMinHeapChaos):
(std::makeBootstrapAllocationConfig):
(std::testBootstrapMinHeapChaos):
(addMinHeapTests):

  • libpas/src/test/RaceTests.cpp: Added.

(std::hookCallbackAdapter):
(std::willLockCallback):
(std::recordLockAcquisition):
(std::didLockCallback):
(std::didTryLockCallback):
(std::willUnlockCallback):
(std::isHoldingContendedLocks):
(std::InstallRaceHooks::InstallRaceHooks):
(std::testLocalAllocatorStopRace):
(std::testLocalAllocatorStopRaceAgainstScavenge):
(addRaceTests):

  • libpas/src/test/RedBlackTreeTests.cpp: Added.

(std::TestNode::TestNode):
(std::TestNode::compare):
(std::TestNode::compareKey):
(std::Pair::Pair):
(std::Pair::operator== const):
(std::Pair::operator< const):
(std::findExact):
(std::remove):
(std::findLeastGreaterThanOrEqual):
(std::assertFoundAndRemove):
(std::assertEqual):
(std::assertSameValuesForKey):
(std::push):
(std::validateEnumerable):
(std::testDriver):
(std::randomTestDriver):
(addRedBlackTreeTests):

  • libpas/src/test/SkipListTests.cpp: Added.

(std::TestNode::TestNode):
(std::TestNode::fromSkipListNode):
(std::TestNode::compareKey):
(std::TestNode::compareKeyLeastGreaterThanOrEqual):
(std::TestNode::compareKeyForInsert):
(std::TestNode::compare):
(std::Pair::Pair):
(std::Pair::operator== const):
(std::Pair::operator< const):
(std::findExact):
(std::remove):
(std::findLeastGreaterThanOrEqual):
(std::assertFoundAndRemove):
(std::assertEqual):
(std::assertSameValuesForKey):
(std::dumpSkipList):
(std::dumpVector):
(std::testDriver):
(std::randomTestDriver):
(addSkipListTests):

  • libpas/src/test/SuspendScavenger.h: Copied from Source/WTF/wtf/FastTLS.h.

(SuspendScavenger::SuspendScavenger):
(SuspendScavenger::~SuspendScavenger):

  • libpas/src/test/TSDTests.cpp: Added.

(std::destructor):
(std::testTSD):
(addTSDTests):

  • libpas/src/test/TestHarness.cpp: Added.

(allocationConfigAllocate):
(allocationConfigDeallocate):
(TestScopeImpl::TestScopeImpl):
(RuntimeConfigTestScope::RuntimeConfigTestScope):
(ForceExclusives::ForceExclusives):
(ForceTLAs::ForceTLAs):
(ForceBitfit::ForceBitfit):
(DisableBitfit::DisableBitfit):
(ForcePartials::ForcePartials):
(ForceBaselines::ForceBaselines):
(RunScavengerFully::RunScavengerFully):
(RunScavengerOnNonRemoteCaches::RunScavengerOnNonRemoteCaches):
(SuspendScavengerScope::SuspendScavengerScope):
(VerifyGranules::VerifyGranules):
(InstallVerifier::InstallVerifier):
(DisableExplosion::DisableExplosion):
(ForceExplosion::ForceExplosion):
(ForceOneMagazine::ForceOneMagazine):
(EpochIsCounter::EpochIsCounter):
(BootJITHeap::BootJITHeap):
(testSucceeded):
(deterministicRandomNumber):
(addTest):
(TestScope::TestScope):
(TestScope::~TestScope):
(hasScope):
(dumpObjectSet):
(dumpObjectsInHeap):
(dumpObjectsInHeaps):
(forEachLiveObject):
(verifyMinimumObjectDistance):
(verifyExactObjectDistance):
(runOneTest):
(runForkedTest):
(runTests):
(runFilteredTests):
(main):
(scavenge):
(printStatusReport):

  • libpas/src/test/TestHarness.h: Added.

(stringStreamConstruct):
(dumpToString):
(operator<<):

  • libpas/src/test/ThingyAndUtilityHeapAllocationTests.cpp: Added.

(std::flushDeallocationLog):
(std::flushDeallocationLogAndStopAllocators):
(std::sizeClassFor):
(std::isLarge):
(std::forEachLiveUtilityObjectAdapter):
(std::forEachLiveUtilityObject):
(std::forEachCommittedViewAdapter):
(std::forEachCommittedView):
(std::numCommittedViews):
(std::numViews):
(std::verifyMinimumObjectDistance):
(std::verifyObjectSet):
(std::verifyUtilityObjectSet):
(std::verifyHeapEmpty):
(std::PrimitiveAllocator::PrimitiveAllocator):
(std::PrimitiveReallocAllocator::PrimitiveReallocAllocator):
(std::AlignedPrimitiveAllocator::AlignedPrimitiveAllocator):
(std::createIsolatedHeapRef):
(std::IsolatedHeapAllocator::IsolatedHeapAllocator):
(std::IsolatedHeapArrayAllocator::IsolatedHeapArrayAllocator):
(std::CounterScope::CounterScope):
(std::CounterScope::~CounterScope):
(std::testDeallocateNull):
(std::deallocationFailureCallback):
(std::DeallocationShouldFail::DeallocationShouldFail):
(std::DeallocationShouldFail::~DeallocationShouldFail):
(std::testDeallocateMalloc):
(std::testDeallocateStack):
(std::testSimpleAllocation):
(std::testSmallOrMediumAllocation):
(std::testSmallAllocation):
(std::testLargeAllocation):
(std::testAllocationWithInterleavedFragmentation):
(std::testFreeListRefillSpans):
(std::testInternalScavenge):
(std::testInternalScavengeFromCorrectDirectory):
(std::SizeClassProgram::SizeClassProgram):
(std::testSizeClassCreationImpl):
(std::testSizeClassCreation):
(std::testSpuriousEligibility):
(std::testBasicSizeClassNotSet):
(std::testSmallDoubleFree):
(std::testSmallFreeInner):
(std::testSmallFreeNextWithShrink):
(std::testSmallFreeNextWithoutShrink):
(std::testSmallFreeNextBeforeShrink):
(std::AllocationProgram::allocate):
(std::AllocationProgram::free):
(std::AllocationProgram::kind const):
(std::AllocationProgram::key const):
(std::AllocationProgram::isAllocate const):
(std::AllocationProgram::count const):
(std::AllocationProgram::alignment const):
(std::AllocationProgram::isFree const):
(std::IsolatedComplexAllocator::IsolatedComplexAllocator):
(std::IsolatedUnitComplexAllocator::IsolatedUnitComplexAllocator):
(std::checkObjectDistances):
(std::checkObjectBeginnings):
(std::addObjectAllocation):
(std::ExpectedBytes::exact):
(std::ExpectedBytes::upperBound):
(std::ExpectedBytes::check):
(std::testComplexLargeAllocationImpl):
(std::testComplexLargeAllocation):
(std::testAllocationCountProgression):
(std::testAllocationChaos):
(std::testUtilityAllocationChaos):
(std::testCombinedAllocationChaos):
(std::testLargeDoubleFree):
(std::testLargeOffsetFree):
(std::addDeallocationTests):
(std::testReallocatePrimitive):
(std::testReallocateArray):
(std::addSmallHeapTests):
(std::addLargeHeapTests):
(std::addMediumHeapTests):
(std::addLargerThanMediumHeapTests):
(std::addMargeBitfitTests):
(std::addLargerThanMargeBitfitTests):
(std::addCombinedHeapTests):
(std::addAllTestsImpl):
(std::addAllTests):
(addThingyAndUtilityHeapAllocationTests):

  • libpas/src/test/UtilsTests.cpp: Added.

(std::testIsDivisibleBy3):
(addUtilsTests):

  • libpas/src/toys/QuadraticSizeClass.cpp: Added.

(std::printSizeCell):
(std::printProgression):
(main):

  • libpas/src/verifier/Verifier.cpp: Added.

(std::Locker::Locker):
(std::Locker::~Locker):
(std::Allocation::Allocation):
(std::allocationCallback):
(std::deallocationCallback):
(std::dumpStateForHeapKind):
(std::dumpStateHoldingLock):
(std::uninstall):
(pas_install_verifier):
(pas_dump_state):

  • libpas/src/verifier/Verifier.h: Copied from Source/WTF/wtf/FastTLS.h.
  • libpas/test-impl.sh: Added.
  • libpas/test.sh: Added.

Source/JavaScriptCore:

Switch the ExecutableAllocator to the libpas jit_heap. The libpas jit_heap uses two size
categories of bitfit and a large heap, and is happy to do its approximate first-fit in any
ranges of memory you give it. Jit_heap never allocates metadata inside the memory it manages.
Allocations and deallocations take a constant-bounded amount of time except for unusual
situations, and are protected by fine-grained locking in most cases. Decommit follows libpas
scavenging policy. This alone is a speed-up on Speedometer (probably about 1% or more).

Also expose some libpas introspection via $vm.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/MacroAssemblerCodeRef.h:
  • jit/ExecutableAllocator.cpp:

(JSC::ExecutableAllocator::underMemoryPressure):
(JSC::ExecutableAllocator::memoryPressureMultiplier):
(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableAllocator::committedByteCount):
(JSC::ExecutableMemoryHandle::createImpl):
(JSC::ExecutableMemoryHandle::~ExecutableMemoryHandle):
(JSC::ExecutableMemoryHandle::sizeInBytes const):
(JSC::ExecutableMemoryHandle::shrink):

  • jit/ExecutableAllocator.h:
  • jit/ExecutableMemoryHandle.h: Added.

(JSC::ExecutableMemoryHandle::start const):
(JSC::ExecutableMemoryHandle::end const):
(JSC::ExecutableMemoryHandle::startAsInteger const):
(JSC::ExecutableMemoryHandle::endAsInteger const):
(JSC::ExecutableMemoryHandle::containsIntegerAddress const):
(JSC::ExecutableMemoryHandle::contains const):
(JSC::ExecutableMemoryHandle::key const):
(JSC::ExecutableMemoryHandle::dump const):
(JSC::ExecutableMemoryHandle::ExecutableMemoryHandle):

  • tools/JSDollarVM.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::JSDollarVM::finishCreation):

Source/WTF:

Introduce flags for using libpas as the ExecutableAllocator.

Explicitly ask for gigacage initialization, since libpas prefers it this way right now.

  • wtf/FastTLS.h:
  • wtf/PlatformUse.h:
  • wtf/Threading.cpp:

(WTF::initialize):

Tools:

Disable the IsoHeap tests if we're using libpas. Libpas has its own tests.

  • TestWebKitAPI/Tests/WTF/bmalloc/IsoHeap.cpp:
12:32 AM Changeset in webkit [279866] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

Fix the Apple internal iOS Simulator build

Unreviewed.

  • dom/Node.h:
12:12 AM Changeset in webkit [279865] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebKit

Fix the Apple Internal iOS build

Unreviewed.

  • WebProcess/cocoa/WebProcessCocoa.mm:

Jul 12, 2021:

9:39 PM Changeset in webkit [279864] by Fujii Hironori
  • 3 edits in trunk/Source/WebCore

[curl] Can't finish loading some websites after r271946 started throttling low priority resources
https://bugs.webkit.org/show_bug.cgi?id=227863

Reviewed by Don Olmstead.

NetworkLoadScheduler started throttling low priority resource
loading since r271946. It uses curl_easy_pause to pause the
resource loads. CURLMOPT_MAX_HOST_CONNECTIONS is set to 6 to limit
the number of connections per host. In the certain condition,
curl_multi_fdset can constantly return -1 if 6 handles of the same
host are paused.

This patch changes CurlRequest::start not to actually start the
job if it is suspended.

  • platform/network/curl/CurlRequest.cpp:

(WebCore::CurlRequest::start):
(WebCore::CurlRequest::suspend):
(WebCore::CurlRequest::resume):
(WebCore::CurlRequest::setupTransfer):
(WebCore::CurlRequest::setRequestPaused):

  • platform/network/curl/CurlRequest.h:
7:05 PM Changeset in webkit [279863] by timothy_horton@apple.com
  • 19 edits in trunk/Source/WebKit

Make WebKit's UserInterfaceIdiom operate in terms of the exceptions, not the rule
https://bugs.webkit.org/show_bug.cgi?id=227885
<rdar://problem/79987158>

Reviewed by Wenson Hsieh.

No new tests, no change in behavior.

In general, we consider the macOS/iPad behavior the "normal" WebKit behavior,
and exceptions to that for iPhone or Watch are just that: exceptions.

To bring the code in line with this understanding, make places that
we make decisions based on UIUserInterfaceIdiom take macOS/iPad behavior
as the default, and make iPhone/Watch the special cases.

  • Shared/UserInterfaceIdiom.h:
  • Shared/UserInterfaceIdiom.mm:

(WebKit::currentUserInterfaceIdiomIsPhoneOrWatch):
(WebKit::setCurrentUserInterfaceIdiomIsPhoneOrWatch):
Also, lump iPod Touch in with iPhone when checking based on device class.

(WebKit::updateCurrentUserInterfaceIdiom):
(WebKit::currentUserInterfaceIdiomIsPadOrMac): Deleted.
(WebKit::setCurrentUserInterfaceIdiomIsPadOrMac): Deleted.

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • Shared/ios/WebPreferencesDefaultValuesIOS.mm:

(WebKit::defaultTextAutosizingUsesIdempotentMode):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):
(WebKit::WebProcessPool::registerNotificationObservers):

  • UIProcess/ios/SmartMagnificationController.mm:

(WebKit::SmartMagnificationController::didCollectGeometryForSmartMagnificationGesture):

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKFormInputSession setAccessoryViewCustomButtonTitle:]):
(-[WKContentView endEditingAndUpdateFocusAppearanceWithReason:]):
(-[WKContentView _shouldShowAutomaticKeyboardUIIgnoringInputMode]):
(-[WKContentView _zoomToRevealFocusedElement]):
(-[WKContentView _elementTypeRequiresAccessoryView:]):
(-[WKContentView _updateAccessory]):
(-[WKContentView _shouldUseLegacySelectPopoverDismissalBehavior]):

  • UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm:

(WebKit::WebDataListSuggestionsDropdownIOS::show):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::desktopClassBrowsingSupported):

  • UIProcess/ios/forms/WKAirPlayRoutePicker.mm:

(-[WKAirPlayRoutePicker show:fromRect:]):

  • UIProcess/ios/forms/WKFileUploadPanel.mm:

(-[WKFileUploadPanel _showPhotoPickerWithSourceType:]):
(-[WKFileUploadPanel _presentMenuOptionForCurrentInterfaceIdiom:]):

  • UIProcess/ios/forms/WKFormSelectControl.mm:

(-[WKFormSelectControl initWithView:]):

  • UIProcess/ios/forms/WKFormSelectPicker.mm:

(-[WKSelectMultiplePicker configurePresentation]):

  • WebProcess/WebProcess.messages.in:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):
(WebKit::WebProcess::userInterfaceIdiomDidChange):

6:57 PM Changeset in webkit [279862] by Patrick Angle
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION(r279510): Elements: Computed: an (i) button is shown for computed property traces
https://bugs.webkit.org/show_bug.cgi?id=227892

Reviewed by Devin Rousso.

Property traces need to opt out of displaying the (i) button as they do for things like the colon and semicolon.

  • UserInterface/Views/ComputedStyleSection.css:

(.computed-style-section .property-trace-item .property .name,):

6:47 PM Changeset in webkit [279861] by mark.lam@apple.com
  • 10 edits in trunk/Source/JavaScriptCore

Revert r277027: breaks GC.
https://bugs.webkit.org/show_bug.cgi?id=227888

Reviewed by Saam Barati.

The patch in r277027 to make deletion of GCAwareJITStubRoutines incremental has a
bug: the routine may not be deleted yet by the incremental sweeper before the next
GC cycle, and the GC will not be happy visiting dead cell pointers in that routine.
There is also another bug with the triggering of sweeping.

For now, we're reverting the patch, and will revisit this at a later time.

  • CMakeLists.txt:
  • heap/Heap.cpp:

(JSC::Heap::deleteUnmarkedCompiledCode):
(JSC::Heap::sweepSynchronously):

  • heap/Heap.h:
  • heap/HeapInlines.h:

(JSC::Heap::mayHaveJITStubRoutinesToDelete): Deleted.
(JSC::Heap::deleteDeadJITStubRoutines): Deleted.

  • heap/IncrementalSweeper.cpp:

(JSC::IncrementalSweeper::doSweep):

  • heap/JITStubRoutineSet.cpp:

(JSC::JITStubRoutineSet::deleteUnmarkedJettisonedStubRoutines):

  • heap/JITStubRoutineSet.h:

(JSC::JITStubRoutineSet::deleteUnmarkedJettisonedStubRoutines):
(JSC::JITStubRoutineSet::traceMarkedStubRoutines):
(JSC::JITStubRoutineSet::mayHaveRoutinesToDelete): Deleted.
(JSC::JITStubRoutineSet::notifyHaveRoutinesToDelete): Deleted.

  • jit/GCAwareJITStubRoutine.cpp:

(JSC::GCAwareJITStubRoutine::observeZeroRefCount):

  • jit/JITStubRoutine.h:

(JSC::JITStubRoutine::createSelfManagedRoutine):

6:22 PM Changeset in webkit [279860] by Wenson Hsieh
  • 5 edits
    1 add in trunk/Source

[Cocoa] Turn on USE(OS_STATE) when building with a non-Apple-internal SDK
https://bugs.webkit.org/show_bug.cgi?id=227884

Reviewed by Tim Horton.

Source/WebKit:

Instead of directly importing <os/state_private.h>, introduce a new SPI header (OSStateSPI.h) that simply
includes <os/state_private.h> on internal builds, and falls back to function declarations when using the non-
internal SDK.

  • Platform/spi/Cocoa/OSStateSPI.h: Added.
  • WebKit.xcodeproj/project.pbxproj:

Drive-by fix: additionally restore the minimum objectVersion to 52 rather than 54. This was unintentionally
bumped in r279133.

  • WebProcess/cocoa/WebProcessCocoa.mm:

Source/WTF:

Enable the compile-time flag for all Cocoa builds.

  • wtf/PlatformUse.h:
5:33 PM Changeset in webkit [279859] by Robert Jenner
  • 3 edits in trunk/LayoutTests

REGRESSION (r279806):[iOS Mac wk2 ] fast/canvas/canvas-path-addPath.html is a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=227890

Unreviewed test gardening.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-12

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
4:58 PM Changeset in webkit [279858] by Russell Epstein
  • 1 copy in tags/Safari-612.1.22.11.3

Tag Safari-612.1.22.11.3.

4:44 PM Changeset in webkit [279857] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ MacOS & iOS ] animations/leak-document-with-css-animation.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=226598

Unreviewed test gardening.

Patch by Ayumi Kojima <Ayumi Kojima> on 2021-07-12

  • platform/ios-wk2/TestExpectations:
4:43 PM Changeset in webkit [279856] by commit-queue@webkit.org
  • 4 edits in trunk

_WKWebAuthenticationPanel escapes slashes in origin
https://bugs.webkit.org/show_bug.cgi?id=227724
rdar://80232742

Patch by Garrett Davidson <garrett_davidson@apple.com> on 2021-07-12
Reviewed by Kate Cheney.

Source/WebKit:

Tell NSJSONSerialization not to try to escapes slashes, like those in the scheme of an origin.

  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm:

(produceClientDataJson):

Tools:

Update both the makeCredential and getAssertion tests to use an origin.

WebAuthenticationPanel.GetAssertionLA:
This test wasn't using an origin or RPID. Update it to use both. This means both
clientDataJSON and authenticatorData changed. Update both to the new expected
values, using as much plaintext as possible.

WebAuthenticationPanel.MakeCredentialLA:
This test should have caught this issue, but the origin being passed here isn't
valid, because it didn't have a scheme. Per the WebAuthn spec, origins used by
WebAuthn MUST start with "https://". Also update this test to use plaintext
instead of base64 for clientDataJSON.

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(TestWebKitAPI::TEST):

4:07 PM Changeset in webkit [279855] by Chris Fleizach
  • 5 edits in trunk/Source

AX: Make WebKit observe spatial audio accessibility settings
https://bugs.webkit.org/show_bug.cgi?id=227848

Reviewed by Sam Weinig.

Source/WebKit:

Allow mac and iOS to read from accessibility domains.
Allow mac sandbox to read from com.apple.Accessibility.

  • PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
  • UIProcess/Cocoa/PreferenceObserver.mm:

(-[WKPreferenceObserver init]):

Source/WTF:

This flag was using the wrong format for a HAVE setting, so the code wasn't being compiled in.

  • wtf/PlatformHave.h:
3:33 PM Changeset in webkit [279854] by timothy_horton@apple.com
  • 5 edits in trunk

BifurcatedGraphicsContext can't draw text
https://bugs.webkit.org/show_bug.cgi?id=227883

Reviewed by Wenson Hsieh.

Source/WebCore:

API test: BifurcatedGraphicsContextTests.TextInBifurcatedContext

  • platform/graphics/BifurcatedGraphicsContext.cpp:

(WebCore::BifurcatedGraphicsContext::save):
(WebCore::BifurcatedGraphicsContext::restore):
(WebCore::BifurcatedGraphicsContext::paintFrameForMedia):
(WebCore::BifurcatedGraphicsContext::drawText):
(WebCore::BifurcatedGraphicsContext::drawGlyphs):
(WebCore::BifurcatedGraphicsContext::drawEmphasisMarks):
(WebCore::BifurcatedGraphicsContext::drawBidiText):

  • platform/graphics/BifurcatedGraphicsContext.h:

Bifurcate a few methods I somehow missed in the original patch.

Also, call GraphicsContext's implementation of save and restore
from the overridden version, because we confusingly currently use
the top-level context's state stack.

Tools:

  • TestWebKitAPI/Tests/WebCore/cg/BifurcatedGraphicsContextTestsCG.cpp:

(TestWebKitAPI::TEST):
Add a test ensuring that we get DrawGlyphs commands on both contexts.

2:34 PM Changeset in webkit [279853] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ iOS ] fast/canvas/canvas-overloads-strokeText.html is a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=227881.

Unreviewed test gardening.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-12

  • platform/ios-wk2/TestExpectations:
2:18 PM Changeset in webkit [279852] by Russell Epstein
  • 1 copy in tags/Safari-612.1.23.1.1

Tag Safari-612.1.23.1.1.

1:55 PM Changeset in webkit [279851] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[Mac wk1 Debug] webaudio/audioworket-out-of-memory.html is a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=227845

Unreviewed test gardening.

Patch by Ayumi Kojima <Ayumi Kojima> on 2021-07-12

  • platform/mac-wk1/TestExpectations:
1:51 PM Changeset in webkit [279850] by Yijia Huang
  • 8 edits in trunk/Source/JavaScriptCore

Add SMNEGL, UMNEGL, UMADDL, and UMSUBL for ARM64 and select this instruction in Air
https://bugs.webkit.org/show_bug.cgi?id=227857

Reviewed by Robin Morisset.

The previous patches have already added MNEG, MADD, MSUB, SMADDL, and SMSUBL.
This patch completes the corresponding signed or unsigned variants (SMNEGL,
UMNEGL, UMADDL, and UMSUBL) of them. In addition, this patch refactors
the implementation and the associative test cases of MADD, MSUB, and MNEG
to be more readable and maintainable w.r.t their variants.


### SMNEGL/UMNEGL Xd Wn Wm ###


Signed/Unsigned Multiply-Negate Long multiplies two 32-bit register values,
negates the product, and writes the result to the 64-bit destination register.
The equivalent patterns are

d = -(SExt32(n) * SExt32(m)) and d = -(ZExt32(n) * ZExt32(m)) respectively.

Given B3 IR:
Int @0 = S/ZExt32(Trunc(ArgumentReg(%x0)))
Int @1 = S/ZExt32(Trunc(ArgumentReg(%x1)))
Int @2 = Mul(@0, @1)
Int @3 = Neg(@2)
Void@4 = Return(@3, Terminal)

Old optimized AIR
Move32 %x0, %x0, @0
Move32 %x1, %x1, @1
MultiplyNeg %x0, %x1, %x0, @3
Ret %x0, @4

New optimized AIR
MultiplyNegSign/ZeroExtend %x0, %x1, %x0, @3
Ret %x0, @4


### UMADDL Xd Wn Wm Xa ###


Unsigned Multiply-Add Long multiplies two 32-bit register values, adds a 64-bit
register value, and writes the result to the 64-bit destination register. The
equivalent patterns are

d = ZExt32(n) * ZExt32(m) + a or d = a + ZExt32(n) * ZExt32(m)

Given B3 IR:
Int @0 = ZExt32(Trunc(ArgumentReg(%x0)))
Int @1 = ZExt32(Trunc(ArgumentReg(%x1)))
Int @2 = ArgumentReg(%x2)
Int @3 = Mul(@0, @1)
Int @4 = Add(@3, @2)
Void@5 = Return(@4, Terminal)

Old optimized AIR
Move32 %x0, %x0, @1
Move32 %x1, %x1, @2
MultiplyAdd %x0, %x1, %x2, %x0, @4
Ret64 %x0, @5

New optimized AIR
MultiplyAddZeroExtend %x0, %x1, %x2, %x0, @8
Ret %x0, @9


### UMSUBL Xd Wn Wm Xa ###


Unsigned Multiply-Subtract Long multiplies two 32-bit register values, subtracts
the product from a 64-bit register value, and writes the result to the 64-bit
destination register. The equivalent patterns are

d = a - ZExt32(n) * ZExt32(m)

Given B3 IR:
Int @0 = ZExt32(Trunc(ArgumentReg(%x0)))
Int @1 = ZExt32(Trunc(ArgumentReg(%x1)))
Int @2 = ArgumentReg(%x2)
Int @3 = Mul(@0, @1)
Int @4 = Sub(@2, @3)
Void@5 = Return(@4, Terminal)

Old optimized AIR
Move32 %x0, %x0, @1
Move32 %x1, %x1, @2
MultiplySub %x0, %x1, %x2, %x0, @4
Ret64 %x0, @5

New optimized AIR
MultiplySubZeroExtend %x0, %x1, %x2, %x0, @8
Ret %x0, @9

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::multiplyNeg32):
(JSC::MacroAssemblerARM64::multiplyAddZeroExtend32):
(JSC::MacroAssemblerARM64::multiplySubZeroExtend32):
(JSC::MacroAssemblerARM64::multiplyNeg64):
(JSC::MacroAssemblerARM64::multiplyNegSignExtend32):
(JSC::MacroAssemblerARM64::multiplyNegZeroExtend32):

  • assembler/testmasm.cpp:

(JSC::testMultiplyAddSignExtend32):
(JSC::testMultiplyAddZeroExtend32):
(JSC::testMultiplySubSignExtend32):
(JSC::testMultiplySubZeroExtend32):
(JSC::testMultiplyNegSignExtend32):
(JSC::testMultiplyNegZeroExtend32):
(JSC::testMultiplyAddSignExtend32Left): Deleted.
(JSC::testMultiplyAddSignExtend32Right): Deleted.

  • b3/B3LowerToAir.cpp:
  • b3/air/AirOpcode.opcodes:
  • b3/testb3.h:
  • b3/testb3_2.cpp:

(testMulAddArgsLeft):
(testMulAddArgsRight):
(testMulAddSignExtend32ArgsLeft):
(testMulAddZeroExtend32ArgsLeft):
(testMulAddZeroExtend32ArgsRight):
(testMulSubArgsLeft):
(testMulSubArgsRight):
(testMulSubArgsRight32):
(testMulSubSignExtend32):
(testMulSubZeroExtend32):
(testMulNegArgArg):
(testMulNegArgs):
(testMulNegArgs32):
(testMulNegSignExtend32):
(testMulNegZeroExtend32):
(testMulSubSignExtend32Args): Deleted.

  • b3/testb3_3.cpp:

(addArgTests):

1:46 PM Changeset in webkit [279849] by Jonathan Bedard
  • 4 edits in trunk/Tools

[run-api-tests] Use Python 3 (Part 1)
https://bugs.webkit.org/show_bug.cgi?id=225427
<rdar://problem/77584713>

Reviewed by Aakash Jain.

  • CISupport/build-webkit-org/steps.py:

(RunAPITests): Use Python3 to invoke run-api-tests.

  • CISupport/ews-build/steps.py:

(RunAPITests): Use Python3 to invoke run-api-tests.

  • CISupport/ews-build/steps_unittest.py:
1:45 PM Changeset in webkit [279848] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Updating test expectations for imported/w3c/web-platform-tests/navigation-timing/test_timing_attributes_order.html.
https://bugs.webkit.org/show_bug.cgi?id=227877.

Unreviewed test gardening.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-12

  • platform/mac/TestExpectations:
1:45 PM Changeset in webkit [279847] by Simon Fraser
  • 17 edits in trunk/Source

Add a StyleSheets log channel and some logging
https://bugs.webkit.org/show_bug.cgi?id=227880

Reviewed by Alan Bujtas.

Source/WebCore:

Add some logging to help debug issues when pages dynamically build style sheets.

Also make Document loggable.

  • css/CSSStyleSheet.cpp:

(WebCore::CSSStyleSheet::insertRule):
(WebCore::CSSStyleSheet::deleteRule):
(WebCore::CSSStyleSheet::addRule):
(WebCore::CSSStyleSheet::debugDescription const):

  • css/CSSStyleSheet.h:
  • css/StyleSheet.cpp:

(WebCore::operator<<):

  • css/StyleSheet.h:
  • dom/Document.cpp:

(WebCore::Document::debugDescription const):
(WebCore::operator<<):

  • dom/Document.h:
  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::process):
(WebCore::HTMLLinkElement::debugDescription const):

  • html/HTMLLinkElement.h:
  • platform/Logging.h:
  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::dumpProperties const):

  • platform/graphics/filters/FilterEffect.cpp:

(WebCore::FilterEffect::imageBufferResult):

  • style/StyleScope.cpp:

(WebCore::Style::Scope::addPendingSheet):
(WebCore::Style::Scope::addStyleSheetCandidateNode):
(WebCore::Style::Scope::collectActiveStyleSheets):
(WebCore::Style::Scope::updateActiveStyleSheets):

  • xml/XSLStyleSheet.h:
  • xml/XSLStyleSheetLibxslt.cpp:

(WebCore::XSLStyleSheet::debugDescription const):

Source/WTF:

Make it possible to feed Ref<> and RefPtr<> into TextStream.

  • wtf/text/TextStream.h:

(WTF::operator<<):

1:18 PM Changeset in webkit [279846] by Russell Epstein
  • 8 edits in branches/safari-612.1.22.11-branch/Source

Versioning.

WebKit-7612.1.22.11.3

12:05 PM Changeset in webkit [279845] by sbarati@apple.com
  • 4 edits in trunk/JSTests

Run some tests for fewer iterations to prevent test timeouts
https://bugs.webkit.org/show_bug.cgi?id=227879

Reviewed by Mark Lam.

  • microbenchmarks/get-by-val-negative-array-index.js:
  • microbenchmarks/memcpy-typed-loop-small.js:
  • microbenchmarks/put-by-val-negative-array-index.js:
11:56 AM Changeset in webkit [279844] by clopez@igalia.com
  • 2 edits in trunk/Tools

[GTK] Add a new GTK layout tester bot to build.webkit.org that runs with --skip-failing-tests switch
https://bugs.webkit.org/show_bug.cgi?id=227744

Reviewed by Jonathan Bedard.

On the EWS the layout tests run with this switch --skip-failing-tests
which changes the order in which tests are run (those expected to fail
are not scheduled). I think this may be causing different results on
other tests (like unexpected failures or unexpected flakies).
Having a bot in build.webkit.org running with this switch will help
to detect and garden those cases.

  • CISupport/build-webkit-org/config.json:
11:52 AM Changeset in webkit [279843] by Adrian Perez de Castro
  • 1 copy in releases/WPE WebKit/webkit-2.32.2

WPE WebKit 2.32.2

11:51 AM Changeset in webkit [279842] by Adrian Perez de Castro
  • 4 edits in releases/WebKitGTK/webkit-2.32

Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.32.2 release

.:

  • Source/cmake/OptionsWPE.cmake: Bump version numbers.

Source/WebKit:

  • wpe/NEWS: Add release notes for 2.32.2
11:08 AM Changeset in webkit [279841] by Russell Epstein
  • 8 edits in branches/safari-612.1.23.1-branch/Source

Versioning.

WebKit-7612.1.23.1.1

11:06 AM Changeset in webkit [279840] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

Unreviewed, reverting r279835.

Newly added assertions are wrong

Reverted changeset:

"Regression(r279601) ProcessAssertion may get destroyed on a
background thread"
https://bugs.webkit.org/show_bug.cgi?id=227875
https://commits.webkit.org/r279835

11:02 AM Changeset in webkit [279839] by sbarati@apple.com
  • 2 edits in trunk/JSTests

stress/wasm-loop-consistency.js should require the --useExecutableAllocationFuzz=false JSC option
https://bugs.webkit.org/show_bug.cgi?id=227876

Reviewed by Mark Lam.

  • stress/wasm-loop-consistency.js:
10:59 AM Changeset in webkit [279838] by Chris Dumez
  • 269 edits
    1 copy
    8 moves
    816 adds
    27 deletes in trunk/LayoutTests

Resync content-security-policy web-platform-tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=227651

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Resync content-security-policy web-platform-tests from upstream 2c19d6ee62676ac90146.

  • resources/import-expectations.json:
  • resources/resource-files.json:
  • web-platform-tests/content-security-policy/*: Updated.
  • web-platform-tests/reporting/*: Imported.

LayoutTests:

10:54 AM Changeset in webkit [279837] by Russell Epstein
  • 1 copy in branches/safari-612.1.23.1-branch

New branch.

10:48 AM Changeset in webkit [279836] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Unreviewed, reverting r279493.
https://bugs.webkit.org/show_bug.cgi?id=227878

Web Inspector: Can't reveal local overrides in the sidebar if
lots of scripts are visible

Reverted changeset:

"Web Inspector: [Regression: r279271] Sources: Breakpoints
section in navigation sidebar disappears when Web Inspector
becomes taller than 650px"
https://bugs.webkit.org/show_bug.cgi?id=227597
https://commits.webkit.org/r279493

10:26 AM Changeset in webkit [279835] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

Regression(r279601) ProcessAssertion may get destroyed on a background thread
https://bugs.webkit.org/show_bug.cgi?id=227875
<rdar://76972252>

Reviewed by Geoffrey Garen.

r279601 added an internal WorkQueue to ProcessAssertion, so that we could acquire the RunningBoard assertion
asynchronously on the background queue. When dispatching to the background queue, we capture |protectedThis|,
which means that ProcessAssertion may now get destroyed on the background queue. ProcessAssertion is a main
thread object and destroying it on a non-main thread can lead to crashes.

  • UIProcess/ProcessAssertion.h:
  • UIProcess/ios/ProcessAssertionIOS.mm:

(WebKit::ProcessAssertion::ProcessAssertion):
(WebKit::ProcessAssertion::~ProcessAssertion):

10:23 AM Changeset in webkit [279834] by Russell Epstein
  • 8 edits in branches/safari-612.1.23-branch/Source

Versioning.

WebKit-7612.1.23.1

10:10 AM Changeset in webkit [279833] by jer.noble@apple.com
  • 5 edits in trunk

[Cocoa] Incorrect deprecation declaration for -[WKWebView closeAllMediaPresentations:]
https://bugs.webkit.org/show_bug.cgi?id=227860
<rdar://80376777>

Reviewed by Sam Weinig.

Source/WebKit:

In r277645, we added a deprecation declaration for -closeAllMediaPresentations:completion, but
that API was never shipped in a release. The actual shipped API, -closeAllMediaPresentations,
was removed entirely, leading to bincompat crashes when binaries built against older SDKs are
run against newer OSs.

Correct the deprecated API declaration, and re-add support for -closeAllMediaPresentations.

  • UIProcess/API/Cocoa/WKWebView.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView closeAllMediaPresentations]):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewCloseAllMediaPresentations.mm:

(TEST):

10:08 AM Changeset in webkit [279832] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, partial revert of r279661 to address crashes on iOS Debug.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::removeAllEventListeners):

9:25 AM Changeset in webkit [279831] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[BigSur Release wk2 ]fullscreen/full-screen-remove-children.html is a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=227874.

Unreviewed test gardening.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-12

  • platform/mac-wk2/TestExpectations:
9:15 AM Changeset in webkit [279830] by Wenson Hsieh
  • 11 edits
    2 adds in trunk

[watchOS] Make a few additional adjustments to support system minimum layout margins
https://bugs.webkit.org/show_bug.cgi?id=227859
rdar://80113612

Reviewed by Tim Horton.

Source/WebCore:

Reduce the default minimum viewport scale on watchOS to avoid horizontal scrolling when loading wide fixed-
viewport-width web content. See WebKit ChangeLog for more details.

  • page/ViewportConfiguration.cpp:

(WebCore::platformDeviceWidthOverride):
(WebCore::platformMinimumScaleForWebpage):
(WebCore::shouldOverrideShrinkToFitArgument):
(WebCore::ViewportConfiguration::nativeWebpageParametersWithShrinkToFit):
(WebCore::ViewportConfiguration::webpageParameters):

Source/WebKit:

Make a couple of minor adjustments to deal with the fact that -contentInset includes system content insets
(specifically, -_contentScrollInset) on watchOS, due to method swizzling that happens in PepperUICore. See
changes below for more detail.

Test: fast/viewport/watchos/viewport-with-system-minimum-layout-margins.html

  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _computedContentInset]):

Only apply -safeAreaInsets on top of -contentInset when computing the total scroll view content inset on
watchOS (as opposed to applying both -safeAreaInsets and -_contentScrollInset); this is because
-contentInset on watchOS is actually equivalent to -_effectiveContentInset on other iOS-family platforms, so
additionally adding -_contentScrollInset here would result in the scroll content inset being double-counted.

  • UIProcess/ios/WKScrollView.mm:

(-[WKScrollView setContentInset:]):
(-[WKScrollView _setContentScrollInsetInternal:]):
(-[WKScrollView _updateContentScrollInset]):

In the case where the WebKit client explicitly sets the scroll view's content insets using `-[WKScrollView
setContentInset:], set a flag (_contentInsetWasExternallyOverridden`) and immediately revert any internally
specified -_contentScrollInset on WKScrollView. Due to the swizzled implementation of `-[UIScrollView
contentInset] described above, it's practically impossible for any client to use -setContentInset:` correctly
when there is a nonzero -_contentScrollInset on watchOS, so preferable to simply get out of the way of the
client in this scenario.

In the context of _SFNanoBrowserViewController, this ensures that scroll view content inset adjustment logic in
Safari doesn't inadvertently cause horizontal content insets to increase by -_contentScrollInset every time
-[WKScrollView setContentInset:] is invoked by the client.

Tools:

Add support for simulating arbitrary horizontal (trailing and leading) values for -systemMinimumLayoutMargin
in WebKitTestRunner, via a new "horizontalSystemMinimumLayoutMargin" test option. By default, this is 0.

  • WebKitTestRunner/TestOptions.cpp:

(WTR::TestOptions::defaults):
(WTR::TestOptions::keyTypeMapping):

  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::horizontalSystemMinimumLayoutMargin const):

  • WebKitTestRunner/ios/PlatformWebViewIOS.mm:

(-[PlatformWebViewController systemMinimumLayoutMargins]):

Override this UIViewController method and replace the leading and trailing layout margin values with the values
from test options.

(WTR::PlatformWebView::PlatformWebView):

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::TestController::platformResetStateToConsistentValues):

Additionally make a slight adjustment here to avoid calling -setContentInset on the scroll view in between
tests if the content insets aren't changing. This is needed in order for the new layout test to work on watchOS.

LayoutTests:

Add a new layout test that uses the new test option to verify that nonzero horizontal system minimum layout
margins shrink the width of the viewport on watchOS (this test also disables watchOS device adaptations and uses
a device-width viewport with initial-scale=1 such that we can simply check the value of innerWidth).

  • fast/viewport/watchos/viewport-with-system-minimum-layout-margins-expected.txt: Added.
  • fast/viewport/watchos/viewport-with-system-minimum-layout-margins.html: Added.
9:14 AM Changeset in webkit [279829] by commit-queue@webkit.org
  • 12 edits
    2 adds in trunk

AX: Add ARIA role "image" as a new role, and leave "img" as a synonym
https://bugs.webkit.org/show_bug.cgi?id=224615

Patch by Tyler Wilcock <Tyler Wilcock> on 2021-07-12
Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/image-role-is-synonomous-with-img-role.html

  • accessibility/AccessibilityObject.cpp:

(WebCore::initializeRoleMap):
Add "image" ARIA role as a synonym for the "img" ARIA role, both of
which map to the AccessibilityRole::Image WebCore representation.

Also hardcode the ARIA reverse role map to return "image" for
the AccessibilityRole::Image key.

LayoutTests:

The "image" role is replacing the "img" role (though "img" is not
going away), so "image" should be returned from computedRoleString.

  • accessibility/image-role-is-synonomous-with-img-role-expected.txt: Added.
  • accessibility/image-role-is-synonomous-with-img-role.html: Added.
  • accessibility/roles-computedRoleString-expected.txt:
  • accessibility/roles-computedRoleString.html:
  • inspector/dom/getAccessibilityPropertiesForNode-expected.txt:
  • platform/glib/accessibility/roles-computedRoleString-expected.txt:
  • platform/gtk/accessibility/gtk/xml-roles-exposed-expected.txt:
  • platform/gtk/accessibility/image-link-expected.txt:
  • platform/gtk/inspector/dom/getAccessibilityPropertiesForNode-expected.txt:
  • platform/mac/accessibility/roles-computedRoleString-expected.txt:
  • platform/wpe/accessibility/image-link-expected.txt:

All the tests in this group have been updated to expect "image"
instead of "img".

8:41 AM Changeset in webkit [279828] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GTK] media/playlist-inherits-user-gesture.html is timing out
https://bugs.webkit.org/show_bug.cgi?id=198118

Unreviewed test gardening, this test passes after r227404.

Patch by Arcady Goldmints-Orlov <agoldmints@igalia.com> on 2021-07-12

  • platform/glib/TestExpectations:
8:23 AM Changeset in webkit [279827] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

[GTK] Touch navigation gesture triggers kinetic scrolling when cancelling
https://bugs.webkit.org/show_bug.cgi?id=227701

Patch by Alexander Mikhaylenko <Alexander Mikhaylenko> on 2021-07-12
Reviewed by Michael Catanzaro.

Make sure an event that has finished a navigation swipe gesture isn't propagated
to the page triggering kinetic scrolling.

Move the navigation swipe ending from drag-end to swipe signal handler, since
that's where kinetic scrolling is handled and we can stop it.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseTouchDragEnd):
(webkitWebViewBaseTouchSwipe):

  • UIProcess/gtk/ViewGestureControllerGtk.cpp:

(WebKit::ViewGestureController::SwipeProgressTracker::handleEvent):

7:26 AM Changeset in webkit [279826] by commit-queue@webkit.org
  • 12 edits in trunk/Source

[GTK][WPE] Support drawing scrollbar corner
https://bugs.webkit.org/show_bug.cgi?id=227868

Patch by Alexander Mikhaylenko <Alexander Mikhaylenko> on 2021-07-12
Reviewed by Michael Catanzaro.

Source/WebCore:

With dark scrollbars supported, the lack of scroll corner for non-overlay
scrollbars becomes very noticeable. Implement it.

To properly draw them, we need to know whether scrollbars are dark, and whether
the vertical scrollbar is on the left. Hence, pass ScrollableArea to
paintScrollCorner() so we can query it.

Only cover non-system scrollbars, it would take considerable amount of work to
make it work for system as well.

  • platform/ScrollView.cpp:

(WebCore::ScrollView::paintScrollCorner):

  • platform/ScrollbarTheme.h:

(WebCore::ScrollbarTheme::paintScrollCorner):
(WebCore::ScrollbarTheme::defaultPaintScrollCorner):

  • platform/adwaita/ScrollbarThemeAdwaita.cpp:

(WebCore::ScrollbarThemeAdwaita::paintScrollCorner):

  • platform/adwaita/ScrollbarThemeAdwaita.h:
  • platform/mac/ScrollbarThemeMac.h:
  • platform/mac/ScrollbarThemeMac.mm:

(WebCore::ScrollbarThemeMac::paintScrollCorner):

  • rendering/RenderLayerScrollableArea.cpp:

(WebCore::RenderLayerScrollableArea::paintScrollCorner):

  • rendering/RenderScrollbarTheme.cpp:

(WebCore::RenderScrollbarTheme::paintScrollCorner):

  • rendering/RenderScrollbarTheme.h:

Source/WebKit:

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::paintControlForLayerInContext):
Update the paintScrollCorner() call.

6:05 AM Changeset in webkit [279825] by clopez@igalia.com
  • 4 edits
    1 delete in trunk

Unreviewed, reverting r279778.

It caused unexpected text diffs on http/tests/storageAccess
tests

Reverted changeset:

"[GTK][WPE][libsoup] Test imported/w3c/web-platform-
tests/cookies/samesite/about-blank-toplevel.https.html crashes
since it was imported"
https://bugs.webkit.org/show_bug.cgi?id=227819
https://commits.webkit.org/r279778

6:02 AM Changeset in webkit [279824] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GTK][WPE] Match Adwaita scrollbars more closely
https://bugs.webkit.org/show_bug.cgi?id=227870

Patch by Alexander Mikhaylenko <Alexander Mikhaylenko> on 2021-07-12
Reviewed by Michael Catanzaro.

Adjust the dimensions to match GTK as closely as possible.

  • platform/adwaita/ScrollbarThemeAdwaita.cpp:

(WebCore::ScrollbarThemeAdwaita::paint):

4:47 AM Changeset in webkit [279823] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

[GTK] Adwaita entries should follow the system cursor blink settings
https://bugs.webkit.org/show_bug.cgi?id=227856

Patch by Alexander Mikhaylenko <Alexander Mikhaylenko> on 2021-07-12
Reviewed by Adrian Perez de Castro.

Get the caret blink interval from GtkSettings if available, same as it was done
for the GTK theme before.

  • rendering/RenderThemeAdwaita.cpp:

(WebCore::RenderThemeAdwaita::caretBlinkInterval const):

  • rendering/RenderThemeAdwaita.h:
2:30 AM Changeset in webkit [279822] by imanol
  • 16 edits
    1 copy
    12 moves
    3 adds in trunk/Source/WebKit

Cross platform compilation of PlatformXRSystem and PlatformXRSystemProxy
https://bugs.webkit.org/show_bug.cgi?id=226919

Reviewed by Dean Jackson.

PlatformXRSystem and PlatformXRSystemProxy are only compiled in Cocoa platform while WPE uses OpenXR,
which only has code in WebCore. In order to run WebKit based WebXR on non-cocoa VR Standalone devices
we also need to split the code and IPC messages between UIProcess/WebProcess.

The existing PlatformXRSystem/PlatformXRSystemProxy pattern fits very well to the VR standalone scenario.
This patch ensures that the existing code can be used in more platforms other than Cocoa.

Tested by WebXR WPT.

  • CMakeLists.txt:
  • DerivedSources.make:
  • PlatformMac.cmake:
  • Shared/XR/XRDeviceIdentifier.h: Renamed from Source/WebKit/Shared/Cocoa/XRDeviceIdentifier.h.
  • Shared/XR/XRDeviceInfo.cpp: Renamed from Source/WebKit/Shared/Cocoa/XRDeviceInfo.mm.
  • Shared/XR/XRDeviceInfo.h: Renamed from Source/WebKit/Shared/Cocoa/XRDeviceInfo.h.
  • Shared/XR/XRDeviceProxy.cpp: Renamed from Source/WebKit/Shared/Cocoa/XRDeviceProxy.mm.
  • Shared/XR/XRDeviceProxy.h: Renamed from Source/WebKit/Shared/Cocoa/XRDeviceProxy.h.
  • Shared/mac/MediaFormatReader/MediaSampleCursor.cpp: Add include to fix compilation error
  • Sources.txt:
  • SourcesCocoa.txt:
  • UIProcess/Cocoa/PlatformXRCoordinator.mm: Copied from Source/WebKit/WebProcess/cocoa/PlatformXRSystemProxy.messages.in.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didAttachToRunningProcess):
(WebKit::WebPageProxy::resetState):

  • UIProcess/WebPageProxy.h:
  • UIProcess/XR/PlatformXRCoordinator.h: Renamed from Source/WebKit/UIProcess/Cocoa/PlatformXRCoordinator.h.
  • UIProcess/XR/PlatformXRSystem.cpp: Renamed from Source/WebKit/UIProcess/Cocoa/PlatformXRSystem.mm.
  • UIProcess/XR/PlatformXRSystem.h: Renamed from Source/WebKit/UIProcess/Cocoa/PlatformXRSystem.h.
  • UIProcess/XR/PlatformXRSystem.messages.in: Renamed from Source/WebKit/UIProcess/Cocoa/PlatformXRSystem.messages.in.
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:
  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::xrSystemProxy):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/XR/PlatformXRSystemProxy.cpp: Renamed from Source/WebKit/WebProcess/cocoa/PlatformXRSystemProxy.mm.
  • WebProcess/XR/PlatformXRSystemProxy.h: Renamed from Source/WebKit/WebProcess/cocoa/PlatformXRSystemProxy.h.
  • WebProcess/XR/PlatformXRSystemProxy.messages.in: Renamed from Source/WebKit/WebProcess/cocoa/PlatformXRSystemProxy.messages.in.
1:22 AM Changeset in webkit [279821] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GTK4] Scrollbar click doesn't work as expected when native scrollbars are off
https://bugs.webkit.org/show_bug.cgi?id=226331

Patch by Alexander Mikhaylenko <Alexander Mikhaylenko> on 2021-07-12
Reviewed by Carlos Garcia Campos.

Make Adwaita scrollbar theme follow the GTK setting if possible.

  • platform/adwaita/ScrollbarThemeAdwaita.cpp:

(WebCore::ScrollbarThemeAdwaita::handleMousePressEvent):

12:53 AM Changeset in webkit [279820] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] JITCage already includes guard pages
https://bugs.webkit.org/show_bug.cgi?id=227867

Reviewed by Mark Lam.

Since JITCage already includes guard pages, we do not need to allocate that additionally.

  • jit/ExecutableAllocator.cpp:

(JSC::initializeJITPageReservation):

12:40 AM Changeset in webkit [279819] by commit-queue@webkit.org
  • 12 edits
    108 adds in trunk/LayoutTests

Resync web-platform-tests/css/css-overflow from upstream
https://bugs.webkit.org/show_bug.cgi?id=227849

Patch by Rob Buis <rbuis@igalia.com> on 2021-07-12
Reviewed by Manuel Rego Casasnovas.

LayoutTests/imported/w3c:

Import based on 1d6a9a37bc.

  • resources/resource-files.json:
  • web-platform-tests/css/css-overflow/clip-001.html:
  • web-platform-tests/css/css-overflow/clip-002-expected.html: Added.
  • web-platform-tests/css/css-overflow/clip-002.html: Added.
  • web-platform-tests/css/css-overflow/clip-003-expected.html: Added.
  • web-platform-tests/css/css-overflow/clip-003.html: Added.
  • web-platform-tests/css/css-overflow/clip-004-expected.html: Added.
  • web-platform-tests/css/css-overflow/clip-004.html: Added.
  • web-platform-tests/css/css-overflow/clip-005-expected.html: Added.
  • web-platform-tests/css/css-overflow/clip-005.html: Added.
  • web-platform-tests/css/css-overflow/clip-006-expected.html: Added.
  • web-platform-tests/css/css-overflow/clip-006.html: Added.
  • web-platform-tests/css/css-overflow/clip-007-expected.html: Added.
  • web-platform-tests/css/css-overflow/clip-007.html: Added.
  • web-platform-tests/css/css-overflow/dynamic-visible-to-clip-001.html:
  • web-platform-tests/css/css-overflow/incremental-scroll-expected.html: Added.
  • web-platform-tests/css/css-overflow/incremental-scroll.html: Added.
  • web-platform-tests/css/css-overflow/no-scrollable-overflow-vertical-rl-2-expected.html: Added.
  • web-platform-tests/css/css-overflow/no-scrollable-overflow-vertical-rl-2.html: Added.
  • web-platform-tests/css/css-overflow/no-scrollable-overflow-vertical-rl-expected.html: Added.
  • web-platform-tests/css/css-overflow/no-scrollable-overflow-vertical-rl.html: Added.
  • web-platform-tests/css/css-overflow/overflow-body-propagation-007-expected.html: Added.
  • web-platform-tests/css/css-overflow/overflow-body-propagation-007.html: Added.
  • web-platform-tests/css/css-overflow/overflow-body-propagation-008-expected.html: Added.
  • web-platform-tests/css/css-overflow/overflow-body-propagation-008.html: Added.
  • web-platform-tests/css/css-overflow/overflow-body-propagation-009-expected.html: Added.
  • web-platform-tests/css/css-overflow/overflow-body-propagation-009.html: Added.
  • web-platform-tests/css/css-overflow/overflow-body-propagation-010-expected.html: Added.
  • web-platform-tests/css/css-overflow/overflow-body-propagation-010.html: Added.
  • web-platform-tests/css/css-overflow/overflow-body-propagation-011-expected.html: Added.
  • web-platform-tests/css/css-overflow/overflow-body-propagation-011.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-001-crash.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-002-crash.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-cant-scroll-expected.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-cant-scroll.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-content-visual-overflow-expected.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-content-visual-overflow.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-hit-testing.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-margin-001-expected.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-margin-001.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-margin-002-expected.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-margin-002.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-margin-003-expected.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-margin-003.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-margin-004-expected.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-margin-004.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-margin-005-expected.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-margin-005.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-margin-006-expected.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-margin-006.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-margin-007-expected.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-margin-007.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-margin-intersection-observer.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-margin-invalidation-expected.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-margin-invalidation.html: Added.
  • web-platform-tests/css/css-overflow/overflow-clip-scroll-size.html: Added.
  • web-platform-tests/css/css-overflow/overflow-empty-child-box-expected.txt: Added.
  • web-platform-tests/css/css-overflow/overflow-empty-child-box.html: Added.
  • web-platform-tests/css/css-overflow/overflow-hidden-resize-with-stacking-context-child-expected.html: Added.
  • web-platform-tests/css/css-overflow/overflow-hidden-resize-with-stacking-context-child.html: Added.
  • web-platform-tests/css/css-overflow/overflow-negative-margin-dynamic-expected.html: Added.
  • web-platform-tests/css/css-overflow/overflow-negative-margin-dynamic.html: Added.
  • web-platform-tests/css/css-overflow/overflow-negative-margin-expected.html: Added.
  • web-platform-tests/css/css-overflow/overflow-negative-margin.html: Added.
  • web-platform-tests/css/css-overflow/overflow-no-frameset-propagation-expected.html: Added.
  • web-platform-tests/css/css-overflow/overflow-no-frameset-propagation.html: Added.
  • web-platform-tests/css/css-overflow/overflow-padding.html:
  • web-platform-tests/css/css-overflow/overflow-replaced-element-001-expected.txt: Added.
  • web-platform-tests/css/css-overflow/overflow-replaced-element-001.html: Added.
  • web-platform-tests/css/css-overflow/overflow-scroll-resize-visibility-hidden-expected.html: Added.
  • web-platform-tests/css/css-overflow/overflow-scroll-resize-visibility-hidden.html: Added.
  • web-platform-tests/css/css-overflow/parsing/overflow-computed-expected.txt:
  • web-platform-tests/css/css-overflow/parsing/overflow-computed.html:
  • web-platform-tests/css/css-overflow/parsing/scrollbar-gutter-invalid.html:
  • web-platform-tests/css/css-overflow/parsing/scrollbar-gutter-valid.html:
  • web-platform-tests/css/css-overflow/scrollable-overflow-float-expected.txt: Added.
  • web-platform-tests/css/css-overflow/scrollable-overflow-float.html: Added.
  • web-platform-tests/css/css-overflow/scrollable-overflow-self-collapsing-expected.txt: Added.
  • web-platform-tests/css/css-overflow/scrollable-overflow-self-collapsing.html: Added.
  • web-platform-tests/css/css-overflow/scrollable-overflow-textarea-expected.txt: Added.
  • web-platform-tests/css/css-overflow/scrollable-overflow-textarea.html: Added.
  • web-platform-tests/css/css-overflow/scrollable-overflow-transform-001-expected.txt: Added.
  • web-platform-tests/css/css-overflow/scrollable-overflow-transform-001.html: Added.
  • web-platform-tests/css/css-overflow/scrollable-overflow-transform-002-expected.txt: Added.
  • web-platform-tests/css/css-overflow/scrollable-overflow-transform-002.html: Added.
  • web-platform-tests/css/css-overflow/scrollable-overflow-transform-003-expected.txt: Added.
  • web-platform-tests/css/css-overflow/scrollable-overflow-transform-003.html: Added.
  • web-platform-tests/css/css-overflow/scrollable-overflow-transform-dynamic-001-expected.txt: Added.
  • web-platform-tests/css/css-overflow/scrollable-overflow-transform-dynamic-001.html: Added.
  • web-platform-tests/css/css-overflow/scrollable-overflow-transform-dynamic-002-expected.txt: Added.
  • web-platform-tests/css/css-overflow/scrollable-overflow-transform-dynamic-002.html: Added.
  • web-platform-tests/css/css-overflow/scrollable-overflow-transform-dynamic-003-expected.txt: Added.
  • web-platform-tests/css/css-overflow/scrollable-overflow-transform-dynamic-003.html: Added.
  • web-platform-tests/css/css-overflow/scrollable-overflow-transform-dynamic-004-expected.txt: Added.
  • web-platform-tests/css/css-overflow/scrollable-overflow-transform-dynamic-004.html: Added.
  • web-platform-tests/css/css-overflow/scrollable-overflow-transform-dynamic-005-expected.txt: Added.
  • web-platform-tests/css/css-overflow/scrollable-overflow-transform-dynamic-005.html: Added.
  • web-platform-tests/css/css-overflow/scrollable-overflow-transform-dynamic-006-expected.txt: Added.
  • web-platform-tests/css/css-overflow/scrollable-overflow-transform-dynamic-006.html: Added.
  • web-platform-tests/css/css-overflow/scrollbar-gutter-001.html: Added.
  • web-platform-tests/css/css-overflow/scrollbar-gutter-propagation-001.html: Added.
  • web-platform-tests/css/css-overflow/scrollbar-gutter-propagation-002.html: Added.
  • web-platform-tests/css/css-overflow/scrollbar-gutter-propagation-003.html: Added.
  • web-platform-tests/css/css-overflow/scrollbar-gutter-propagation-004.html: Added.
  • web-platform-tests/css/css-overflow/scrollbar-gutter-propagation-005.html: Added.
  • web-platform-tests/css/css-overflow/scrollbar-gutter-propagation-006.html: Added.
  • web-platform-tests/css/css-overflow/scrollbar-gutter-propagation-007.html: Added.
  • web-platform-tests/css/css-overflow/scrollbar-gutter-rtl-001.html: Added.
  • web-platform-tests/css/css-overflow/scrollbar-gutter-vertical-lr-001.html: Added.
  • web-platform-tests/css/css-overflow/scrollbar-gutter-vertical-rl-001.html: Added.
  • web-platform-tests/css/css-overflow/w3c-import.log:
  • web-platform-tests/css/css-overflow/webkit-line-clamp-036-expected.html: Added.
  • web-platform-tests/css/css-overflow/webkit-line-clamp-036.html: Added.
  • web-platform-tests/css/css-overflow/webkit-line-clamp-037-expected.html: Added.
  • web-platform-tests/css/css-overflow/webkit-line-clamp-037.html: Added.
  • web-platform-tests/css/css-overflow/webkit-line-clamp-dynamic-001-expected.html: Added.
  • web-platform-tests/css/css-overflow/webkit-line-clamp-dynamic-001.html: Added.

LayoutTests:

Skip some tests, for example some rely on
unimplemented overflow: clip property.

Note: See TracTimeline for information about the timeline view.