Skip to content

Commit 6773b6c

Browse files
David Kilzerddkilzer
authored andcommitted
Adopt LIFETIME_BOUND for WTF::RefPtr
<https://bugs.webkit.org/show_bug.cgi?id=300201> <rdar://162003473> Reviewed by Geoff Garen. Re-landing 301069@main with 301088@main after fixing internal builds. Add LIFETIME_BOUND attribute for get(), operator*() and operator->() to WTF::RefPtr, and introduce unsafeGet() since there are too many unsafe uses of get() to fix in a single patch. Add a style checker to warn when unsafeGet() is used or when the code is modified without fixing it. Fix three locations in JavaScriptCore where the return value of jitCode() was being discarded in debug logging code. * Source/JavaScriptCore/SaferCPPExpectations/UncountedLocalVarsCheckerExpectations: - Remove tools/VMInspector.cpp. * Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp: (JSC::BytecodeGenerator::emitResolveScopeForHoistingFuncDeclInEval): (JSC::BytecodeGenerator::emitGetTemplateObject): (JSC::BytecodeGenerator::emitGetGenericIterator): (JSC::BytecodeGenerator::emitGetAsyncIterator): (JSC::BytecodeGenerator::emitDelegateYield): * Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp: (JSC::BracketAccessorNode::emitBytecode): (JSC::EvalFunctionCallNode::emitBytecode): (JSC::StaticBlockFunctionCallNode::emitBytecode): (JSC::BytecodeIntrinsicNode::emit_intrinsic_newArrayWithSize): (JSC::BytecodeIntrinsicNode::emit_intrinsic_newArrayWithSpecies): (JSC::BytecodeIntrinsicNode::emit_intrinsic_newPromise): (JSC::CallFunctionCallDotNode::emitBytecode): (JSC::HasOwnPropertyFunctionCallDotNode::emitBytecode): (JSC::ApplyFunctionCallDotNode::emitBytecode): (JSC::PostfixNode::emitResolve): (JSC::PrefixNode::emitResolve): (JSC::OptionalChainNode::emitBytecode): (JSC::ConditionalNode::emitBytecode): (JSC::AssignResolveNode::emitBytecode): (JSC::ReadModifyDotNode::emitBytecode): * Source/JavaScriptCore/dfg/DFGGraph.cpp: (JSC::DFG::Graph::requiredRegisterCountForExit): * Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::SpeculativeJIT): (JSC::DFG::SpeculativeJIT::linkOSREntries): - Fix lifetime of `jitCode()` return value. * Source/JavaScriptCore/dfg/DFGStackLayoutPhase.cpp: (JSC::DFG::StackLayoutPhase::run): * Source/JavaScriptCore/interpreter/StackVisitor.cpp: (JSC::StackVisitor::Frame::dump const): - Fix lifetime of `jitCode()` return value. * Source/JavaScriptCore/runtime/CachedTypes.cpp: (JSC::CachedUniquedStringImplBase::decode const): * Source/JavaScriptCore/runtime/JSArrayBufferView.cpp: (JSC::JSArrayBufferView::slowDownAndWasteMemory): * Source/JavaScriptCore/tools/VMInspector.cpp: (JSC::VMInspector::codeBlockForMachinePC): - Fix lifetime of `jitCode()` return value. * Source/WTF/wtf/RefPtr.h: (WTF::RefPtr::get const): (WTF::RefPtr::unsafeGet const): Add. (WTF::RefPtr::operator* const): (WTF::RefPtr::operator-> const): - Add LIFETIME_BOUND to existing methods. - Add unsafeGet() as a workaround. * Source/WebCore/Modules/fetch/FetchBodyConsumer.h: * Source/WebCore/accessibility/AXCoreObject.cpp: (WebCore::AXCoreObject::firstUnignoredChild): (WebCore::AXCoreObject::crossFrameParentObjectUnignored const): (WebCore::AXCoreObject::parentObjectIncludingCrossFrame const): (WebCore::AXCoreObject::nextInPreOrder): (WebCore::AXCoreObject::previousInPreOrder): (WebCore::AXCoreObject::nextSiblingIncludingIgnoredOrParent const): (WebCore::AXCoreObject::parentObjectUnignored const): * Source/WebCore/accessibility/AXCoreObject.h: (WebCore::Accessibility::crossFrameFindAncestor): (WebCore::Accessibility::findAncestor): (WebCore::Accessibility::clickableSelfOrAncestor): (WebCore::Accessibility::highestEditableAncestor): (WebCore::Accessibility::findRelatedObjectInAncestry): (WebCore::Accessibility::findUnignoredDescendant): * Source/WebCore/accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::updateCurrentModalNode): (WebCore::AXObjectCache::focusedObjectForNode): (WebCore::AXObjectCache::getOrCreate): (WebCore::AXObjectCache::getOrCreateSlow): (WebCore::AXObjectCache::create): (WebCore::AXObjectCache::getIncludingAncestors const): (WebCore::parentEditingBoundary): * Source/WebCore/accessibility/AXObjectCacheInlines.h: (WebCore::AXObjectCache::getOrCreate): * Source/WebCore/accessibility/AXTextMarker.cpp: (WebCore::Accessibility::findObjectWithRuns): * Source/WebCore/accessibility/AXUtilities.cpp: (WebCore::composedParentIgnoringDocumentFragments): * Source/WebCore/accessibility/AccessibilityNodeObject.cpp: (WebCore::AccessibilityNodeObject::firstChild const): (WebCore::AccessibilityNodeObject::parentObject const): (WebCore::AccessibilityNodeObject::anchorElement const): (WebCore::nativeActionElement): (WebCore::AccessibilityNodeObject::actionElement const): (WebCore::AccessibilityNodeObject::parentTable const): (WebCore::AccessibilityNodeObject::parentTableIfExposedTableRow const): * Source/WebCore/accessibility/AccessibilityObject.cpp: (WebCore::firstAccessibleObjectFromNode): (WebCore::AccessibilityObject::elementAccessibilityHitTest const): * Source/WebCore/accessibility/AccessibilityRenderObject.cpp: (WebCore::AccessibilityRenderObject::nextSibling const): (WebCore::AccessibilityRenderObject::parentObject const): (WebCore::AccessibilityRenderObject::elementAccessibilityHitTest const): (WebCore::AccessibilityRenderObject::accessibilityHitTest const): (WebCore::AccessibilityRenderObject::remoteSVGRootElement const): * Source/WebCore/accessibility/AccessibilitySVGObject.cpp: (WebCore::AccessibilitySVGObject::childElementWithMatchingLanguage const): * Source/WebCore/accessibility/AccessibilityScrollView.cpp: (WebCore::AccessibilityScrollView::documentFrameView const): (WebCore::AccessibilityScrollView::parentObject const): * Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h: * Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm: (-[WebAccessibilityObjectWrapperBase baseUpdateBackingStore]): (accessibilitySearchCriteriaForSearchPredicate): * Source/WebCore/animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::timingFunctionForBlendingKeyframe const): (WebCore::KeyframeEffect::activeViewTimeline): * Source/WebCore/animation/ScrollTimeline.cpp: (WebCore::ScrollTimeline::source const): * Source/WebCore/dom/CharacterData.cpp: (WebCore::makeChildChange): * Source/WebCore/dom/Document.cpp: (WebCore::Document::scrollingElement): (WebCore::Document::takeAnyMediaCanStartListener): (WebCore::Document::activeModalDialog const): * Source/WebCore/dom/DocumentFragment.cpp: (WebCore::DocumentFragment::getElementById const): * Source/WebCore/dom/Element.cpp: (WebCore::Element::ensureUserAgentShadowRoot): (WebCore::Element::topmostPopoverAncestor): * Source/WebCore/dom/EventPath.h: (WebCore::EventPath::eventTargetRespectingTargetRules): * Source/WebCore/dom/SelectorQuery.cpp: (WebCore::filterRootById): * Source/WebCore/dom/StyledElement.cpp: (WebCore::StyledElement::ensureMutableInlineStyle): * Source/WebCore/editing/CompositeEditCommand.cpp: (WebCore::CompositeEditCommand::composition const): (WebCore::CompositeEditCommand::ensureComposition): * Source/WebCore/editing/Editing.cpp: (WebCore::unsplittableElementForPosition): * Source/WebCore/editing/Editor.cpp: (WebCore::Editor::nodeBeforeWritingSuggestions const): * Source/WebCore/editing/MarkupAccumulator.cpp: (WebCore::MarkupAccumulator::suitableShadowRoot): * Source/WebCore/editing/TextIterator.cpp: (WebCore::firstNode): * Source/WebCore/editing/cocoa/NodeHTMLConverter.mm: (HTMLConverter::_blockLevelElementForNode): * Source/WebCore/html/CachedHTMLCollectionInlines.h: (WebCore::traversalType>::namedItem const): * Source/WebCore/html/CheckboxInputType.cpp: (WebCore::findTouchWithIdentifier): * Source/WebCore/html/FormAssociatedElement.cpp: (WebCore::FormAssociatedElement::formForBindings const): * Source/WebCore/html/HTMLCanvasElement.cpp: (WebCore::HTMLCanvasElement::getContextWebGL): * Source/WebCore/html/HTMLFormControlsCollection.cpp: (WebCore::HTMLFormControlsCollection::customElementAfter const): * Source/WebCore/html/HTMLLabelElement.cpp: (WebCore::HTMLLabelElement::formForBindings const): * Source/WebCore/html/HTMLLegendElement.cpp: (WebCore::HTMLLegendElement::formForBindings const): * Source/WebCore/html/HTMLOptionElement.cpp: (WebCore::HTMLOptionElement::formForBindings const): * Source/WebCore/html/shadow/SliderThumbElement.cpp: (WebCore::findTouchWithIdentifier): * Source/WebCore/inspector/agents/InspectorCSSAgent.cpp: (WebCore::InspectorCSSAgent::bindStyleSheet): * Source/WebCore/inspector/agents/InspectorDOMAgent.cpp: (WebCore::InspectorDOMAgent::assertNode): (WebCore::InspectorDOMAgent::assertDocument): (WebCore::InspectorDOMAgent::assertElement): (WebCore::InspectorDOMAgent::assertEditableNode): (WebCore::InspectorDOMAgent::assertEditableElement): * Source/WebCore/loader/ResourceLoader.cpp: (WebCore::ResourceLoader::resourceData const): * Source/WebCore/loader/SubstituteResource.h: (WebCore::SubstituteResource::data const): * Source/WebCore/loader/archive/ArchiveResourceCollection.cpp: (WebCore::ArchiveResourceCollection::archiveResourceForURL): * Source/WebCore/loader/cache/CachedImage.cpp: (WebCore::CachedImage::imageForRenderer): * Source/WebCore/mathml/MathMLSelectElement.cpp: (WebCore::MathMLSelectElement::getSelectedActionChild): (WebCore::MathMLSelectElement::getSelectedSemanticsChild): * Source/WebCore/page/DragController.cpp: (WebCore::elementUnderMouse): * Source/WebCore/page/ElementTargetingController.cpp: (WebCore::querySelectorMatchesOneElement): (WebCore::findOnlyMainElement): (WebCore::searchForElementContainingText): (WebCore::elementToAdjust): * Source/WebCore/page/EventHandler.cpp: (WebCore::nodeToSelectOnMouseDownForNode): * Source/WebCore/page/FocusController.cpp: (WebCore::openPopoverForInvoker): (WebCore::FocusController::focusedOrMainFrame const): * Source/WebCore/page/FrameTree.cpp: (WebCore::FrameTree::scopedChild const): (WebCore::FrameTree::find const): * Source/WebCore/page/LargestContentfulPaint.cpp: (WebCore::LargestContentfulPaint::element const): * Source/WebCore/page/LocalFrame.cpp: (WebCore::LocalFrame::userContentProvider const): (WebCore::LocalFrame::userContentProvider): * Source/WebCore/page/Page.cpp: (WebCore::Page::outermostFullscreenDocument const): * Source/WebCore/page/PerformanceEventTiming.cpp: (WebCore::PerformanceEventTiming::target const): * Source/WebCore/page/PointerCaptureController.cpp: (WebCore::PointerCaptureController::pointerCaptureElement const): * Source/WebCore/page/RemoteFrame.cpp: (WebCore::RemoteFrame::frameDocumentSecurityOriginOrOpaque const): * Source/WebCore/page/UserMessageHandlersNamespace.cpp: (WebCore::UserMessageHandlersNamespace::namedItem): * Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp: (WebCore::AsyncScrollingCoordinator::frameViewForScrollingNode const): * Source/WebCore/page/scrolling/ScrollingTreeScrollingNodeDelegate.h: (WebCore::ScrollingTreeScrollingNodeDelegate::scrollingNode): (WebCore::ScrollingTreeScrollingNodeDelegate::scrollingNode const): * Source/WebCore/platform/PreviewConverter.cpp: (WebCore::PreviewConverter::previewData const): * Source/WebCore/platform/cocoa/WebAVPlayerLayer.mm: (-[WebAVPlayerLayer presentationModel]): * Source/WebCore/platform/graphics/DisplayRefreshMonitorManager.cpp: (WebCore::DisplayRefreshMonitorManager::monitorForClient): * Source/WebCore/platform/graphics/Path.cpp: (WebCore::Path::ensureImpl): * Source/WebCore/platform/graphics/SystemFallbackFontCache.cpp: (WebCore::SystemFallbackFontCache::systemFallbackFontForCharacterCluster): * Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::ensureStructuralLayer): * Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm: (WebCore::PlatformCALayerCocoa::superlayer const): * Source/WebCore/rendering/CounterNode.cpp: (WebCore::CounterNode::nextInPreOrderAfterChildren const): * Source/WebCore/rendering/RenderImage.cpp: (WebCore::RenderImage::paintIntoRect): * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::childForSuperlayersExcludingViewTransitions const): * Source/WebCore/style/ContainerQueryEvaluator.cpp: (WebCore::Style::ContainerQueryEvaluator::selectContainer): * Source/WebCore/svg/SVGSVGElement.cpp: (WebCore::SVGSVGElement::getElementById): * Source/WebCore/testing/Internals.cpp: (WebCore::Internals::insertTextPlaceholder): * Source/WebGPU/WebGPU/Queue.mm: (WebGPU::Queue::device const): * Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm: (WebKit::NetworkSessionCocoa::sessionSetForPage): (WebKit::NetworkSessionCocoa::sessionSetForPage const): * Source/WebKit/Platform/IPC/Connection.cpp: (IPC::Connection::dispatcher): * Source/WebKit/Platform/classifier/cocoa/TextExtractionFilter.mm: (WebKit::TextExtractionFilter::singleton): * Source/WebKit/UIProcess/API/APIFrameInfo.cpp: (API::FrameInfo::page const): (API::FrameInfo::page): * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm: (WebKit::WebExtensionContext::websiteDataStore const): * Source/WebKit/UIProcess/Gamepad/ios/UIGamepadProviderIOS.mm: (WebKit::UIGamepadProvider::platformWebPageProxyForGamepadInput): * Source/WebKit/UIProcess/WebBackForwardList.cpp: (WebKit::WebBackForwardList::itemForID): * Source/WebKit/UIProcess/WebFrameProxy.cpp: (WebKit::WebFrameProxy::deepLastChild): * Source/WebKit/UIProcess/mac/WebViewImpl.mm: (WebKit::WebViewImpl::playbackSessionInterface const): * Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp: (WebKit::WebAutomationSessionProxy::getAccessibilityObjectForNode): (WebKit::containerElementForElement): * Source/WebKit/WebProcess/GPU/graphics/wc/RemoteWCLayerTreeHostProxy.cpp: (WebKit::RemoteWCLayerTreeHostProxy::ensureGPUProcessConnection): * Source/WebKit/WebProcess/GPU/media/RemoteImageDecoderAVFManager.cpp: (WebKit::RemoteImageDecoderAVFManager::ensureGPUProcessConnection): * Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp: (WebKit::RemoteMediaPlayerManager::gpuProcessConnection): * Source/WebKit/WebProcess/GPU/media/RemoteRemoteCommandListener.cpp: (WebKit::RemoteRemoteCommandListener::ensureGPUProcessConnection): * Source/WebKit/WebProcess/GPU/media/cocoa/VideoLayerRemoteCocoa.mm: (-[WKVideoLayerRemote parent]): * Source/WebKit/WebProcess/Model/ModelProcessModelPlayerManager.cpp: (WebKit::ModelProcessModelPlayerManager::modelProcessConnection): * Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::userDataFromJSONData): * Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp: (WebKit::WebLocalFrameLoaderClient::dispatchCreatePage): * Source/WebKit/WebProcess/WebPage/WebFoundTextRangeController.cpp: (WebKit::WebFoundTextRangeController::frameForFoundTextRange const): * Source/WebKit/WebProcess/WebPage/WebFrame.cpp: (WebKit::WebFrame::policySourceDocumentLoader const): * Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::sendTapHighlightForNodeIfNecessary): * Tools/Scripts/webkitpy/style/checkers/cpp.py: (check_unsafe_get): (check_style): (CppChecker): * Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py: (WebKitStyleTest.test_unsafe_get): - Add style checker to warn when using unsafeGet(). * Tools/TestWebKitAPI/Tests/WebCore/CSSParser.cpp: (TestWebKitAPI::TEST(CSSParser, ParseColorInput)): (TestWebKitAPI::TEST(CSSParser, ParseColorWithNewlineAndWhitespacesInput)): * Tools/TestWebKitAPI/Tests/WebCore/DocumentOrder.cpp: (TestWebKitAPI::TEST(DocumentOrder, Positions)): * Tools/TestWebKitAPI/Tests/WebCore/cocoa/SharedBuffer.mm: (TestWebKitAPI::TEST_F(FragmentedSharedBufferTest, createNSDataForDataSegment)): Canonical link: https://commits.webkit.org/301319@main
1 parent d677716 commit 6773b6c

