⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Timeline



Nov 14, 2021:

11:17 PM Changeset in webkit [285799] by beidson@apple.com
  • 14 edits
    2 adds in trunk

Get daemon API ready to work in the iOS simulator (starting with WebPushD)
https://bugs.webkit.org/show_bug.cgi?id=232982

Reviewed by Geoff Garen.

Source/WebKit:

Move all the "enable Notifications" SPI from Mac-only to cross platform:

  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _setNotificationsEnabled:]):
(-[WKPreferences _notificationsEnabled]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::decidePolicyForNotificationPermissionRequest):

  • WebKit.xcodeproj/project.pbxproj: Add a build phase script to install the daemon executables inside a Daemons directory within the built WebKit.framework for engineering builds.
  • webpushd/WebPushDaemon.mm:

Tools:

To get this working we needed to:

  • Have the Daemons installed in a simulator-runtime-root-visible path
  • Point the OSLaunchDJob plist to the simulator-relative path, not Mac-relative
  • Solve the "How do I kill existing instances to run a clean test?" problem within the simulator.

This patch does those things.

  • TestWebKitAPI/Configurations/TestWebKitAPI-iOS.entitlements:
  • TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig:
  • TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm:

(TestWebKitAPI::testWebPushDaemonPList):
(TestWebKitAPI::setUpTestWebPushD):
(TestWebKitAPI::cleanUpTestWebPushD):

  • TestWebKitAPI/cocoa/DaemonTestUtilities.h:
  • TestWebKitAPI/cocoa/DaemonTestUtilities.mm:

(TestWebKitAPI::registerPlistWithLaunchD):
(TestWebKitAPI::pidOfFirstDaemonInstance):
(TestWebKitAPI::killFirstInstanceOfDaemon):

WebKitLibraries:

  • WebKitPrivateFrameworkStubs/iOS/15/AppServerSupport.framework/AppServerSupport.tbd: Added.
8:22 PM Changeset in webkit [285798] by Fujii Hironori
  • 2 edits in trunk/Source/WebKit

[GraphicsLayerWC] Incorrect compositing debug border color
https://bugs.webkit.org/show_bug.cgi?id=233107

Reviewed by Don Olmstead.

GraphicsLayer::updateDebugIndicators() should be called after
changing some layer properties.

  • WebProcess/WebPage/wc/GraphicsLayerWC.cpp:

(WebKit::GraphicsLayerWC::setMasksToBounds):
(WebKit::GraphicsLayerWC::setDrawsContent):
(WebKit::GraphicsLayerWC::setContentsToPlatformLayer):
(WebKit::GraphicsLayerWC::setBackdropFilters):
Call updateDebugIndicators.

8:06 PM Changeset in webkit [285797] by Simon Fraser
  • 5 edits
    2 adds in trunk

Fingers down on the trackpad should stop an animated scroll
https://bugs.webkit.org/show_bug.cgi?id=233114

Reviewed by Wenson Hsieh.
Source/WebCore:

Fingers down on the trackpad sends a "MayBegin" event; this needs to stop any in-progress
animated momentum scroll.

This failed because ScrollingTreeScrollingNodeDelegateMac::handleWheelEvent() early-returned
on the MayBegin event before it got to ScrollingEffectsController. Fix that, and have
ScrollingEffectsController::handleWheelEvent() return true to say it was handled.

This triggered an assertion in ScrollingTreeGestureState, but for "post-main-thread"
handling for which the assertion was wrong.

Test: fast/scrolling/mac/momentum-animator-maybegin-stops.html

  • page/scrolling/ScrollingTreeGestureState.cpp:

(WebCore::ScrollingTreeGestureState::nodeDidHandleEvent):

  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:

(WebCore::ScrollingTreeScrollingNodeDelegateMac::handleWheelEvent):

  • platform/mac/ScrollingEffectsController.mm:

(WebCore::ScrollingEffectsController::handleWheelEvent):

LayoutTests:

  • fast/scrolling/mac/momentum-animator-maybegin-stops-expected.txt: Added.
  • fast/scrolling/mac/momentum-animator-maybegin-stops.html: Added.
6:45 PM Changeset in webkit [285796] by Said Abou-Hallawa
  • 90 edits in trunk/Source/WebCore

[GPU Process] Remove the reference to Filter from FilterEffect
https://bugs.webkit.org/show_bug.cgi?id=232551
rdar://85136447

Reviewed by Cameron McCormack.

This patch removes an unnecessary dependency of individual FilterEffects
on the Filter object, which makes it easier to send the filter description
over IPC.

Instead of having a reference to the Filter in the FilterEffect, we are
going to pass a reference to the Filter to the FilterEffect functions
only when needed. FilterEffect may need access to the Filter only in two
methods: determineAbsolutePaintRect() and platformApplySoftware().

We need to change all the FilterEffect create methods to not take a Filter
as input. This requires the SVG filter effect elements to change their
build() method. And it requires also CSSFilter to not pass itself to the
FilterEffects its create.

  • platform/graphics/coreimage/FilterEffectRendererCoreImage.h:
  • platform/graphics/coreimage/FilterEffectRendererCoreImage.mm:

(WebCore::FilterEffectRendererCoreImage::applyEffects):
(WebCore::FilterEffectRendererCoreImage::connectCIFilters):
(WebCore::FilterEffectRendererCoreImage::imageForSourceGraphic):

  • platform/graphics/cpu/arm/filters/FEBlendNEON.h:

(WebCore::FEBlend::platformApplySoftware):

  • platform/graphics/filters/FEBlend.cpp:

(WebCore::FEBlend::create):
(WebCore::FEBlend::FEBlend):
(WebCore::FEBlend::platformApplySoftware):

  • platform/graphics/filters/FEBlend.h:
  • platform/graphics/filters/FEColorMatrix.cpp:

(WebCore::FEColorMatrix::create):
(WebCore::FEColorMatrix::FEColorMatrix):
(WebCore::FEColorMatrix::platformApplySoftware):

  • platform/graphics/filters/FEColorMatrix.h:
  • platform/graphics/filters/FEComponentTransfer.cpp:

(WebCore::FEComponentTransfer::create):
(WebCore::FEComponentTransfer::FEComponentTransfer):
(WebCore::FEComponentTransfer::platformApplySoftware):

  • platform/graphics/filters/FEComponentTransfer.h:
  • platform/graphics/filters/FEComposite.cpp:

(WebCore::FEComposite::create):
(WebCore::FEComposite::FEComposite):
(WebCore::FEComposite::determineAbsolutePaintRect):
(WebCore::FEComposite::platformApplySoftware):

  • platform/graphics/filters/FEComposite.h:
  • platform/graphics/filters/FEConvolveMatrix.cpp:

(WebCore::FEConvolveMatrix::create):
(WebCore::FEConvolveMatrix::FEConvolveMatrix):
(WebCore::FEConvolveMatrix::platformApplySoftware):

  • platform/graphics/filters/FEConvolveMatrix.h:
  • platform/graphics/filters/FEDiffuseLighting.cpp:

(WebCore::FEDiffuseLighting::create):
(WebCore::FEDiffuseLighting::FEDiffuseLighting):

  • platform/graphics/filters/FEDiffuseLighting.h:
  • platform/graphics/filters/FEDisplacementMap.cpp:

(WebCore::FEDisplacementMap::create):
(WebCore::FEDisplacementMap::FEDisplacementMap):
(WebCore::FEDisplacementMap::platformApplySoftware):

  • platform/graphics/filters/FEDisplacementMap.h:
  • platform/graphics/filters/FEDropShadow.cpp:

(WebCore::FEDropShadow::create):
(WebCore::FEDropShadow::FEDropShadow):
(WebCore::FEDropShadow::determineAbsolutePaintRect):
(WebCore::FEDropShadow::platformApplySoftware):

  • platform/graphics/filters/FEDropShadow.h:
  • platform/graphics/filters/FEFlood.cpp:

(WebCore::FEFlood::create):
(WebCore::FEFlood::FEFlood):
(WebCore::FEFlood::platformApplySoftware):

  • platform/graphics/filters/FEFlood.h:
  • platform/graphics/filters/FEGaussianBlur.cpp:

(WebCore::FEGaussianBlur::create):
(WebCore::FEGaussianBlur::FEGaussianBlur):
(WebCore::FEGaussianBlur::determineAbsolutePaintRect):
(WebCore::FEGaussianBlur::platformApplySoftware):

  • platform/graphics/filters/FEGaussianBlur.h:
  • platform/graphics/filters/FELighting.cpp:

(WebCore::FELighting::FELighting):
(WebCore::FELighting::platformApplySoftware):

  • platform/graphics/filters/FELighting.h:
  • platform/graphics/filters/FEMerge.cpp:

(WebCore::FEMerge::create):
(WebCore::FEMerge::FEMerge):
(WebCore::FEMerge::platformApplySoftware):

  • platform/graphics/filters/FEMerge.h:
  • platform/graphics/filters/FEMorphology.cpp:

(WebCore::FEMorphology::create):
(WebCore::FEMorphology::FEMorphology):
(WebCore::FEMorphology::determineAbsolutePaintRect):
(WebCore::FEMorphology::platformApplySoftware):

  • platform/graphics/filters/FEMorphology.h:
  • platform/graphics/filters/FEOffset.cpp:

(WebCore::FEOffset::create):
(WebCore::FEOffset::FEOffset):
(WebCore::FEOffset::determineAbsolutePaintRect):
(WebCore::FEOffset::platformApplySoftware):

  • platform/graphics/filters/FEOffset.h:
  • platform/graphics/filters/FESpecularLighting.cpp:

(WebCore::FESpecularLighting::create):
(WebCore::FESpecularLighting::FESpecularLighting):

  • platform/graphics/filters/FESpecularLighting.h:
  • platform/graphics/filters/FETile.cpp:

(WebCore::FETile::create):
(WebCore::FETile::FETile):
(WebCore::FETile::platformApplySoftware):

  • platform/graphics/filters/FETile.h:
  • platform/graphics/filters/FETurbulence.cpp:

(WebCore::FETurbulence::create):
(WebCore::FETurbulence::FETurbulence):
(WebCore::FETurbulence::fillRegion const):
(WebCore::FETurbulence::fillRegionWorker):
(WebCore::FETurbulence::platformApplySoftware):

  • platform/graphics/filters/FETurbulence.h:
  • platform/graphics/filters/Filter.h:

(WebCore::Filter::sourceImage const):
(WebCore::Filter::sourceImage): Deleted.

  • platform/graphics/filters/FilterEffect.cpp:

(WebCore::FilterEffect::FilterEffect):
(WebCore::FilterEffect::determineAbsolutePaintRect):
(WebCore::FilterEffect::determineFilterPrimitiveSubregion):
(WebCore::FilterEffect::apply):
(WebCore::FilterEffect::imageBufferResult):
(WebCore::FilterEffect::convertPixelBufferToColorSpace):
(WebCore::FilterEffect::convertImageBufferToColorSpace):
(WebCore::FilterEffect::createImageBufferResult):

  • platform/graphics/filters/FilterEffect.h:

(WebCore::FilterEffect::filter): Deleted.
(WebCore::FilterEffect::filter const): Deleted.
Create a unaccelerated filter image result for now. This will be fixed
in the following patch. Anyway currently we never create accelerated
intermediate ImageBuffers for filters.

  • platform/graphics/filters/FilterEffectRenderer.h:
  • platform/graphics/filters/SourceAlpha.cpp:

