<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[277909] trunk/Source/JavaScriptCore</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/277909">277909</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2021-05-21 20:13:17 -0700 (Fri, 21 May 2021)</dd>
</dl>
<h3>Log Message</h3>
<pre>Stop using holdLock() in JSC as it is not compatible with Clang thread safety analysis
https://bugs.webkit.org/show_bug.cgi?id=226116
Reviewed by Mark Lam.
Stop using holdLock() in JSC as it is not compatible with Clang thread safety analysis
(WTF::CheckedLock). Use the Locker constructor instead.
I'll eventually get rid of the holdLock() definition once I have managed to get rid of
all its usages.
* API/JSVirtualMachine.mm:
(+[JSVMWrapperCache addWrapper:forJSContextGroupRef:]):
(+[JSVMWrapperCache wrapperForJSContextGroupRef:]):
(-[JSVirtualMachine addExternalRememberedObject:]):
(-[JSVirtualMachine addManagedReference:withOwner:]):
(-[JSVirtualMachine removeManagedReference:withOwner:]):
(scanExternalObjectGraph):
(scanExternalRememberedSet):
* API/glib/JSCVirtualMachine.cpp:
(addWrapper):
(removeWrapper):
* API/tests/ExecutionTimeLimitTest.cpp:
(testExecutionTimeLimit):
* assembler/PerfLog.cpp:
(JSC::PerfLog::PerfLog):
(JSC::PerfLog::log):
* bytecode/StructureStubInfo.cpp:
(JSC::StructureStubInfo::visitAggregateImpl):
(JSC::StructureStubInfo::visitWeakReferences):
* bytecode/StructureStubInfo.h:
(JSC::StructureStubInfo::considerCaching):
(JSC::StructureStubInfo::clearBufferedStructures):
* bytecode/UnlinkedCodeBlock.cpp:
(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
(JSC::UnlinkedCodeBlock::visitChildrenImpl):
* bytecode/UnlinkedCodeBlockGenerator.cpp:
(JSC::UnlinkedCodeBlockGenerator::finalize):
* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* heap/BlockDirectory.cpp:
(JSC::BlockDirectory::~BlockDirectory):
(JSC::BlockDirectory::removeBlock):
(JSC::BlockDirectory::stopAllocatingForGood):
(JSC::BlockDirectory::parallelNotEmptyBlockSource):
* heap/CodeBlockSet.cpp:
(JSC::CodeBlockSet::add):
(JSC::CodeBlockSet::remove):
* heap/CodeBlockSetInlines.h:
(JSC::CodeBlockSet::iterate):
* heap/CompleteSubspace.cpp:
(JSC::CompleteSubspace::allocatorForSlow):
* heap/Heap.cpp:
(JSC::Heap::lastChanceToFinalize):
(JSC::Heap::runNotRunningPhase):
(JSC::Heap::runEndPhase):
(JSC::Heap::finishRelinquishingConn):
(JSC::visitSamplingProfiler):
(JSC::Heap::setBonusVisitorTask):
(JSC::Heap::runTaskInParallel):
* heap/HeapSnapshotBuilder.cpp:
(JSC::HeapSnapshotBuilder::buildSnapshot):
(JSC::HeapSnapshotBuilder::analyzeNode):
(JSC::HeapSnapshotBuilder::analyzeEdge):
(JSC::HeapSnapshotBuilder::analyzePropertyNameEdge):
(JSC::HeapSnapshotBuilder::analyzeVariableNameEdge):
(JSC::HeapSnapshotBuilder::analyzeIndexEdge):
(JSC::HeapSnapshotBuilder::setOpaqueRootReachabilityReasonForCell):
* heap/IsoAlignedMemoryAllocator.cpp:
(JSC::IsoAlignedMemoryAllocator::tryAllocateAlignedMemory):
(JSC::IsoAlignedMemoryAllocator::freeAlignedMemory):
* heap/IsoCellSet.cpp:
(JSC::IsoCellSet::parallelNotEmptyMarkedBlockSource):
(JSC::IsoCellSet::addSlow):
(JSC::IsoCellSet::didRemoveBlock):
(JSC::IsoCellSet::sweepToFreeList):
* heap/IsoCellSetInlines.h:
(JSC::IsoCellSet::forEachMarkedCellInParallel):
* heap/IsoSubspace.cpp:
(JSC::IsoSubspace::IsoSubspace):
* heap/IsoSubspacePerVM.cpp:
(JSC::IsoSubspacePerVM::forVM):
* heap/LocalAllocator.cpp:
(JSC::LocalAllocator::LocalAllocator):
(JSC::LocalAllocator::~LocalAllocator):
* heap/MachineStackMarker.cpp:
(JSC::MachineThreads::tryCopyOtherThreadStacks):
(JSC::MachineThreads::gatherConservativeRoots):
* heap/MarkedBlock.cpp:
(JSC::MarkedBlock::Handle::stopAllocating):
(JSC::MarkedBlock::Handle::resumeAllocating):
(JSC::MarkedBlock::aboutToMarkSlow):
(JSC::MarkedBlock::Handle::didConsumeFreeList):
(JSC::MarkedBlock::noteMarkedSlow):
(JSC::MarkedBlock::Handle::dumpState):
* heap/MarkedBlockInlines.h:
(JSC::MarkedBlock::Handle::isLive):
* heap/MarkingConstraint.cpp:
(JSC::MarkingConstraint::doParallelWork):
* heap/MarkingConstraintSolver.cpp:
(JSC::MarkingConstraintSolver::addParallelTask):
(JSC::MarkingConstraintSolver::runExecutionThread):
* heap/ParallelSourceAdapter.h:
* heap/SlotVisitor.cpp:
(JSC::SlotVisitor::updateMutatorIsStopped):
(JSC::SlotVisitor::drain):
(JSC::SlotVisitor::performIncrementOfDraining):
(JSC::SlotVisitor::drainFromShared):
(JSC::SlotVisitor::drainInParallelPassively):
(JSC::SlotVisitor::waitForTermination):
(JSC::SlotVisitor::donateAll):
(JSC::SlotVisitor::didRace):
* heap/Subspace.cpp:
(JSC::Subspace::parallelDirectorySource):
* heap/SubspaceInlines.h:
(JSC::Subspace::forEachMarkedCellInParallel):
* inspector/JSInjectedScriptHost.cpp:
* jit/ExecutableAllocator.cpp:
* jsc.cpp:
(Worker::Worker):
(Worker::~Worker):
(Worker::dequeue):
(Workers::broadcast):
(Workers::report):
(Workers::tryGetReport):
(Workers::getReport):
(JSC_DEFINE_HOST_FUNCTION):
* runtime/DeferredWorkTimer.cpp:
(JSC::DeferredWorkTimer::doWork):
* runtime/ErrorInstance.cpp:
(JSC::ErrorInstance::finishCreation):
* runtime/EvalExecutable.cpp:
(JSC::EvalExecutable::visitChildrenImpl):
* runtime/FileBasedFuzzerAgentBase.cpp:
(JSC::FileBasedFuzzerAgentBase::getPrediction):
* runtime/FunctionExecutable.cpp:
(JSC::FunctionExecutable::visitChildrenImpl):
* runtime/JSArray.cpp:
(JSC::JSArray::shiftCountWithArrayStorage):
(JSC::JSArray::unshiftCountWithArrayStorage):
* runtime/JSArrayBufferView.cpp:
(JSC::JSArrayBufferView::detach):
(JSC::JSArrayBufferView::slowDownAndWasteMemory):
* runtime/JSCell.h:
* runtime/JSFinalizationRegistry.cpp:
(JSC::JSFinalizationRegistry::visitChildrenImpl):
(JSC::JSFinalizationRegistry::finalizeUnconditionally):
(JSC::JSFinalizationRegistry::takeDeadHoldingsValue):
(JSC::JSFinalizationRegistry::registerTarget):
(JSC::JSFinalizationRegistry::unregister):
* runtime/JSGenericTypedArrayViewInlines.h:
(JSC::JSGenericTypedArrayView<Adaptor>::visitChildrenImpl):
* runtime/JSGlobalObject.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* runtime/JSModuleNamespaceObject.cpp:
(JSC::JSModuleNamespaceObject::finishCreation):
(JSC::JSModuleNamespaceObject::visitChildrenImpl):
* runtime/JSObject.cpp:
(JSC::JSObject::visitButterflyImpl):
* runtime/JSRunLoopTimer.cpp:
(JSC::JSRunLoopTimer::Manager::timerDidFire):
(JSC::JSRunLoopTimer::Manager::registerVM):
(JSC::JSRunLoopTimer::Manager::unregisterVM):
(JSC::JSRunLoopTimer::Manager::scheduleTimer):
(JSC::JSRunLoopTimer::Manager::cancelTimer):
(JSC::JSRunLoopTimer::Manager::timeUntilFire):
(JSC::JSRunLoopTimer::timerDidFire):
(JSC::JSRunLoopTimer::setTimeUntilFire):
(JSC::JSRunLoopTimer::cancelTimer):
(JSC::JSRunLoopTimer::addTimerSetNotification):
(JSC::JSRunLoopTimer::removeTimerSetNotification):
* runtime/JSSegmentedVariableObject.cpp:
(JSC::JSSegmentedVariableObject::findVariableIndex):
(JSC::JSSegmentedVariableObject::addVariables):
(JSC::JSSegmentedVariableObject::visitChildrenImpl):
* runtime/ModuleProgramExecutable.cpp:
(JSC::ModuleProgramExecutable::visitChildrenImpl):
* runtime/NarrowingNumberPredictionFuzzerAgent.cpp:
(JSC::NarrowingNumberPredictionFuzzerAgent::getPrediction):
* runtime/ProgramExecutable.cpp:
(JSC::ProgramExecutable::visitChildrenImpl):
* runtime/RandomizingFuzzerAgent.cpp:
(JSC::RandomizingFuzzerAgent::getPrediction):
* runtime/RegExp.cpp:
(JSC::RegExp::compile):
(JSC::RegExp::matchConcurrently):
(JSC::RegExp::compileMatchOnly):
(JSC::RegExp::deleteCode):
* runtime/SamplingProfiler.cpp:
(JSC::SamplingProfiler::takeSample):
(JSC::SamplingProfiler::stackTracesAsJSON):
(JSC::SamplingProfiler::reportTopFunctions):
(JSC::SamplingProfiler::reportTopBytecodes):
* runtime/ScriptExecutable.cpp:
(JSC::ScriptExecutable::createTemplateObject):
* runtime/SparseArrayValueMap.cpp:
(JSC::SparseArrayValueMap::add):
(JSC::SparseArrayValueMap::remove):
(JSC::SparseArrayValueMap::getConcurrently):
(JSC::SparseArrayValueMap::visitChildrenImpl):
* runtime/Structure.cpp:
(JSC::Structure::changePrototypeTransition):
(JSC::Structure::toDictionaryTransition):
(JSC::Structure::nonPropertyTransitionSlow):
(JSC::Structure::setBrandTransition):
* runtime/StructureCache.cpp:
(JSC::StructureCache::createEmptyStructure):
(JSC::StructureCache::emptyObjectStructureConcurrently):
* runtime/VM.cpp:
(JSC::waitForVMDestruction):
(JSC::VM::~VM):
(JSC::VM::gatherScratchBufferRoots):
(JSC::VM::scratchBufferForSize):
(JSC::VM::clearScratchBuffers):
(JSC::VM::addLoopHintExecutionCounter):
(JSC::VM::getLoopHintExecutionCounter):
(JSC::VM::removeLoopHintExecutionCounter):
* runtime/VMTraps.cpp:
(JSC::VMTraps::tryInstallTrapBreakpoints):
(JSC::VMTraps::invalidateCodeBlocksOnStack):
(JSC::VMTraps::willDestroyVM):
(JSC::VMTraps::fireTrap):
(JSC::VMTraps::handleTraps):
(JSC::VMTraps::takeTopPriorityTrap):
* runtime/WeakMapImpl.cpp:
(JSC::WeakMapImpl<BucketType>::visitOutputConstraints):
* runtime/WeakMapImpl.h:
(JSC::WeakMapImpl::finishCreation):
* runtime/WeakMapImplInlines.h:
(JSC::WeakMapImpl<WeakMapBucket>::rehash):
* runtime/WideningNumberPredictionFuzzerAgent.cpp:
(JSC::WideningNumberPredictionFuzzerAgent::getPrediction):
* tools/CompilerTimingScope.cpp:
* tools/FunctionOverrides.cpp:
(JSC::FunctionOverrides::FunctionOverrides):
(JSC::FunctionOverrides::reinstallOverrides):
(JSC::FunctionOverrides::initializeOverrideFor):
* tools/Integrity.cpp:
(JSC::Integrity::Random::reloadAndCheckShouldAuditSlow):
* tools/VMInspector.cpp:
(JSC::VMInspector::add):
(JSC::VMInspector::remove):
(JSC::VMInspector::codeBlockForMachinePC):
* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::work):
(JSC::Wasm::BBQPlan::compileFunction):
* wasm/WasmCalleeRegistry.h:
(JSC::Wasm::CalleeRegistry::registerCallee):
(JSC::Wasm::CalleeRegistry::unregisterCallee):
* wasm/WasmCodeBlock.cpp:
(JSC::Wasm::CodeBlock::CodeBlock):
(JSC::Wasm::CodeBlock::waitUntilFinished):
(JSC::Wasm::CodeBlock::compileAsync):
* wasm/WasmContext.cpp:
(JSC::Wasm::Context::scratchBufferForSize):
* wasm/WasmEntryPlan.cpp:
(JSC::Wasm::EntryPlan::parseAndValidateModule):
(JSC::Wasm::EntryPlan::prepare):
(JSC::Wasm::EntryPlan::compileFunctions):
* wasm/WasmEntryPlan.h:
(JSC::Wasm::EntryPlan::tryReserveCapacity):
* wasm/WasmFaultSignalHandler.cpp:
(JSC::Wasm::trapHandler):
* wasm/WasmInstance.cpp:
(JSC::Wasm::Instance::setFunctionWrapper):
* wasm/WasmLLIntPlan.cpp:
(JSC::Wasm::LLIntPlan::compileFunction):
(JSC::Wasm::LLIntPlan::completeInStreaming):
(JSC::Wasm::LLIntPlan::didCompileFunctionInStreaming):
(JSC::Wasm::LLIntPlan::didFailInStreaming):
* wasm/WasmMachineThreads.cpp:
(JSC::Wasm::resetInstructionCacheOnAllThreads):
* wasm/WasmMemory.cpp:
(JSC::Wasm::Memory::growShared):
* wasm/WasmModule.cpp:
(JSC::Wasm::Module::getOrCreateCodeBlock):
* wasm/WasmOMGForOSREntryPlan.cpp:
(JSC::Wasm::OMGForOSREntryPlan::work):
* wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):
* wasm/WasmOperations.cpp:
(JSC::Wasm::triggerOMGReplacementCompile):
(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):
* wasm/WasmSignatureInlines.h:
(JSC::Wasm::SignatureInformation::get):
* wasm/WasmSlowPaths.cpp:
(JSC::LLInt::jitCompileAndSetHeuristics):
(JSC::LLInt::WASM_SLOW_PATH_DECL):
* wasm/WasmStreamingCompiler.cpp:
(JSC::Wasm::StreamingCompiler::didCompileFunction):
(JSC::Wasm::StreamingCompiler::finalize):
(JSC::Wasm::StreamingCompiler::fail):
(JSC::Wasm::StreamingCompiler::cancel):
* wasm/WasmStreamingPlan.cpp:
(JSC::Wasm::StreamingPlan::work):
* wasm/WasmTable.cpp:
(JSC::Wasm::Table::grow):
(JSC::Wasm::Table::visitAggregateImpl):
* wasm/WasmThunks.cpp:
(JSC::Wasm::Thunks::stub):
(JSC::Wasm::Thunks::existingStub):
* wasm/WasmWorklist.cpp:
* wasm/js/JSWebAssemblyInstance.cpp:
(JSC::JSWebAssemblyInstance::visitChildrenImpl):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreAPIJSVirtualMachinemm">trunk/Source/JavaScriptCore/API/JSVirtualMachine.mm</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPIglibJSCVirtualMachinecpp">trunk/Source/JavaScriptCore/API/glib/JSCVirtualMachine.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPItestsExecutionTimeLimitTestcpp">trunk/Source/JavaScriptCore/API/tests/ExecutionTimeLimitTest.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreassemblerPerfLogcpp">trunk/Source/JavaScriptCore/assembler/PerfLog.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeStructureStubInfocpp">trunk/Source/JavaScriptCore/bytecode/StructureStubInfo.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeStructureStubInfoh">trunk/Source/JavaScriptCore/bytecode/StructureStubInfo.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeUnlinkedCodeBlockcpp">trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeUnlinkedCodeBlockGeneratorcpp">trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlockGenerator.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGAbstractInterpreterInlinesh">trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapBlockDirectorycpp">trunk/Source/JavaScriptCore/heap/BlockDirectory.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapCodeBlockSetcpp">trunk/Source/JavaScriptCore/heap/CodeBlockSet.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapCodeBlockSetInlinesh">trunk/Source/JavaScriptCore/heap/CodeBlockSetInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapCompleteSubspacecpp">trunk/Source/JavaScriptCore/heap/CompleteSubspace.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapHeapcpp">trunk/Source/JavaScriptCore/heap/Heap.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapHeapSnapshotBuildercpp">trunk/Source/JavaScriptCore/heap/HeapSnapshotBuilder.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapIsoAlignedMemoryAllocatorcpp">trunk/Source/JavaScriptCore/heap/IsoAlignedMemoryAllocator.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapIsoCellSetcpp">trunk/Source/JavaScriptCore/heap/IsoCellSet.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapIsoCellSetInlinesh">trunk/Source/JavaScriptCore/heap/IsoCellSetInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapIsoSubspacecpp">trunk/Source/JavaScriptCore/heap/IsoSubspace.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapIsoSubspacePerVMcpp">trunk/Source/JavaScriptCore/heap/IsoSubspacePerVM.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapLocalAllocatorcpp">trunk/Source/JavaScriptCore/heap/LocalAllocator.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapMachineStackMarkercpp">trunk/Source/JavaScriptCore/heap/MachineStackMarker.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapMarkedBlockcpp">trunk/Source/JavaScriptCore/heap/MarkedBlock.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapMarkedBlockInlinesh">trunk/Source/JavaScriptCore/heap/MarkedBlockInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapMarkingConstraintcpp">trunk/Source/JavaScriptCore/heap/MarkingConstraint.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapMarkingConstraintSolvercpp">trunk/Source/JavaScriptCore/heap/MarkingConstraintSolver.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapParallelSourceAdapterh">trunk/Source/JavaScriptCore/heap/ParallelSourceAdapter.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapSlotVisitorcpp">trunk/Source/JavaScriptCore/heap/SlotVisitor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapSubspacecpp">trunk/Source/JavaScriptCore/heap/Subspace.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapSubspaceInlinesh">trunk/Source/JavaScriptCore/heap/SubspaceInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorJSInjectedScriptHostcpp">trunk/Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitExecutableAllocatorcpp">trunk/Source/JavaScriptCore/jit/ExecutableAllocator.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejsccpp">trunk/Source/JavaScriptCore/jsc.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeDeferredWorkTimercpp">trunk/Source/JavaScriptCore/runtime/DeferredWorkTimer.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeErrorInstancecpp">trunk/Source/JavaScriptCore/runtime/ErrorInstance.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeEvalExecutablecpp">trunk/Source/JavaScriptCore/runtime/EvalExecutable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeFileBasedFuzzerAgentBasecpp">trunk/Source/JavaScriptCore/runtime/FileBasedFuzzerAgentBase.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeFunctionExecutablecpp">trunk/Source/JavaScriptCore/runtime/FunctionExecutable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSArraycpp">trunk/Source/JavaScriptCore/runtime/JSArray.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSArrayBufferViewcpp">trunk/Source/JavaScriptCore/runtime/JSArrayBufferView.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSCellh">trunk/Source/JavaScriptCore/runtime/JSCell.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSFinalizationRegistrycpp">trunk/Source/JavaScriptCore/runtime/JSFinalizationRegistry.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSGenericTypedArrayViewInlinesh">trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSGlobalObjectcpp">trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSModuleNamespaceObjectcpp">trunk/Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSObjectcpp">trunk/Source/JavaScriptCore/runtime/JSObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSRunLoopTimercpp">trunk/Source/JavaScriptCore/runtime/JSRunLoopTimer.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSSegmentedVariableObjectcpp">trunk/Source/JavaScriptCore/runtime/JSSegmentedVariableObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeModuleProgramExecutablecpp">trunk/Source/JavaScriptCore/runtime/ModuleProgramExecutable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeNarrowingNumberPredictionFuzzerAgentcpp">trunk/Source/JavaScriptCore/runtime/NarrowingNumberPredictionFuzzerAgent.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeProgramExecutablecpp">trunk/Source/JavaScriptCore/runtime/ProgramExecutable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeRandomizingFuzzerAgentcpp">trunk/Source/JavaScriptCore/runtime/RandomizingFuzzerAgent.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeRegExpcpp">trunk/Source/JavaScriptCore/runtime/RegExp.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeSamplingProfilercpp">trunk/Source/JavaScriptCore/runtime/SamplingProfiler.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeScriptExecutablecpp">trunk/Source/JavaScriptCore/runtime/ScriptExecutable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeSparseArrayValueMapcpp">trunk/Source/JavaScriptCore/runtime/SparseArrayValueMap.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStructurecpp">trunk/Source/JavaScriptCore/runtime/Structure.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStructureCachecpp">trunk/Source/JavaScriptCore/runtime/StructureCache.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeVMcpp">trunk/Source/JavaScriptCore/runtime/VM.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeVMTrapscpp">trunk/Source/JavaScriptCore/runtime/VMTraps.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeWeakMapImplcpp">trunk/Source/JavaScriptCore/runtime/WeakMapImpl.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeWeakMapImplh">trunk/Source/JavaScriptCore/runtime/WeakMapImpl.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeWeakMapImplInlinesh">trunk/Source/JavaScriptCore/runtime/WeakMapImplInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeWideningNumberPredictionFuzzerAgentcpp">trunk/Source/JavaScriptCore/runtime/WideningNumberPredictionFuzzerAgent.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoretoolsCompilerTimingScopecpp">trunk/Source/JavaScriptCore/tools/CompilerTimingScope.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoretoolsFunctionOverridescpp">trunk/Source/JavaScriptCore/tools/FunctionOverrides.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoretoolsIntegritycpp">trunk/Source/JavaScriptCore/tools/Integrity.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoretoolsVMInspectorcpp">trunk/Source/JavaScriptCore/tools/VMInspector.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmBBQPlancpp">trunk/Source/JavaScriptCore/wasm/WasmBBQPlan.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmCalleeRegistryh">trunk/Source/JavaScriptCore/wasm/WasmCalleeRegistry.h</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmCodeBlockcpp">trunk/Source/JavaScriptCore/wasm/WasmCodeBlock.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmContextcpp">trunk/Source/JavaScriptCore/wasm/WasmContext.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmEntryPlancpp">trunk/Source/JavaScriptCore/wasm/WasmEntryPlan.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmEntryPlanh">trunk/Source/JavaScriptCore/wasm/WasmEntryPlan.h</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmFaultSignalHandlercpp">trunk/Source/JavaScriptCore/wasm/WasmFaultSignalHandler.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmInstancecpp">trunk/Source/JavaScriptCore/wasm/WasmInstance.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmLLIntPlancpp">trunk/Source/JavaScriptCore/wasm/WasmLLIntPlan.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmMachineThreadscpp">trunk/Source/JavaScriptCore/wasm/WasmMachineThreads.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmMemorycpp">trunk/Source/JavaScriptCore/wasm/WasmMemory.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmModulecpp">trunk/Source/JavaScriptCore/wasm/WasmModule.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmOMGForOSREntryPlancpp">trunk/Source/JavaScriptCore/wasm/WasmOMGForOSREntryPlan.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmOMGPlancpp">trunk/Source/JavaScriptCore/wasm/WasmOMGPlan.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmOperationscpp">trunk/Source/JavaScriptCore/wasm/WasmOperations.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmSignatureInlinesh">trunk/Source/JavaScriptCore/wasm/WasmSignatureInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmSlowPathscpp">trunk/Source/JavaScriptCore/wasm/WasmSlowPaths.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmStreamingCompilercpp">trunk/Source/JavaScriptCore/wasm/WasmStreamingCompiler.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmStreamingPlancpp">trunk/Source/JavaScriptCore/wasm/WasmStreamingPlan.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmTablecpp">trunk/Source/JavaScriptCore/wasm/WasmTable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmThunkscpp">trunk/Source/JavaScriptCore/wasm/WasmThunks.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmWorklistcpp">trunk/Source/JavaScriptCore/wasm/WasmWorklist.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmjsJSWebAssemblyInstancecpp">trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreAPIJSVirtualMachinemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSVirtualMachine.mm (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSVirtualMachine.mm 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/API/JSVirtualMachine.mm 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -69,13 +69,13 @@
</span><span class="cx">
</span><span class="cx"> + (void)addWrapper:(JSVirtualMachine *)wrapper forJSContextGroupRef:(JSContextGroupRef)group
</span><span class="cx"> {
</span><del>- auto locker = holdLock(wrapperCacheMutex);
</del><ins>+ Locker locker { wrapperCacheMutex };
</ins><span class="cx"> NSMapInsert(wrapperCache(), group, (__bridge void*)wrapper);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> + (JSVirtualMachine *)wrapperForJSContextGroupRef:(JSContextGroupRef)group
</span><span class="cx"> {
</span><del>- auto locker = holdLock(wrapperCacheMutex);
</del><ins>+ Locker locker { wrapperCacheMutex };
</ins><span class="cx"> return (__bridge JSVirtualMachine *)NSMapGet(wrapperCache(), group);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -156,7 +156,7 @@
</span><span class="cx">
</span><span class="cx"> - (void)addExternalRememberedObject:(id)object
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_externalDataMutex);
</del><ins>+ Locker locker { m_externalDataMutex };
</ins><span class="cx"> ASSERT([self isOldExternalObject:object]);
</span><span class="cx"> [m_externalRememberedSet setObject:@YES forKey:object];
</span><span class="cx"> }
</span><span class="lines">@@ -176,7 +176,7 @@
</span><span class="cx"> if ([self isOldExternalObject:owner] && ![self isOldExternalObject:object])
</span><span class="cx"> [self addExternalRememberedObject:owner];
</span><span class="cx">
</span><del>- auto externalDataMutexLocker = holdLock(m_externalDataMutex);
</del><ins>+ Locker externalDataMutexLocker { m_externalDataMutex };
</ins><span class="cx"> RetainPtr<NSMapTable> ownedObjects = [m_externalObjectGraph objectForKey:owner];
</span><span class="cx"> if (!ownedObjects) {
</span><span class="cx"> NSPointerFunctionsOptions weakIDOptions = NSPointerFunctionsWeakMemory | NSPointerFunctionsObjectPersonality;
</span><span class="lines">@@ -203,7 +203,7 @@
</span><span class="cx">
</span><span class="cx"> JSC::JSLockHolder locker(toJS(m_group));
</span><span class="cx">
</span><del>- auto externalDataMutexLocker = holdLock(m_externalDataMutex);
</del><ins>+ Locker externalDataMutexLocker { m_externalDataMutex };
</ins><span class="cx"> NSMapTable *ownedObjects = [m_externalObjectGraph objectForKey:owner];
</span><span class="cx"> if (!ownedObjects)
</span><span class="cx"> return;
</span><span class="lines">@@ -341,7 +341,7 @@
</span><span class="cx"> if (lockAcquired)
</span><span class="cx"> appendOwnedObjects();
</span><span class="cx"> else {
</span><del>- auto locker = holdLock(externalDataMutex);
</del><ins>+ Locker locker { externalDataMutex };
</ins><span class="cx"> appendOwnedObjects();
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -361,7 +361,7 @@
</span><span class="cx"> if (!virtualMachine)
</span><span class="cx"> return;
</span><span class="cx"> Lock& externalDataMutex = [virtualMachine externalDataMutex];
</span><del>- auto locker = holdLock(externalDataMutex);
</del><ins>+ Locker locker { externalDataMutex };
</ins><span class="cx"> NSMapTable *externalObjectGraph = [virtualMachine externalObjectGraph];
</span><span class="cx"> NSMapTable *externalRememberedSet = [virtualMachine externalRememberedSet];
</span><span class="cx"> for (id key in externalRememberedSet) {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIglibJSCVirtualMachinecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/glib/JSCVirtualMachine.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/glib/JSCVirtualMachine.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/API/glib/JSCVirtualMachine.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -62,7 +62,7 @@
</span><span class="cx">
</span><span class="cx"> static void addWrapper(JSContextGroupRef group, JSCVirtualMachine* vm)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(wrapperCacheMutex);
</del><ins>+ Locker locker { wrapperCacheMutex };
</ins><span class="cx"> ASSERT(!wrapperMap().contains(group));
</span><span class="cx"> wrapperMap().set(group, vm);
</span><span class="cx"> }
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx">
</span><span class="cx"> static void removeWrapper(JSContextGroupRef group)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(wrapperCacheMutex);
</del><ins>+ Locker locker { wrapperCacheMutex };
</ins><span class="cx"> ASSERT(wrapperMap().contains(group));
</span><span class="cx"> wrapperMap().remove(group);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPItestsExecutionTimeLimitTestcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/tests/ExecutionTimeLimitTest.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/tests/ExecutionTimeLimitTest.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/API/tests/ExecutionTimeLimitTest.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -505,12 +505,12 @@
</span><span class="cx"> startTimeRef = CPUTime::forCurrentThread();
</span><span class="cx"> JSEvaluateScript(contextRef, scriptRef, nullptr, nullptr, 1, &exceptionRef);
</span><span class="cx"> endTimeRef = CPUTime::forCurrentThread();
</span><del>- auto locker = WTF::holdLock(syncLockRef);
</del><ins>+ Locker locker { syncLockRef };
</ins><span class="cx"> didSynchronizeRef = true;
</span><span class="cx"> synchronizeRef.notifyAll();
</span><span class="cx"> });
</span><span class="cx">
</span><del>- auto locker = holdLock(syncLock);
</del><ins>+ Locker locker { syncLock };
</ins><span class="cx"> synchronize.wait(syncLock, [&] { return didSynchronize; });
</span><span class="cx">
</span><span class="cx"> if (((endTime - startTime) < timeAfterWatchdogShouldHaveFired) && dispatchTerminateCallbackCalled)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/ChangeLog 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -1,3 +1,310 @@
</span><ins>+2021-05-21 Chris Dumez <cdumez@apple.com>
+
+ Stop using holdLock() in JSC as it is not compatible with Clang thread safety analysis
+ https://bugs.webkit.org/show_bug.cgi?id=226116
+
+ Reviewed by Mark Lam.
+
+ Stop using holdLock() in JSC as it is not compatible with Clang thread safety analysis
+ (WTF::CheckedLock). Use the Locker constructor instead.
+
+ I'll eventually get rid of the holdLock() definition once I have managed to get rid of
+ all its usages.
+
+ * API/JSVirtualMachine.mm:
+ (+[JSVMWrapperCache addWrapper:forJSContextGroupRef:]):
+ (+[JSVMWrapperCache wrapperForJSContextGroupRef:]):
+ (-[JSVirtualMachine addExternalRememberedObject:]):
+ (-[JSVirtualMachine addManagedReference:withOwner:]):
+ (-[JSVirtualMachine removeManagedReference:withOwner:]):
+ (scanExternalObjectGraph):
+ (scanExternalRememberedSet):
+ * API/glib/JSCVirtualMachine.cpp:
+ (addWrapper):
+ (removeWrapper):
+ * API/tests/ExecutionTimeLimitTest.cpp:
+ (testExecutionTimeLimit):
+ * assembler/PerfLog.cpp:
+ (JSC::PerfLog::PerfLog):
+ (JSC::PerfLog::log):
+ * bytecode/StructureStubInfo.cpp:
+ (JSC::StructureStubInfo::visitAggregateImpl):
+ (JSC::StructureStubInfo::visitWeakReferences):
+ * bytecode/StructureStubInfo.h:
+ (JSC::StructureStubInfo::considerCaching):
+ (JSC::StructureStubInfo::clearBufferedStructures):
+ * bytecode/UnlinkedCodeBlock.cpp:
+ (JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
+ (JSC::UnlinkedCodeBlock::visitChildrenImpl):
+ * bytecode/UnlinkedCodeBlockGenerator.cpp:
+ (JSC::UnlinkedCodeBlockGenerator::finalize):
+ * dfg/DFGAbstractInterpreterInlines.h:
+ (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
+ * heap/BlockDirectory.cpp:
+ (JSC::BlockDirectory::~BlockDirectory):
+ (JSC::BlockDirectory::removeBlock):
+ (JSC::BlockDirectory::stopAllocatingForGood):
+ (JSC::BlockDirectory::parallelNotEmptyBlockSource):
+ * heap/CodeBlockSet.cpp:
+ (JSC::CodeBlockSet::add):
+ (JSC::CodeBlockSet::remove):
+ * heap/CodeBlockSetInlines.h:
+ (JSC::CodeBlockSet::iterate):
+ * heap/CompleteSubspace.cpp:
+ (JSC::CompleteSubspace::allocatorForSlow):
+ * heap/Heap.cpp:
+ (JSC::Heap::lastChanceToFinalize):
+ (JSC::Heap::runNotRunningPhase):
+ (JSC::Heap::runEndPhase):
+ (JSC::Heap::finishRelinquishingConn):
+ (JSC::visitSamplingProfiler):
+ (JSC::Heap::setBonusVisitorTask):
+ (JSC::Heap::runTaskInParallel):
+ * heap/HeapSnapshotBuilder.cpp:
+ (JSC::HeapSnapshotBuilder::buildSnapshot):
+ (JSC::HeapSnapshotBuilder::analyzeNode):
+ (JSC::HeapSnapshotBuilder::analyzeEdge):
+ (JSC::HeapSnapshotBuilder::analyzePropertyNameEdge):
+ (JSC::HeapSnapshotBuilder::analyzeVariableNameEdge):
+ (JSC::HeapSnapshotBuilder::analyzeIndexEdge):
+ (JSC::HeapSnapshotBuilder::setOpaqueRootReachabilityReasonForCell):
+ * heap/IsoAlignedMemoryAllocator.cpp:
+ (JSC::IsoAlignedMemoryAllocator::tryAllocateAlignedMemory):
+ (JSC::IsoAlignedMemoryAllocator::freeAlignedMemory):
+ * heap/IsoCellSet.cpp:
+ (JSC::IsoCellSet::parallelNotEmptyMarkedBlockSource):
+ (JSC::IsoCellSet::addSlow):
+ (JSC::IsoCellSet::didRemoveBlock):
+ (JSC::IsoCellSet::sweepToFreeList):
+ * heap/IsoCellSetInlines.h:
+ (JSC::IsoCellSet::forEachMarkedCellInParallel):
+ * heap/IsoSubspace.cpp:
+ (JSC::IsoSubspace::IsoSubspace):
+ * heap/IsoSubspacePerVM.cpp:
+ (JSC::IsoSubspacePerVM::forVM):
+ * heap/LocalAllocator.cpp:
+ (JSC::LocalAllocator::LocalAllocator):
+ (JSC::LocalAllocator::~LocalAllocator):
+ * heap/MachineStackMarker.cpp:
+ (JSC::MachineThreads::tryCopyOtherThreadStacks):
+ (JSC::MachineThreads::gatherConservativeRoots):
+ * heap/MarkedBlock.cpp:
+ (JSC::MarkedBlock::Handle::stopAllocating):
+ (JSC::MarkedBlock::Handle::resumeAllocating):
+ (JSC::MarkedBlock::aboutToMarkSlow):
+ (JSC::MarkedBlock::Handle::didConsumeFreeList):
+ (JSC::MarkedBlock::noteMarkedSlow):
+ (JSC::MarkedBlock::Handle::dumpState):
+ * heap/MarkedBlockInlines.h:
+ (JSC::MarkedBlock::Handle::isLive):
+ * heap/MarkingConstraint.cpp:
+ (JSC::MarkingConstraint::doParallelWork):
+ * heap/MarkingConstraintSolver.cpp:
+ (JSC::MarkingConstraintSolver::addParallelTask):
+ (JSC::MarkingConstraintSolver::runExecutionThread):
+ * heap/ParallelSourceAdapter.h:
+ * heap/SlotVisitor.cpp:
+ (JSC::SlotVisitor::updateMutatorIsStopped):
+ (JSC::SlotVisitor::drain):
+ (JSC::SlotVisitor::performIncrementOfDraining):
+ (JSC::SlotVisitor::drainFromShared):
+ (JSC::SlotVisitor::drainInParallelPassively):
+ (JSC::SlotVisitor::waitForTermination):
+ (JSC::SlotVisitor::donateAll):
+ (JSC::SlotVisitor::didRace):
+ * heap/Subspace.cpp:
+ (JSC::Subspace::parallelDirectorySource):
+ * heap/SubspaceInlines.h:
+ (JSC::Subspace::forEachMarkedCellInParallel):
+ * inspector/JSInjectedScriptHost.cpp:
+ * jit/ExecutableAllocator.cpp:
+ * jsc.cpp:
+ (Worker::Worker):
+ (Worker::~Worker):
+ (Worker::dequeue):
+ (Workers::broadcast):
+ (Workers::report):
+ (Workers::tryGetReport):
+ (Workers::getReport):
+ (JSC_DEFINE_HOST_FUNCTION):
+ * runtime/DeferredWorkTimer.cpp:
+ (JSC::DeferredWorkTimer::doWork):
+ * runtime/ErrorInstance.cpp:
+ (JSC::ErrorInstance::finishCreation):
+ * runtime/EvalExecutable.cpp:
+ (JSC::EvalExecutable::visitChildrenImpl):
+ * runtime/FileBasedFuzzerAgentBase.cpp:
+ (JSC::FileBasedFuzzerAgentBase::getPrediction):
+ * runtime/FunctionExecutable.cpp:
+ (JSC::FunctionExecutable::visitChildrenImpl):
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::shiftCountWithArrayStorage):
+ (JSC::JSArray::unshiftCountWithArrayStorage):
+ * runtime/JSArrayBufferView.cpp:
+ (JSC::JSArrayBufferView::detach):
+ (JSC::JSArrayBufferView::slowDownAndWasteMemory):
+ * runtime/JSCell.h:
+ * runtime/JSFinalizationRegistry.cpp:
+ (JSC::JSFinalizationRegistry::visitChildrenImpl):
+ (JSC::JSFinalizationRegistry::finalizeUnconditionally):
+ (JSC::JSFinalizationRegistry::takeDeadHoldingsValue):
+ (JSC::JSFinalizationRegistry::registerTarget):
+ (JSC::JSFinalizationRegistry::unregister):
+ * runtime/JSGenericTypedArrayViewInlines.h:
+ (JSC::JSGenericTypedArrayView<Adaptor>::visitChildrenImpl):
+ * runtime/JSGlobalObject.cpp:
+ (JSC::JSC_DEFINE_HOST_FUNCTION):
+ * runtime/JSModuleNamespaceObject.cpp:
+ (JSC::JSModuleNamespaceObject::finishCreation):
+ (JSC::JSModuleNamespaceObject::visitChildrenImpl):
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::visitButterflyImpl):
+ * runtime/JSRunLoopTimer.cpp:
+ (JSC::JSRunLoopTimer::Manager::timerDidFire):
+ (JSC::JSRunLoopTimer::Manager::registerVM):
+ (JSC::JSRunLoopTimer::Manager::unregisterVM):
+ (JSC::JSRunLoopTimer::Manager::scheduleTimer):
+ (JSC::JSRunLoopTimer::Manager::cancelTimer):
+ (JSC::JSRunLoopTimer::Manager::timeUntilFire):
+ (JSC::JSRunLoopTimer::timerDidFire):
+ (JSC::JSRunLoopTimer::setTimeUntilFire):
+ (JSC::JSRunLoopTimer::cancelTimer):
+ (JSC::JSRunLoopTimer::addTimerSetNotification):
+ (JSC::JSRunLoopTimer::removeTimerSetNotification):
+ * runtime/JSSegmentedVariableObject.cpp:
+ (JSC::JSSegmentedVariableObject::findVariableIndex):
+ (JSC::JSSegmentedVariableObject::addVariables):
+ (JSC::JSSegmentedVariableObject::visitChildrenImpl):
+ * runtime/ModuleProgramExecutable.cpp:
+ (JSC::ModuleProgramExecutable::visitChildrenImpl):
+ * runtime/NarrowingNumberPredictionFuzzerAgent.cpp:
+ (JSC::NarrowingNumberPredictionFuzzerAgent::getPrediction):
+ * runtime/ProgramExecutable.cpp:
+ (JSC::ProgramExecutable::visitChildrenImpl):
+ * runtime/RandomizingFuzzerAgent.cpp:
+ (JSC::RandomizingFuzzerAgent::getPrediction):
+ * runtime/RegExp.cpp:
+ (JSC::RegExp::compile):
+ (JSC::RegExp::matchConcurrently):
+ (JSC::RegExp::compileMatchOnly):
+ (JSC::RegExp::deleteCode):
+ * runtime/SamplingProfiler.cpp:
+ (JSC::SamplingProfiler::takeSample):
+ (JSC::SamplingProfiler::stackTracesAsJSON):
+ (JSC::SamplingProfiler::reportTopFunctions):
+ (JSC::SamplingProfiler::reportTopBytecodes):
+ * runtime/ScriptExecutable.cpp:
+ (JSC::ScriptExecutable::createTemplateObject):
+ * runtime/SparseArrayValueMap.cpp:
+ (JSC::SparseArrayValueMap::add):
+ (JSC::SparseArrayValueMap::remove):
+ (JSC::SparseArrayValueMap::getConcurrently):
+ (JSC::SparseArrayValueMap::visitChildrenImpl):
+ * runtime/Structure.cpp:
+ (JSC::Structure::changePrototypeTransition):
+ (JSC::Structure::toDictionaryTransition):
+ (JSC::Structure::nonPropertyTransitionSlow):
+ (JSC::Structure::setBrandTransition):
+ * runtime/StructureCache.cpp:
+ (JSC::StructureCache::createEmptyStructure):
+ (JSC::StructureCache::emptyObjectStructureConcurrently):
+ * runtime/VM.cpp:
+ (JSC::waitForVMDestruction):
+ (JSC::VM::~VM):
+ (JSC::VM::gatherScratchBufferRoots):
+ (JSC::VM::scratchBufferForSize):
+ (JSC::VM::clearScratchBuffers):
+ (JSC::VM::addLoopHintExecutionCounter):
+ (JSC::VM::getLoopHintExecutionCounter):
+ (JSC::VM::removeLoopHintExecutionCounter):
+ * runtime/VMTraps.cpp:
+ (JSC::VMTraps::tryInstallTrapBreakpoints):
+ (JSC::VMTraps::invalidateCodeBlocksOnStack):
+ (JSC::VMTraps::willDestroyVM):
+ (JSC::VMTraps::fireTrap):
+ (JSC::VMTraps::handleTraps):
+ (JSC::VMTraps::takeTopPriorityTrap):
+ * runtime/WeakMapImpl.cpp:
+ (JSC::WeakMapImpl<BucketType>::visitOutputConstraints):
+ * runtime/WeakMapImpl.h:
+ (JSC::WeakMapImpl::finishCreation):
+ * runtime/WeakMapImplInlines.h:
+ (JSC::WeakMapImpl<WeakMapBucket>::rehash):
+ * runtime/WideningNumberPredictionFuzzerAgent.cpp:
+ (JSC::WideningNumberPredictionFuzzerAgent::getPrediction):
+ * tools/CompilerTimingScope.cpp:
+ * tools/FunctionOverrides.cpp:
+ (JSC::FunctionOverrides::FunctionOverrides):
+ (JSC::FunctionOverrides::reinstallOverrides):
+ (JSC::FunctionOverrides::initializeOverrideFor):
+ * tools/Integrity.cpp:
+ (JSC::Integrity::Random::reloadAndCheckShouldAuditSlow):
+ * tools/VMInspector.cpp:
+ (JSC::VMInspector::add):
+ (JSC::VMInspector::remove):
+ (JSC::VMInspector::codeBlockForMachinePC):
+ * wasm/WasmBBQPlan.cpp:
+ (JSC::Wasm::BBQPlan::work):
+ (JSC::Wasm::BBQPlan::compileFunction):
+ * wasm/WasmCalleeRegistry.h:
+ (JSC::Wasm::CalleeRegistry::registerCallee):
+ (JSC::Wasm::CalleeRegistry::unregisterCallee):
+ * wasm/WasmCodeBlock.cpp:
+ (JSC::Wasm::CodeBlock::CodeBlock):
+ (JSC::Wasm::CodeBlock::waitUntilFinished):
+ (JSC::Wasm::CodeBlock::compileAsync):
+ * wasm/WasmContext.cpp:
+ (JSC::Wasm::Context::scratchBufferForSize):
+ * wasm/WasmEntryPlan.cpp:
+ (JSC::Wasm::EntryPlan::parseAndValidateModule):
+ (JSC::Wasm::EntryPlan::prepare):
+ (JSC::Wasm::EntryPlan::compileFunctions):
+ * wasm/WasmEntryPlan.h:
+ (JSC::Wasm::EntryPlan::tryReserveCapacity):
+ * wasm/WasmFaultSignalHandler.cpp:
+ (JSC::Wasm::trapHandler):
+ * wasm/WasmInstance.cpp:
+ (JSC::Wasm::Instance::setFunctionWrapper):
+ * wasm/WasmLLIntPlan.cpp:
+ (JSC::Wasm::LLIntPlan::compileFunction):
+ (JSC::Wasm::LLIntPlan::completeInStreaming):
+ (JSC::Wasm::LLIntPlan::didCompileFunctionInStreaming):
+ (JSC::Wasm::LLIntPlan::didFailInStreaming):
+ * wasm/WasmMachineThreads.cpp:
+ (JSC::Wasm::resetInstructionCacheOnAllThreads):
+ * wasm/WasmMemory.cpp:
+ (JSC::Wasm::Memory::growShared):
+ * wasm/WasmModule.cpp:
+ (JSC::Wasm::Module::getOrCreateCodeBlock):
+ * wasm/WasmOMGForOSREntryPlan.cpp:
+ (JSC::Wasm::OMGForOSREntryPlan::work):
+ * wasm/WasmOMGPlan.cpp:
+ (JSC::Wasm::OMGPlan::work):
+ * wasm/WasmOperations.cpp:
+ (JSC::Wasm::triggerOMGReplacementCompile):
+ (JSC::Wasm::JSC_DEFINE_JIT_OPERATION):
+ * wasm/WasmSignatureInlines.h:
+ (JSC::Wasm::SignatureInformation::get):
+ * wasm/WasmSlowPaths.cpp:
+ (JSC::LLInt::jitCompileAndSetHeuristics):
+ (JSC::LLInt::WASM_SLOW_PATH_DECL):
+ * wasm/WasmStreamingCompiler.cpp:
+ (JSC::Wasm::StreamingCompiler::didCompileFunction):
+ (JSC::Wasm::StreamingCompiler::finalize):
+ (JSC::Wasm::StreamingCompiler::fail):
+ (JSC::Wasm::StreamingCompiler::cancel):
+ * wasm/WasmStreamingPlan.cpp:
+ (JSC::Wasm::StreamingPlan::work):
+ * wasm/WasmTable.cpp:
+ (JSC::Wasm::Table::grow):
+ (JSC::Wasm::Table::visitAggregateImpl):
+ * wasm/WasmThunks.cpp:
+ (JSC::Wasm::Thunks::stub):
+ (JSC::Wasm::Thunks::existingStub):
+ * wasm/WasmWorklist.cpp:
+ * wasm/js/JSWebAssemblyInstance.cpp:
+ (JSC::JSWebAssemblyInstance::visitChildrenImpl):
+
</ins><span class="cx"> 2021-05-21 Mark Lam <mark.lam@apple.com>
</span><span class="cx">
</span><span class="cx"> Remove the unnecessary use of CompileOpStrictEqType.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreassemblerPerfLogcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/assembler/PerfLog.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/assembler/PerfLog.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/assembler/PerfLog.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -164,7 +164,7 @@
</span><span class="cx"> header.timestamp = generateTimestamp();
</span><span class="cx"> header.pid = getCurrentProcessID();
</span><span class="cx">
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> write(locker, &header, sizeof(JITDump::FileHeader));
</span><span class="cx"> flush(locker);
</span><span class="cx"> }
</span><span class="lines">@@ -188,7 +188,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> PerfLog& logger = singleton();
</span><del>- auto locker = holdLock(logger.m_lock);
</del><ins>+ Locker locker { logger.m_lock };
</ins><span class="cx">
</span><span class="cx"> JITDump::CodeLoadRecord record;
</span><span class="cx"> record.header.timestamp = generateTimestamp();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeStructureStubInfocpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/StructureStubInfo.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/StructureStubInfo.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/bytecode/StructureStubInfo.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -300,7 +300,7 @@
</span><span class="cx"> void StructureStubInfo::visitAggregateImpl(Visitor& visitor)
</span><span class="cx"> {
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_bufferedStructuresLock);
</del><ins>+ Locker locker { m_bufferedStructuresLock };
</ins><span class="cx"> for (auto& bufferedStructure : m_bufferedStructures)
</span><span class="cx"> bufferedStructure.byValId().visitAggregate(visitor);
</span><span class="cx"> }
</span><span class="lines">@@ -329,7 +329,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = codeBlock->vm();
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_bufferedStructuresLock);
</del><ins>+ Locker locker { m_bufferedStructuresLock };
</ins><span class="cx"> m_bufferedStructures.removeIf(
</span><span class="cx"> [&] (auto& entry) -> bool {
</span><span class="cx"> return !vm.heap.isMarked(entry.structure());
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeStructureStubInfoh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/StructureStubInfo.h (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/StructureStubInfo.h 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/bytecode/StructureStubInfo.h 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -249,7 +249,7 @@
</span><span class="cx"> // the prototype is fixed.
</span><span class="cx"> bool isNewlyAdded = false;
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_bufferedStructuresLock);
</del><ins>+ Locker locker { m_bufferedStructuresLock };
</ins><span class="cx"> isNewlyAdded = m_bufferedStructures.add({ structure, impl }).isNewEntry;
</span><span class="cx"> }
</span><span class="cx"> if (isNewlyAdded)
</span><span class="lines">@@ -264,7 +264,7 @@
</span><span class="cx">
</span><span class="cx"> void clearBufferedStructures()
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_bufferedStructuresLock);
</del><ins>+ Locker locker { m_bufferedStructuresLock };
</ins><span class="cx"> m_bufferedStructures.clear();
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeUnlinkedCodeBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -66,12 +66,12 @@
</span><span class="cx"> ASSERT(m_codeType == static_cast<unsigned>(codeType));
</span><span class="cx"> ASSERT(m_didOptimize == static_cast<unsigned>(TriState::Indeterminate));
</span><span class="cx"> if (info.needsClassFieldInitializer() == NeedsClassFieldInitializer::Yes) {
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx"> createRareDataIfNecessary(locker);
</span><span class="cx"> m_rareData->m_needsClassFieldInitializer = static_cast<unsigned>(NeedsClassFieldInitializer::Yes);
</span><span class="cx"> }
</span><span class="cx"> if (info.privateBrandRequirement() == PrivateBrandRequirement::Needed) {
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx"> createRareDataIfNecessary(locker);
</span><span class="cx"> m_rareData->m_privateBrandRequirement = static_cast<unsigned>(PrivateBrandRequirement::Needed);
</span><span class="cx"> }
</span><span class="lines">@@ -83,7 +83,7 @@
</span><span class="cx"> UnlinkedCodeBlock* thisObject = jsCast<UnlinkedCodeBlock*>(cell);
</span><span class="cx"> ASSERT_GC_OBJECT_INHERITS(thisObject, info());
</span><span class="cx"> Base::visitChildren(thisObject, visitor);
</span><del>- auto locker = holdLock(thisObject->cellLock());
</del><ins>+ Locker locker { thisObject->cellLock() };
</ins><span class="cx"> if (visitor.isFirstVisit())
</span><span class="cx"> thisObject->m_age = std::min<unsigned>(static_cast<unsigned>(thisObject->m_age) + 1, maxAge);
</span><span class="cx"> for (auto& barrier : thisObject->m_functionDecls)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeUnlinkedCodeBlockGeneratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlockGenerator.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlockGenerator.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlockGenerator.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -117,7 +117,7 @@
</span><span class="cx"> {
</span><span class="cx"> ASSERT(instructions);
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_codeBlock->cellLock());
</del><ins>+ Locker locker { m_codeBlock->cellLock() };
</ins><span class="cx"> m_codeBlock->m_instructions = WTFMove(instructions);
</span><span class="cx"> m_codeBlock->m_metadata->finalize();
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGAbstractInterpreterInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -2255,7 +2255,7 @@
</span><span class="cx"> JSValue value;
</span><span class="cx"> {
</span><span class="cx"> // ArrayStorage's Butterfly can be half-broken state.
</span><del>- auto locker = holdLock(array->cellLock());
</del><ins>+ Locker locker { array->cellLock() };
</ins><span class="cx">
</span><span class="cx"> WTF::loadLoadFence();
</span><span class="cx"> Butterfly* butterfly = array->butterfly();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapBlockDirectorycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/BlockDirectory.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/BlockDirectory.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/heap/BlockDirectory.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -45,7 +45,7 @@
</span><span class="cx">
</span><span class="cx"> BlockDirectory::~BlockDirectory()
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_localAllocatorsLock);
</del><ins>+ Locker locker { m_localAllocatorsLock };
</ins><span class="cx"> while (!m_localAllocators.isEmpty())
</span><span class="cx"> m_localAllocators.begin()->remove();
</span><span class="cx"> }
</span><span class="lines">@@ -168,7 +168,7 @@
</span><span class="cx"> m_freeBlockIndices.append(block->index());
</span><span class="cx">
</span><span class="cx"> forEachBitVector(
</span><del>- holdLock(m_bitvectorLock),
</del><ins>+ Locker { m_bitvectorLock },
</ins><span class="cx"> [&](auto vectorRef) {
</span><span class="cx"> vectorRef[block->index()] = false;
</span><span class="cx"> });
</span><span class="lines">@@ -216,7 +216,7 @@
</span><span class="cx"> allocator->stopAllocatingForGood();
</span><span class="cx"> });
</span><span class="cx">
</span><del>- auto locker = holdLock(m_localAllocatorsLock);
</del><ins>+ Locker locker { m_localAllocatorsLock };
</ins><span class="cx"> while (!m_localAllocators.isEmpty())
</span><span class="cx"> m_localAllocators.begin()->remove();
</span><span class="cx"> }
</span><span class="lines">@@ -333,7 +333,7 @@
</span><span class="cx"> {
</span><span class="cx"> if (m_done)
</span><span class="cx"> return nullptr;
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> m_index = m_directory.m_bits.markingNotEmpty().findBit(m_index, true);
</span><span class="cx"> if (m_index >= m_directory.m_blocks.size()) {
</span><span class="cx"> m_done = true;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapCodeBlockSetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/CodeBlockSet.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/CodeBlockSet.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/heap/CodeBlockSet.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx">
</span><span class="cx"> void CodeBlockSet::add(CodeBlock* codeBlock)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> auto result = m_codeBlocks.add(codeBlock);
</span><span class="cx"> RELEASE_ASSERT(result);
</span><span class="cx"> }
</span><span class="lines">@@ -80,7 +80,7 @@
</span><span class="cx">
</span><span class="cx"> void CodeBlockSet::remove(CodeBlock* codeBlock)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> bool result = m_codeBlocks.remove(codeBlock);
</span><span class="cx"> RELEASE_ASSERT(result);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapCodeBlockSetInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/CodeBlockSetInlines.h (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/CodeBlockSetInlines.h 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/heap/CodeBlockSetInlines.h 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> template<typename Functor>
</span><span class="cx"> void CodeBlockSet::iterate(const Functor& functor)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> iterate(locker, functor);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapCompleteSubspacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/CompleteSubspace.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/CompleteSubspace.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/heap/CompleteSubspace.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -70,7 +70,7 @@
</span><span class="cx"> // prevent simultaneously BlockDirectory creations from multiple threads. This code ensures
</span><span class="cx"> // that any "forEachAllocator" traversals will only see this allocator after it's initialized
</span><span class="cx"> // enough: it will have
</span><del>- auto locker = holdLock(m_space.directoryLock());
</del><ins>+ Locker locker { m_space.directoryLock() };
</ins><span class="cx"> if (Allocator allocator = m_allocatorForSizeStep[index])
</span><span class="cx"> return allocator;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapHeapcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/Heap.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/Heap.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/heap/Heap.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -419,7 +419,7 @@
</span><span class="cx">
</span><span class="cx"> bool isCollecting;
</span><span class="cx"> {
</span><del>- auto locker = holdLock(*m_threadLock);
</del><ins>+ Locker locker { *m_threadLock };
</ins><span class="cx"> RELEASE_ASSERT(m_lastServedTicket <= m_lastGrantedTicket);
</span><span class="cx"> isCollecting = m_lastServedTicket < m_lastGrantedTicket;
</span><span class="cx"> }
</span><span class="lines">@@ -1237,7 +1237,7 @@
</span><span class="cx"> {
</span><span class="cx"> // Check m_requests since the mutator calls this to poll what's going on.
</span><span class="cx"> {
</span><del>- auto locker = holdLock(*m_threadLock);
</del><ins>+ Locker locker { *m_threadLock };
</ins><span class="cx"> if (m_requests.isEmpty())
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="lines">@@ -1481,7 +1481,7 @@
</span><span class="cx"> m_scheduler->endCollection();
</span><span class="cx">
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_markingMutex);
</del><ins>+ Locker locker { m_markingMutex };
</ins><span class="cx"> m_parallelMarkersShouldExit = true;
</span><span class="cx"> m_markingConditionVariable.notifyAll();
</span><span class="cx"> }
</span><span class="lines">@@ -1558,7 +1558,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> {
</span><del>- auto locker = holdLock(*m_threadLock);
</del><ins>+ Locker locker { *m_threadLock };
</ins><span class="cx"> m_requests.removeFirst();
</span><span class="cx"> m_lastServedTicket++;
</span><span class="cx"> clearMutatorWaiting();
</span><span class="lines">@@ -1991,7 +1991,7 @@
</span><span class="cx">
</span><span class="cx"> sanitizeStackForVM(m_vm);
</span><span class="cx">
</span><del>- auto locker = holdLock(*m_threadLock);
</del><ins>+ Locker locker { *m_threadLock };
</ins><span class="cx"> if (!m_requests.isEmpty())
</span><span class="cx"> m_threadCondition->notifyOne(locker);
</span><span class="cx"> ParkingLot::unparkAll(&m_worldState);
</span><span class="lines">@@ -2730,7 +2730,7 @@
</span><span class="cx"> {
</span><span class="cx"> SamplingProfiler* samplingProfiler = vm.samplingProfiler();
</span><span class="cx"> if (UNLIKELY(samplingProfiler)) {
</span><del>- auto locker = holdLock(samplingProfiler->getLock());
</del><ins>+ Locker locker { samplingProfiler->getLock() };
</ins><span class="cx"> samplingProfiler->processUnverifiedStackTraces(locker);
</span><span class="cx"> samplingProfiler->visit(visitor);
</span><span class="cx"> if (Options::logGC() == GCLogging::Verbose)
</span><span class="lines">@@ -3070,7 +3070,7 @@
</span><span class="cx">
</span><span class="cx"> void Heap::setBonusVisitorTask(RefPtr<SharedTask<void(SlotVisitor&)>> task)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_markingMutex);
</del><ins>+ Locker locker { m_markingMutex };
</ins><span class="cx"> m_bonusVisitorTask = task;
</span><span class="cx"> m_markingConditionVariable.notifyAll();
</span><span class="cx"> }
</span><span class="lines">@@ -3090,7 +3090,7 @@
</span><span class="cx"> // The constraint solver expects return of this function to imply termination of the task in all
</span><span class="cx"> // threads. This ensures that property.
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_markingMutex);
</del><ins>+ Locker locker { m_markingMutex };
</ins><span class="cx"> while (task->refCount() > initialRefCount)
</span><span class="cx"> m_markingConditionVariable.wait(m_markingMutex);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapHeapSnapshotBuildercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/HeapSnapshotBuilder.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/HeapSnapshotBuilder.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/heap/HeapSnapshotBuilder.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_buildingNodeMutex);
</del><ins>+ Locker locker { m_buildingNodeMutex };
</ins><span class="cx"> m_appendedCells.clear();
</span><span class="cx"> m_snapshot->finalize();
</span><span class="cx"> }
</span><span class="lines">@@ -90,7 +90,7 @@
</span><span class="cx"> if (previousSnapshotHasNodeForCell(cell, identifier))
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- auto locker = holdLock(m_buildingNodeMutex);
</del><ins>+ Locker locker { m_buildingNodeMutex };
</ins><span class="cx"> auto addResult = m_appendedCells.add(cell);
</span><span class="cx"> if (!addResult.isNewEntry)
</span><span class="cx"> return;
</span><span class="lines">@@ -106,7 +106,7 @@
</span><span class="cx"> if (from == to)
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- auto locker = holdLock(m_buildingEdgeMutex);
</del><ins>+ Locker locker { m_buildingEdgeMutex };
</ins><span class="cx">
</span><span class="cx"> if (m_snapshotType == SnapshotType::GCDebuggingSnapshot && !from) {
</span><span class="cx"> if (rootMarkReason == RootMarkReason::None && m_snapshotType == SnapshotType::GCDebuggingSnapshot)
</span><span class="lines">@@ -125,7 +125,7 @@
</span><span class="cx"> ASSERT(m_profiler.activeHeapAnalyzer() == this);
</span><span class="cx"> ASSERT(to);
</span><span class="cx">
</span><del>- auto locker = holdLock(m_buildingEdgeMutex);
</del><ins>+ Locker locker { m_buildingEdgeMutex };
</ins><span class="cx">
</span><span class="cx"> m_edges.append(HeapSnapshotEdge(from, to, EdgeType::Property, propertyName));
</span><span class="cx"> }
</span><span class="lines">@@ -135,7 +135,7 @@
</span><span class="cx"> ASSERT(m_profiler.activeHeapAnalyzer() == this);
</span><span class="cx"> ASSERT(to);
</span><span class="cx">
</span><del>- auto locker = holdLock(m_buildingEdgeMutex);
</del><ins>+ Locker locker { m_buildingEdgeMutex };
</ins><span class="cx">
</span><span class="cx"> m_edges.append(HeapSnapshotEdge(from, to, EdgeType::Variable, variableName));
</span><span class="cx"> }
</span><span class="lines">@@ -145,7 +145,7 @@
</span><span class="cx"> ASSERT(m_profiler.activeHeapAnalyzer() == this);
</span><span class="cx"> ASSERT(to);
</span><span class="cx">
</span><del>- auto locker = holdLock(m_buildingEdgeMutex);
</del><ins>+ Locker locker { m_buildingEdgeMutex };
</ins><span class="cx">
</span><span class="cx"> m_edges.append(HeapSnapshotEdge(from, to, index));
</span><span class="cx"> }
</span><span class="lines">@@ -155,7 +155,7 @@
</span><span class="cx"> if (!reason || !*reason || m_snapshotType != SnapshotType::GCDebuggingSnapshot)
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- auto locker = holdLock(m_buildingEdgeMutex);
</del><ins>+ Locker locker { m_buildingEdgeMutex };
</ins><span class="cx">
</span><span class="cx"> m_rootData.ensure(cell, [] () -> RootData {
</span><span class="cx"> return { };
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapIsoAlignedMemoryAllocatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/IsoAlignedMemoryAllocator.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/IsoAlignedMemoryAllocator.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/heap/IsoAlignedMemoryAllocator.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx"> #if ENABLE(MALLOC_HEAP_BREAKDOWN)
</span><span class="cx"> return m_debugHeap.memalign(MarkedBlock::blockSize, MarkedBlock::blockSize, true);
</span><span class="cx"> #else
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx">
</span><span class="cx"> m_firstUncommitted = m_committed.findBit(m_firstUncommitted, false);
</span><span class="cx"> if (m_firstUncommitted < m_blocks.size()) {
</span><span class="lines">@@ -87,7 +87,7 @@
</span><span class="cx"> #if ENABLE(MALLOC_HEAP_BREAKDOWN)
</span><span class="cx"> m_debugHeap.free(basePtr);
</span><span class="cx"> #else
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx">
</span><span class="cx"> auto iter = m_blockIndices.find(basePtr);
</span><span class="cx"> RELEASE_ASSERT(iter != m_blockIndices.end());
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapIsoCellSetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/IsoCellSet.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/IsoCellSet.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/heap/IsoCellSet.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx"> {
</span><span class="cx"> if (m_done)
</span><span class="cx"> return nullptr;
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> auto bits = m_directory.m_bits.markingNotEmpty() & m_set.m_blocksWithBits;
</span><span class="cx"> m_index = bits.findBit(m_index, true);
</span><span class="cx"> if (m_index >= m_directory.m_blocks.size()) {
</span><span class="lines">@@ -82,7 +82,7 @@
</span><span class="cx">
</span><span class="cx"> NEVER_INLINE Bitmap<MarkedBlock::atomsPerBlock>* IsoCellSet::addSlow(unsigned blockIndex)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_subspace.m_directory.m_bitvectorLock);
</del><ins>+ Locker locker { m_subspace.m_directory.m_bitvectorLock };
</ins><span class="cx"> auto& bitsPtrRef = m_bits[blockIndex];
</span><span class="cx"> auto* bits = bitsPtrRef.get();
</span><span class="cx"> if (!bits) {
</span><span class="lines">@@ -103,7 +103,7 @@
</span><span class="cx"> void IsoCellSet::didRemoveBlock(unsigned blockIndex)
</span><span class="cx"> {
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_subspace.m_directory.m_bitvectorLock);
</del><ins>+ Locker locker { m_subspace.m_directory.m_bitvectorLock };
</ins><span class="cx"> m_blocksWithBits[blockIndex] = false;
</span><span class="cx"> }
</span><span class="cx"> m_bits[blockIndex] = nullptr;
</span><span class="lines">@@ -135,7 +135,7 @@
</span><span class="cx"> {
</span><span class="cx"> // Holding the bitvector lock happens to be enough because that's what we also hold in
</span><span class="cx"> // other places where we manipulate this bitvector.
</span><del>- auto locker = holdLock(m_subspace.m_directory.m_bitvectorLock);
</del><ins>+ Locker locker { m_subspace.m_directory.m_bitvectorLock };
</ins><span class="cx"> m_blocksWithBits[block->index()] = false;
</span><span class="cx"> }
</span><span class="cx"> m_bits[block->index()] = nullptr;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapIsoCellSetInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/IsoCellSetInlines.h (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/IsoCellSetInlines.h 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/heap/IsoCellSetInlines.h 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -117,7 +117,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> if (!m_needToVisitPreciseAllocations)
</span><span class="cx"> return;
</span><span class="cx"> m_needToVisitPreciseAllocations = false;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapIsoSubspacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/IsoSubspace.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/IsoSubspace.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/heap/IsoSubspace.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -45,7 +45,7 @@
</span><span class="cx"> m_isIsoSubspace = true;
</span><span class="cx"> initialize(heapCellType, m_isoAlignedMemoryAllocator.get());
</span><span class="cx">
</span><del>- auto locker = holdLock(m_space.directoryLock());
</del><ins>+ Locker locker { m_space.directoryLock() };
</ins><span class="cx"> m_directory.setSubspace(this);
</span><span class="cx"> m_space.addBlockDirectory(locker, &m_directory);
</span><span class="cx"> m_alignedMemoryAllocator->registerDirectory(heap, &m_directory);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapIsoSubspacePerVMcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/IsoSubspacePerVM.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/IsoSubspacePerVM.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/heap/IsoSubspacePerVM.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx">
</span><span class="cx"> ~AutoremovingIsoSubspace() final
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_perVM.m_lock);
</del><ins>+ Locker locker { m_perVM.m_lock };
</ins><span class="cx"> m_perVM.m_subspacePerVM.remove(&space().heap().vm());
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx">
</span><span class="cx"> IsoSubspace& IsoSubspacePerVM::forVM(VM& vm)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> auto result = m_subspacePerVM.add(&vm, nullptr);
</span><span class="cx"> if (result.isNewEntry) {
</span><span class="cx"> SubspaceParameters params = m_subspaceParameters(vm);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapLocalAllocatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/LocalAllocator.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/LocalAllocator.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/heap/LocalAllocator.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx"> : m_directory(directory)
</span><span class="cx"> , m_freeList(directory->m_cellSize)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(directory->m_localAllocatorsLock);
</del><ins>+ Locker locker { directory->m_localAllocatorsLock };
</ins><span class="cx"> directory->m_localAllocators.append(this);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx"> LocalAllocator::~LocalAllocator()
</span><span class="cx"> {
</span><span class="cx"> if (isOnList()) {
</span><del>- auto locker = holdLock(m_directory->m_localAllocatorsLock);
</del><ins>+ Locker locker { m_directory->m_localAllocatorsLock };
</ins><span class="cx"> remove();
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapMachineStackMarkercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/MachineStackMarker.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/MachineStackMarker.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/heap/MachineStackMarker.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -136,7 +136,7 @@
</span><span class="cx"> // Prevent two VMs from suspending each other's threads at the same time,
</span><span class="cx"> // which can cause deadlock: <rdar://problem/20300842>.
</span><span class="cx"> static Lock suspendLock;
</span><del>- auto suspendLocker = holdLock(suspendLock);
</del><ins>+ Locker suspendLocker { suspendLock };
</ins><span class="cx">
</span><span class="cx"> *size = 0;
</span><span class="cx">
</span><span class="lines">@@ -204,7 +204,7 @@
</span><span class="cx"> size_t size;
</span><span class="cx"> size_t capacity = 0;
</span><span class="cx"> void* buffer = nullptr;
</span><del>- auto locker = holdLock(m_threadGroup->getLock());
</del><ins>+ Locker locker { m_threadGroup->getLock() };
</ins><span class="cx"> while (!tryCopyOtherThreadStacks(locker, buffer, capacity, &size, *currentThread))
</span><span class="cx"> growBuffer(size, &buffer, &capacity);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapMarkedBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/MarkedBlock.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/MarkedBlock.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/heap/MarkedBlock.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -114,7 +114,7 @@
</span><span class="cx">
</span><span class="cx"> void MarkedBlock::Handle::stopAllocating(const FreeList& freeList)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(blockFooter().m_lock);
</del><ins>+ Locker locker { blockFooter().m_lock };
</ins><span class="cx">
</span><span class="cx"> if (MarkedBlockInternal::verbose)
</span><span class="cx"> dataLog(RawPointer(this), ": MarkedBlock::Handle::stopAllocating!\n");
</span><span class="lines">@@ -173,7 +173,7 @@
</span><span class="cx"> void MarkedBlock::Handle::resumeAllocating(FreeList& freeList)
</span><span class="cx"> {
</span><span class="cx"> {
</span><del>- auto locker = holdLock(blockFooter().m_lock);
</del><ins>+ Locker locker { blockFooter().m_lock };
</ins><span class="cx">
</span><span class="cx"> if (MarkedBlockInternal::verbose)
</span><span class="cx"> dataLog(RawPointer(this), ": MarkedBlock::Handle::resumeAllocating!\n");
</span><span class="lines">@@ -197,7 +197,7 @@
</span><span class="cx"> void MarkedBlock::aboutToMarkSlow(HeapVersion markingVersion)
</span><span class="cx"> {
</span><span class="cx"> ASSERT(vm().heap.objectSpace().isMarking());
</span><del>- auto locker = holdLock(footer().m_lock);
</del><ins>+ Locker locker { footer().m_lock };
</ins><span class="cx">
</span><span class="cx"> if (!areMarksStale(markingVersion))
</span><span class="cx"> return;
</span><span class="lines">@@ -204,7 +204,7 @@
</span><span class="cx">
</span><span class="cx"> BlockDirectory* directory = handle().directory();
</span><span class="cx">
</span><del>- if (handle().directory()->isAllocated(holdLock(directory->bitvectorLock()), &handle())
</del><ins>+ if (handle().directory()->isAllocated(Locker { directory->bitvectorLock() }, &handle())
</ins><span class="cx"> || !marksConveyLivenessDuringMarking(markingVersion)) {
</span><span class="cx"> if (MarkedBlockInternal::verbose)
</span><span class="cx"> dataLog(RawPointer(this), ": Clearing marks without doing anything else.\n");
</span><span class="lines">@@ -239,7 +239,7 @@
</span><span class="cx"> footer().m_markingVersion = markingVersion;
</span><span class="cx">
</span><span class="cx"> // This means we're the first ones to mark any object in this block.
</span><del>- directory->setIsMarkingNotEmpty(holdLock(directory->bitvectorLock()), &handle(), true);
</del><ins>+ directory->setIsMarkingNotEmpty(Locker { directory->bitvectorLock() }, &handle(), true);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void MarkedBlock::resetAllocated()
</span><span class="lines">@@ -285,7 +285,7 @@
</span><span class="cx">
</span><span class="cx"> void MarkedBlock::Handle::didConsumeFreeList()
</span><span class="cx"> {
</span><del>- auto locker = holdLock(blockFooter().m_lock);
</del><ins>+ Locker locker { blockFooter().m_lock };
</ins><span class="cx"> if (MarkedBlockInternal::verbose)
</span><span class="cx"> dataLog(RawPointer(this), ": MarkedBlock::Handle::didConsumeFreeList!\n");
</span><span class="cx"> ASSERT(isFreeListed());
</span><span class="lines">@@ -306,7 +306,7 @@
</span><span class="cx"> void MarkedBlock::noteMarkedSlow()
</span><span class="cx"> {
</span><span class="cx"> BlockDirectory* directory = handle().directory();
</span><del>- directory->setIsMarkingRetired(holdLock(directory->bitvectorLock()), &handle(), true);
</del><ins>+ directory->setIsMarkingRetired(Locker { directory->bitvectorLock() }, &handle(), true);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void MarkedBlock::Handle::removeFromDirectory()
</span><span class="lines">@@ -369,7 +369,7 @@
</span><span class="cx"> {
</span><span class="cx"> CommaPrinter comma;
</span><span class="cx"> directory()->forEachBitVectorWithName(
</span><del>- holdLock(directory()->bitvectorLock()),
</del><ins>+ Locker { directory()->bitvectorLock() },
</ins><span class="cx"> [&](auto vectorRef, const char* name) {
</span><span class="cx"> out.print(comma, name, ":", vectorRef[index()] ? "YES" : "no");
</span><span class="cx"> });
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapMarkedBlockInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/MarkedBlockInlines.h (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/MarkedBlockInlines.h 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/heap/MarkedBlockInlines.h 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -168,7 +168,7 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>- auto locker = holdLock(footer.m_lock);
</del><ins>+ Locker locker { footer.m_lock };
</ins><span class="cx">
</span><span class="cx"> ASSERT(!isFreeListed());
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapMarkingConstraintcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/MarkingConstraint.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/MarkingConstraint.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/heap/MarkingConstraint.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx"> if (verboseMarkingConstraint && visitCounter.visitCount())
</span><span class="cx"> dataLog("(", abbreviatedName(), " visited ", visitCounter.visitCount(), " in doParallelWork)");
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> m_lastVisitCount += visitCounter.visitCount();
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapMarkingConstraintSolvercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/MarkingConstraintSolver.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/MarkingConstraintSolver.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/heap/MarkingConstraintSolver.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -152,7 +152,7 @@
</span><span class="cx">
</span><span class="cx"> void MarkingConstraintSolver::addParallelTask(RefPtr<SharedTask<void(SlotVisitor&)>> task, MarkingConstraint& constraint)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> m_toExecuteInParallel.append(TaskWithConstraint(WTFMove(task), &constraint));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -164,7 +164,7 @@
</span><span class="cx"> unsigned indexToRun = UINT_MAX;
</span><span class="cx"> TaskWithConstraint task;
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx">
</span><span class="cx"> for (;;) {
</span><span class="cx"> auto tryParallelWork = [&] () -> bool {
</span><span class="lines">@@ -241,7 +241,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx">
</span><span class="cx"> if (doParallelWorkMode) {
</span><span class="cx"> if (!m_toExecuteInParallel.isEmpty()
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapParallelSourceAdapterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/ParallelSourceAdapter.h (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/ParallelSourceAdapter.h 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/heap/ParallelSourceAdapter.h 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx">
</span><span class="cx"> InnerType run() final
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> do {
</span><span class="cx"> if (m_innerSource) {
</span><span class="cx"> if (InnerType result = m_innerSource->run())
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapSlotVisitorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/SlotVisitor.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/SlotVisitor.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/heap/SlotVisitor.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -464,7 +464,7 @@
</span><span class="cx"> {
</span><span class="cx"> if (mutatorIsStoppedIsUpToDate())
</span><span class="cx"> return;
</span><del>- updateMutatorIsStopped(holdLock(m_rightToRun));
</del><ins>+ updateMutatorIsStopped(Locker { m_rightToRun });
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool SlotVisitor::hasAcknowledgedThatTheMutatorIsResumed() const
</span><span class="lines">@@ -489,7 +489,7 @@
</span><span class="cx"> RELEASE_ASSERT_NOT_REACHED();
</span><span class="cx"> }
</span><span class="cx">
</span><del>- auto locker = holdLock(m_rightToRun);
</del><ins>+ Locker locker { m_rightToRun };
</ins><span class="cx">
</span><span class="cx"> while (!hasElapsed(timeout)) {
</span><span class="cx"> updateMutatorIsStopped(locker);
</span><span class="lines">@@ -521,7 +521,7 @@
</span><span class="cx">
</span><span class="cx"> size_t cellsRequested = bytesRequested / MarkedBlock::atomSize;
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_heap.m_markingMutex);
</del><ins>+ Locker locker { m_heap.m_markingMutex };
</ins><span class="cx"> forEachMarkStack(
</span><span class="cx"> [&] (MarkStackArray& stack) -> IterationStatus {
</span><span class="cx"> cellsRequested -= correspondingGlobalStack(stack).transferTo(stack, cellsRequested);
</span><span class="lines">@@ -541,7 +541,7 @@
</span><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_rightToRun);
</del><ins>+ Locker locker { m_rightToRun };
</ins><span class="cx">
</span><span class="cx"> while (!isDone()) {
</span><span class="cx"> updateMutatorIsStopped(locker);
</span><span class="lines">@@ -606,7 +606,7 @@
</span><span class="cx"> RefPtr<SharedTask<void(SlotVisitor&)>> bonusTask;
</span><span class="cx">
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_heap.m_markingMutex);
</del><ins>+ Locker locker { m_heap.m_markingMutex };
</ins><span class="cx"> if (isActive)
</span><span class="cx"> m_heap.m_numberOfActiveParallelMarkers--;
</span><span class="cx"> m_heap.m_numberOfWaitingParallelMarkers++;
</span><span class="lines">@@ -685,7 +685,7 @@
</span><span class="cx"> // The main thread could still be running, and may run for a while. Unless we clear the task
</span><span class="cx"> // ourselves, we will keep looping around trying to run the task.
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_heap.m_markingMutex);
</del><ins>+ Locker locker { m_heap.m_markingMutex };
</ins><span class="cx"> if (m_heap.m_bonusVisitorTask == bonusTask)
</span><span class="cx"> m_heap.m_bonusVisitorTask = nullptr;
</span><span class="cx"> bonusTask = nullptr;
</span><span class="lines">@@ -721,13 +721,13 @@
</span><span class="cx"> return drainInParallel(timeout);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- donateAll(holdLock(m_heap.m_markingMutex));
</del><ins>+ donateAll(Locker { m_heap.m_markingMutex });
</ins><span class="cx"> return waitForTermination(timeout);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> SlotVisitor::SharedDrainResult SlotVisitor::waitForTermination(MonotonicTime timeout)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_heap.m_markingMutex);
</del><ins>+ Locker locker { m_heap.m_markingMutex };
</ins><span class="cx"> for (;;) {
</span><span class="cx"> if (hasElapsed(timeout))
</span><span class="cx"> return SharedDrainResult::TimedOut;
</span><span class="lines">@@ -746,7 +746,7 @@
</span><span class="cx"> if (isEmpty())
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- donateAll(holdLock(m_heap.m_markingMutex));
</del><ins>+ donateAll(Locker { m_heap.m_markingMutex });
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void SlotVisitor::donateAll(const AbstractLocker&)
</span><span class="lines">@@ -783,7 +783,7 @@
</span><span class="cx"> {
</span><span class="cx"> dataLogLnIf(Options::verboseVisitRace(), toCString("GC visit race: ", race));
</span><span class="cx">
</span><del>- auto locker = holdLock(heap()->m_raceMarkStackLock);
</del><ins>+ Locker locker { heap()->m_raceMarkStackLock };
</ins><span class="cx"> JSCell* cell = race.cell();
</span><span class="cx"> cell->setCellState(CellState::PossiblyGrey);
</span><span class="cx"> heap()->m_raceMarkStack->append(cell);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapSubspacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/Subspace.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/Subspace.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/heap/Subspace.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -95,7 +95,7 @@
</span><span class="cx">
</span><span class="cx"> BlockDirectory* run() final
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> BlockDirectory* result = m_directory;
</span><span class="cx"> if (result)
</span><span class="cx"> m_directory = result->nextDirectoryInSubspace();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapSubspaceInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/SubspaceInlines.h (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/SubspaceInlines.h 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/heap/SubspaceInlines.h 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -108,7 +108,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> if (!m_needToVisitPreciseAllocations)
</span><span class="cx"> return;
</span><span class="cx"> m_needToVisitPreciseAllocations = false;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorJSInjectedScriptHostcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -758,7 +758,7 @@
</span><span class="cx"> ASSERT(to);
</span><span class="cx"> ASSERT(to->vm().heapProfiler()->activeHeapAnalyzer() == this);
</span><span class="cx">
</span><del>- auto locker = holdLock(m_mutex);
</del><ins>+ Locker locker { m_mutex };
</ins><span class="cx">
</span><span class="cx"> if (from && from != to) {
</span><span class="cx"> m_successors.ensure(from, [] {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitExecutableAllocatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/ExecutableAllocator.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/ExecutableAllocator.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/jit/ExecutableAllocator.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -464,7 +464,7 @@
</span><span class="cx"> RefPtr<ExecutableMemoryHandle> allocate(size_t sizeInBytes)
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(JUMP_ISLANDS)
</span><del>- auto locker = holdLock(getLock());
</del><ins>+ Locker locker { getLock() };
</ins><span class="cx">
</span><span class="cx"> unsigned start = 0;
</span><span class="cx"> if (Options::useRandomizingExecutableIslandAllocation())
</span><span class="lines">@@ -535,7 +535,7 @@
</span><span class="cx">
</span><span class="cx"> MetaAllocator::Statistics currentStatistics()
</span><span class="cx"> {
</span><del>- auto locker = holdLock(getLock());
</del><ins>+ Locker locker { getLock() };
</ins><span class="cx"> MetaAllocator::Statistics result { 0, 0, 0 };
</span><span class="cx"> forEachAllocator([&] (Allocator& allocator) {
</span><span class="cx"> auto allocatorStats = allocator.currentStatistics(locker);
</span><span class="lines">@@ -581,7 +581,7 @@
</span><span class="cx">
</span><span class="cx"> void* makeIsland(uintptr_t jumpLocation, uintptr_t newTarget, bool concurrently)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(getLock());
</del><ins>+ Locker locker { getLock() };
</ins><span class="cx"> return islandForJumpLocation(locker, jumpLocation, newTarget, concurrently);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejsccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jsc.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jsc.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/jsc.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -1801,7 +1801,7 @@
</span><span class="cx"> Worker::Worker(Workers& workers)
</span><span class="cx"> : m_workers(workers)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_workers.m_lock);
</del><ins>+ Locker locker { m_workers.m_lock };
</ins><span class="cx"> m_workers.m_workers.append(this);
</span><span class="cx">
</span><span class="cx"> *currentWorker() = this;
</span><span class="lines">@@ -1809,7 +1809,7 @@
</span><span class="cx">
</span><span class="cx"> Worker::~Worker()
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_workers.m_lock);
</del><ins>+ Locker locker { m_workers.m_lock };
</ins><span class="cx"> RELEASE_ASSERT(isOnList());
</span><span class="cx"> remove();
</span><span class="cx"> }
</span><span class="lines">@@ -1821,7 +1821,7 @@
</span><span class="cx">
</span><span class="cx"> RefPtr<Message> Worker::dequeue()
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_workers.m_lock);
</del><ins>+ Locker locker { m_workers.m_lock };
</ins><span class="cx"> while (m_messages.isEmpty())
</span><span class="cx"> m_workers.m_condition.wait(m_workers.m_lock);
</span><span class="cx"> return m_messages.takeFirst();
</span><span class="lines">@@ -1856,7 +1856,7 @@
</span><span class="cx"> template<typename Func>
</span><span class="cx"> void Workers::broadcast(const Func& func)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> for (Worker* worker = m_workers.begin(); worker != m_workers.end(); worker = worker->next()) {
</span><span class="cx"> if (worker != &Worker::current())
</span><span class="cx"> func(locker, *worker);
</span><span class="lines">@@ -1866,7 +1866,7 @@
</span><span class="cx">
</span><span class="cx"> void Workers::report(const String& string)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> m_reports.append(string.isolatedCopy());
</span><span class="cx"> m_condition.notifyAll();
</span><span class="cx"> }
</span><span class="lines">@@ -1873,7 +1873,7 @@
</span><span class="cx">
</span><span class="cx"> String Workers::tryGetReport()
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> if (m_reports.isEmpty())
</span><span class="cx"> return String();
</span><span class="cx"> return m_reports.takeFirst();
</span><span class="lines">@@ -1881,7 +1881,7 @@
</span><span class="cx">
</span><span class="cx"> String Workers::getReport()
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> while (m_reports.isEmpty())
</span><span class="cx"> m_condition.wait(m_lock);
</span><span class="cx"> return m_reports.takeFirst();
</span><span class="lines">@@ -1982,7 +1982,7 @@
</span><span class="cx"> [&] (VM&, GlobalObject* globalObject, bool& success) {
</span><span class="cx"> // Notify the thread that started us that we have registered a worker.
</span><span class="cx"> {
</span><del>- auto locker = holdLock(didStartLock);
</del><ins>+ Locker locker { didStartLock };
</ins><span class="cx"> didStart = true;
</span><span class="cx"> didStartCondition.notifyOne();
</span><span class="cx"> }
</span><span class="lines">@@ -1999,7 +1999,7 @@
</span><span class="cx"> })->detach();
</span><span class="cx">
</span><span class="cx"> {
</span><del>- auto locker = holdLock(didStartLock);
</del><ins>+ Locker locker { didStartLock };
</ins><span class="cx"> while (!didStart)
</span><span class="cx"> didStartCondition.wait(didStartLock);
</span><span class="cx"> }
</span><span class="lines">@@ -2389,7 +2389,7 @@
</span><span class="cx"> if (!finalizationRegistry)
</span><span class="cx"> return throwVMTypeError(globalObject, scope, "first argument is not a finalizationRegistry"_s);
</span><span class="cx">
</span><del>- auto locker = holdLock(finalizationRegistry->cellLock());
</del><ins>+ Locker locker { finalizationRegistry->cellLock() };
</ins><span class="cx"> return JSValue::encode(jsNumber(finalizationRegistry->liveCount(locker)));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -2402,7 +2402,7 @@
</span><span class="cx"> if (!finalizationRegistry)
</span><span class="cx"> return throwVMTypeError(globalObject, scope, "first argument is not a finalizationRegistry"_s);
</span><span class="cx">
</span><del>- auto locker = holdLock(finalizationRegistry->cellLock());
</del><ins>+ Locker locker { finalizationRegistry->cellLock() };
</ins><span class="cx"> return JSValue::encode(jsNumber(finalizationRegistry->deadCount(locker)));
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeDeferredWorkTimercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/DeferredWorkTimer.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/DeferredWorkTimer.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/DeferredWorkTimer.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -45,7 +45,7 @@
</span><span class="cx"> void DeferredWorkTimer::doWork(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> ASSERT(vm.currentThreadIsHoldingAPILock());
</span><del>- auto locker = holdLock(m_taskLock);
</del><ins>+ Locker locker { m_taskLock };
</ins><span class="cx"> cancelTimer();
</span><span class="cx"> if (!m_runTasks)
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeErrorInstancecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ErrorInstance.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ErrorInstance.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/ErrorInstance.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -124,7 +124,7 @@
</span><span class="cx">
</span><span class="cx"> std::unique_ptr<Vector<StackFrame>> stackTrace = getStackTrace(globalObject, vm, this, useCurrentFrame);
</span><span class="cx"> {
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx"> m_stackTrace = WTFMove(stackTrace);
</span><span class="cx"> }
</span><span class="cx"> vm.heap.writeBarrier(this);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeEvalExecutablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/EvalExecutable.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/EvalExecutable.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/EvalExecutable.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx"> visitor.append(thisObject->m_unlinkedEvalCodeBlock);
</span><span class="cx"> visitor.append(thisObject->m_evalCodeBlock);
</span><span class="cx"> if (TemplateObjectMap* map = thisObject->m_templateObjectMap.get()) {
</span><del>- auto locker = holdLock(thisObject->cellLock());
</del><ins>+ Locker locker { thisObject->cellLock() };
</ins><span class="cx"> for (auto& entry : *map)
</span><span class="cx"> visitor.append(entry.value);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeFileBasedFuzzerAgentBasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/FileBasedFuzzerAgentBase.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/FileBasedFuzzerAgentBase.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/FileBasedFuzzerAgentBase.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx">
</span><span class="cx"> SpeculatedType FileBasedFuzzerAgentBase::getPrediction(CodeBlock* codeBlock, const CodeOrigin& codeOrigin, SpeculatedType original)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx">
</span><span class="cx"> ScriptExecutable* ownerExecutable = codeBlock->ownerExecutable();
</span><span class="cx"> const auto& sourceURL = ownerExecutable->sourceURL();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeFunctionExecutablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/FunctionExecutable.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/FunctionExecutable.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/FunctionExecutable.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -80,7 +80,7 @@
</span><span class="cx"> if (RareData* rareData = thisObject->m_rareData.get()) {
</span><span class="cx"> visitor.append(rareData->m_cachedPolyProtoStructure);
</span><span class="cx"> if (TemplateObjectMap* map = rareData->m_templateObjectMap.get()) {
</span><del>- auto locker = holdLock(thisObject->cellLock());
</del><ins>+ Locker locker { thisObject->cellLock() };
</ins><span class="cx"> for (auto& entry : *map)
</span><span class="cx"> visitor.append(entry.value);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSArraycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSArray.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSArray.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/JSArray.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -793,7 +793,7 @@
</span><span class="cx"> return true;
</span><span class="cx">
</span><span class="cx"> DisallowGC disallowGC;
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx">
</span><span class="cx"> if (startIndex + count > vectorLength)
</span><span class="cx"> count = vectorLength - startIndex;
</span><span class="lines">@@ -981,7 +981,7 @@
</span><span class="cx"> // Need to have GC deferred around the unshiftCountSlowCase(), since that leaves the butterfly in
</span><span class="cx"> // a weird state: some parts of it will be left uninitialized, which we will fill in here.
</span><span class="cx"> DeferGC deferGC(vm.heap);
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx">
</span><span class="cx"> if (moveFront && storage->m_indexBias >= count) {
</span><span class="cx"> // When moving Butterfly's head to adjust property-storage, we must take a structure lock.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSArrayBufferViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSArrayBufferView.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSArrayBufferView.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/JSArrayBufferView.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -225,7 +225,7 @@
</span><span class="cx">
</span><span class="cx"> void JSArrayBufferView::detach()
</span><span class="cx"> {
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx"> RELEASE_ASSERT(hasArrayBuffer());
</span><span class="cx"> RELEASE_ASSERT(!isShared());
</span><span class="cx"> m_length = 0;
</span><span class="lines">@@ -309,7 +309,7 @@
</span><span class="cx"> structure->outOfLineCapacity(), false, 0, 0));
</span><span class="cx">
</span><span class="cx"> {
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx"> butterfly()->indexingHeader()->setArrayBuffer(buffer.get());
</span><span class="cx"> m_vector.setWithoutBarrier(buffer->data(), m_length);
</span><span class="cx"> WTF::storeStoreFence();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSCellh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSCell.h (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSCell.h 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/JSCell.h 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -123,7 +123,7 @@
</span><span class="cx">
</span><span class="cx"> // We use this abstraction to make it easier to grep for places where we lock cells.
</span><span class="cx"> // to lock a cell you can just do:
</span><del>- // auto locker = holdLock(cell->cellLocker());
</del><ins>+ // Locker locker { cell->cellLocker() };
</ins><span class="cx"> JSCellLock& cellLock() { return *reinterpret_cast<JSCellLock*>(this); }
</span><span class="cx">
</span><span class="cx"> JSType type() const;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSFinalizationRegistrycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSFinalizationRegistry.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSFinalizationRegistry.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/JSFinalizationRegistry.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -68,7 +68,7 @@
</span><span class="cx">
</span><span class="cx"> auto* thisObject = jsCast<JSFinalizationRegistry*>(cell);
</span><span class="cx">
</span><del>- auto locker = holdLock(thisObject->cellLock());
</del><ins>+ Locker locker { thisObject->cellLock() };
</ins><span class="cx"> for (const auto& iter : thisObject->m_liveRegistrations) {
</span><span class="cx"> for (auto& registration : iter.value)
</span><span class="cx"> visitor.append(registration.holdings);
</span><span class="lines">@@ -98,7 +98,7 @@
</span><span class="cx">
</span><span class="cx"> void JSFinalizationRegistry::finalizeUnconditionally(VM& vm)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx">
</span><span class="cx"> #if ASSERT_ENABLED
</span><span class="cx"> for (const auto& iter : m_deadRegistrations)
</span><span class="lines">@@ -174,7 +174,7 @@
</span><span class="cx">
</span><span class="cx"> JSValue JSFinalizationRegistry::takeDeadHoldingsValue()
</span><span class="cx"> {
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx"> JSValue result;
</span><span class="cx"> if (m_noUnregistrationDead.size())
</span><span class="cx"> result = m_noUnregistrationDead.takeLast().get();
</span><span class="lines">@@ -198,7 +198,7 @@
</span><span class="cx">
</span><span class="cx"> void JSFinalizationRegistry::registerTarget(VM& vm, JSObject* target, JSValue holdings, JSValue token)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx"> Registration registration;
</span><span class="cx"> registration.target = target;
</span><span class="cx"> registration.holdings.setWithoutWriteBarrier(holdings);
</span><span class="lines">@@ -214,7 +214,7 @@
</span><span class="cx"> bool JSFinalizationRegistry::unregister(VM&, JSObject* token)
</span><span class="cx"> {
</span><span class="cx"> // We don't need to write barrier ourselves here because we will only point to less things after this finishes.
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx"> bool result = m_liveRegistrations.remove(token);
</span><span class="cx"> result |= m_deadRegistrations.remove(token);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGenericTypedArrayViewInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -534,7 +534,7 @@
</span><span class="cx"> size_t byteSize;
</span><span class="cx">
</span><span class="cx"> {
</span><del>- auto locker = holdLock(thisObject->cellLock());
</del><ins>+ Locker locker { thisObject->cellLock() };
</ins><span class="cx"> mode = thisObject->m_mode;
</span><span class="cx"> vector = thisObject->vector();
</span><span class="cx"> byteSize = thisObject->byteSize();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGlobalObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -383,7 +383,7 @@
</span><span class="cx"> profiler = &globalObject->vm().ensureSamplingProfiler(Stopwatch::create());
</span><span class="cx">
</span><span class="cx"> {
</span><del>- auto locker = holdLock(profiler->getLock());
</del><ins>+ Locker locker { profiler->getLock() };
</ins><span class="cx"> profiler->pause(locker);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSModuleNamespaceObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx"> m_moduleRecord.set(vm, this, moduleRecord);
</span><span class="cx"> m_names = FixedVector<Identifier>(resolutions.size());
</span><span class="cx"> {
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx"> unsigned index = 0;
</span><span class="cx"> for (const auto& pair : resolutions) {
</span><span class="cx"> m_names[index] = pair.first;
</span><span class="lines">@@ -95,7 +95,7 @@
</span><span class="cx"> Base::visitChildren(thisObject, visitor);
</span><span class="cx"> visitor.append(thisObject->m_moduleRecord);
</span><span class="cx"> {
</span><del>- auto locker = holdLock(thisObject->cellLock());
</del><ins>+ Locker locker { thisObject->cellLock() };
</ins><span class="cx"> for (auto& pair : thisObject->m_exports)
</span><span class="cx"> visitor.appendHidden(pair.value.moduleRecord);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSObject.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSObject.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/JSObject.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -384,7 +384,7 @@
</span><span class="cx"> // butterfly with contiguous shape for new array storage butterfly. When converting the butterfly
</span><span class="cx"> // with contiguous shape to array storage, we always allocate a new one. Holding this lock for contiguous
</span><span class="cx"> // butterflies is unnecessary since contiguous shaped butterfly never becomes broken state.
</span><del>- locker = holdLock(cellLock());
</del><ins>+ locker = Locker { cellLock() };
</ins><span class="cx"> break;
</span><span class="cx"> default:
</span><span class="cx"> break;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSRunLoopTimercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSRunLoopTimer.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSRunLoopTimer.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/JSRunLoopTimer.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -72,7 +72,7 @@
</span><span class="cx"> Vector<Ref<JSRunLoopTimer>> timersToFire;
</span><span class="cx">
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> RunLoop* currentRunLoop = &RunLoop::current();
</span><span class="cx"> EpochTime nowEpochTime = epochTime(0_s);
</span><span class="cx"> for (auto& entry : m_mapping) {
</span><span class="lines">@@ -120,7 +120,7 @@
</span><span class="cx"> {
</span><span class="cx"> auto data = makeUnique<PerVMData>(*this, vm.runLoop());
</span><span class="cx">
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> auto addResult = m_mapping.add({ vm.apiLock() }, WTFMove(data));
</span><span class="cx"> RELEASE_ASSERT(addResult.isNewEntry);
</span><span class="cx"> }
</span><span class="lines">@@ -127,7 +127,7 @@
</span><span class="cx">
</span><span class="cx"> void JSRunLoopTimer::Manager::unregisterVM(VM& vm)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx">
</span><span class="cx"> auto iter = m_mapping.find({ vm.apiLock() });
</span><span class="cx"> RELEASE_ASSERT(iter != m_mapping.end());
</span><span class="lines">@@ -138,7 +138,7 @@
</span><span class="cx"> {
</span><span class="cx"> EpochTime fireEpochTime = epochTime(delay);
</span><span class="cx">
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> auto iter = m_mapping.find(timer.m_apiLock);
</span><span class="cx"> RELEASE_ASSERT(iter != m_mapping.end()); // We don't allow calling this after the VM dies.
</span><span class="cx">
</span><span class="lines">@@ -161,7 +161,7 @@
</span><span class="cx">
</span><span class="cx"> void JSRunLoopTimer::Manager::cancelTimer(JSRunLoopTimer& timer)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> auto iter = m_mapping.find(timer.m_apiLock);
</span><span class="cx"> if (iter == m_mapping.end()) {
</span><span class="cx"> // It's trivial to allow this to be called after the VM dies, so we allow for it.
</span><span class="lines">@@ -192,7 +192,7 @@
</span><span class="cx">
</span><span class="cx"> Optional<Seconds> JSRunLoopTimer::Manager::timeUntilFire(JSRunLoopTimer& timer)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> auto iter = m_mapping.find(timer.m_apiLock);
</span><span class="cx"> RELEASE_ASSERT(iter != m_mapping.end()); // We only allow this to be called with a live VM.
</span><span class="cx">
</span><span class="lines">@@ -212,7 +212,7 @@
</span><span class="cx"> NO_TAIL_CALLS();
</span><span class="cx">
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> if (!m_isScheduled) {
</span><span class="cx"> // We raced between this callback being called and cancel() being called.
</span><span class="cx"> // That's fine, we just don't do anything here.
</span><span class="lines">@@ -220,7 +220,7 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>- auto locker = holdLock(m_apiLock.get());
</del><ins>+ Locker locker { m_apiLock.get() };
</ins><span class="cx"> RefPtr<VM> vm = m_apiLock->vm();
</span><span class="cx"> if (!vm) {
</span><span class="cx"> // The VM has been destroyed, so we should just give up.
</span><span class="lines">@@ -247,12 +247,12 @@
</span><span class="cx"> void JSRunLoopTimer::setTimeUntilFire(Seconds intervalInSeconds)
</span><span class="cx"> {
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> m_isScheduled = true;
</span><span class="cx"> Manager::shared().scheduleTimer(*this, intervalInSeconds);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- auto locker = holdLock(m_timerCallbacksLock);
</del><ins>+ Locker locker { m_timerCallbacksLock };
</ins><span class="cx"> for (auto& task : m_timerSetCallbacks)
</span><span class="cx"> task->run();
</span><span class="cx"> }
</span><span class="lines">@@ -259,7 +259,7 @@
</span><span class="cx">
</span><span class="cx"> void JSRunLoopTimer::cancelTimer()
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> m_isScheduled = false;
</span><span class="cx"> Manager::shared().cancelTimer(*this);
</span><span class="cx"> }
</span><span class="lines">@@ -266,13 +266,13 @@
</span><span class="cx">
</span><span class="cx"> void JSRunLoopTimer::addTimerSetNotification(TimerNotificationCallback callback)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_timerCallbacksLock);
</del><ins>+ Locker locker { m_timerCallbacksLock };
</ins><span class="cx"> m_timerSetCallbacks.add(callback);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void JSRunLoopTimer::removeTimerSetNotification(TimerNotificationCallback callback)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_timerCallbacksLock);
</del><ins>+ Locker locker { m_timerCallbacksLock };
</ins><span class="cx"> m_timerSetCallbacks.remove(callback);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSSegmentedVariableObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSSegmentedVariableObject.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSSegmentedVariableObject.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/JSSegmentedVariableObject.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">
</span><span class="cx"> ScopeOffset JSSegmentedVariableObject::findVariableIndex(void* variableAddress)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx">
</span><span class="cx"> for (unsigned i = m_variables.size(); i--;) {
</span><span class="cx"> if (&m_variables[i] != variableAddress)
</span><span class="lines">@@ -51,7 +51,7 @@
</span><span class="cx">
</span><span class="cx"> ScopeOffset JSSegmentedVariableObject::addVariables(unsigned numberOfVariablesToAdd, JSValue initialValue)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx">
</span><span class="cx"> size_t oldSize = m_variables.size();
</span><span class="cx"> m_variables.grow(oldSize + numberOfVariablesToAdd);
</span><span class="lines">@@ -71,7 +71,7 @@
</span><span class="cx">
</span><span class="cx"> // FIXME: We could avoid locking here if SegmentedVector was lock-free. It could be made lock-free
</span><span class="cx"> // relatively easily.
</span><del>- auto locker = holdLock(thisObject->cellLock());
</del><ins>+ Locker locker { thisObject->cellLock() };
</ins><span class="cx"> for (unsigned i = thisObject->m_variables.size(); i--;)
</span><span class="cx"> visitor.appendHidden(thisObject->m_variables[i]);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeModuleProgramExecutablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ModuleProgramExecutable.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ModuleProgramExecutable.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/ModuleProgramExecutable.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -89,7 +89,7 @@
</span><span class="cx"> visitor.append(thisObject->m_moduleEnvironmentSymbolTable);
</span><span class="cx"> visitor.append(thisObject->m_moduleProgramCodeBlock);
</span><span class="cx"> if (TemplateObjectMap* map = thisObject->m_templateObjectMap.get()) {
</span><del>- auto locker = holdLock(thisObject->cellLock());
</del><ins>+ Locker locker { thisObject->cellLock() };
</ins><span class="cx"> for (auto& entry : *map)
</span><span class="cx"> visitor.append(entry.value);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeNarrowingNumberPredictionFuzzerAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/NarrowingNumberPredictionFuzzerAgent.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/NarrowingNumberPredictionFuzzerAgent.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/NarrowingNumberPredictionFuzzerAgent.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx">
</span><span class="cx"> SpeculatedType NarrowingNumberPredictionFuzzerAgent::getPrediction(CodeBlock* codeBlock, const CodeOrigin& codeOrigin, SpeculatedType original)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx">
</span><span class="cx"> if (!(original && speculationChecked(original, SpecBytecodeNumber)))
</span><span class="cx"> return original;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeProgramExecutablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ProgramExecutable.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ProgramExecutable.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/ProgramExecutable.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -219,7 +219,7 @@
</span><span class="cx"> visitor.append(thisObject->m_unlinkedProgramCodeBlock);
</span><span class="cx"> visitor.append(thisObject->m_programCodeBlock);
</span><span class="cx"> if (TemplateObjectMap* map = thisObject->m_templateObjectMap.get()) {
</span><del>- auto locker = holdLock(thisObject->cellLock());
</del><ins>+ Locker locker { thisObject->cellLock() };
</ins><span class="cx"> for (auto& entry : *map)
</span><span class="cx"> visitor.append(entry.value);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeRandomizingFuzzerAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/RandomizingFuzzerAgent.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/RandomizingFuzzerAgent.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/RandomizingFuzzerAgent.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">
</span><span class="cx"> SpeculatedType RandomizingFuzzerAgent::getPrediction(CodeBlock* codeBlock, const CodeOrigin& codeOrigin, SpeculatedType original)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> uint32_t high = m_random.getUint32();
</span><span class="cx"> uint32_t low = m_random.getUint32();
</span><span class="cx"> SpeculatedType generated = static_cast<SpeculatedType>((static_cast<uint64_t>(high) << 32) | low) & SpecFullTop;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeRegExpcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/RegExp.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/RegExp.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/RegExp.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -242,7 +242,7 @@
</span><span class="cx">
</span><span class="cx"> void RegExp::compile(VM* vm, Yarr::YarrCharSize charSize)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx">
</span><span class="cx"> Yarr::YarrPattern pattern(m_patternString, m_flags, m_constructionErrorCode);
</span><span class="cx"> if (hasError(m_constructionErrorCode)) {
</span><span class="lines">@@ -293,7 +293,7 @@
</span><span class="cx"> bool RegExp::matchConcurrently(
</span><span class="cx"> VM& vm, const String& s, unsigned startOffset, int& position, Vector<int>& ovector)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx">
</span><span class="cx"> if (!hasCodeFor(s.is8Bit() ? Yarr::Char8 : Yarr::Char16))
</span><span class="cx"> return false;
</span><span class="lines">@@ -306,7 +306,7 @@
</span><span class="cx">
</span><span class="cx"> void RegExp::compileMatchOnly(VM* vm, Yarr::YarrCharSize charSize)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx">
</span><span class="cx"> Yarr::YarrPattern pattern(m_patternString, m_flags, m_constructionErrorCode);
</span><span class="cx"> if (hasError(m_constructionErrorCode)) {
</span><span class="lines">@@ -356,7 +356,7 @@
</span><span class="cx">
</span><span class="cx"> bool RegExp::matchConcurrently(VM& vm, const String& s, unsigned startOffset, MatchResult& result)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx">
</span><span class="cx"> if (!hasMatchOnlyCodeFor(s.is8Bit() ? Yarr::Char8 : Yarr::Char16))
</span><span class="cx"> return false;
</span><span class="lines">@@ -367,7 +367,7 @@
</span><span class="cx">
</span><span class="cx"> void RegExp::deleteCode()
</span><span class="cx"> {
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx">
</span><span class="cx"> if (!hasCode())
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeSamplingProfilercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/SamplingProfiler.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/SamplingProfiler.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/SamplingProfiler.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -350,13 +350,13 @@
</span><span class="cx"> if (m_vm.entryScope) {
</span><span class="cx"> Seconds nowTime = m_stopwatch->elapsedTime();
</span><span class="cx">
</span><del>- auto machineThreadsLocker = holdLock(m_vm.heap.machineThreads().getLock());
- auto codeBlockSetLocker = holdLock(m_vm.heap.codeBlockSet().getLock());
- auto executableAllocatorLocker = holdLock(ExecutableAllocator::singleton().getLock());
</del><ins>+ Locker machineThreadsLocker { m_vm.heap.machineThreads().getLock() };
+ Locker codeBlockSetLocker { m_vm.heap.codeBlockSet().getLock() };
+ Locker executableAllocatorLocker { ExecutableAllocator::singleton().getLock() };
</ins><span class="cx"> Optional<LockHolder> wasmCalleesLocker;
</span><span class="cx"> #if ENABLE(WEBASSEMBLY)
</span><span class="cx"> if (Wasm::isSupported())
</span><del>- wasmCalleesLocker = holdLock(Wasm::CalleeRegistry::singleton().getLock());
</del><ins>+ wasmCalleesLocker = Locker { Wasm::CalleeRegistry::singleton().getLock() };
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> auto didSuspend = m_jscExecutionThread->suspend();
</span><span class="lines">@@ -951,7 +951,7 @@
</span><span class="cx"> String SamplingProfiler::stackTracesAsJSON()
</span><span class="cx"> {
</span><span class="cx"> DeferGC deferGC(m_vm.heap);
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> HeapIterationScope heapIterationScope(m_vm.heap);
</span><span class="lines">@@ -1027,7 +1027,7 @@
</span><span class="cx">
</span><span class="cx"> void SamplingProfiler::reportTopFunctions(PrintStream& out)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> DeferGCForAWhile deferGC(m_vm.heap);
</span><span class="cx">
</span><span class="cx"> {
</span><span class="lines">@@ -1088,7 +1088,7 @@
</span><span class="cx">
</span><span class="cx"> void SamplingProfiler::reportTopBytecodes(PrintStream& out)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> DeferGCForAWhile deferGC(m_vm.heap);
</span><span class="cx">
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeScriptExecutablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ScriptExecutable.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ScriptExecutable.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/ScriptExecutable.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -455,7 +455,7 @@
</span><span class="cx"> TemplateObjectMap& templateObjectMap = ensureTemplateObjectMap(vm);
</span><span class="cx"> TemplateObjectMap::AddResult result;
</span><span class="cx"> {
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx"> result = templateObjectMap.add(descriptor->endOffset(), WriteBarrier<JSArray>());
</span><span class="cx"> }
</span><span class="cx"> if (JSArray* array = result.iterator->value.get())
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeSparseArrayValueMapcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/SparseArrayValueMap.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/SparseArrayValueMap.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/SparseArrayValueMap.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx"> AddResult result;
</span><span class="cx"> size_t increasedCapacity = 0;
</span><span class="cx"> {
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx"> result = m_map.add(i, SparseArrayEntry());
</span><span class="cx"> size_t capacity = m_map.capacity();
</span><span class="cx"> if (capacity > m_reportedCapacity) {
</span><span class="lines">@@ -84,13 +84,13 @@
</span><span class="cx">
</span><span class="cx"> void SparseArrayValueMap::remove(iterator it)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx"> m_map.remove(it);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void SparseArrayValueMap::remove(unsigned i)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx"> m_map.remove(i);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -142,7 +142,7 @@
</span><span class="cx">
</span><span class="cx"> JSValue SparseArrayValueMap::getConcurrently(unsigned i)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx"> auto iterator = m_map.find(i);
</span><span class="cx"> if (iterator == m_map.end())
</span><span class="cx"> return JSValue();
</span><span class="lines">@@ -217,7 +217,7 @@
</span><span class="cx"> ASSERT_GC_OBJECT_INHERITS(thisObject, info());
</span><span class="cx"> Base::visitChildren(cell, visitor);
</span><span class="cx"> {
</span><del>- auto locker = holdLock(thisObject->cellLock());
</del><ins>+ Locker locker { thisObject->cellLock() };
</ins><span class="cx"> for (auto& entry : thisObject->m_map)
</span><span class="cx"> visitor.append(entry.value.asValue());
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStructurecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Structure.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Structure.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/Structure.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -710,7 +710,7 @@
</span><span class="cx"> transition->m_prototype.set(vm, transition, prototype);
</span><span class="cx">
</span><span class="cx"> PropertyTable* table = structure->copyPropertyTableForPinning(vm);
</span><del>- transition->pin(holdLock(transition->m_lock), vm, table);
</del><ins>+ transition->pin(Locker { transition->m_lock }, vm, table);
</ins><span class="cx"> transition->setMaxOffset(vm, structure->maxOffset());
</span><span class="cx">
</span><span class="cx"> transition->checkOffsetConsistency();
</span><span class="lines">@@ -802,7 +802,7 @@
</span><span class="cx"> Structure* transition = create(vm, structure, deferred);
</span><span class="cx">
</span><span class="cx"> PropertyTable* table = structure->copyPropertyTableForPinning(vm);
</span><del>- transition->pin(holdLock(transition->m_lock), vm, table);
</del><ins>+ transition->pin(Locker { transition->m_lock }, vm, table);
</ins><span class="cx"> transition->setMaxOffset(vm, structure->maxOffset());
</span><span class="cx"> transition->setDictionaryKind(kind);
</span><span class="cx"> transition->setHasBeenDictionary(true);
</span><span class="lines">@@ -879,7 +879,7 @@
</span><span class="cx"> // table doesn't know how to take into account such wholesale edits.
</span><span class="cx">
</span><span class="cx"> PropertyTable* table = structure->copyPropertyTableForPinning(vm);
</span><del>- transition->pinForCaching(holdLock(transition->m_lock), vm, table);
</del><ins>+ transition->pinForCaching(Locker { transition->m_lock }, vm, table);
</ins><span class="cx"> transition->setMaxOffset(vm, structure->maxOffset());
</span><span class="cx">
</span><span class="cx"> table = transition->propertyTableOrNull();
</span><span class="lines">@@ -902,9 +902,9 @@
</span><span class="cx">
</span><span class="cx"> if (structure->isDictionary()) {
</span><span class="cx"> PropertyTable* table = transition->ensurePropertyTable(vm);
</span><del>- transition->pin(holdLock(transition->m_lock), vm, table);
</del><ins>+ transition->pin(Locker { transition->m_lock }, vm, table);
</ins><span class="cx"> } else {
</span><del>- auto locker = holdLock(structure->m_lock);
</del><ins>+ Locker locker { structure->m_lock };
</ins><span class="cx"> structure->m_transitionTable.add(vm, transition);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -1543,9 +1543,9 @@
</span><span class="cx">
</span><span class="cx"> if (structure->isDictionary()) {
</span><span class="cx"> PropertyTable* table = transition->ensurePropertyTable(vm);
</span><del>- transition->pin(holdLock(transition->m_lock), vm, table);
</del><ins>+ transition->pin(Locker { transition->m_lock }, vm, table);
</ins><span class="cx"> } else {
</span><del>- auto locker = holdLock(structure->m_lock);
</del><ins>+ Locker locker { structure->m_lock };
</ins><span class="cx"> structure->m_transitionTable.add(vm, transition);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStructureCachecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/StructureCache.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/StructureCache.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/StructureCache.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx"> structure = Structure::create(
</span><span class="cx"> vm, globalObject, prototype, typeInfo, classInfo, indexingType, inlineCapacity);
</span><span class="cx"> }
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> m_structures.set(key, structure);
</span><span class="cx"> return structure;
</span><span class="cx"> }
</span><span class="lines">@@ -68,7 +68,7 @@
</span><span class="cx"> RELEASE_ASSERT(!!prototype); // We use nullptr inside the HashMap for prototype to mean poly proto, so user's of this API must provide non-null prototypes.
</span><span class="cx">
</span><span class="cx"> PrototypeKey key { prototype, nullptr, inlineCapacity, JSFinalObject::info(), globalObject };
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> if (Structure* structure = m_structures.get(key)) {
</span><span class="cx"> ASSERT(prototype->mayBePrototype());
</span><span class="cx"> return structure;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeVMcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/VM.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/VM.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/VM.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -585,12 +585,12 @@
</span><span class="cx">
</span><span class="cx"> void waitForVMDestruction()
</span><span class="cx"> {
</span><del>- auto locker = holdLock(s_destructionLock.write());
</del><ins>+ Locker locker { s_destructionLock.write() };
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> VM::~VM()
</span><span class="cx"> {
</span><del>- auto destructionLocker = holdLock(s_destructionLock.read());
</del><ins>+ Locker destructionLocker { s_destructionLock.read() };
</ins><span class="cx">
</span><span class="cx"> Gigacage::removePrimitiveDisableCallback(primitiveGigacageDisabledCallback, this);
</span><span class="cx"> deferredWorkTimer->stopRunningTasks();
</span><span class="lines">@@ -1129,7 +1129,7 @@
</span><span class="cx"> #if ENABLE(DFG_JIT)
</span><span class="cx"> void VM::gatherScratchBufferRoots(ConservativeRoots& conservativeRoots)
</span><span class="cx"> {
</span><del>- auto lock = holdLock(m_scratchBufferLock);
</del><ins>+ Locker locker { m_scratchBufferLock };
</ins><span class="cx"> for (auto* scratchBuffer : m_scratchBuffers) {
</span><span class="cx"> if (scratchBuffer->activeLength()) {
</span><span class="cx"> void* bufferStart = scratchBuffer->dataBuffer();
</span><span class="lines">@@ -1493,7 +1493,7 @@
</span><span class="cx"> if (!size)
</span><span class="cx"> return nullptr;
</span><span class="cx">
</span><del>- auto locker = holdLock(m_scratchBufferLock);
</del><ins>+ Locker locker { m_scratchBufferLock };
</ins><span class="cx">
</span><span class="cx"> if (size > m_sizeOfLastScratchBuffer) {
</span><span class="cx"> // Protect against a N^2 memory usage pathology by ensuring
</span><span class="lines">@@ -1513,7 +1513,7 @@
</span><span class="cx">
</span><span class="cx"> void VM::clearScratchBuffers()
</span><span class="cx"> {
</span><del>- auto lock = holdLock(m_scratchBufferLock);
</del><ins>+ Locker locker { m_scratchBufferLock };
</ins><span class="cx"> for (auto* scratchBuffer : m_scratchBuffers)
</span><span class="cx"> scratchBuffer->setActiveLength(0);
</span><span class="cx"> }
</span><span class="lines">@@ -1687,7 +1687,7 @@
</span><span class="cx">
</span><span class="cx"> void VM::addLoopHintExecutionCounter(const Instruction* instruction)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_loopHintExecutionCountLock);
</del><ins>+ Locker locker { m_loopHintExecutionCountLock };
</ins><span class="cx"> auto addResult = m_loopHintExecutionCounts.add(instruction, std::pair<unsigned, std::unique_ptr<uint64_t>>(0, nullptr));
</span><span class="cx"> if (addResult.isNewEntry) {
</span><span class="cx"> auto ptr = WTF::makeUniqueWithoutFastMallocCheck<uint64_t>();
</span><span class="lines">@@ -1699,7 +1699,7 @@
</span><span class="cx">
</span><span class="cx"> uint64_t* VM::getLoopHintExecutionCounter(const Instruction* instruction)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_loopHintExecutionCountLock);
</del><ins>+ Locker locker { m_loopHintExecutionCountLock };
</ins><span class="cx"> auto iter = m_loopHintExecutionCounts.find(instruction);
</span><span class="cx"> return iter->value.second.get();
</span><span class="cx"> }
</span><span class="lines">@@ -1706,7 +1706,7 @@
</span><span class="cx">
</span><span class="cx"> void VM::removeLoopHintExecutionCounter(const Instruction* instruction)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_loopHintExecutionCountLock);
</del><ins>+ Locker locker { m_loopHintExecutionCountLock };
</ins><span class="cx"> auto iter = m_loopHintExecutionCounts.find(instruction);
</span><span class="cx"> RELEASE_ASSERT(!!iter->value.first);
</span><span class="cx"> --iter->value.first;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeVMTrapscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/VMTraps.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/VMTraps.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/VMTraps.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -102,7 +102,7 @@
</span><span class="cx">
</span><span class="cx"> CallFrame* callFrame = reinterpret_cast<CallFrame*>(context.framePointer);
</span><span class="cx">
</span><del>- auto codeBlockSetLocker = holdLock(vm.heap.codeBlockSet().getLock());
</del><ins>+ Locker codeBlockSetLocker { vm.heap.codeBlockSet().getLock() };
</ins><span class="cx">
</span><span class="cx"> CodeBlock* foundCodeBlock = nullptr;
</span><span class="cx"> EntryFrame* entryFrame = vm.topEntryFrame;
</span><span class="lines">@@ -159,7 +159,7 @@
</span><span class="cx">
</span><span class="cx"> void VMTraps::invalidateCodeBlocksOnStack(CallFrame* topCallFrame)
</span><span class="cx"> {
</span><del>- auto codeBlockSetLocker = holdLock(vm().heap.codeBlockSet().getLock());
</del><ins>+ Locker codeBlockSetLocker { vm().heap.codeBlockSet().getLock() };
</ins><span class="cx"> invalidateCodeBlocksOnStack(codeBlockSetLocker, topCallFrame);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -217,7 +217,7 @@
</span><span class="cx"> VM& vm = currentCodeBlock->vm();
</span><span class="cx">
</span><span class="cx"> // We are in JIT code so it's safe to acquire this lock.
</span><del>- auto codeBlockSetLocker = holdLock(vm.heap.codeBlockSet().getLock());
</del><ins>+ Locker codeBlockSetLocker { vm.heap.codeBlockSet().getLock() };
</ins><span class="cx"> bool sawCurrentCodeBlock = false;
</span><span class="cx"> vm.heap.forEachCodeBlockIgnoringJITPlans(codeBlockSetLocker, [&] (CodeBlock* codeBlock) {
</span><span class="cx"> // We want to jettison all code blocks that have vm traps breakpoints, otherwise we could hit them later.
</span><span class="lines">@@ -279,7 +279,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> {
</span><del>- auto locker = holdLock(*traps().m_lock);
</del><ins>+ Locker locker { *traps().m_lock };
</ins><span class="cx"> if (traps().m_isShuttingDown)
</span><span class="cx"> return WorkResult::Stop;
</span><span class="cx"> traps().m_condition->waitFor(*traps().m_lock, 1_ms);
</span><span class="lines">@@ -308,7 +308,7 @@
</span><span class="cx"> #if ENABLE(SIGNAL_BASED_VM_TRAPS)
</span><span class="cx"> if (m_signalSender) {
</span><span class="cx"> {
</span><del>- auto locker = holdLock(*m_lock);
</del><ins>+ Locker locker { *m_lock };
</ins><span class="cx"> if (!m_signalSender->tryStop(locker))
</span><span class="cx"> m_condition->notifyAll(locker);
</span><span class="cx"> }
</span><span class="lines">@@ -323,7 +323,7 @@
</span><span class="cx"> ASSERT(!vm().currentThreadIsHoldingAPILock());
</span><span class="cx"> ASSERT(onlyContainsAsyncEvents(event));
</span><span class="cx"> {
</span><del>- auto locker = holdLock(*m_lock);
</del><ins>+ Locker locker { *m_lock };
</ins><span class="cx"> ASSERT(!m_isShuttingDown);
</span><span class="cx"> setTrapBit(event);
</span><span class="cx"> m_needToInvalidatedCodeBlocks = true;
</span><span class="lines">@@ -334,7 +334,7 @@
</span><span class="cx"> // sendSignal() can loop until it has confirmation that the mutator thread
</span><span class="cx"> // has received the trap request. We'll call it from another thread so that
</span><span class="cx"> // fireTrap() does not block.
</span><del>- auto locker = holdLock(*m_lock);
</del><ins>+ Locker locker { *m_lock };
</ins><span class="cx"> if (!m_signalSender)
</span><span class="cx"> m_signalSender = adoptRef(new SignalSender(locker, vm()));
</span><span class="cx"> m_condition->notifyAll(locker);
</span><span class="lines">@@ -353,7 +353,7 @@
</span><span class="cx"> mask &= ~NeedTermination;
</span><span class="cx">
</span><span class="cx"> {
</span><del>- auto codeBlockSetLocker = holdLock(vm.heap.codeBlockSet().getLock());
</del><ins>+ Locker codeBlockSetLocker { vm.heap.codeBlockSet().getLock() };
</ins><span class="cx"> vm.heap.forEachCodeBlockIgnoringJITPlans(codeBlockSetLocker, [&] (CodeBlock* codeBlock) {
</span><span class="cx"> // We want to jettison all code blocks that have vm traps breakpoints, otherwise we could hit them later.
</span><span class="cx"> if (codeBlock->hasInstalledVMTrapBreakpoints())
</span><span class="lines">@@ -397,7 +397,7 @@
</span><span class="cx">
</span><span class="cx"> auto VMTraps::takeTopPriorityTrap(VMTraps::BitField mask) -> Event
</span><span class="cx"> {
</span><del>- auto locker = holdLock(*m_lock);
</del><ins>+ Locker locker { *m_lock };
</ins><span class="cx">
</span><span class="cx"> // Note: the EventBitShift is already sorted in highest to lowest priority
</span><span class="cx"> // i.e. a bit shift of 0 is highest priority, etc.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeWeakMapImplcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/WeakMapImpl.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/WeakMapImpl.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/WeakMapImpl.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -80,7 +80,7 @@
</span><span class="cx"> static_assert(std::is_same<BucketType, WeakMapBucket<WeakMapBucketDataKeyValue>>::value);
</span><span class="cx">
</span><span class="cx"> auto* thisObject = jsCast<WeakMapImpl*>(cell);
</span><del>- auto locker = holdLock(thisObject->cellLock());
</del><ins>+ Locker locker { thisObject->cellLock() };
</ins><span class="cx"> auto* buffer = thisObject->buffer();
</span><span class="cx"> for (uint32_t index = 0; index < thisObject->m_capacity; ++index) {
</span><span class="cx"> auto* bucket = buffer + index;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeWeakMapImplh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/WeakMapImpl.h (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/WeakMapImpl.h 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/WeakMapImpl.h 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -210,7 +210,7 @@
</span><span class="cx">
</span><span class="cx"> Base::finishCreation(vm);
</span><span class="cx">
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx"> makeAndSetNewBuffer(locker, initialCapacity);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeWeakMapImplInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/WeakMapImplInlines.h (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/WeakMapImplInlines.h 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/WeakMapImplInlines.h 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -92,7 +92,7 @@
</span><span class="cx">
</span><span class="cx"> // This rehash modifies m_buffer which is not GC-managed buffer. But m_buffer can be touched in
</span><span class="cx"> // visitOutputConstraints. Thus, we should guard it with cellLock.
</span><del>- auto locker = holdLock(cellLock());
</del><ins>+ Locker locker { cellLock() };
</ins><span class="cx">
</span><span class="cx"> uint32_t oldCapacity = m_capacity;
</span><span class="cx"> MallocPtr<WeakMapBufferType, JSValueMalloc> oldBuffer = WTFMove(m_buffer);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeWideningNumberPredictionFuzzerAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/WideningNumberPredictionFuzzerAgent.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/WideningNumberPredictionFuzzerAgent.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/runtime/WideningNumberPredictionFuzzerAgent.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx">
</span><span class="cx"> SpeculatedType WideningNumberPredictionFuzzerAgent::getPrediction(CodeBlock* codeBlock, const CodeOrigin& codeOrigin, SpeculatedType original)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx">
</span><span class="cx"> if (!(original && speculationChecked(original, SpecBytecodeNumber)))
</span><span class="cx"> return original;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoretoolsCompilerTimingScopecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/tools/CompilerTimingScope.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tools/CompilerTimingScope.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/tools/CompilerTimingScope.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx">
</span><span class="cx"> Seconds addToTotal(const char* compilerName, const char* name, Seconds duration)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(lock);
</del><ins>+ Locker locker { lock };
</ins><span class="cx">
</span><span class="cx"> for (auto& tuple : totals) {
</span><span class="cx"> if (String(std::get<0>(tuple)) == String(compilerName) && String(std::get<1>(tuple)) == String(name)) {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoretoolsFunctionOverridescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/tools/FunctionOverrides.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tools/FunctionOverrides.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/tools/FunctionOverrides.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -110,7 +110,7 @@
</span><span class="cx"> FunctionOverrides::FunctionOverrides(const char* overridesFileName)
</span><span class="cx"> {
</span><span class="cx"> FunctionOverridesAssertScope assertScope;
</span><del>- parseOverridesInFile(holdLock(m_lock), overridesFileName);
</del><ins>+ parseOverridesInFile(Locker { m_lock }, overridesFileName);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void FunctionOverrides::reinstallOverrides()
</span><span class="lines">@@ -117,7 +117,7 @@
</span><span class="cx"> {
</span><span class="cx"> FunctionOverridesAssertScope assertScope;
</span><span class="cx"> FunctionOverrides& overrides = FunctionOverrides::overrides();
</span><del>- auto locker = holdLock(overrides.m_lock);
</del><ins>+ Locker locker { overrides.m_lock };
</ins><span class="cx"> const char* overridesFileName = Options::functionOverrides();
</span><span class="cx"> overrides.clear(locker);
</span><span class="cx"> overrides.parseOverridesInFile(locker, overridesFileName);
</span><span class="lines">@@ -167,7 +167,7 @@
</span><span class="cx">
</span><span class="cx"> String newBody;
</span><span class="cx"> {
</span><del>- auto locker = holdLock(overrides.m_lock);
</del><ins>+ Locker locker { overrides.m_lock };
</ins><span class="cx"> auto it = overrides.m_entries.find(sourceBodyString.isolatedCopy());
</span><span class="cx"> if (it == overrides.m_entries.end())
</span><span class="cx"> return false;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoretoolsIntegritycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/tools/Integrity.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tools/Integrity.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/tools/Integrity.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx">
</span><span class="cx"> bool Random::reloadAndCheckShouldAuditSlow(VM& vm)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx">
</span><span class="cx"> if (!Options::randomIntegrityAuditRate()) {
</span><span class="cx"> m_triggerBits = 0; // Never trigger, and don't bother reloading.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoretoolsVMInspectorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/tools/VMInspector.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tools/VMInspector.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/tools/VMInspector.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -54,13 +54,13 @@
</span><span class="cx">
</span><span class="cx"> void VMInspector::add(VM* vm)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> m_vmList.append(vm);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void VMInspector::remove(VM* vm)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> m_vmList.remove(vm);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -171,7 +171,7 @@
</span><span class="cx"> return FunctorStatus::Continue; // Skip this VM.
</span><span class="cx"> }
</span><span class="cx">
</span><del>- auto locker = holdLock(codeBlockSetLock);
</del><ins>+ Locker locker { codeBlockSetLock };
</ins><span class="cx"> vm.heap.forEachCodeBlockIgnoringJITPlans(locker, [&] (CodeBlock* cb) {
</span><span class="cx"> JITCode* jitCode = cb->jitCode().get();
</span><span class="cx"> if (!jitCode) {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmBBQPlancpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmBBQPlan.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmBBQPlan.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/wasm/WasmBBQPlan.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -80,7 +80,7 @@
</span><span class="cx"> parseAndValidateModule();
</span><span class="cx"> if (!hasWork()) {
</span><span class="cx"> ASSERT(m_state == State::Validated);
</span><del>- complete(holdLock(m_lock));
</del><ins>+ complete(Locker { m_lock });
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> FALLTHROUGH;
</span><span class="lines">@@ -103,7 +103,7 @@
</span><span class="cx">
</span><span class="cx"> LinkBuffer linkBuffer(*context.wasmEntrypointJIT, nullptr, LinkBuffer::Profile::Wasm, JITCompilationCanFail);
</span><span class="cx"> if (UNLIKELY(linkBuffer.didFailToAllocate())) {
</span><del>- Base::fail(holdLock(m_lock), makeString("Out of executable memory while tiering up function at index ", String::number(m_functionIndex)));
</del><ins>+ Base::fail(Locker { m_lock }, makeString("Out of executable memory while tiering up function at index ", String::number(m_functionIndex)));
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -143,7 +143,7 @@
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> LLIntCallee& llintCallee = m_codeBlock->m_llintCallees->at(m_functionIndex).get();
</span><del>- auto locker = holdLock(llintCallee.tierUpCounter().m_lock);
</del><ins>+ Locker locker { llintCallee.tierUpCounter().m_lock };
</ins><span class="cx"> llintCallee.setReplacement(callee.copyRef());
</span><span class="cx"> llintCallee.tierUpCounter().m_compilationStatus = LLIntTierUpCounter::CompilationStatus::Compiled;
</span><span class="cx"> }
</span><span class="lines">@@ -151,7 +151,7 @@
</span><span class="cx">
</span><span class="cx"> dataLogLnIf(WasmBBQPlanInternal::verbose, "Finished BBQ ", m_functionIndex);
</span><span class="cx">
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> moveToState(State::Completed);
</span><span class="cx"> runCompletionTasks(locker);
</span><span class="cx"> }
</span><span class="lines">@@ -168,7 +168,7 @@
</span><span class="cx"> m_wasmInternalFunctions[functionIndex] = compileFunction(functionIndex, m_compilationContexts[functionIndex], m_unlinkedWasmToWasmCalls[functionIndex], m_tierUpCounts[functionIndex].get());
</span><span class="cx">
</span><span class="cx"> if (m_exportedFunctionIndices.contains(functionIndex) || m_moduleInformation->referencedFunctions().contains(functionIndex)) {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> SignatureIndex signatureIndex = m_moduleInformation->internalFunctionSignatureIndices[functionIndex];
</span><span class="cx"> const Signature& signature = SignatureInformation::get(signatureIndex);
</span><span class="cx"> auto result = m_embedderToWasmInternalFunctions.add(functionIndex, createJSToWasmWrapper(*m_compilationContexts[functionIndex].embedderEntrypointJIT, signature, &m_unlinkedWasmToWasmCalls[functionIndex], m_moduleInformation.get(), m_mode, functionIndex));
</span><span class="lines">@@ -199,7 +199,7 @@
</span><span class="cx"> parseAndCompileResult = parseAndCompile(context, function, signature, unlinkedWasmToWasmCalls, osrEntryScratchBufferSize, m_moduleInformation.get(), m_mode, CompilationMode::BBQMode, functionIndex, UINT32_MAX, tierUp);
</span><span class="cx">
</span><span class="cx"> if (UNLIKELY(!parseAndCompileResult)) {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> if (!m_errorMessage) {
</span><span class="cx"> // Multiple compiles could fail simultaneously. We arbitrarily choose the first.
</span><span class="cx"> fail(locker, makeString(parseAndCompileResult.error(), ", in function at index ", String::number(functionIndex))); // FIXME make this an Expected.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmCalleeRegistryh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmCalleeRegistry.h (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmCalleeRegistry.h 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/wasm/WasmCalleeRegistry.h 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -45,13 +45,13 @@
</span><span class="cx">
</span><span class="cx"> void registerCallee(Callee* callee)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> m_calleeSet.add(callee);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void unregisterCallee(Callee* callee)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> m_calleeSet.remove(callee);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmCodeBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmCodeBlock.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmCodeBlock.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/wasm/WasmCodeBlock.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx">
</span><span class="cx"> if (Options::useWasmLLInt()) {
</span><span class="cx"> m_plan = adoptRef(*new LLIntPlan(context, makeRef(moduleInformation), m_llintCallees->data(), createSharedTask<Plan::CallbackType>([this, protectedThis = WTFMove(protectedThis)] (Plan&) {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> if (m_plan->failed()) {
</span><span class="cx"> m_errorMessage = m_plan->errorMessage();
</span><span class="cx"> setCompilationFinished();
</span><span class="lines">@@ -77,7 +77,7 @@
</span><span class="cx"> #if ENABLE(WEBASSEMBLY_B3JIT)
</span><span class="cx"> else {
</span><span class="cx"> m_plan = adoptRef(*new BBQPlan(context, makeRef(moduleInformation), CompilerMode::FullCompile, createSharedTask<Plan::CallbackType>([this, protectedThis = WTFMove(protectedThis)] (Plan&) {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> if (m_plan->failed()) {
</span><span class="cx"> m_errorMessage = m_plan->errorMessage();
</span><span class="cx"> setCompilationFinished();
</span><span class="lines">@@ -119,7 +119,7 @@
</span><span class="cx"> {
</span><span class="cx"> RefPtr<Plan> plan;
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> plan = m_plan;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -134,7 +134,7 @@
</span><span class="cx"> {
</span><span class="cx"> RefPtr<Plan> plan;
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> plan = m_plan;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmContextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmContext.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmContext.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/wasm/WasmContext.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> if (!size)
</span><span class="cx"> return nullptr;
</span><span class="cx">
</span><del>- auto locker = holdLock(m_scratchBufferLock);
</del><ins>+ Locker locker { m_scratchBufferLock };
</ins><span class="cx"> if (size > m_sizeOfLastScratchBuffer) {
</span><span class="cx"> m_sizeOfLastScratchBuffer = size * 2;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmEntryPlancpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmEntryPlan.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmEntryPlan.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/wasm/WasmEntryPlan.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -89,13 +89,13 @@
</span><span class="cx">
</span><span class="cx"> m_streamingParser.addBytes(source, sourceLength);
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> if (failed())
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (m_streamingParser.finalize() != StreamingParser::State::Finished) {
</span><del>- fail(holdLock(m_lock), m_streamingParser.errorMessage());
</del><ins>+ fail(Locker { m_lock }, m_streamingParser.errorMessage());
</ins><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -129,7 +129,7 @@
</span><span class="cx"> if (UNLIKELY(!binding)) {
</span><span class="cx"> switch (binding.error()) {
</span><span class="cx"> case BindingFailure::OutOfMemory:
</span><del>- return fail(holdLock(m_lock), makeString("Out of executable memory at import ", String::number(importIndex)));
</del><ins>+ return fail(Locker { m_lock }, makeString("Out of executable memory at import ", String::number(importIndex)));
</ins><span class="cx"> }
</span><span class="cx"> RELEASE_ASSERT_NOT_REACHED();
</span><span class="cx"> }
</span><span class="lines">@@ -201,7 +201,7 @@
</span><span class="cx">
</span><span class="cx"> uint32_t functionIndex;
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> if (m_currentIndex >= m_numberOfFunctions) {
</span><span class="cx"> if (hasWork())
</span><span class="cx"> moveToState(State::Compiled);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmEntryPlanh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmEntryPlan.h (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmEntryPlan.h 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/wasm/WasmEntryPlan.h 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -106,7 +106,7 @@
</span><span class="cx"> bool tryReserveCapacity(Vector<T>& vector, size_t size, const char* what)
</span><span class="cx"> {
</span><span class="cx"> if (UNLIKELY(!vector.tryReserveCapacity(size))) {
</span><del>- fail(holdLock(m_lock), WTF::makeString("Failed allocating enough space for ", size, what));
</del><ins>+ fail(Locker { m_lock }, WTF::makeString("Failed allocating enough space for ", size, what));
</ins><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx"> return true;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmFaultSignalHandlercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmFaultSignalHandler.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmFaultSignalHandler.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/wasm/WasmFaultSignalHandler.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -83,7 +83,7 @@
</span><span class="cx"> if (LLInt::isWasmLLIntPC(faultingInstruction))
</span><span class="cx"> return true;
</span><span class="cx"> auto& calleeRegistry = CalleeRegistry::singleton();
</span><del>- auto locker = holdLock(calleeRegistry.getLock());
</del><ins>+ Locker locker { calleeRegistry.getLock() };
</ins><span class="cx"> for (auto* callee : calleeRegistry.allCallees(locker)) {
</span><span class="cx"> auto [start, end] = callee->range();
</span><span class="cx"> dataLogLnIf(WasmFaultSignalHandlerInternal::verbose, "function start: ", RawPointer(start), " end: ", RawPointer(end));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmInstancecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmInstance.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmInstance.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/wasm/WasmInstance.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -124,7 +124,7 @@
</span><span class="cx"> ASSERT(m_owner);
</span><span class="cx"> ASSERT(value.isCallable(owner<JSWebAssemblyInstance>()->vm()));
</span><span class="cx"> ASSERT(!m_functionWrappers.contains(i));
</span><del>- auto locker = holdLock(owner<JSWebAssemblyInstance>()->cellLock());
</del><ins>+ Locker locker { owner<JSWebAssemblyInstance>()->cellLock() };
</ins><span class="cx"> m_functionWrappers.set(i, WriteBarrier<Unknown>(owner<JSWebAssemblyInstance>()->vm(), owner<JSWebAssemblyInstance>(), value));
</span><span class="cx"> ASSERT(getFunctionWrapper(i) == value);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmLLIntPlancpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmLLIntPlan.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmLLIntPlan.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/wasm/WasmLLIntPlan.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -87,7 +87,7 @@
</span><span class="cx"> Expected<std::unique_ptr<FunctionCodeBlock>, String> parseAndCompileResult = parseAndCompileBytecode(function.data.data(), function.data.size(), signature, m_moduleInformation.get(), functionIndex);
</span><span class="cx">
</span><span class="cx"> if (UNLIKELY(!parseAndCompileResult)) {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> if (!m_errorMessage) {
</span><span class="cx"> // Multiple compiles could fail simultaneously. We arbitrarily choose the first.
</span><span class="cx"> fail(locker, makeString(parseAndCompileResult.error(), ", in function at index ", String::number(functionIndex))); // FIXME make this an Expected.
</span><span class="lines">@@ -191,18 +191,18 @@
</span><span class="cx">
</span><span class="cx"> void LLIntPlan::completeInStreaming()
</span><span class="cx"> {
</span><del>- complete(holdLock(m_lock));
</del><ins>+ complete(Locker { m_lock });
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void LLIntPlan::didCompileFunctionInStreaming()
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> moveToState(EntryPlan::State::Compiled);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void LLIntPlan::didFailInStreaming(String&& message)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> if (!m_errorMessage)
</span><span class="cx"> fail(locker, WTFMove(message));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmMachineThreadscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmMachineThreads.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmMachineThreads.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/wasm/WasmMachineThreads.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -53,7 +53,7 @@
</span><span class="cx">
</span><span class="cx"> void resetInstructionCacheOnAllThreads()
</span><span class="cx"> {
</span><del>- auto locker = holdLock(wasmThreads().getLock());
</del><ins>+ Locker locker { wasmThreads().getLock() };
</ins><span class="cx"> for (auto& thread : wasmThreads().threads(locker)) {
</span><span class="cx"> sendMessage(thread.get(), [] (const PlatformRegisters&) {
</span><span class="cx"> // It's likely that the signal handler will already reset the instruction cache but we might as well be sure.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmMemorycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmMemory.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmMemory.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/wasm/WasmMemory.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -105,7 +105,7 @@
</span><span class="cx"> MemoryResult tryAllocateFastMemory()
</span><span class="cx"> {
</span><span class="cx"> MemoryResult result = [&] {
</span><del>- auto holder = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> if (m_fastMemories.size() >= m_maxFastMemoryCount)
</span><span class="cx"> return MemoryResult(nullptr, MemoryResult::SyncTryToReclaimMemory);
</span><span class="cx">
</span><span class="lines">@@ -128,7 +128,7 @@
</span><span class="cx"> void freeFastMemory(void* basePtr)
</span><span class="cx"> {
</span><span class="cx"> {
</span><del>- auto holder = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> Gigacage::freeVirtualPages(Gigacage::Primitive, basePtr, Memory::fastMappedBytes());
</span><span class="cx"> m_fastMemories.removeFirst(basePtr);
</span><span class="cx"> }
</span><span class="lines">@@ -139,7 +139,7 @@
</span><span class="cx"> MemoryResult tryAllocateGrowableBoundsCheckingMemory(size_t mappedCapacity)
</span><span class="cx"> {
</span><span class="cx"> MemoryResult result = [&] {
</span><del>- auto holder = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> void* result = Gigacage::tryAllocateZeroedVirtualPages(Gigacage::Primitive, mappedCapacity);
</span><span class="cx"> if (!result)
</span><span class="cx"> return MemoryResult(nullptr, MemoryResult::SyncTryToReclaimMemory);
</span><span class="lines">@@ -157,7 +157,7 @@
</span><span class="cx"> void freeGrowableBoundsCheckingMemory(void* basePtr, size_t mappedCapacity)
</span><span class="cx"> {
</span><span class="cx"> {
</span><del>- auto holder = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> Gigacage::freeVirtualPages(Gigacage::Primitive, basePtr, mappedCapacity);
</span><span class="cx"> m_growableBoundsCheckingMemories.erase(std::make_pair(bitwise_cast<uintptr_t>(basePtr), mappedCapacity));
</span><span class="cx"> }
</span><span class="lines">@@ -168,7 +168,7 @@
</span><span class="cx"> bool isInGrowableOrFastMemory(void* address)
</span><span class="cx"> {
</span><span class="cx"> // NOTE: This can be called from a signal handler, but only after we proved that we're in JIT code or WasmLLInt code.
</span><del>- auto holder = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> for (void* memory : m_fastMemories) {
</span><span class="cx"> char* start = static_cast<char*>(memory);
</span><span class="cx"> if (start <= address && address <= start + Memory::fastMappedBytes())
</span><span class="lines">@@ -197,7 +197,7 @@
</span><span class="cx"> MemoryResult::Kind tryAllocatePhysicalBytes(size_t bytes)
</span><span class="cx"> {
</span><span class="cx"> MemoryResult::Kind result = [&] {
</span><del>- auto holder = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> if (m_physicalBytes + bytes > memoryLimit())
</span><span class="cx"> return MemoryResult::SyncTryToReclaimMemory;
</span><span class="cx">
</span><span class="lines">@@ -217,7 +217,7 @@
</span><span class="cx"> void freePhysicalBytes(size_t bytes)
</span><span class="cx"> {
</span><span class="cx"> {
</span><del>- auto holder = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> m_physicalBytes -= bytes;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -476,7 +476,7 @@
</span><span class="cx"> Wasm::PageCount oldPageCount;
</span><span class="cx"> Wasm::PageCount newPageCount;
</span><span class="cx"> auto result = ([&]() -> Expected<PageCount, Memory::GrowFailReason> {
</span><del>- auto locker = holdLock(m_handle->lock());
</del><ins>+ Locker locker { m_handle->lock() };
</ins><span class="cx">
</span><span class="cx"> oldPageCount = sizeInPages();
</span><span class="cx"> newPageCount = oldPageCount + delta;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmModulecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmModule.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmModule.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/wasm/WasmModule.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -81,7 +81,7 @@
</span><span class="cx"> Ref<CodeBlock> Module::getOrCreateCodeBlock(Context* context, MemoryMode mode)
</span><span class="cx"> {
</span><span class="cx"> RefPtr<CodeBlock> codeBlock;
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> codeBlock = m_codeBlocks[static_cast<uint8_t>(mode)];
</span><span class="cx"> // If a previous attempt at a compile errored out, let's try again.
</span><span class="cx"> // Compilations from valid modules can fail because OOM and cancellation.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmOMGForOSREntryPlancpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmOMGForOSREntryPlan.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmOMGForOSREntryPlan.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/wasm/WasmOMGForOSREntryPlan.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -78,7 +78,7 @@
</span><span class="cx"> auto parseAndCompileResult = parseAndCompile(context, function, signature, unlinkedCalls, osrEntryScratchBufferSize, m_moduleInformation.get(), m_mode, CompilationMode::OMGForOSREntryMode, m_functionIndex, m_loopIndex);
</span><span class="cx">
</span><span class="cx"> if (UNLIKELY(!parseAndCompileResult)) {
</span><del>- fail(holdLock(m_lock), makeString(parseAndCompileResult.error(), "when trying to tier up ", String::number(m_functionIndex)));
</del><ins>+ fail(Locker { m_lock }, makeString(parseAndCompileResult.error(), "when trying to tier up ", String::number(m_functionIndex)));
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -85,7 +85,7 @@
</span><span class="cx"> Entrypoint omgEntrypoint;
</span><span class="cx"> LinkBuffer linkBuffer(*context.wasmEntrypointJIT, nullptr, LinkBuffer::Profile::Wasm, JITCompilationCanFail);
</span><span class="cx"> if (UNLIKELY(linkBuffer.didFailToAllocate())) {
</span><del>- Base::fail(holdLock(m_lock), makeString("Out of executable memory while tiering up function at index ", String::number(m_functionIndex)));
</del><ins>+ Base::fail(Locker { m_lock }, makeString("Out of executable memory while tiering up function at index ", String::number(m_functionIndex)));
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -100,7 +100,7 @@
</span><span class="cx"> {
</span><span class="cx"> MacroAssembler::repatchPointer(parseAndCompileResult.value()->calleeMoveLocation, CalleeBits::boxWasm(callee.ptr()));
</span><span class="cx">
</span><del>- auto locker = holdLock(m_codeBlock->m_lock);
</del><ins>+ Locker locker { m_codeBlock->m_lock };
</ins><span class="cx"> for (auto& call : callee->wasmToWasmCallsites()) {
</span><span class="cx"> MacroAssemblerCodePtr<WasmEntryPtrTag> entrypoint;
</span><span class="cx"> if (call.functionIndexSpace < m_module->moduleInformation().importFunctionCount())
</span><span class="lines">@@ -118,7 +118,7 @@
</span><span class="cx"> switch (m_callee->compilationMode()) {
</span><span class="cx"> case CompilationMode::LLIntMode: {
</span><span class="cx"> LLIntCallee* llintCallee = static_cast<LLIntCallee*>(m_callee.ptr());
</span><del>- auto locker = holdLock(llintCallee->tierUpCounter().m_lock);
</del><ins>+ Locker locker { llintCallee->tierUpCounter().m_lock };
</ins><span class="cx"> llintCallee->setOSREntryCallee(callee.copyRef());
</span><span class="cx"> llintCallee->tierUpCounter().m_loopCompilationStatus = LLIntTierUpCounter::CompilationStatus::Compiled;
</span><span class="cx"> break;
</span><span class="lines">@@ -125,7 +125,7 @@
</span><span class="cx"> }
</span><span class="cx"> case CompilationMode::BBQMode: {
</span><span class="cx"> BBQCallee* bbqCallee = static_cast<BBQCallee*>(m_callee.ptr());
</span><del>- auto locker = holdLock(bbqCallee->tierUpCount()->getLock());
</del><ins>+ Locker locker { bbqCallee->tierUpCount()->getLock() };
</ins><span class="cx"> bbqCallee->setOSREntryCallee(callee.copyRef());
</span><span class="cx"> bbqCallee->tierUpCount()->osrEntryTriggers()[m_loopIndex] = TierUpCount::TriggerReason::CompilationDone;
</span><span class="cx"> bbqCallee->tierUpCount()->m_compilationStatusForOMGForOSREntry = TierUpCount::CompilationStatus::Compiled;
</span><span class="lines">@@ -137,7 +137,7 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> dataLogLnIf(WasmOMGForOSREntryPlanInternal::verbose, "Finished OMGForOSREntry ", m_functionIndex);
</span><del>- complete(holdLock(m_lock));
</del><ins>+ complete(Locker { m_lock });
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } } // namespace JSC::Wasm
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmOMGPlancpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmOMGPlan.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmOMGPlan.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/wasm/WasmOMGPlan.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -75,7 +75,7 @@
</span><span class="cx"> auto parseAndCompileResult = parseAndCompile(context, function, signature, unlinkedCalls, osrEntryScratchBufferSize, m_moduleInformation.get(), m_mode, CompilationMode::OMGMode, m_functionIndex, UINT32_MAX);
</span><span class="cx">
</span><span class="cx"> if (UNLIKELY(!parseAndCompileResult)) {
</span><del>- fail(holdLock(m_lock), makeString(parseAndCompileResult.error(), "when trying to tier up ", String::number(m_functionIndex)));
</del><ins>+ fail(Locker { m_lock }, makeString(parseAndCompileResult.error(), "when trying to tier up ", String::number(m_functionIndex)));
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -82,7 +82,7 @@
</span><span class="cx"> Entrypoint omgEntrypoint;
</span><span class="cx"> LinkBuffer linkBuffer(*context.wasmEntrypointJIT, nullptr, LinkBuffer::Profile::Wasm, JITCompilationCanFail);
</span><span class="cx"> if (UNLIKELY(linkBuffer.didFailToAllocate())) {
</span><del>- Base::fail(holdLock(m_lock), makeString("Out of executable memory while tiering up function at index ", String::number(m_functionIndex)));
</del><ins>+ Base::fail(Locker { m_lock }, makeString("Out of executable memory while tiering up function at index ", String::number(m_functionIndex)));
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -122,13 +122,13 @@
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> if (BBQCallee* bbqCallee = m_codeBlock->m_bbqCallees[m_functionIndex].get()) {
</span><del>- auto locker = holdLock(bbqCallee->tierUpCount()->getLock());
</del><ins>+ Locker locker { bbqCallee->tierUpCount()->getLock() };
</ins><span class="cx"> bbqCallee->setReplacement(callee.copyRef());
</span><span class="cx"> bbqCallee->tierUpCount()->m_compilationStatusForOMG = TierUpCount::CompilationStatus::Compiled;
</span><span class="cx"> }
</span><span class="cx"> if (m_codeBlock->m_llintCallees) {
</span><span class="cx"> LLIntCallee& llintCallee = m_codeBlock->m_llintCallees->at(m_functionIndex).get();
</span><del>- auto locker = holdLock(llintCallee.tierUpCounter().m_lock);
</del><ins>+ Locker locker { llintCallee.tierUpCounter().m_lock };
</ins><span class="cx"> llintCallee.setReplacement(callee.copyRef());
</span><span class="cx"> llintCallee.tierUpCounter().m_compilationStatus = LLIntTierUpCounter::CompilationStatus::Compiled;
</span><span class="cx"> }
</span><span class="lines">@@ -136,7 +136,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> dataLogLnIf(WasmOMGPlanInternal::verbose, "Finished OMG ", m_functionIndex);
</span><del>- complete(holdLock(m_lock));
</del><ins>+ complete(Locker { m_lock });
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } } // namespace JSC::Wasm
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmOperationscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmOperations.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmOperations.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/wasm/WasmOperations.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -78,7 +78,7 @@
</span><span class="cx">
</span><span class="cx"> bool compile = false;
</span><span class="cx"> {
</span><del>- auto locker = holdLock(tierUp.getLock());
</del><ins>+ Locker locker { tierUp.getLock() };
</ins><span class="cx"> switch (tierUp.m_compilationStatusForOMG) {
</span><span class="cx"> case TierUpCount::CompilationStatus::StartCompilation:
</span><span class="cx"> tierUp.setOptimizationThresholdBasedOnCompilationResult(functionIndex, CompilationDeferred);
</span><span class="lines">@@ -278,7 +278,7 @@
</span><span class="cx">
</span><span class="cx"> TierUpCount::CompilationStatus compilationStatus = TierUpCount::CompilationStatus::NotCompiled;
</span><span class="cx"> {
</span><del>- auto locker = holdLock(tierUp.getLock());
</del><ins>+ Locker locker { tierUp.getLock() };
</ins><span class="cx"> compilationStatus = tierUp.m_compilationStatusForOMGForOSREntry;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -296,7 +296,7 @@
</span><span class="cx"> // We were asked to enter as soon as possible and start compiling an
</span><span class="cx"> // entry for the current loopIndex. Unset this trigger so we
</span><span class="cx"> // don't continually enter.
</span><del>- auto locker = holdLock(tierUp.getLock());
</del><ins>+ Locker locker { tierUp.getLock() };
</ins><span class="cx"> TierUpCount::TriggerReason reason = tierUp.osrEntryTriggers()[loopIndex];
</span><span class="cx"> if (reason == TierUpCount::TriggerReason::StartCompilation) {
</span><span class="cx"> tierUp.osrEntryTriggers()[loopIndex] = TierUpCount::TriggerReason::DontTrigger;
</span><span class="lines">@@ -350,7 +350,7 @@
</span><span class="cx"> // we'll eventually trigger some loop that is executing to compile. We start with trying to compile outer
</span><span class="cx"> // loops since we believe outer loop compilations reveal the best opportunities for optimizing code.
</span><span class="cx"> uint32_t currentLoopIndex = tierUp.outerLoops()[loopIndex];
</span><del>- auto locker = holdLock(tierUp.getLock());
</del><ins>+ Locker locker { tierUp.getLock() };
</ins><span class="cx">
</span><span class="cx"> // We already started OMGForOSREntryPlan.
</span><span class="cx"> if (callee.didStartCompilingOSREntryCallee())
</span><span class="lines">@@ -382,7 +382,7 @@
</span><span class="cx">
</span><span class="cx"> bool startOSREntryCompilation = false;
</span><span class="cx"> {
</span><del>- auto locker = holdLock(tierUp.getLock());
</del><ins>+ Locker locker { tierUp.getLock() };
</ins><span class="cx"> if (tierUp.m_compilationStatusForOMGForOSREntry == TierUpCount::CompilationStatus::NotCompiled) {
</span><span class="cx"> tierUp.m_compilationStatusForOMGForOSREntry = TierUpCount::CompilationStatus::StartCompilation;
</span><span class="cx"> startOSREntryCompilation = true;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmSignatureInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmSignatureInlines.h (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmSignatureInlines.h 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/wasm/WasmSignatureInlines.h 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx"> {
</span><span class="cx"> if (ASSERT_ENABLED) {
</span><span class="cx"> SignatureInformation& info = singleton();
</span><del>- auto locker = holdLock(info.m_lock);
</del><ins>+ Locker locker { info.m_lock };
</ins><span class="cx"> ASSERT_UNUSED(info, info.m_signatureSet.contains(SignatureHash { makeRef(const_cast<Signature&>(signature)) }));
</span><span class="cx"> }
</span><span class="cx"> return bitwise_cast<SignatureIndex>(&signature);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmSlowPathscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmSlowPaths.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmSlowPaths.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/wasm/WasmSlowPaths.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -112,7 +112,7 @@
</span><span class="cx">
</span><span class="cx"> bool compile = false;
</span><span class="cx"> {
</span><del>- auto locker = holdLock(tierUpCounter.m_lock);
</del><ins>+ Locker locker { tierUpCounter.m_lock };
</ins><span class="cx"> switch (tierUpCounter.m_compilationStatus) {
</span><span class="cx"> case Wasm::LLIntTierUpCounter::CompilationStatus::NotCompiled:
</span><span class="cx"> compile = true;
</span><span class="lines">@@ -211,7 +211,7 @@
</span><span class="cx">
</span><span class="cx"> bool compile = false;
</span><span class="cx"> {
</span><del>- auto locker = holdLock(tierUpCounter.m_lock);
</del><ins>+ Locker locker { tierUpCounter.m_lock };
</ins><span class="cx"> switch (tierUpCounter.m_loopCompilationStatus) {
</span><span class="cx"> case Wasm::LLIntTierUpCounter::CompilationStatus::NotCompiled:
</span><span class="cx"> compile = true;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmStreamingCompilercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmStreamingCompiler.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmStreamingCompiler.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/wasm/WasmStreamingCompiler.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -94,7 +94,7 @@
</span><span class="cx">
</span><span class="cx"> void StreamingCompiler::didCompileFunction(StreamingPlan& plan)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> ASSERT(m_threadedCompilationStarted);
</span><span class="cx"> if (plan.failed())
</span><span class="cx"> m_plan->didFailInStreaming(plan.errorMessage());
</span><span class="lines">@@ -191,7 +191,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> m_finalized = true;
</span><span class="cx"> completeIfNecessary(locker);
</span><span class="cx"> }
</span><span class="lines">@@ -200,7 +200,7 @@
</span><span class="cx"> void StreamingCompiler::fail(JSGlobalObject* globalObject, JSValue error)
</span><span class="cx"> {
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> ASSERT(!m_finalized);
</span><span class="cx"> if (m_eagerFailed)
</span><span class="cx"> return;
</span><span class="lines">@@ -214,7 +214,7 @@
</span><span class="cx"> void StreamingCompiler::cancel()
</span><span class="cx"> {
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> ASSERT(!m_finalized);
</span><span class="cx"> if (m_eagerFailed)
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmStreamingPlancpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmStreamingPlan.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmStreamingPlan.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/wasm/WasmStreamingPlan.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx"> {
</span><span class="cx"> m_plan->compileFunction(m_functionIndex);
</span><span class="cx"> dataLogLnIf(WasmStreamingPlanInternal::verbose, "Finished Streaming ", m_functionIndex);
</span><del>- complete(holdLock(m_lock));
</del><ins>+ complete(Locker { m_lock });
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } } // namespace JSC::Wasm
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmTablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmTable.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmTable.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/wasm/WasmTable.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -85,7 +85,7 @@
</span><span class="cx"> if (delta == 0)
</span><span class="cx"> return length();
</span><span class="cx">
</span><del>- auto locker = holdLock(m_owner->cellLock());
</del><ins>+ Locker locker { m_owner->cellLock() };
</ins><span class="cx">
</span><span class="cx"> using Checked = Checked<uint32_t, RecordOverflow>;
</span><span class="cx"> Checked newLengthChecked = length();
</span><span class="lines">@@ -170,7 +170,7 @@
</span><span class="cx"> void Table::visitAggregateImpl(Visitor& visitor)
</span><span class="cx"> {
</span><span class="cx"> RELEASE_ASSERT(m_owner);
</span><del>- auto locker = holdLock(m_owner->cellLock());
</del><ins>+ Locker locker { m_owner->cellLock() };
</ins><span class="cx"> for (unsigned i = 0; i < m_length; ++i)
</span><span class="cx"> visitor.append(m_jsValues.get()[i]);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmThunkscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmThunks.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmThunks.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/wasm/WasmThunks.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -112,7 +112,7 @@
</span><span class="cx">
</span><span class="cx"> MacroAssemblerCodeRef<JITThunkPtrTag> Thunks::stub(ThunkGenerator generator)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx"> return stub(locker, generator);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -133,7 +133,7 @@
</span><span class="cx">
</span><span class="cx"> MacroAssemblerCodeRef<JITThunkPtrTag> Thunks::existingStub(ThunkGenerator generator)
</span><span class="cx"> {
</span><del>- auto locker = holdLock(m_lock);
</del><ins>+ Locker locker { m_lock };
</ins><span class="cx">
</span><span class="cx"> auto iter = m_stubs.find(generator);
</span><span class="cx"> if (iter != m_stubs.end())
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmWorklistcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmWorklist.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmWorklist.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/wasm/WasmWorklist.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -119,7 +119,7 @@
</span><span class="cx"> return complete(locker);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- return complete(holdLock(*worklist.m_lock));
</del><ins>+ return complete(Locker { *worklist.m_lock });
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> const char* name() const final
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmjsJSWebAssemblyInstancecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp (277908 => 277909)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp 2021-05-22 03:04:24 UTC (rev 277908)
+++ trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp 2021-05-22 03:13:17 UTC (rev 277909)
</span><span class="lines">@@ -98,7 +98,7 @@
</span><span class="cx"> for (size_t i : thisObject->instance().globalsToMark())
</span><span class="cx"> visitor.appendUnbarriered(JSValue::decode(thisObject->instance().loadI64Global(i)));
</span><span class="cx">
</span><del>- auto locker = holdLock(cell->cellLock());
</del><ins>+ Locker locker { cell->cellLock() };
</ins><span class="cx"> for (auto& wrapper : thisObject->instance().functionWrappers())
</span><span class="cx"> visitor.appendUnbarriered(wrapper.get());
</span><span class="cx"> }
</span></span></pre>
</div>
</div>
</body>
</html>