110 files changed

Lines changed: 265 additions & 222 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎Source/JavaScriptCore/SaferCPPExpectations/UncountedLocalVarsCheckerExpectations‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,6 @@ runtime/TypeSet.cpp
110110
runtime/VMTraps.cpp
111111
runtime/WaiterListManager.h
112112
tools/JSDollarVM.cpp
113-
tools/VMInspector.cpp
114113
wasm/WasmBBQJIT.cpp
115114
wasm/WasmBBQJIT64.cpp
116115
wasm/WasmBBQPlan.cpp

‎Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2371,7 +2371,7 @@ RegisterID* BytecodeGenerator::emitResolveScopeForHoistingFuncDeclInEval(Registe
23712371
else
23722372
OpGetScope::emit(this, scope.get());
23732373
OpResolveScopeForHoistingFuncDeclInEval::emit(this, kill(result.get()), scope.get(), addConstant(property));
2374-
return result.get();
2374+
return result.unsafeGet();
23752375
}
23762376

23772377
void BytecodeGenerator::popLexicalScope(VariableEnvironmentNode* node)
@@ -4787,7 +4787,7 @@ RegisterID* BytecodeGenerator::emitGetTemplateObject(RegisterID* dst, TaggedTemp
47874787
}
47884788
RefPtr<RegisterID> constant = addTemplateObjectConstant(TemplateObjectDescriptor::create(WTFMove(rawStrings), WTFMove(cookedStrings)), taggedTemplate->endOffset());
47894789
if (!dst)
4790-
return constant.get();
4790+
return constant.unsafeGet();
47914791
return move(dst, constant.get());
47924792
}
47934793