(WebCore::SourceAlpha::SourceAlpha):
(WebCore::SourceAlpha::determineAbsolutePaintRect):
(WebCore::SourceAlpha::platformApplySoftware):

  • platform/graphics/filters/SourceAlpha.h:
  • platform/graphics/filters/SourceGraphic.cpp:

(WebCore::SourceGraphic::create):
(WebCore::SourceGraphic::SourceGraphic):
(WebCore::SourceGraphic::determineAbsolutePaintRect):
(WebCore::SourceGraphic::platformApplySoftware):

  • platform/graphics/filters/SourceGraphic.h:

(WebCore::SourceGraphic::SourceGraphic): Deleted.

  • rendering/CSSFilter.cpp:

(WebCore::createBlurEffect):
(WebCore::createBrightnessEffect):
(WebCore::createContrastEffect):
(WebCore::createDropShadowEffect):
(WebCore::createGrayScaleEffect):
(WebCore::createHueRotateEffect):
(WebCore::createInvertEffect):
(WebCore::createOpacityEffect):
(WebCore::createSaturateEffect):
(WebCore::createSepiaEffect):
(WebCore::CSSFilter::buildFilterFunctions):
(WebCore::CSSFilter::determineFilterPrimitiveSubregion):
(WebCore::CSSFilter::apply):

  • rendering/CSSFilter.h:

Apply the FilterFunctions of the CSSFilter in the forward direction.

  • rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::applyResource):
(WebCore::RenderSVGResourceFilter::postApplyResource):

  • svg/SVGFEBlendElement.cpp:

(WebCore::SVGFEBlendElement::build const):

  • svg/SVGFEBlendElement.h:
  • svg/SVGFEColorMatrixElement.cpp:

(WebCore::SVGFEColorMatrixElement::build const):

  • svg/SVGFEColorMatrixElement.h:
  • svg/SVGFEComponentTransferElement.cpp:

(WebCore::SVGFEComponentTransferElement::build const):

  • svg/SVGFEComponentTransferElement.h:
  • svg/SVGFECompositeElement.cpp:

(WebCore::SVGFECompositeElement::build const):

  • svg/SVGFECompositeElement.h:
  • svg/SVGFEConvolveMatrixElement.cpp:

(WebCore::SVGFEConvolveMatrixElement::build const):

  • svg/SVGFEConvolveMatrixElement.h:
  • svg/SVGFEDiffuseLightingElement.cpp:

(WebCore::SVGFEDiffuseLightingElement::build const):

  • svg/SVGFEDiffuseLightingElement.h:
  • svg/SVGFEDisplacementMapElement.cpp:

(WebCore::SVGFEDisplacementMapElement::build const):

  • svg/SVGFEDisplacementMapElement.h:
  • svg/SVGFEDropShadowElement.cpp:

(WebCore::SVGFEDropShadowElement::build const):

  • svg/SVGFEDropShadowElement.h:
  • svg/SVGFEFloodElement.cpp:

(WebCore::SVGFEFloodElement::build const):

  • svg/SVGFEFloodElement.h:
  • svg/SVGFEGaussianBlurElement.cpp:

(WebCore::SVGFEGaussianBlurElement::build const):

  • svg/SVGFEGaussianBlurElement.h:
  • svg/SVGFEImageElement.cpp:

(WebCore::SVGFEImageElement::build const):

  • svg/SVGFEImageElement.h:
  • svg/SVGFEMergeElement.cpp:

(WebCore::SVGFEMergeElement::build const):

  • svg/SVGFEMergeElement.h:
  • svg/SVGFEMorphologyElement.cpp:

(WebCore::SVGFEMorphologyElement::build const):

  • svg/SVGFEMorphologyElement.h:
  • svg/SVGFEOffsetElement.cpp:

(WebCore::SVGFEOffsetElement::build const):

  • svg/SVGFEOffsetElement.h:
  • svg/SVGFESpecularLightingElement.cpp:

(WebCore::SVGFESpecularLightingElement::build const):

  • svg/SVGFESpecularLightingElement.h:
  • svg/SVGFETileElement.cpp:

(WebCore::SVGFETileElement::build const):

  • svg/SVGFETileElement.h:
  • svg/SVGFETurbulenceElement.cpp:

(WebCore::SVGFETurbulenceElement::build const):

  • svg/SVGFETurbulenceElement.h:
  • svg/SVGFilterPrimitiveStandardAttributes.h:

Remove the Filter as an input to the build() method and pass a reference
to SVGFilterBuilder instead of passing a pointer.

  • svg/graphics/filters/SVGFEImage.cpp:

(WebCore::FEImage::create):
(WebCore::FEImage::FEImage):
(WebCore::FEImage::determineAbsolutePaintRect):
(WebCore::FEImage::platformApplySoftware):

  • svg/graphics/filters/SVGFEImage.h:
  • svg/graphics/filters/SVGFilter.cpp:

(WebCore::SVGFilter::create):
(WebCore::SVGFilter::apply):

  • svg/graphics/filters/SVGFilter.h:
  • svg/graphics/filters/SVGFilterBuilder.cpp:

(WebCore::SVGFilterBuilder::buildFilterEffects):

  • svg/graphics/filters/SVGFilterBuilder.h:
6:44 PM Changeset in webkit [285795] by ysuzuki@apple.com
  • 61 edits
    1 add
    1 delete in trunk

[JSC] Use CallLinkInfo in LLInt
https://bugs.webkit.org/show_bug.cgi?id=232746

Reviewed by Saam Barati.

JSTests:

  • stress/is-callable-in-ftl-needs-to-be-aware-of-proxy.js:
  • stress/sampling-profiler-wasm-name-section.js:

(platformSupportsSamplingProfiler.vm.isWasmSupported):

  • stress/sampling-profiler-wasm.js:

(platformSupportsSamplingProfiler.vm.isWasmSupported):

  • stress/sampling-profiler/samplingProfiler.js:

(doesTreeHaveStackTrace):
(runTest):

  • wasm/function-tests/nameSection.js:

Source/JavaScriptCore:

This patch integrates normal CallLinkInfo into LLInt and remove adhoc LLIntCallLinkInfo.
So that we can simplify our IC software stack, and unifying call IC mechanism into one CallLinkInfo.

  1. LLInt can fully use our polymorphic call IC, and we no longer need to reset call IC when tiering up from LLInt to Baseline JIT since both now uses the same CallLinkInfo data structure. DFG and FTL can also retrieve call information from this CallLinkInfo.
  2. LLInt varargs calls get the same level of optimization to Baseline. Previously it does not have call IC.
  3. When JIT is disabled, we disable polymorphic call IC since it requires dynamic code generation. In that case, we only use monomorphic one, which is the same to the old LLIntCallLinkInfo.
  4. CallLinkInfo::doneLocation is set up only after Baseline JIT. We adjust call IC code so that we no longer rely on doneLocation when using DataIC. This allows us to smoothly tiering up from LLInt to Baseline JIT while using the same CallLinkInfo. We set up doneLocation in Baseline JIT just because DFG OSR exit requires when exiting to Baseline JIT code.
  5. We remove CallLinkInfo from JIT constant pool, and we store CallLinkInfo in metadata so that LLInt and Baseline JIT quickly access to that and keeping unlinked Baseline JIT working.
  6. We implement LLInt version of call IC thunks so that we can use them even when JIT is disabled.

Speedometer2 is neutral. JetStream2 is 0.7% progressed.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/CodeLocation.h:
  • assembler/LinkBuffer.cpp:

(JSC::shouldDumpDisassemblyFor): Deleted.

  • assembler/LinkBuffer.h:
  • assembler/MacroAssemblerCodeRef.cpp:

(JSC::shouldDumpDisassemblyFor):

  • assembler/MacroAssemblerCodeRef.h:

(JSC::MacroAssemblerCodePtr::dumpWithName const):

  • bytecode/BytecodeList.rb:
  • bytecode/BytecodeOperandsForCheckpoint.h:

(JSC::callLinkInfoFor):

  • bytecode/CallLinkInfo.cpp:

(JSC::CallLinkInfo::clearStub):
(JSC::CallLinkInfo::setMonomorphicCallee):
(JSC::CallLinkInfo::clearCallee):
(JSC::CallLinkInfo::visitWeak):
(JSC::CallLinkInfo::emitFastPathImpl):
(JSC::CallLinkInfo::emitTailCallFastPath):
(JSC::CallLinkInfo::emitTailCallDataICFastPath):
(JSC::CallLinkInfo::emitSlowPath):
(JSC::CallLinkInfo::initializeDataIC):
(JSC::CallLinkInfo::emitDirectTailCallFastPath):
(JSC::CallLinkInfo::revertCallToStub):

  • bytecode/CallLinkInfo.h:

(JSC::CallLinkInfo::isLinked const):
(JSC::CallLinkInfo::stub const):
(JSC::CallLinkInfo::updateMaxArgumentCountIncludingThis):
(JSC::CallLinkInfo::forEachDependentCell const):
(JSC::CallLinkInfo::setSlowStub): Deleted.
(JSC::CallLinkInfo::clearSlowStub): Deleted.
(JSC::CallLinkInfo::addressOfMaxArgumentCountIncludingThis): Deleted.

  • bytecode/CallLinkStatus.cpp:

(JSC::CallLinkStatus::computeFor):
(JSC::CallLinkStatus::computeFromLLInt): Deleted.

  • bytecode/CallLinkStatus.h:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::setupWithUnlinkedBaselineCode):
(JSC::CodeBlock::finalizeLLIntInlineCaches):
(JSC::CodeBlock::finalizeJITInlineCaches):
(JSC::CodeBlock::finalizeUnconditionally):
(JSC::CodeBlock::getICStatusMap):
(JSC::CodeBlock::getCallLinkInfoForBytecodeIndex):
(JSC::CodeBlock::linkIncomingCall):
(JSC::CodeBlock::unlinkIncomingCalls):
(JSC::CodeBlock::jettison):
(JSC::CodeBlock::getArrayProfile):
(JSC::CodeBlock::updateAllArrayProfilePredictions):

  • bytecode/CodeBlock.h:
  • bytecode/CodeBlockInlines.h:

(JSC::CodeBlock::forEachLLIntOrBaselineCallLinkInfo):
(JSC::CodeBlock::forEachLLIntCallLinkInfo): Deleted.

  • bytecode/LLIntCallLinkInfo.h: Removed.
  • bytecode/Opcode.h:
  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::allocateSharedProfiles):

  • bytecode/UnlinkedCodeBlock.h:
  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • dfg/DFGOSRExitCompilerCommon.cpp:

(JSC::DFG::callerReturnPC):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::emitVirtualCall):
(JSC::AssemblyHelpers::emitVirtualCallWithoutMovingGlobalObject):

  • jit/AssemblyHelpers.h:
  • jit/BaselineJITCode.h:
  • jit/CallFrameShuffleData.cpp:

(JSC::CallFrameShuffleData::createForBaselineOrLLIntTailCall):

  • jit/CallFrameShuffleData.h:
  • jit/JIT.cpp:

(JSC::JIT::addUnlinkedCallLinkInfo):
(JSC::JIT::link):

  • jit/JIT.h:
  • jit/JITCall.cpp:

(JSC::JIT::emit_op_ret):
(JSC::JIT::returnFromBaselineGenerator):
(JSC::JIT::compileSetupFrame):
(JSC::JIT::compileCallEvalSlowCase):
(JSC::JIT::compileTailCall):
(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):

  • jit/JITOpcodes.cpp:

(JSC::JIT::op_ret_handlerGenerator): Deleted.

  • jit/JITOperations.cpp:

(JSC::JSC_DEFINE_JIT_OPERATION):
(JSC::handleHostCall): Deleted.
(JSC::virtualForWithFunction): Deleted.

  • jit/Repatch.cpp:

(JSC::linkSlowPathTo):
(JSC::linkSlowFor):
(JSC::webAssemblyOwner):
(JSC::linkMonomorphicCall):
(JSC::revertCall):
(JSC::unlinkCall):
(JSC::jsToWasmICCodePtr):
(JSC::linkVirtualFor):
(JSC::linkPolymorphicCall):

  • jit/Repatch.h:
  • jit/RepatchInlines.h: Added.

(JSC::handleHostCall):
(JSC::linkFor):
(JSC::virtualForWithFunction):

  • jit/ThunkGenerators.cpp:

(JSC::virtualThunkFor):
(JSC::virtualThunkForRegularConstruct): Deleted.
(JSC::virtualThunkForTailConstruct): Deleted.
(JSC::virtualThunkForConstructCall): Deleted.

  • jit/ThunkGenerators.h:
  • llint/LLIntData.cpp:

(JSC::LLInt::initialize):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::llint_link_call):
(JSC::LLInt::llint_virtual_call):
(JSC::LLInt::handleHostCall):
(JSC::LLInt::setUpCall):
(JSC::LLInt::varargsSetup):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
(JSC::LLInt::commonCallEval):
(JSC::LLInt::genericCall): Deleted.

  • llint/LLIntSlowPaths.h:
  • llint/LLIntThunks.cpp:

(JSC::LLInt::createJSGateThunk):
(JSC::LLInt::createTailCallGate):
(JSC::LLInt::returnLocationThunk):

  • llint/LLIntThunks.h:
  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter.cpp:

(JSC::CLoopRegister::operator CallLinkInfo*):

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • offlineasm/cloop.rb:
  • offlineasm/instructions.rb:
  • runtime/ExecutableBase.h:
  • runtime/FunctionExecutable.h:
  • runtime/Gate.h:
  • runtime/VM.cpp:

(JSC::VM::getCTILinkCall):
(JSC::VM::getCTIThrowExceptionFromCallSlowPath):
(JSC::VM::getCTIVirtualCall):

  • runtime/VM.h:
12:54 PM Changeset in webkit [285794] by mmaxfield@apple.com
  • 156 edits in trunk/Source/WebCore

[WebGPU] Various mechanical cleanups
https://bugs.webkit.org/show_bug.cgi?id=233104

Reviewed by Dean Jackson.

Source/WebCore:

  • Trailing commas in enums
  • Update GPUFeatureName to the latest spec

No new tests because there is no behavior change (yet).

  • Modules/WebGPU/GPUAddressMode.h:
  • Modules/WebGPU/GPUBlendFactor.h:
  • Modules/WebGPU/GPUBlendOperation.h:
  • Modules/WebGPU/GPUBufferBindingType.h:
  • Modules/WebGPU/GPUCanvasCompositingAlphaMode.h:
  • Modules/WebGPU/GPUCompareFunction.h:
  • Modules/WebGPU/GPUCompilationMessageType.h:
  • Modules/WebGPU/GPUComputePassTimestampLocation.h:
  • Modules/WebGPU/GPUCullMode.h:
  • Modules/WebGPU/GPUDeviceLostReason.h:
  • Modules/WebGPU/GPUErrorFilter.h:
  • Modules/WebGPU/GPUFeatureName.h:

(WebCore::convertToBacking):

  • Modules/WebGPU/GPUFeatureName.idl:
  • Modules/WebGPU/GPUFilterMode.h:
  • Modules/WebGPU/GPUFrontFace.h:
  • Modules/WebGPU/GPUIndexFormat.h:
  • Modules/WebGPU/GPULoadOp.h:
  • Modules/WebGPU/GPUPipelineStatisticName.h:
  • Modules/WebGPU/GPUPowerPreference.h:
  • Modules/WebGPU/GPUPredefinedColorSpace.h:
  • Modules/WebGPU/GPUPrimitiveTopology.h:
  • Modules/WebGPU/GPUQueryType.h:
  • Modules/WebGPU/GPURenderPassTimestampLocation.h:
  • Modules/WebGPU/GPUSamplerBindingType.h:
  • Modules/WebGPU/GPUStencilOperation.h:
  • Modules/WebGPU/GPUStorageTextureAccess.h:
  • Modules/WebGPU/GPUStoreOp.h:
  • Modules/WebGPU/GPUTextureAspect.h:
  • Modules/WebGPU/GPUTextureDimension.h:
  • Modules/WebGPU/GPUTextureFormat.h:
  • Modules/WebGPU/GPUTextureSampleType.h:
  • Modules/WebGPU/GPUTextureViewDimension.h:
  • Modules/WebGPU/GPUVertexFormat.h:
  • Modules/WebGPU/GPUVertexStepMode.h:

Source/WebCore/PAL:

  • Explicitly delete some constructors and operators that we don't want
  • Tweak const methods
  • Add " namespace WebCore" around closing namespace braces
  • Trailing commas on enums
  • pal/graphics/WebGPU/WebGPU.h:
  • pal/graphics/WebGPU/WebGPUAdapter.h:

(PAL::WebGPU::Adapter::features const):
(PAL::WebGPU::Adapter::limits const):

  • pal/graphics/WebGPU/WebGPUAddressMode.h:
  • pal/graphics/WebGPU/WebGPUBindGroup.h:
  • pal/graphics/WebGPU/WebGPUBindGroupDescriptor.h:
  • pal/graphics/WebGPU/WebGPUBindGroupEntry.h:
  • pal/graphics/WebGPU/WebGPUBindGroupLayout.h:
  • pal/graphics/WebGPU/WebGPUBindGroupLayoutDescriptor.h:
  • pal/graphics/WebGPU/WebGPUBindGroupLayoutEntry.h:
  • pal/graphics/WebGPU/WebGPUBlendComponent.h:
  • pal/graphics/WebGPU/WebGPUBlendFactor.h:
  • pal/graphics/WebGPU/WebGPUBlendOperation.h:
  • pal/graphics/WebGPU/WebGPUBlendState.h:
  • pal/graphics/WebGPU/WebGPUBuffer.h:
  • pal/graphics/WebGPU/WebGPUBufferBinding.h:
  • pal/graphics/WebGPU/WebGPUBufferBindingLayout.h:
  • pal/graphics/WebGPU/WebGPUBufferBindingType.h:
  • pal/graphics/WebGPU/WebGPUBufferDescriptor.h:
  • pal/graphics/WebGPU/WebGPUBufferUsage.h:
  • pal/graphics/WebGPU/WebGPUCanvasCompositingAlphaMode.h:
  • pal/graphics/WebGPU/WebGPUCanvasConfiguration.h:
  • pal/graphics/WebGPU/WebGPUColorTargetState.h:
  • pal/graphics/WebGPU/WebGPUColorWrite.h:
  • pal/graphics/WebGPU/WebGPUCommandBuffer.h:
  • pal/graphics/WebGPU/WebGPUCommandBufferDescriptor.h:
  • pal/graphics/WebGPU/WebGPUCommandEncoder.h:
  • pal/graphics/WebGPU/WebGPUCommandEncoderDescriptor.h:
  • pal/graphics/WebGPU/WebGPUCompareFunction.h:
  • pal/graphics/WebGPU/WebGPUCompilationInfo.h:
  • pal/graphics/WebGPU/WebGPUCompilationMessage.h:
  • pal/graphics/WebGPU/WebGPUCompilationMessageType.h:
  • pal/graphics/WebGPU/WebGPUComputePassDescriptor.h:
  • pal/graphics/WebGPU/WebGPUComputePassEncoder.h:
  • pal/graphics/WebGPU/WebGPUComputePassTimestampLocation.h:
  • pal/graphics/WebGPU/WebGPUComputePipeline.h:
  • pal/graphics/WebGPU/WebGPUComputePipelineDescriptor.h:
  • pal/graphics/WebGPU/WebGPUCullMode.h:
  • pal/graphics/WebGPU/WebGPUDepthStencilState.h:
  • pal/graphics/WebGPU/WebGPUDevice.h:
  • pal/graphics/WebGPU/WebGPUDeviceDescriptor.h:
  • pal/graphics/WebGPU/WebGPUDeviceLostInfo.h:
  • pal/graphics/WebGPU/WebGPUDeviceLostReason.h:
  • pal/graphics/WebGPU/WebGPUErrorFilter.h:
  • pal/graphics/WebGPU/WebGPUExternalTexture.h:
  • pal/graphics/WebGPU/WebGPUExternalTextureBindingLayout.h:
  • pal/graphics/WebGPU/WebGPUExternalTextureDescriptor.h:
  • pal/graphics/WebGPU/WebGPUFeatureName.h:
  • pal/graphics/WebGPU/WebGPUFilterMode.h:
  • pal/graphics/WebGPU/WebGPUFragmentState.h:
  • pal/graphics/WebGPU/WebGPUFrontFace.h:
  • pal/graphics/WebGPU/WebGPUImageCopyBuffer.h:
  • pal/graphics/WebGPU/WebGPUImageCopyExternalImage.h:
  • pal/graphics/WebGPU/WebGPUImageCopyTexture.h:
  • pal/graphics/WebGPU/WebGPUImageCopyTextureTagged.h:
  • pal/graphics/WebGPU/WebGPUImageDataLayout.h:
  • pal/graphics/WebGPU/WebGPUIndexFormat.h:
  • pal/graphics/WebGPU/WebGPULoadOp.h:
  • pal/graphics/WebGPU/WebGPUMapMode.h:
  • pal/graphics/WebGPU/WebGPUMultisampleState.h:
  • pal/graphics/WebGPU/WebGPUObjectDescriptorBase.h:
  • pal/graphics/WebGPU/WebGPUOutOfMemoryError.h:

(PAL::WebGPU::OutOfMemoryError::create):

  • pal/graphics/WebGPU/WebGPUPipelineDescriptorBase.h:
  • pal/graphics/WebGPU/WebGPUPipelineLayout.h:
  • pal/graphics/WebGPU/WebGPUPipelineLayoutDescriptor.h:
  • pal/graphics/WebGPU/WebGPUPipelineStatisticName.h:
  • pal/graphics/WebGPU/WebGPUPowerPreference.h:
  • pal/graphics/WebGPU/WebGPUPredefinedColorSpace.h:
  • pal/graphics/WebGPU/WebGPUPrimitiveState.h:
  • pal/graphics/WebGPU/WebGPUPrimitiveTopology.h:
  • pal/graphics/WebGPU/WebGPUProgrammableStage.h:
  • pal/graphics/WebGPU/WebGPUQuerySet.h:
  • pal/graphics/WebGPU/WebGPUQuerySetDescriptor.h:
  • pal/graphics/WebGPU/WebGPUQueryType.h:
  • pal/graphics/WebGPU/WebGPUQueue.h:
  • pal/graphics/WebGPU/WebGPURenderBundle.h:
  • pal/graphics/WebGPU/WebGPURenderBundleDescriptor.h:
  • pal/graphics/WebGPU/WebGPURenderBundleEncoder.h:
  • pal/graphics/WebGPU/WebGPURenderBundleEncoderDescriptor.h:
  • pal/graphics/WebGPU/WebGPURenderPassColorAttachment.h:
  • pal/graphics/WebGPU/WebGPURenderPassDepthStencilAttachment.h:
  • pal/graphics/WebGPU/WebGPURenderPassDescriptor.h:
  • pal/graphics/WebGPU/WebGPURenderPassEncoder.h:
  • pal/graphics/WebGPU/WebGPURenderPassLayout.h:
  • pal/graphics/WebGPU/WebGPURenderPassTimestampLocation.h:
  • pal/graphics/WebGPU/WebGPURenderPipeline.h:
  • pal/graphics/WebGPU/WebGPURenderPipelineDescriptor.h:
  • pal/graphics/WebGPU/WebGPURequestAdapterOptions.h:
  • pal/graphics/WebGPU/WebGPUSampler.h:
  • pal/graphics/WebGPU/WebGPUSamplerBindingLayout.h:
  • pal/graphics/WebGPU/WebGPUSamplerBindingType.h:
  • pal/graphics/WebGPU/WebGPUSamplerDescriptor.h:
  • pal/graphics/WebGPU/WebGPUShaderModule.h:
  • pal/graphics/WebGPU/WebGPUShaderModuleDescriptor.h:
  • pal/graphics/WebGPU/WebGPUShaderStage.h:
  • pal/graphics/WebGPU/WebGPUStencilFaceState.h:
  • pal/graphics/WebGPU/WebGPUStencilOperation.h:
  • pal/graphics/WebGPU/WebGPUStorageTextureAccess.h:
  • pal/graphics/WebGPU/WebGPUStorageTextureBindingLayout.h:
  • pal/graphics/WebGPU/WebGPUStoreOp.h:
  • pal/graphics/WebGPU/WebGPUSupportedFeatures.h:
  • pal/graphics/WebGPU/WebGPUSupportedLimits.h:
  • pal/graphics/WebGPU/WebGPUTexture.h:
  • pal/graphics/WebGPU/WebGPUTextureAspect.h:
  • pal/graphics/WebGPU/WebGPUTextureBindingLayout.h:
  • pal/graphics/WebGPU/WebGPUTextureDescriptor.h:
  • pal/graphics/WebGPU/WebGPUTextureDimension.h:
  • pal/graphics/WebGPU/WebGPUTextureFormat.h:
  • pal/graphics/WebGPU/WebGPUTextureSampleType.h:
  • pal/graphics/WebGPU/WebGPUTextureUsage.h:
  • pal/graphics/WebGPU/WebGPUTextureView.h:
  • pal/graphics/WebGPU/WebGPUTextureViewDescriptor.h:
  • pal/graphics/WebGPU/WebGPUTextureViewDimension.h:
  • pal/graphics/WebGPU/WebGPUUncapturedErrorEvent.h:
  • pal/graphics/WebGPU/WebGPUUncapturedErrorEventInit.h:
  • pal/graphics/WebGPU/WebGPUValidationError.h:
  • pal/graphics/WebGPU/WebGPUVertexAttribute.h:
  • pal/graphics/WebGPU/WebGPUVertexBufferLayout.h:
  • pal/graphics/WebGPU/WebGPUVertexFormat.h:
  • pal/graphics/WebGPU/WebGPUVertexState.h:
  • pal/graphics/WebGPU/WebGPUVertexStepMode.h:
11:52 AM Changeset in webkit [285793] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Initialize m_usesT2
https://bugs.webkit.org/show_bug.cgi?id=233095

Reviewed by Alexey Shvayka.

m_usesT2 is not initialized as "false" correctly.

  • yarr/YarrJIT.cpp:
11:38 AM Changeset in webkit [285792] by mmaxfield@apple.com
  • 37 edits in trunk/Source/WebGPU

[WebGPU] Add necessary additions to WebGPU.framework
https://bugs.webkit.org/show_bug.cgi?id=233091

Reviewed by Dean Jackson.

WebGPU.framework's header file is lagging a bit behind the official WebGPU API.
This updates a companion header, WebGPUExt.h, with the necessary additions.
I don't want to modify the primary header, WebGPU.h, because it's shared among
multiple projects, so coordination is necessary to modify it.

  • WebGPU/Adapter.h:
  • WebGPU/Adapter.mm:

(WebGPU::Adapter::getFeatureAtIndex):
(wgpuAdapterGetFeatureAtIndex):

  • WebGPU/BindGroup.h:
  • WebGPU/BindGroup.mm:

(WebGPU::BindGroup::setLabel):
(wgpuBindGroupSetLabel):

  • WebGPU/BindGroupLayout.h:
  • WebGPU/BindGroupLayout.mm:

(WebGPU::BindGroupLayout::setLabel):
(wgpuBindGroupLayoutSetLabel):

  • WebGPU/Buffer.h:
  • WebGPU/Buffer.mm:

(WebGPU::Buffer::setLabel):
(wgpuBufferSetLabel):

  • WebGPU/CommandBuffer.h:
  • WebGPU/CommandBuffer.mm:

(WebGPU::CommandBuffer::setLabel):
(wgpuCommandBufferSetLabel):

  • WebGPU/CommandEncoder.h:
  • WebGPU/CommandEncoder.mm:

(WebGPU::CommandEncoder::fillBuffer):
(WebGPU::CommandEncoder::setLabel):
(wgpuCommandEncoderFillBuffer):
(wgpuCommandEncoderSetLabel):

  • WebGPU/ComputePassEncoder.h:
  • WebGPU/ComputePassEncoder.mm:

(WebGPU::ComputePassEncoder::setLabel):
(wgpuComputePassEncoderSetLabel):

  • WebGPU/Device.h:
  • WebGPU/Device.mm:

(WebGPU::Device::setLabel):
(wgpuDeviceSetLabel):

  • WebGPU/Instance.mm:

(wgpuGetProcAddress):

  • WebGPU/PipelineLayout.h:
  • WebGPU/PipelineLayout.mm:

(WebGPU::PipelineLayout::setLabel):
(wgpuPipelineLayoutSetLabel):

  • WebGPU/QuerySet.h:
  • WebGPU/QuerySet.mm:

(WebGPU::QuerySet::setLabel):
(wgpuQuerySetSetLabel):

  • WebGPU/Queue.h:
  • WebGPU/Queue.mm:

(WebGPU::Queue::setLabel):
(wgpuQueueSetLabel):

  • WebGPU/RenderBundle.h:
  • WebGPU/RenderBundle.mm:

(WebGPU::RenderBundle::setLabel):
(wgpuRenderBundleSetLabel):

  • WebGPU/RenderBundleEncoder.h:
  • WebGPU/RenderBundleEncoder.mm:

(WebGPU::RenderBundleEncoder::setLabel):
(wgpuRenderBundleEncoderSetLabel):

  • WebGPU/RenderPassEncoder.h:
  • WebGPU/RenderPassEncoder.mm:

(WebGPU::RenderPassEncoder::setLabel):
(wgpuRenderPassEncoderSetLabel):

  • WebGPU/Sampler.h:
  • WebGPU/Sampler.mm:

(WebGPU::Sampler::setLabel):
(wgpuSamplerSetLabel):

  • WebGPU/Texture.h:
  • WebGPU/Texture.mm:

(WebGPU::Texture::setLabel):
(wgpuTextureSetLabel):

  • WebGPU/TextureView.h:
  • WebGPU/TextureView.mm:

(WebGPU::TextureView::setLabel):
(wgpuTextureViewSetLabel):

  • WebGPU/WebGPUExt.h:
10:47 AM Changeset in webkit [285791] by ntim@apple.com
  • 5 edits in trunk

Modal dialogs should make the root element unfocusable
https://bugs.webkit.org/show_bug.cgi?id=233099

Reviewed by Simon Fraser.

From https://html.spec.whatwg.org/multipage/interaction.html#inert,

A Document document is blocked by a modal dialog subject if subject is
the topmost dialog element in document's top layer. While document is
so blocked, every node that is connected to document, with the
exception of the subject element and its shadow-including descendants,
must be marked inert.

RenderStyle::effectiveInert() already matches this definition, Node::deprecatedIsInert() does not.

Main reason the removed check was there is to prevent the whole document from being inert to hit-testing, but with the RenderStyle
approach, we instead override effectiveInert to false for the modal dialog. Removing this check for focus is absolutely fine
however, since focusability isn't inherited (Node::deprecatedIsInert is only used for focus).

Tests added by this Chromium WPT: https://github.com/web-platform-tests/wpt/commit/0457111e7109ec3d9e575aa421b96d8c36ce2ae8

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-node-is-unfocusable-expected.txt:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-node-is-unfocusable.html:

Source/WebCore:

  • dom/Node.cpp:

(WebCore::Node::deprecatedIsInert const):

10:38 AM Changeset in webkit [285790] by Simon Fraser
  • 16 edits in trunk/Source

Attach IOHIDEvent timestamps to wheel events
https://bugs.webkit.org/show_bug.cgi?id=233051

Reviewed by Wenson Hsieh.
Source/WebCore:

On some macOS devices, there can be significant deltas between NSEvent timestamps,
and the timestamps on underlying IOHIDEvents (rdar://85309639). This makes momentum
velocity computation unpredictable; we can get better results by using IOHIDEvent
timestamps.

  • platform/PlatformWheelEvent.cpp:

(WebCore::PlatformWheelEvent::createFromGesture):

  • platform/PlatformWheelEvent.h:

(WebCore::PlatformWheelEvent::ioHIDEventTimestamp const):

  • platform/mac/PlatformEventFactoryMac.h:
  • platform/mac/PlatformEventFactoryMac.mm:

(WebCore::eventTimeStampSince1970):
(WebCore::PlatformMouseEventBuilder::PlatformMouseEventBuilder):
(WebCore::PlatformWheelEventBuilder::PlatformWheelEventBuilder):
(WebCore::PlatformKeyboardEventBuilder::PlatformKeyboardEventBuilder):

Source/WebCore/PAL:

Expose a few bits of SPI needed.

  • pal/spi/cg/CoreGraphicsSPI.h:
  • pal/spi/cocoa/IOKitSPI.h:

Source/WebKit:

On some macOS devices, there can be significant deltas between NSEvent timestamps,
and the timestamps on underlying IOHIDEvents (rdar://85309639). This makes momentum
velocity computation unpredictable; we can get better results by using IOHIDEvent
timestamps.

  • Shared/WebEventConversion.cpp:

(WebKit::WebKit2PlatformWheelEvent::WebKit2PlatformWheelEvent):

  • Shared/WebWheelEvent.cpp:

(WebKit::WebWheelEvent::WebWheelEvent):
(WebKit::WebWheelEvent::encode const):
(WebKit::WebWheelEvent::decode):

  • Shared/WebWheelEvent.h:

(WebKit::WebWheelEvent::ioHIDEventTimestamp const):

  • Shared/WebWheelEventCoalescer.cpp:

(WebKit::WebWheelEventCoalescer::coalesce):

  • Shared/ios/WebIOSEventFactory.mm:

(WebIOSEventFactory::createWebWheelEvent):

  • Shared/mac/NativeWebGestureEventMac.mm:
  • Shared/mac/WebEventFactory.mm:

(WebKit::WebEventFactory::createWebMouseEvent):
(WebKit::WebEventFactory::createWebWheelEvent):
(WebKit::WebEventFactory::createWebKeyboardEvent):

10:33 AM Changeset in webkit [285789] by fpizlo@apple.com
  • 96 edits
    15 adds
    16 deletes in trunk/Source/bmalloc

[libpas] update to 48d608bf31ba92f8059d2c76488f00c52aaca15a: changes to support universal isoheaps
https://bugs.webkit.org/show_bug.cgi?id=233094

Reviewed by Yusuke Suzuki.

This includes a bunch of changes to make it possible to use isoheaps universally:

  • The bmalloc_heap API now supports isoheaped array allocations and isoheaped objects with flexible array members (i.e. flex).
  • Array allocations are now byte-based, not count-based, by default. When I first wrote libpas, I was sure that it would be easier for everyone if array allocation was engineered to take the array length, and the allocator worked things out from there. But this doesn't work well when the rubber hits the road:

-> Array allocation sites already know the size in bytes, and often don't even have a convenient way

of passing the length to the allocator.

-> Performing the multiplication at the allocation site means we are multiplying by a constant rather

than multiplying by a variable (as the by-count array allocation sites were doing before).

-> C++ operator new[] takes the size, not the count (though this matters less, since operator new[]

isn't useful for isoheaps anyway).

  • All allocation sites now have the fast path hacks that the intrinsic allocation fast path had. Specifically, they all now compile to something that has no stack frame and doesn't require PAC. The "slow" path is a tail call. Note that because that path isn't actually all that slow, it's called the "casual" path.
  • Size class lookup tables can now be decommitted. This is accomplished using a thing called pas_expendable_memory.
  • The status reporter can now report the type name of isoheaps. This relies on bmalloc_heap now using its own kind of type, rather than the generic libpas pas_simple_type, so that it can have a string. This change required corresponding changes in IsoHeap.h and bmalloc.cpp.
  • bmalloc.xcodeproj/project.pbxproj:
  • bmalloc/IsoHeap.h:

(bmalloc::api::IsoHeap::allocate):
(bmalloc::api::IsoHeap::tryAllocate):
(bmalloc::api::IsoHeap::provideHeap):

  • bmalloc/bmalloc.cpp:

(bmalloc::api::mallocOutOfLine):

  • libpas/.gitignore:
  • libpas/CMakeLists.txt: Added.
  • libpas/README: Added.
  • libpas/clean.sh: Added.
  • libpas/libpas.xcodeproj/project.pbxproj:
  • libpas/src/libpas/bmalloc_heap.c:

(bmalloc_try_allocate_casual):
(bmalloc_allocate_casual):
(bmalloc_try_iso_allocate_casual):
(bmalloc_iso_allocate_casual):
(bmalloc_try_allocate_array_by_size_with_alignment_casual):
(bmalloc_allocate_array_by_size_with_alignment_casual):
(bmalloc_try_iso_allocate_array_by_size):
(bmalloc_iso_allocate_array_by_size):
(bmalloc_try_iso_allocate_zeroed_array_by_size):
(bmalloc_iso_allocate_zeroed_array_by_size):
(bmalloc_try_iso_allocate_array_by_size_with_alignment):
(bmalloc_iso_allocate_array_by_size_with_alignment):
(bmalloc_try_iso_reallocate_array_by_size):
(bmalloc_iso_reallocate_array_by_size):
(bmalloc_try_iso_allocate_array_by_count):
(bmalloc_iso_allocate_array_by_count):
(bmalloc_try_iso_allocate_array_by_count_with_alignment):
(bmalloc_iso_allocate_array_by_count_with_alignment):
(bmalloc_try_iso_reallocate_array_by_count):
(bmalloc_iso_reallocate_array_by_count):
(bmalloc_try_allocate_flex_with_alignment_casual):
(bmalloc_allocate_flex_with_alignment_casual):
(bmalloc_try_allocate_flex):
(bmalloc_allocate_flex):
(bmalloc_try_allocate_zeroed_flex):
(bmalloc_allocate_zeroed_flex):
(bmalloc_try_allocate_flex_with_alignment):
(bmalloc_allocate_flex_with_alignment):
(bmalloc_try_reallocate_flex):
(bmalloc_reallocate_flex):
(bmalloc_try_allocate_auxiliary_with_alignment_casual):
(bmalloc_allocate_auxiliary_with_alignment_casual):
(bmalloc_heap_ref_get_type_size):
(bmalloc_get_allocation_size):
(bmalloc_allocate_slow): Deleted.
(bmalloc_try_iso_allocate_array): Deleted.
(bmalloc_iso_allocate_array): Deleted.
(bmalloc_try_iso_allocate_array_with_alignment): Deleted.
(bmalloc_iso_allocate_array_with_alignment): Deleted.

  • libpas/src/libpas/bmalloc_heap.h:
  • libpas/src/libpas/bmalloc_heap_config.h:
  • libpas/src/libpas/bmalloc_heap_inlines.h:

(bmalloc_try_allocate_inline):
(bmalloc_allocate_inline):
(bmalloc_try_iso_allocate_inline):
(bmalloc_iso_allocate_inline):
(bmalloc_try_iso_allocate_array_by_size_inline):
(bmalloc_try_iso_allocate_zeroed_array_by_size_inline):
(bmalloc_try_iso_allocate_array_by_size_with_alignment_inline):
(bmalloc_try_iso_allocate_array_by_count_inline):
(bmalloc_try_iso_allocate_array_by_count_with_alignment_inline):
(bmalloc_iso_allocate_array_by_size_inline):
(bmalloc_iso_allocate_zeroed_array_by_size_inline):
(bmalloc_iso_allocate_array_by_size_with_alignment_inline):
(bmalloc_iso_allocate_array_by_count_inline):
(bmalloc_iso_allocate_array_by_count_with_alignment_inline):
(bmalloc_try_iso_reallocate_array_by_size_inline):
(bmalloc_iso_reallocate_array_by_size_inline):
(bmalloc_try_iso_reallocate_array_by_count_inline):
(bmalloc_iso_reallocate_array_by_count_inline):
(bmalloc_try_allocate_flex_inline):
(bmalloc_allocate_flex_inline):
(bmalloc_try_allocate_zeroed_flex_inline):
(bmalloc_allocate_zeroed_flex_inline):
(bmalloc_try_allocate_flex_with_alignment_inline):
(bmalloc_allocate_flex_with_alignment_inline):
(bmalloc_try_reallocate_flex_inline):
(bmalloc_reallocate_flex_inline):
(bmalloc_try_allocate_auxiliary_inline):
(bmalloc_allocate_auxiliary_inline):
(bmalloc_try_allocate_auxiliary_with_alignment_inline):
(bmalloc_allocate_auxiliary_with_alignment_inline):
(bmalloc_try_iso_allocate_array_inline): Deleted.
(bmalloc_try_iso_allocate_array_with_alignment_inline): Deleted.
(bmalloc_iso_allocate_array_inline): Deleted.
(bmalloc_iso_allocate_array_with_alignment_inline): Deleted.

  • libpas/src/libpas/bmalloc_heap_innards.h:
  • libpas/src/libpas/bmalloc_heap_ref.h:
  • libpas/src/libpas/bmalloc_type.c: Added.

(bmalloc_type_create):
(bmalloc_type_try_name_dump):
(bmalloc_type_name_dump):
(bmalloc_type_dump):
(bmalloc_type_as_heap_type_dump):

  • libpas/src/libpas/bmalloc_type.h: Added.

(bmalloc_type_size):
(bmalloc_type_alignment):
(bmalloc_type_name):
(bmalloc_type_as_heap_type_get_type_size):
(bmalloc_type_as_heap_type_get_type_alignment):

  • libpas/src/libpas/hotbit_heap_config.h:
  • libpas/src/libpas/iso_heap.c:

(iso_heap_ref_construct):
(iso_try_allocate_array_by_count):
(iso_allocate_array_by_count):
(iso_try_allocate_array_by_count_zeroed):
(iso_allocate_array_by_count_zeroed):
(iso_try_reallocate_array_by_count):
(iso_reallocate_array_by_count):
(iso_primitive_heap_ref_construct):
(iso_try_allocate_array): Deleted.
(iso_allocate_array): Deleted.
(iso_try_allocate_array_zeroed): Deleted.
(iso_allocate_array_zeroed): Deleted.
(iso_try_reallocate_array): Deleted.
(iso_reallocate_array): Deleted.

  • libpas/src/libpas/iso_heap.h:
  • libpas/src/libpas/iso_heap_config.h:
  • libpas/src/libpas/iso_heap_inlines.h:

(iso_try_allocate_inline):
(iso_allocate_inline):
(iso_try_allocate_array_by_count_inline):
(iso_allocate_array_by_count_inline):
(iso_try_allocate_array_by_count_zeroed_inline):
(iso_allocate_array_by_count_zeroed_inline):
(iso_try_reallocate_array_by_count_inline):
(iso_reallocate_array_by_count_inline):
(iso_try_allocate_array_inline): Deleted.
(iso_allocate_array_inline): Deleted.
(iso_try_allocate_array_zeroed_inline): Deleted.
(iso_allocate_array_zeroed_inline): Deleted.
(iso_try_reallocate_array_inline): Deleted.
(iso_reallocate_array_inline): Deleted.

  • libpas/src/libpas/iso_heap_ref.h:
  • libpas/src/libpas/iso_test_heap.c:

(iso_test_allocate):
(iso_test_allocate_array_by_count):
(iso_test_allocate_array): Deleted.

  • libpas/src/libpas/iso_test_heap.h:
  • libpas/src/libpas/iso_test_heap_config.h:
  • libpas/src/libpas/jit_heap_config.c:

(jit_type_dump):
(jit_heap_config_dump_shared_page_directory_arg):

  • libpas/src/libpas/jit_heap_config.h:
  • libpas/src/libpas/minalign32_heap.c:

(minalign32_allocate):
(minalign32_allocate_array_by_count):
(minalign32_allocate_array): Deleted.

  • libpas/src/libpas/minalign32_heap.h:
  • libpas/src/libpas/minalign32_heap_config.h:
  • libpas/src/libpas/pagesize64k_heap.c:

(pagesize64k_allocate):
(pagesize64k_allocate_array_by_count):
(pagesize64k_allocate_array): Deleted.

  • libpas/src/libpas/pagesize64k_heap.h:
  • libpas/src/libpas/pagesize64k_heap_config.h:
  • libpas/src/libpas/pas_baseline_allocator_table.c:

(initialize):

  • libpas/src/libpas/pas_basic_segregated_page_caches.h: Removed.
  • libpas/src/libpas/pas_compact_expendable_memory.c: Added.

(pas_compact_expendable_memory_allocate):
(pas_compact_expendable_memory_commit_if_necessary):
(pas_compact_expendable_memory_scavenge):

  • libpas/src/libpas/pas_compact_expendable_memory.h: Added.

(pas_compact_expendable_memory_note_use):
(pas_compact_expendable_memory_touch):

  • libpas/src/libpas/pas_compact_skip_list_node_ptr.h: Removed.
  • libpas/src/libpas/pas_compact_skip_list_node_ptr_ptr.h: Removed.
  • libpas/src/libpas/pas_config.h:
  • libpas/src/libpas/pas_count_lookup_mode.h: Removed.
  • libpas/src/libpas/pas_designated_intrinsic_heap.c:

(set_up_range):
(pas_designated_intrinsic_heap_initialize):

  • libpas/src/libpas/pas_designated_intrinsic_heap_inlines.h:

(pas_designated_index_result_get_allocator_index):

  • libpas/src/libpas/pas_ensure_heap_with_page_caches.c:

(pas_ensure_heap_with_page_caches):

  • libpas/src/libpas/pas_enumerate_segregated_heaps.c:

(pas_enumerate_segregated_heaps):

  • libpas/src/libpas/pas_expendable_memory.c: Added.

(pas_expendable_memory_construct):
(pas_expendable_memory_try_allocate):
(pas_expendable_memory_allocate):
(pas_expendable_memory_commit_if_necessary):
(scavenge_impl):
(pas_expendable_memory_scavenge):

  • libpas/src/libpas/pas_expendable_memory.h: Added.

(pas_expendable_memory_state_get_kind):
(pas_expendable_memory_state_get_version):
(pas_expendable_memory_state_create):
(pas_expendable_memory_state_with_kind):
(pas_expendable_memory_state_with_version):
(pas_expendable_memory_note_use_impl):
(pas_expendable_memory_note_use):
(pas_expendable_memory_num_pages):
(pas_expendable_memory_num_pages_in_use):

  • libpas/src/libpas/pas_heap.c:

(pas_heap_reset_heap_ref):
(pas_heap_ensure_size_directory_for_size_slow):
(pas_heap_ensure_size_directory_for_count_slow): Deleted.

  • libpas/src/libpas/pas_heap.h:
  • libpas/src/libpas/pas_heap_config.h:
  • libpas/src/libpas/pas_heap_config_inlines.h:
  • libpas/src/libpas/pas_heap_config_utils.h:
  • libpas/src/libpas/pas_heap_inlines.h:

(pas_heap_ensure_size_directory_for_size):
(pas_heap_ensure_size_directory_for_count): Deleted.

  • libpas/src/libpas/pas_heap_kind.h:

(pas_heap_kind_get_string):

  • libpas/src/libpas/pas_heap_ref_prefix.h:
  • libpas/src/libpas/pas_internal_config.h:
  • libpas/src/libpas/pas_intrinsic_heap_support.h:
  • libpas/src/libpas/pas_large_expendable_memory.c: Added.

(allocate_new_large_expendable_memory):
(pas_large_expendable_memory_allocate):
(pas_large_expendable_memory_commit_if_necessary):
(pas_large_expendable_memory_scavenge):

  • libpas/src/libpas/pas_large_expendable_memory.h: Added.

(pas_large_expendable_memory_payload):
(pas_large_expendable_memory_header_for_object):
(pas_large_expendable_memory_note_use):
(pas_large_expendable_memory_touch):

  • libpas/src/libpas/pas_large_heap.c:

(allocate_impl):

  • libpas/src/libpas/pas_local_allocator.c:

(pas_local_allocator_construct_unselected):

  • libpas/src/libpas/pas_local_allocator.h:
  • libpas/src/libpas/pas_local_allocator_config_kind.h:

(pas_local_allocator_config_kind_get_string):

  • libpas/src/libpas/pas_local_allocator_inlines.h:

(pas_local_allocator_start_allocating_in_primordial_partial_view):
(pas_local_allocator_refill_with_known_config):
(pas_local_allocator_try_allocate_slow_impl):
(pas_local_allocator_try_allocate):

  • libpas/src/libpas/pas_lock_free_read_hashtable.h: Removed.
  • libpas/src/libpas/pas_object_size_mode.h: Removed.
  • libpas/src/libpas/pas_page_malloc.c:

(pas_page_malloc_commit):
(decommit_impl):
(pas_page_malloc_decommit):
(pas_page_malloc_decommit_asymmetric):

  • libpas/src/libpas/pas_page_malloc.h:
  • libpas/src/libpas/pas_page_sharing_pool.c:

(pas_physical_page_sharing_pool_take_for_page_config):

  • libpas/src/libpas/pas_redundant_local_allocator_node.c:

(pas_redundant_local_allocator_node_create):

  • libpas/src/libpas/pas_scavenger.c:

(scavenger_thread_main):
(pas_scavenger_decommit_expendable_memory):
(pas_scavenger_run_synchronously_now):
(pas_scavenger_perform_synchronous_operation):

  • libpas/src/libpas/pas_scavenger.h:
  • libpas/src/libpas/pas_segregated_exclusive_view_inlines.h:

(pas_segregated_exclusive_view_note_eligibility):

  • libpas/src/libpas/pas_segregated_heap.c:

(max_object_size_for_page_config):
(max_bitfit_object_size_for_heap_config):
(pas_segregated_heap_construct):
(pas_segregated_heap_get_cached_index_for_heap_type):
(pas_segregated_heap_cached_index_is_set):
(pas_segregated_heap_get_cached_index):
(pas_segregated_heap_index_is_cached_index_and_cached_index_is_set):
(pas_segregated_heap_index_is_cached_index_or_cached_index_is_unset):
(pas_segregated_heap_index_is_not_cached_index_and_cached_index_is_set):
(pas_segregated_heap_index_is_greater_than_cached_index_and_cached_index_is_set):
(pas_segregated_heap_index_is_greater_equal_cached_index_and_cached_index_is_set):
(pas_segregated_heap_size_directory_for_index_slow):
(pas_segregated_heap_medium_allocator_index_for_index):
(compute_small_index_upper_bound):
(ensure_size_lookup):
(size_directory_min_heap_compare):
(size_directory_min_heap_get_index):
(size_directory_min_heap_set_index):
(recompute_size_lookup):
(rematerialize_size_lookup_set_index_to_small_allocator_index):
(rematerialize_size_lookup_set_index_to_small_size_directory):
(rematerialize_size_lookup_set_medium_directory_tuple):
(rematerialize_size_lookup_if_necessary):
(pas_segregated_heap_ensure_allocator_index):
(compute_ideal_object_size):
(ensure_size_lookup_if_necessary):
(check_size_lookup_recomputation_did_become_not_all_good):
(check_size_lookup_recomputation_set_index_to_small_allocator_index):
(check_size_lookup_recomputation_set_index_to_small_size_directory):
(check_size_lookup_recomputation_set_medium_directory_tuple):
(check_size_lookup_recomputation):
(pas_segregated_heap_ensure_size_directory_for_size):
(max_count_for_page_config): Deleted.
(max_small_count_for_heap_config): Deleted.
(ensure_count_lookup): Deleted.
(ensure_count_lookup_if_necessary): Deleted.
(pas_segregated_heap_ensure_size_directory_for_count): Deleted.

  • libpas/src/libpas/pas_segregated_heap.h:

(pas_segregated_heap_index_for_size):
(pas_segregated_heap_size_for_index):
(pas_segregated_heap_allocator_index_for_index_inline_only):
(pas_segregated_heap_allocator_index_for_index):
(pas_segregated_heap_allocator_index_for_size_inline_only):
(pas_segregated_heap_allocator_index_for_size):
(pas_segregated_heap_index_for_primitive_count): Deleted.
(pas_segregated_heap_primitive_count_for_index): Deleted.
(pas_segregated_heap_index_for_count): Deleted.
(pas_segregated_heap_count_for_index): Deleted.
(pas_segregated_heap_allocator_index_for_count_not_primitive): Deleted.

  • libpas/src/libpas/pas_segregated_heap_inlines.h:

(pas_segregated_heap_size_directory_for_index):
(pas_segregated_heap_size_directory_for_size):
(pas_segregated_heap_touch_lookup_tables):
(pas_segregated_heap_size_directory_for_count): Deleted.

  • libpas/src/libpas/pas_segregated_heap_page_sharing_mode.h: Removed.
  • libpas/src/libpas/pas_segregated_page.c:

(pas_segregated_page_construct):

  • libpas/src/libpas/pas_segregated_page_granule_use_count.h: Removed.
  • libpas/src/libpas/pas_segregated_page_header_placement_mode.h: Removed.
  • libpas/src/libpas/pas_segregated_shared_page_directory.c:

(take_last_empty_consider_view):

  • libpas/src/libpas/pas_segregated_shared_page_directory.h:
  • libpas/src/libpas/pas_segregated_size_directory.c:

(pas_segregated_size_directory_create):
(pas_segregated_size_directory_ensure_data):
(pas_segregated_size_directory_create_tlc_allocator):
(pas_segregated_size_directory_create_tlc_view_cache):
(pas_segregated_size_directory_select_allocator_slow):
(pas_segregated_size_directory_get_allocator_from_tlc):
(pas_segregated_size_directory_dump_reference):

  • libpas/src/libpas/pas_segregated_size_directory.h:

(pas_segregated_size_directory_decode_baseline_allocator_index):
(pas_segregated_size_directory_decode_min_index):
(pas_segregated_size_directory_encode_stuff):
(pas_segregated_size_directory_as_view):
(pas_segregated_size_directory_alignment):
(pas_segregated_size_directory_baseline_allocator_index):
(pas_segregated_size_directory_min_index):
(pas_segregated_size_directory_set_baseline_allocator_index):
(pas_segregated_size_directory_compare_and_swap_baseline_allocator_index_weak):
(pas_segregated_size_directory_set_min_index):
(pas_segregated_size_directory_has_tlc_allocator):

  • libpas/src/libpas/pas_segregated_size_directory_inlines.h:

(pas_segregated_size_directory_select_allocator):

  • libpas/src/libpas/pas_shared_handle_or_page.h: Removed.
  • libpas/src/libpas/pas_shared_handle_or_page_inlines.h: Removed.
  • libpas/src/libpas/pas_shared_page_directory_by_size.c:

(pas_shared_page_directory_by_size_get):
(pas_shared_page_directory_by_size_dump_directory_arg):

  • libpas/src/libpas/pas_shared_page_directory_by_size.h:
  • libpas/src/libpas/pas_simple_type.c: Added.

(pas_simple_type_dump):
(pas_simple_type_as_heap_type_dump):

  • libpas/src/libpas/pas_simple_type.h:
  • libpas/src/libpas/pas_size_lookup_mode.h: Added.

(pas_size_lookup_mode_get_string):

  • libpas/src/libpas/pas_size_thunk.h: Removed.
  • libpas/src/libpas/pas_skip_list.c: Removed.
  • libpas/src/libpas/pas_skip_list.h: Removed.
  • libpas/src/libpas/pas_skip_list_inlines.h: Removed.
  • libpas/src/libpas/pas_status_reporter.c:

(pas_status_reporter_dump_segregated_shared_page_directory):
(pas_status_reporter_dump_heap):
(pas_status_reporter_dump_thread_local_caches):
(pas_status_reporter_dump_configuration):
(pas_status_reporter_dump_physical_page_sharing_pool):
(dump_expendable_memory):
(pas_status_reporter_dump_expendable_memories):
(pas_status_reporter_dump_everything):

  • libpas/src/libpas/pas_status_reporter.h:
  • libpas/src/libpas/pas_thread_local_cache.c:

(allocate_cache):
(pas_thread_local_cache_create):
(pas_thread_local_cache_get_local_allocator_slow):
(pas_thread_local_cache_get_local_allocator_if_can_set_cache_for_possibly_uninitialized_index_slow):
(stop_local_allocators_if_necessary_set_bit_callback):
(pas_thread_local_cache_for_all):
(pas_thread_local_cache_get_local_allocator_if_can_set_cache_slow): Deleted.

  • libpas/src/libpas/pas_thread_local_cache.h:

(pas_thread_local_cache_get_local_allocator_direct_without_any_checks_whatsoever):
(pas_thread_local_cache_get_local_allocator_direct_for_initialization):
(pas_thread_local_cache_get_local_allocator_direct_unchecked):
(pas_thread_local_cache_get_local_allocator_direct):
(pas_thread_local_cache_get_local_allocator_for_possibly_uninitialized_but_not_unselected_index):
(pas_thread_local_cache_get_local_allocator_for_initialized_index):
(pas_thread_local_cache_get_local_allocator_for_possibly_uninitialized_index):
(pas_thread_local_cache_try_get_local_allocator_or_unselected_for_uninitialized_index):
(pas_thread_local_cache_try_get_local_allocator_for_possibly_uninitialized_but_not_unselected_index):
(pas_thread_local_cache_get_local_allocator_if_can_set_cache_for_possibly_uninitialized_index):
(pas_thread_local_cache_get_local_allocator_impl): Deleted.
(pas_thread_local_cache_get_local_allocator): Deleted.
(pas_thread_local_cache_try_get_local_allocator): Deleted.
(pas_thread_local_cache_get_local_allocator_if_can_set_cache): Deleted.

  • libpas/src/libpas/pas_thread_local_cache_layout.c:

(pas_thread_local_cache_layout_add_node):

  • libpas/src/libpas/pas_thread_local_cache_layout_node.c:

(pas_thread_local_cache_layout_node_construct):
(pas_thread_local_cache_layout_node_move):
(pas_thread_local_cache_layout_node_stop):

  • libpas/src/libpas/pas_try_allocate.h:

(pas_try_allocate_impl_casual_case):
(pas_try_allocate_impl_inline_only):
(pas_try_allocate_impl_size_thunk): Deleted.
(pas_try_allocate_impl): Deleted.

  • libpas/src/libpas/pas_try_allocate_array.h:

(pas_try_allocate_array_impl_casual_case_with_heap):
(pas_try_allocate_array_impl_inline_only_with_heap):
(pas_try_allocate_array_impl_inline_only):
(pas_try_allocate_array_impl): Deleted.

  • libpas/src/libpas/pas_try_allocate_common.h:

(pas_try_allocate_compute_aligned_size):
(pas_try_allocate_common_impl_fast):
(pas_try_allocate_common_impl_slow):
(pas_try_allocate_common_impl):

  • libpas/src/libpas/pas_try_allocate_intrinsic.h:

(pas_try_allocate_intrinsic_impl_casual_case):
(pas_try_allocate_intrinsic_impl_inline_only):
(pas_try_allocate_intrinsic_impl_medium_slow_case): Deleted.

  • libpas/src/libpas/pas_try_allocate_primitive.h:

(pas_try_allocate_primitive_impl_casual_case):
(pas_try_allocate_primitive_impl_inline_only):
(pas_try_allocate_primitive_impl): Deleted.

  • libpas/src/libpas/pas_try_reallocate.h:

(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_allocate_callback):
(pas_try_reallocate_intrinsic):
(pas_try_reallocate_single_allocate_callback):
(pas_try_reallocate_single):
(pas_try_reallocate_array_allocate_callback):
(pas_try_reallocate_array_by_size):
(pas_try_reallocate_array_by_count):
(pas_try_reallocate_primitive_allocate_callback):
(pas_try_reallocate_primitive):
(pas_try_reallocate_array): Deleted.

  • libpas/src/libpas/pas_typed_allocation_result.h: Removed.
  • libpas/src/libpas/pas_utility_heap.c:
  • libpas/src/libpas/pas_utility_heap_config.c:

(pas_utility_heap_config_dump_shared_page_directory_arg):

  • libpas/src/libpas/pas_utility_heap_config.h:
  • libpas/src/libpas/pas_utils.c:

(pas_reallocation_did_fail):

  • libpas/src/libpas/pas_utils.h:

(pas_compare_and_swap_uint8_weak):

  • libpas/src/libpas/pas_utils_prefix.h:
  • libpas/src/libpas/thingy_heap.c:

(thingy_try_allocate):
(thingy_try_allocate_zeroed):
(thingy_try_allocate_array):
(thingy_try_allocate_zeroed_array):
(thingy_try_reallocate_array):

  • libpas/src/libpas/thingy_heap_config.h:
  • libpas/src/test/ExpendableMemoryTests.cpp: Added.

(std::testPayloadImpl):
(std::forEachExpendableMemory):
(std::checkAllDecommitted):
(std::checkAllInUseCommitted):
(std::testSynchronousScavengingExpendsExpendableMemory):
(std::scavengerWillShutDown):
(std::testScavengerExpendsExpendableMemory):
(std::testSoManyHeaps):
(addExpendableMemoryTests):

  • libpas/src/test/HeapRefAllocatorIndexTests.cpp: Added.

(addHeapRefAllocatorIndexTests):

  • libpas/src/test/IsoHeapChaosTests.cpp:

(std::createIsoHeapRefForSize):
(std::createBmallocHeapRefForSize):
(std::testAllocationChaos):
(std::addIsoTests):
(std::addAllTests):
(addIsoHeapChaosTests):

  • libpas/src/test/IsoHeapPageSharingTests.cpp:

(std::testLargeHeapTakesPagesFromCorrectLargeHeapWithFancyOrder):
(std::addAllTests):

  • libpas/src/test/IsoHeapPartialAndBaselineTests.cpp:

(std::addScavengerDependentTests):

  • libpas/src/test/TSDTests.cpp:

(std::destructor):

  • libpas/src/test/TestHarness.cpp:

(EnablePageBalancing::EnablePageBalancing):
(DisablePageBalancing::DisablePageBalancing):
(main):

  • libpas/src/test/TestHarness.h:
  • libpas/src/test/ThingyAndUtilityHeapAllocationTests.cpp:

(std::verifyHeapEmpty):
(std::createIsolatedHeapRef):
(std::addSmallHeapTests):

12:45 AM Changeset in webkit [285788] by commit-queue@webkit.org
  • 4 edits in trunk

Prevent fused multiply add during ParseInt
https://bugs.webkit.org/show_bug.cgi?id=232951

Patch by Mikhail R. Gadelha <Mikhail R. Gadelha> on 2021-11-14
Reviewed by Yusuke Suzuki.

When parsing the string in parseInt, gcc can wrongfully generate
a fused multiply-add instruction, causing the conversion to be wrong
for some high values. An add followed by a multiply gives the correct
result and it is the code generated most of the times.

This patch adds a volatile qualifier to the number variable, so the
compiler doesn't try to optimize it, and enables a failing test on
mips.

Alternative solutions that I tried but gcc seems to ignore: #pragma
STDC FP_CONTRACT OFF, compiling with -ffp-contract=off, and setting function
attributes attribute((optimize("fp-contract=off"))) and
attribute((optimize("-ffp-contract=off"))), so volative seems to be
a good compromise.

The issue was found when cross compiling to mips with gcc 8.4.0 and
options -ffp-contract=off -mmadd4.

JSTests:

  • ChakraCore.yaml:

Source/JavaScriptCore:

  • runtime/ParseInt.h:

(JSC::parseInt):

Nov 13, 2021:

11:37 PM Changeset in webkit [285787] by Simon Fraser
  • 12 edits
    4 adds in trunk

Run a ScrollAnimationMomentum for the momentum phase of a scroll
https://bugs.webkit.org/show_bug.cgi?id=232897

Reviewed by Tim Horton.
Source/WebCore:

Run an animation for the momentum phase of a scroll, rather than scrolling in response
to wheel events, because it produces a smoother result with fewer dropped frames.

We re-use ScrollAnimationMomentum which is already used for scroll snap, but have to
allow it to yield unclamped coordinates, since using it for momentum can result in
rubber-banding.

When we get the momentum "began" event, we start the ScrollAnimationMomentum
using initial velocity computed from WheelEventDeltaFilter. ScrollingEffectsController then
ignores the reset of the momentum "changed" events.

We have to stop this animation when we receive a "begin" or "mayBegin" event, since
this indicates that the user has put fingers down on the trackpad.

Rename m_dragEndedScrollingVelocity to m_scrollingVelocityForScrollSnap for clarity
(at some point we should merge this with m_scrollingVelocityForMomentumAnimation).

Tests: fast/scrolling/mac/momentum-animator-in-overflow.html

fast/scrolling/mac/momentum-animator.html

  • page/WheelEventDeltaFilter.cpp:

(WebCore::WheelEventDeltaFilter::shouldApplyFilteringForEvent):

  • page/WheelEventDeltaFilter.h:
  • platform/PlatformWheelEvent.cpp:

(WebCore::operator<<):

  • platform/ScrollAnimationMomentum.cpp:

(WebCore::ScrollAnimationMomentum::startAnimatedScrollWithInitialVelocity):
(WebCore::ScrollAnimationMomentum::stop):
(WebCore::ScrollAnimationMomentum::serviceAnimation):

  • platform/ScrollAnimationMomentum.h:
  • platform/ScrollingEffectsController.cpp:

(WebCore::ScrollingEffectsController::ScrollingEffectsController):
(WebCore::ScrollingEffectsController::stopAnimatedNonRubberbandingScroll):
(WebCore::ScrollingEffectsController::startMomentumScrollWithInitialVelocity):

  • platform/ScrollingEffectsController.h:

(WebCore::ScrollingEffectsController::momentumScrollingAnimatorEnabled const):

  • platform/mac/ScrollingEffectsController.mm:

(WebCore::phaseToString):
(WebCore::ScrollingEffectsController::handleWheelEvent):
(WebCore::ScrollingEffectsController::startRubberBandAnimation):
(WebCore::ScrollingEffectsController::startRubberBandAnimationIfNecessary):
(WebCore::ScrollingEffectsController::processWheelEventForScrollSnap):

Source/WTF:

Set the MomentumScrollingAnimatorEnabled internal setting to off by default
while we bring up tests.

  • Scripts/Preferences/WebPreferencesInternal.yaml:

LayoutTests:

Some tests that enable the momentum animator.

  • fast/scrolling/mac/momentum-animator-expected.txt: Added.
  • fast/scrolling/mac/momentum-animator-in-overflow-expected.txt: Added.
  • fast/scrolling/mac/momentum-animator-in-overflow.html: Added.
  • fast/scrolling/mac/momentum-animator.html: Added.
9:05 PM Changeset in webkit [285786] by timothy_horton@apple.com
  • 8 edits
    1 copy in trunk/Source/WebCore

Clean up IOKit SPI headers
https://bugs.webkit.org/show_bug.cgi?id=233093

Reviewed by Simon Fraser.

Source/WebCore:

  • platform/gamepad/cocoa/GameControllerGamepadProvider.mm:
  • platform/gamepad/mac/HIDGamepadProvider.h:
  • platform/gamepad/mac/HIDGamepadProvider.mm:

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/cg/CoreGraphicsSPI.h:
  • pal/spi/cocoa/IOKitSPI.h:
  • pal/spi/ios/IOKitSPIIOS.h: Added.
  • pal/spi/mac/IOKitSPIMac.h:

IOKit vends a much different set of public API on iOS vs. macOS,
so we have separate SPI headers to reduce the confusion.

Unfortunately, the SPI header for iOS was not explicitly named as such,
and started being used in some macOS code. For a while, this didn't lead
to any trouble because the aforementioned macOS code didn't ALSO have
the public SDK headers included, but a future patch from Simon will
use IOKitSPI.h in a place where the macOS IOKit public headers are included,
and thus we must make the split more explicit.

Rename IOKitSPI.h to IOKitSPIIOS.h; make IOKitSPI choose the right one.
Add some SPI defintions to IOKitSPIMac.h that were missing (which the
dependent code was getting via the iOS header on macOS).

4:19 PM Changeset in webkit [285785] by Said Abou-Hallawa
  • 4 edits in trunk

REGRESSION (r285618): [mac-wk1] ASSERTION FAILED: cgContext == [currentContext CGContext]
https://bugs.webkit.org/show_bug.cgi?id=233008
rdar://85311948

Reviewed by Wenson Hsieh.

Source/WebCore:

The assertion fails when loading the expected html page because one of
the elements has a CSS filter named "(#noop)" but the filter "noop" is
not defined.

The reason for the assertion to fail is we switch the PaintInfo to the
context of the CSSFilter::sourceImage() and we do not restore it back.
In fact CSSFilter::buildFilterFunctions() should fail since the filter
has only a reference filter and this reference filter does not exit. The
bug is CSSFilter::buildFilterFunctions() does not fail in this case.

Before r285618, CSSFilter::buildFilterFunctions() was not adding
SourceGraphic to m_functions. It was added as the input of the first
FilterEffect. This was fine since we were applying the lastEffect which
goes backward till it reaches the SourceGraphic.

But the plan is to apply the FilterFunctions from the first to the last
without having to go backward, so we need to add the SourceGraphic to
m_functions explicitly. The bug happens when no FilterFunction is built
successfully and we return 'true' because m_functions is not empty. It
has the SourceGraphic.

The fix is to add the SourceGraphic only when there is at least another
FilterFunction will be added to m_functions.

  • rendering/CSSFilter.cpp:

(WebCore::CSSFilter::buildFilterFunctions):

LayoutTests:

Unskip the test http/tests/css/filters-on-iframes-transform.html which
was skipped in r285656.

  • platform/mac-wk1/TestExpectations:
3:28 PM Changeset in webkit [285784] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Inline box end's padding/border/margin should be taken into account when computing horizontal position for bidi content
https://bugs.webkit.org/show_bug.cgi?id=233083

Reviewed by Antti Koivisto.

Let's decouple the "display box rect" and the "content right in visual order" computation.
There are runs (e.g. inline box end) that don't need to call displayBoxRect() but they
still affect the "content right in visual order" (<span style="border-right: 10px solid green">).

  • layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:

(WebCore::Layout::InlineDisplayContentBuilder::createBoxesAndUpdateGeometryForLineContent): add the additional lineRun.isInlineBoxEnd() case.

3:21 PM Changeset in webkit [285783] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Add support for optional bidi character coverage checking
https://bugs.webkit.org/show_bug.cgi?id=233049

Reviewed by Antti Koivisto.

This is in preparation for enabling bidi for IFC.

  • layout/formattingContexts/inline/InlineItemsBuilder.cpp:
  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForFontAndText):
(WebCore::LayoutIntegration::canUseForRenderInlineChild):
(WebCore::LayoutIntegration::canUseForLineLayoutWithReason):

3:04 PM Changeset in webkit [285782] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][Integration] Bring showRenderTree for IFC integration back
https://bugs.webkit.org/show_bug.cgi?id=233000

Reviewed by Antti Koivisto.

Currently showRenderTree comes back blank for IFC content.

  • layout/integration/LayoutIntegrationBoxTree.cpp:

(WebCore::LayoutIntegration::showInlineContent):

  • layout/integration/LayoutIntegrationBoxTree.h:
  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::outputLineTree const):