@@ -5145,7 +5145,7 @@ RegisterID* BytecodeGenerator::emitGetGenericIterator(RegisterID* argument, Thro
51455145
RefPtr<RegisterID> iterator = emitGetById(newTemporary(), argument, propertyNames().iteratorSymbol);
51465146
emitCallIterator(iterator.get(), argument, node);
51475147

5148-
return iterator.get();
5148+
return iterator.unsafeGet();
51495149
}
51505150

51515151
RegisterID* BytecodeGenerator::emitIteratorGenericNext(RegisterID* dst, RegisterID* nextMethod, RegisterID* iterator, const ThrowableExpressionData* node, EmitAwait doEmitAwait)
@@ -5233,7 +5233,7 @@ RegisterID* BytecodeGenerator::emitGetAsyncIterator(RegisterID* argument, Throwa
52335233
emitCallIterator(iterator.get(), argument, node);
52345234
emitLabel(iteratorReceived.get());
52355235

5236-
return iterator.get();
5236+
return iterator.unsafeGet();
52375237
}
52385238

52395239
RegisterID* BytecodeGenerator::emitDelegateYield(RegisterID* argument, ThrowableExpressionData* node)
@@ -5354,7 +5354,7 @@ RegisterID* BytecodeGenerator::emitDelegateYield(RegisterID* argument, Throwable
53545354
}
53555355

53565356
emitGetById(value.get(), value.get(), propertyNames().value);
5357-
return value.get();
5357+
return value.unsafeGet();
53585358
}
53595359

53605360

‎Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp‎

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1031,7 +1031,7 @@ RegisterID* BracketAccessorNode::emitBytecode(BytecodeGenerator& generator, Regi
10311031
}
10321032

10331033
generator.emitProfileType(finalDest.get(), divotStart(), divotEnd());
1034-
return finalDest.get();
1034+
return finalDest.unsafeGet();
10351035
}
10361036

10371037
RegisterID* ret;
@@ -1335,7 +1335,7 @@ RegisterID* EvalFunctionCallNode::emitBytecode(BytecodeGenerator& generator, Reg
13351335
} else
13361336
generator.emitCallDirectEval(returnValue.get(), func.get(), callArguments, divot(), divotStart(), divotEnd(), DebuggableCall::No);
13371337

1338-
return returnValue.get();
1338+
return returnValue.unsafeGet();
13391339
}
13401340

13411341
// ------------------------------ FunctionCallValueNode ----------------------------------
@@ -1410,7 +1410,7 @@ RegisterID* StaticBlockFunctionCallNode::emitBytecode(BytecodeGenerator& generat
14101410
RefPtr result = generator.emitCallInTailPosition(returnValue.get(), function.get(), NoExpectedFunction, callArguments, divot(), divotStart(), divotEnd(), DebuggableCall::Yes);
14111411

14121412
generator.emitProfileType(returnValue.get(), divotStart(), divotEnd());
1413-
return result.get();
1413+
return result.unsafeGet();
14141414
}
14151415