3:04 PM Changeset in webkit [285781] by Simon Fraser
  • 9 edits in trunk

Implement UIScriptController.sendEventStream() for DumpRenderTree
https://bugs.webkit.org/show_bug.cgi?id=233090

Reviewed by Wenson Hsieh.
Tools:

Implement UIScriptControllerMac::sendEventStream(), sharing some event dispatching code from
EventSendingController.

  • DumpRenderTree/mac/EventSendingController.h:
  • DumpRenderTree/mac/EventSendingController.mm:

(-[EventSendingController mouseScrollByX:andY:withWheel:andMomentumPhases:]):
(-[EventSendingController sendScrollEventAt:deltaX:deltaY:units:wheelPhase:momentumPhase:timestamp:]):

  • DumpRenderTree/mac/UIScriptControllerMac.h:
  • DumpRenderTree/mac/UIScriptControllerMac.mm:

(WTR::gesturePhaseFromString):
(WTR::momentumPhaseFromString):
(WTR::eventSenderFromView):
(WTR::UIScriptControllerMac::sendEventStream):

LayoutTests:

Convert one test that runs in WK1 to use sendEventStream().

  • fast/scrolling/overflow-scroll-past-max.html:
  • resources/ui-helper.js:
1:59 PM Changeset in webkit [285780] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Inline box end (opaque to bidi) should get the bidi level from its adjacent content
https://bugs.webkit.org/show_bug.cgi?id=233082