14161416
// ------------------------------ FunctionCallResolveNode ----------------------------------
@@ -2448,7 +2448,7 @@ RegisterID* BytecodeIntrinsicNode::emit_intrinsic_newArrayWithSize(JSC::Bytecode
24482448

24492449
RefPtr<RegisterID> finalDestination = generator.finalDestination(dst);
24502450
generator.emitNewArrayWithSize(finalDestination.get(), size.get());
2451-
return finalDestination.get();
2451+
return finalDestination.unsafeGet();
24522452
}
24532453

24542454
RegisterID* BytecodeIntrinsicNode::emit_intrinsic_newArrayWithSpecies(JSC::BytecodeGenerator& generator, JSC::RegisterID* dst)
@@ -2461,7 +2461,7 @@ RegisterID* BytecodeIntrinsicNode::emit_intrinsic_newArrayWithSpecies(JSC::Bytec
24612461

24622462
RefPtr<RegisterID> finalDestination = generator.finalDestination(dst);
24632463
generator.emitNewArrayWithSpecies(finalDestination.get(), size.get(), array.get());
2464-
return finalDestination.get();
2464+
return finalDestination.unsafeGet();
24652465
}
24662466

24672467
RegisterID* BytecodeIntrinsicNode::emit_intrinsic_createPromise(JSC::BytecodeGenerator& generator, JSC::RegisterID* dst)
@@ -2481,7 +2481,7 @@ RegisterID* BytecodeIntrinsicNode::emit_intrinsic_newPromise(JSC::BytecodeGenera
24812481
RefPtr<RegisterID> finalDestination = generator.finalDestination(dst);
24822482
bool isInternalPromise = false;
24832483
generator.emitNewPromise(finalDestination.get(), isInternalPromise);
2484-
return finalDestination.get();
2484+
return finalDestination.unsafeGet();
24852485
}
24862486

24872487

@@ -2662,7 +2662,7 @@ RegisterID* CallFunctionCallDotNode::emitBytecode(BytecodeGenerator& generator,
26622662
generator.move(callArguments.thisRegister(), base.get());
26632663
generator.emitCallInTailPosition(returnValue.get(), function.get(), NoExpectedFunction, callArguments, divot(), divotStart(), divotEnd(), DebuggableCall::Yes);
26642664
generator.move(dst, returnValue.get());
2665-
return returnValue.get();
2665+
return returnValue.unsafeGet();
26662666
}
26672667

26682668
Ref<Label> realCall = generator.newLabel();
@@ -2708,7 +2708,7 @@ RegisterID* CallFunctionCallDotNode::emitBytecode(BytecodeGenerator& generator,
27082708
generator.emitLabel(end.get());
27092709
}
27102710
generator.emitProfileType(returnValue.get(), divotStart(), divotEnd());
2711-
return returnValue.get();
2711+
return returnValue.unsafeGet();
27122712
}
27132713

27142714
RegisterID* HasOwnPropertyFunctionCallDotNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
@@ -2777,7 +2777,7 @@ RegisterID* HasOwnPropertyFunctionCallDotNode::emitBytecode(BytecodeGenerator& g
27772777
}
27782778

27792779
generator.emitProfileType(returnValue.get(), divotStart(), divotEnd());
2780-
return returnValue.get();
2780+
return returnValue.unsafeGet();
27812781
}
27822782

27832783
static bool areTrivialApplyArguments(ArgumentsNode* args)
@@ -2818,7 +2818,7 @@ RegisterID* ApplyFunctionCallDotNode::emitBytecode(BytecodeGenerator& generator,
28182818
generator.move(callArguments.thisRegister(), base.get());
28192819
generator.emitCallInTailPosition(returnValue.get(), function.get(), NoExpectedFunction, callArguments, divot(), divotStart(), divotEnd(), DebuggableCall::Yes);
28202820
generator.move(dst, returnValue.get());
2821-
return returnValue.get();
2821+
return returnValue.unsafeGet();
28222822
}
28232823

28242824
Ref<Label> realCall = generator.newLabel();
@@ -2901,7 +2901,7 @@ RegisterID* ApplyFunctionCallDotNode::emitBytecode(BytecodeGenerator& generator,
29012901
generator.emitLabel(end.get());
29022902
}
29032903
generator.emitProfileType(returnValue.get(), divotStart(), divotEnd());
2904-
return returnValue.get();
2904+
return returnValue.unsafeGet();
29052905
}
29062906