Reviewed by Antti Koivisto.

While the inline box start item (<span>) gets the bidi level from the next (adjacent) content, inline box end (</span>)
should get it from the previous content (these are opaque inline items).

e.g <span>bidi content</span>
both the inline box start and the inline box end items get their bidi level from the "bidi content" inline text item.

  • layout/formattingContexts/inline/InlineItemsBuilder.cpp:

(WebCore::Layout::InlineItemsBuilder::breakAndComputeBidiLevels):

1:58 PM Changeset in webkit [285779] by Jonathan Bedard
  • 7 edits in trunk/Tools

Unreviewed, reverting r285772.

Ownership issues in some XCode installs

Reverted changeset:

"[webkitpy] Symlink daemons into simulator runtime root"
https://bugs.webkit.org/show_bug.cgi?id=233080
https://commits.webkit.org/r285772

1:57 PM Changeset in webkit [285778] by commit-queue@webkit.org
  • 16 edits in trunk/LayoutTests

AX: Make 7 more layout tests async so that they pass in --release --accessibility-isolated-tree mode
https://bugs.webkit.org/show_bug.cgi?id=233085

Patch by Tyler Wilcock <Tyler Wilcock> on 2021-11-13
Reviewed by Chris Fleizach.

This patch makes 7 more tests async so that they pass in --release
--accessibility-isolated-tree mode. This patch also adds some helper
functions to accessibility-helper.js.

  • accessibility/ancestor-computation.html:

Move waitForElement to accessibility-helpers.js and rename to
waitForElementById.

  • accessibility/color-well-expected.txt:
  • accessibility/color-well.html:
  • accessibility/mac/scrollbars.html:
  • accessibility/placeholder-expected.txt:
  • accessibility/placeholder.html:
  • accessibility/progressbar-expected.txt:
  • accessibility/progressbar.html:
  • accessibility/range-alter-by-percent-expected.txt:
  • accessibility/range-alter-by-percent.html:
  • accessibility/range-alter-by-step-expected.txt:
  • accessibility/range-alter-by-step.html:
  • accessibility/spinbutton-value-expected.txt:
  • accessibility/spinbutton-value.html:

Make tests async so they pass in isolated tree mode.
Minor updates to expectations:

  • Some variables renamed for better readability
  • Sometimes there is one more or one less newline after the test rewrites
  • resources/accessibility-helper.js:

(async waitForElementById): Added. Originally defined in
accessibility/ancestor-computation.html.
(async waitForExpression): Added.

10:49 AM Changeset in webkit [285777] by mmaxfield@apple.com
  • 2 edits in trunk

[WebGPU] Add WebGPU.xcodeproj to WebKit.xcworkspace
https://bugs.webkit.org/show_bug.cgi?id=233078

Reviewed by Dean Jackson.

Mechanical change. When building WebGPU becomes required,
people using this workspace will need it.

  • WebKit.xcworkspace/contents.xcworkspacedata:
10:38 AM Changeset in webkit [285776] by commit-queue@webkit.org
  • 9 edits in trunk

AX: Make accessibility/mac/header.html test async to fix it for isolated tree mode
https://bugs.webkit.org/show_bug.cgi?id=233017

Patch by Tyler Wilcock <Tyler Wilcock> on 2021-11-13
Reviewed by Andres Gonzalez.

Tools:

This patch implements the domIdentifier attribute for DumpRenderTree
elements. When making this test async, I wanted to use this attribute,
hence the implementation in this patch.

  • DumpRenderTree/AccessibilityUIElement.cpp:

(domIdentifierCallback): Added.
(AccessibilityUIElement::getJSClass):
Add "domIdentifer" entry to staticValues[].

  • DumpRenderTree/AccessibilityUIElement.h:

Add AccessibilityUIElement::domIdentifier const definition.

  • DumpRenderTree/mac/AccessibilityUIElementMac.mm:

(AccessibilityUIElement::domIdentifier const): Added.

  • DumpRenderTree/ios/AccessibilityUIElementIOS.mm:

(AccessibilityUIElement::domIdentifier const): Added.

  • DumpRenderTree/win/AccessibilityUIElementWin.cpp:

(AccessibilityUIElement::domIdentifier const):Added.

LayoutTests:

This test needs to be made async, as we need to wait for
accessibilityController.focusedElement to be synced with the DOM
focused element before running our expectations. This fixes the
test in isolated tree mode.

  • accessibility/mac/header-expected.txt:

Remove extra newline at end of the file.

  • accessibility/mac/header.html:

Make test async.

8:44 AM Changeset in webkit [285775] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS][GPUP] Remove logging of used syscalls
https://bugs.webkit.org/show_bug.cgi?id=232839
<rdar://problem/85168823>

Reviewed by Brent Fulgham.

Based on telemetry, remove logging of used unix syscalls in the GPU process on macOS.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
8:13 AM Changeset in webkit [285774] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

[macOS][GPUP] Add telemetry for syscalls
https://bugs.webkit.org/show_bug.cgi?id=232888
<rdar://problem/85207011>

Reviewed by Brent Fulgham.

Add more telemetry for syscalls in the GPU process' sandbox on macOS. Also add entitlement for the GPU
process to use message filtering.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
  • Scripts/process-entitlements.sh:
8:09 AM Changeset in webkit [285773] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS][GPUP] Add system call logging
https://bugs.webkit.org/show_bug.cgi?id=233079
<rdar://problem/85362041>

Reviewed by Brent Fulgham.

Add telemetry for system calls in the GPU process' sandbox on iOS.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
Note: See TracTimeline for information about the timeline view.