29072907
// ------------------------------ PostfixNode ----------------------------------
@@ -2944,7 +2944,7 @@ RegisterID* PostfixNode::emitResolve(BytecodeGenerator& generator, RegisterID* d
29442944
}
29452945
RefPtr<RegisterID> oldValue = emitPostIncOrDec(generator, generator.finalDestination(dst), localReg.get(), m_operator);
29462946
generator.emitProfileType(localReg.get(), var, divotStart(), divotEnd());
2947-
return oldValue.get();
2947+
return oldValue.unsafeGet();
29482948
}
29492949

29502950
generator.emitExpressionInfo(newDivot, divotStart(), newDivot);
@@ -2954,15 +2954,15 @@ RegisterID* PostfixNode::emitResolve(BytecodeGenerator& generator, RegisterID* d
29542954
if (var.isReadOnly()) {
29552955
bool threwException = generator.emitReadOnlyExceptionIfNeeded(var);
29562956
if (threwException)
2957-
return value.get();
2957+
return value.unsafeGet();
29582958
}
29592959
RefPtr<RegisterID> oldValue = emitPostIncOrDec(generator, generator.finalDestination(dst), value.get(), m_operator);
29602960
if (!var.isReadOnly()) {
29612961
generator.emitPutToScope(scope.get(), var, value.get(), generator.ecmaMode().isStrict() ? ThrowIfNotFound : DoNotThrowIfNotFound, InitializationMode::NotInitialization);
29622962
generator.emitProfileType(value.get(), var, divotStart(), divotEnd());
29632963
}
29642964

2965-
return oldValue.get();
2965+
return oldValue.unsafeGet();
29662966
}
29672967

29682968
RegisterID* PostfixNode::emitBracket(BytecodeGenerator& generator, RegisterID* dst)
@@ -3257,7 +3257,7 @@ RegisterID* PrefixNode::emitResolve(BytecodeGenerator& generator, RegisterID* ds
32573257
if (var.isReadOnly()) {
32583258
bool threwException = generator.emitReadOnlyExceptionIfNeeded(var);
32593259
if (threwException)
3260-
return value.get();
3260+
return value.unsafeGet();
32613261
}
32623262

32633263
emitIncOrDec(generator, value.get(), m_operator);
@@ -3909,7 +3909,7 @@ RegisterID* OptionalChainNode::emitBytecode(BytecodeGenerator& generator, Regist
39093909
if (m_isOutermost)
39103910
generator.popOptionalChainTarget(finalDest.get(), m_expr->isDeleteNode());
39113911

3912-
return finalDest.get();
3912+
return finalDest.unsafeGet();
39133913
}
39143914

39153915
// ------------------------------ ConditionalNode ------------------------------
@@ -3936,7 +3936,7 @@ RegisterID* ConditionalNode::emitBytecode(BytecodeGenerator& generator, Register
39363936

39373937
generator.emitProfileControlFlow(m_expr2->endOffset() + 1);
39383938

3939-
return newDst.get();
3939+
return newDst.unsafeGet();
39403940
}
39413941

39423942
// ------------------------------ ReadModifyResolveNode -----------------------------------
@@ -4227,7 +4227,7 @@ RegisterID* AssignResolveNode::emitBytecode(BytecodeGenerator& generator, Regist
42274227
if (isReadOnly) {
42284228
bool threwException = generator.emitReadOnlyExceptionIfNeeded(var);
42294229
if (threwException)
4230-
return result.get();
4230+
return result.unsafeGet();
42314231
}
42324232
RegisterID* returnResult = result.get();
42334233
if (!isReadOnly) {
@@ -4269,7 +4269,7 @@ RegisterID* ReadModifyDotNode::emitBytecode(BytecodeGenerator& generator, Regist
42694269
generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
42704270
RefPtr<RegisterID> ret = emitPutProperty(generator, base.get(), updatedValue, thisValue);
42714271
generator.emitProfileType(updatedValue, divotStart(), divotEnd());
4272-
return ret.get();
4272+
return ret.unsafeGet();
42734273
}
42744274

42754275
// ------------------------------ ShortCircuitReadModifyDotNode -----------------------------------

‎Source/JavaScriptCore/dfg/DFGGraph.cpp‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1289,7 +1289,7 @@ unsigned Graph::stackPointerOffset()
12891289
unsigned Graph::requiredRegisterCountForExit()
12901290
{
12911291
unsigned count = JIT::frameRegisterCountFor(m_profiledBlock);
1292-
for (InlineCallFrameSet::iterator iter = m_plan.inlineCallFrames()->begin(); !!iter; ++iter) {
1292+
for (InlineCallFrameSet::iterator iter = m_plan.inlineCallFrames().unsafeGet()->begin(); !!iter; ++iter) {
12931293
InlineCallFrame* inlineCallFrame = *iter;
12941294
CodeBlock* codeBlock = baselineCodeBlockForInlineCallFrame(inlineCallFrame);
12951295
unsigned requiredCount = VirtualRegister(inlineCallFrame->stackOffset).toLocal() + 1 + JIT::frameRegisterCountFor(codeBlock);

‎Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ SpeculativeJIT::SpeculativeJIT(Graph& dfg)
121121
, m_compileOkay(true)
122122
, m_state(m_graph)
123123
, m_interpreter(m_graph, m_state)
124-
, m_minifiedGraph(&jitCode()->minifiedDFG)
124+
, m_minifiedGraph(&jitCode().unsafeGet()->minifiedDFG)
125125
{
126126
}
127127

@@ -2383,7 +2383,8 @@ void SpeculativeJIT::linkOSREntries(LinkBuffer& linkBuffer)
23832383
WTF::dataFile().atomically([&](auto& out) {
23842384
DumpContext dumpContext;
23852385
dataLogLn("OSR Entries:");
2386-
for (OSREntryData& entryData : jitCode()->m_osrEntry)
2386+
RefPtr jitCode = this->jitCode();
2387+
for (OSREntryData& entryData : jitCode->m_osrEntry)
23872388
dataLogLn(" ", inContext(entryData, &dumpContext));
23882389
if (!dumpContext.isEmpty())
23892390
dumpContext.dump(out);

‎Source/JavaScriptCore/dfg/DFGStackLayoutPhase.cpp‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ class StackLayoutPhase : public Phase {
103103
}
104104
}
105105

106-
for (InlineCallFrameSet::iterator iter = m_graph.m_plan.inlineCallFrames()->begin(); !!iter; ++iter) {
106+
for (InlineCallFrameSet::iterator iter = m_graph.m_plan.inlineCallFrames().unsafeGet()->begin(); !!iter; ++iter) {
107107
InlineCallFrame* inlineCallFrame = *iter;
108108

109109
if (inlineCallFrame->isVarargs()) {

‎Source/JavaScriptCore/interpreter/StackVisitor.cpp‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -639,8 +639,8 @@ void StackVisitor::Frame::dump(PrintStream& out, Indenter indent, WTF::Function<
639639

640640
JITType jitType = codeBlock->jitType();
641641
if (jitType != JITType::FTLJIT) {
642-
JITCode* jitCode = codeBlock->jitCode().get();
643-
out.print(indent, "jitCode: ", RawPointer(jitCode),
642+
RefPtr jitCode = codeBlock->jitCode();
643+
out.print(indent, "jitCode: ", RawPointer(jitCode.get()),
644644
" start ", RawPointer(jitCode->start()),
645645
" end ", RawPointer(jitCode->end()), "\n");
646646
}

‎Source/JavaScriptCore/runtime/CachedTypes.cpp‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -765,7 +765,7 @@ class CachedUniquedStringImplBase : public VariableLengthObject<T> {
765765
symbol = vm.propertyNames->builtinNames().lookUpPrivateName(buffer);
766766
RELEASE_ASSERT(symbol);
767767
String str = symbol;
768-
StringImpl* impl = str.releaseImpl().get();
768+
StringImpl* impl = str.releaseImpl().unsafeGet();
769769
ASSERT(impl->isSymbol());
770770
if (m_isWellKnownSymbol)
771771
ASSERT(!static_cast<SymbolImpl*>(impl)->isPrivate());

‎Source/JavaScriptCore/runtime/JSArrayBufferView.cpp‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ ArrayBuffer* JSArrayBufferView::slowDownAndWasteMemory()
329329
}
330330
heap->addReference(this, buffer.get());
331331

332-
return buffer.get();
332+
return buffer.unsafeGet();
333333
}
334334

335335
// Allocates the full-on native buffer and moves data into the C heap if

‎Source/JavaScriptCore/tools/VMInspector.cpp‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ auto VMInspector::codeBlockForMachinePC(void* machinePC) -> Expected<CodeBlock*,
120120

121121
Locker locker { AdoptLock, codeBlockSetLock };
122122
vm.heap.forEachCodeBlockIgnoringJITPlans(locker, [&] (CodeBlock* cb) {
123-
JITCode* jitCode = cb->jitCode().get();
123+
RefPtr jitCode = cb->jitCode();
124124
if (!jitCode) {
125125
// If the codeBlock is a replacement codeBlock which is in the process of being
126126
// compiled, its jitCode will be null, and we can disregard it as a match for

0 commit comments

Comments
 (0)