Ignore:
Timestamp:
Oct 10, 2018, 11:29:44 AM (7 years ago)
Author:
[email protected]
Message:

[JSC] Rename createXXX to tryCreateXXX if it can return RefPtr
https://bugs.webkit.org/show_bug.cgi?id=190429

Reviewed by Saam Barati.

Source/JavaScriptCore:

Some createXXX functions can fail. But sometimes the caller does not perform error checking.
To make it explicit that these functions can fail, we rename these functions from createXXX
to tryCreateXXX. In this patch, we focus on non-JS-managed factory functions. If the factory
function does not fail, it should return Ref<>. Otherwise, it should be named as tryCreateXXX
and it should return RefPtr<>.

This patch mainly focuses on TypedArray factory functions. Previously, these functions are
RefPtr<XXXArray> create(...). This patch changes them to RefPtr<XXXArray> tryCreate(...).
And we also introduce Ref<XXXArray> create(...) function which internally performs
RELEASE_ASSERT on the result of tryCreate(...).

And we also convert OpaqueJSString::create to OpaqueJSString::tryCreate since it can fail.

This change actually finds one place which does not perform any null checkings while it uses
RefPtr<> create(...) function.

  • API/JSCallbackObjectFunctions.h:

(JSC::JSCallbackObject<Parent>::getOwnPropertySlot):
(JSC::JSCallbackObject<Parent>::put):
(JSC::JSCallbackObject<Parent>::putByIndex):
(JSC::JSCallbackObject<Parent>::deleteProperty):
(JSC::JSCallbackObject<Parent>::callbackGetter):

  • API/JSClassRef.h:

(StaticValueEntry::StaticValueEntry):

  • API/JSContext.mm:

(-[JSContext evaluateScript:withSourceURL:]):
(-[JSContext setName:]):

  • API/JSContextRef.cpp:

(JSGlobalContextCopyName):
(JSContextCreateBacktrace):

  • API/JSObjectRef.cpp:

(JSObjectCopyPropertyNames):

  • API/JSScriptRef.cpp:
  • API/JSStringRef.cpp:

(JSStringCreateWithCharactersNoCopy):

  • API/JSValue.mm:

(+[JSValue valueWithNewRegularExpressionFromPattern:flags:inContext:]):
(+[JSValue valueWithNewErrorFromMessage:inContext:]):
(+[JSValue valueWithNewSymbolFromDescription:inContext:]):
(performPropertyOperation):
(-[JSValue invokeMethod:withArguments:]):
(containerValueToObject):
(objectToValueWithoutCopy):
(objectToValue):

  • API/JSValueRef.cpp:

(JSValueCreateJSONString):
(JSValueToStringCopy):

  • API/OpaqueJSString.cpp:

(OpaqueJSString::tryCreate):
(OpaqueJSString::create): Deleted.

  • API/OpaqueJSString.h:
  • API/glib/JSCContext.cpp:

(evaluateScriptInContext):

  • API/glib/JSCValue.cpp:

(jsc_value_new_string_from_bytes):

  • ftl/FTLLazySlowPath.h:

(JSC::FTL::LazySlowPath::createGenerator):

  • ftl/FTLLazySlowPathCall.h:

(JSC::FTL::createLazyCallGenerator):

  • ftl/FTLOSRExit.cpp:

(JSC::FTL::OSRExitDescriptor::emitOSRExit):
(JSC::FTL::OSRExitDescriptor::emitOSRExitLater):
(JSC::FTL::OSRExitDescriptor::prepareOSRExitHandle):

  • ftl/FTLOSRExit.h:
  • ftl/FTLPatchpointExceptionHandle.cpp:

(JSC::FTL::PatchpointExceptionHandle::create):
(JSC::FTL::PatchpointExceptionHandle::createHandle):

  • ftl/FTLPatchpointExceptionHandle.h:
  • heap/EdenGCActivityCallback.h:

(JSC::GCActivityCallback::tryCreateEdenTimer):
(JSC::GCActivityCallback::createEdenTimer): Deleted.

  • heap/FullGCActivityCallback.h:

(JSC::GCActivityCallback::tryCreateFullTimer):
(JSC::GCActivityCallback::createFullTimer): Deleted.

  • heap/GCActivityCallback.h:
  • heap/Heap.cpp:

(JSC::Heap::Heap):

  • inspector/AsyncStackTrace.cpp:

(Inspector::AsyncStackTrace::create):

  • inspector/AsyncStackTrace.h:
  • jsc.cpp:

(fillBufferWithContentsOfFile):

  • runtime/ArrayBuffer.h:
  • runtime/GenericTypedArrayView.h:
  • runtime/GenericTypedArrayViewInlines.h:

(JSC::GenericTypedArrayView<Adaptor>::create):
(JSC::GenericTypedArrayView<Adaptor>::tryCreate):
(JSC::GenericTypedArrayView<Adaptor>::createUninitialized):
(JSC::GenericTypedArrayView<Adaptor>::tryCreateUninitialized):
(JSC::GenericTypedArrayView<Adaptor>::subarray const):

  • runtime/JSArrayBufferView.cpp:

(JSC::JSArrayBufferView::possiblySharedImpl):

  • runtime/JSGenericTypedArrayViewInlines.h:

(JSC::JSGenericTypedArrayView<Adaptor>::possiblySharedTypedImpl):
(JSC::JSGenericTypedArrayView<Adaptor>::unsharedTypedImpl):

  • wasm/WasmMemory.cpp:

(JSC::Wasm::Memory::create):
(JSC::Wasm::Memory::tryCreate):

  • wasm/WasmMemory.h:
  • wasm/WasmTable.cpp:

(JSC::Wasm::Table::tryCreate):
(JSC::Wasm::Table::create): Deleted.

  • wasm/WasmTable.h:
  • wasm/js/JSWebAssemblyInstance.cpp:

(JSC::JSWebAssemblyInstance::create):

  • wasm/js/JSWebAssemblyMemory.cpp:

(JSC::JSWebAssemblyMemory::JSWebAssemblyMemory):

  • wasm/js/WebAssemblyMemoryConstructor.cpp:

(JSC::constructJSWebAssemblyMemory):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::link):

  • wasm/js/WebAssemblyTableConstructor.cpp:

(JSC::constructJSWebAssemblyTable):

Source/WebCore:

Use tryCreate or new create. If we use new create, we can use Ref<> and remove null check.

  • Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.cpp:

(WebCore::CDMSessionClearKey::cachedKeyForKeyID const):

  • Modules/plugins/QuickTimePluginReplacement.mm:

(WebCore::jsValueWithDictionaryInContext):

  • Modules/webaudio/AudioBuffer.cpp:

(WebCore::AudioBuffer::AudioBuffer):
(WebCore::AudioBuffer::getChannelData):

  • Modules/webvr/VREyeParameters.cpp:

(WebCore::VREyeParameters::offset const):

  • Modules/webvr/VRFrameData.cpp:

(WebCore::matrixToArray):

  • Modules/webvr/VRPose.cpp:

(WebCore::optionalFloat3ToJSCArray):
(WebCore::VRPose::position const):
(WebCore::VRPose::orientation const):

  • Modules/webvr/VRStageParameters.cpp:

(WebCore::VRStageParameters::sittingToStandingTransform const):

  • bindings/js/ReadableStreamDefaultController.h:

(WebCore::ReadableStreamDefaultController::enqueue):

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneDeserializer::readArrayBufferView):

  • crypto/gcrypt/CryptoKeyRSAGCrypt.cpp:

(WebCore::CryptoKeyRSA::algorithm const):

  • crypto/mac/CryptoKeyRSAMac.cpp:

(WebCore::CryptoKeyRSA::algorithm const):

  • css/DOMMatrixReadOnly.cpp:

(WebCore::DOMMatrixReadOnly::toFloat32Array const):
(WebCore::DOMMatrixReadOnly::toFloat64Array const):

  • css/FontFace.cpp:

(WebCore::FontFace::create):

  • dom/TextEncoder.cpp:

(WebCore::TextEncoder::encode const):

  • html/ImageData.cpp:

(WebCore::ImageData::ImageData):

  • html/ImageData.h:

(WebCore::ImageData::data const):
(): Deleted.

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::bufferData):
(WebCore::WebGL2RenderingContext::bufferSubData):
(WebCore::WebGL2RenderingContext::getInternalformatParameter):
(WebCore::WebGL2RenderingContext::getParameter):

  • html/canvas/WebGLRenderingContext.cpp:

(WebCore::WebGLRenderingContext::getParameter):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::getUniform):
(WebCore::WebGLRenderingContextBase::getVertexAttrib):
(WebCore::WebGLRenderingContextBase::getWebGLFloatArrayParameter):
(WebCore::WebGLRenderingContextBase::getWebGLIntArrayParameter):

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:

(WebCore::MediaPlayerPrivateAVFoundation::extractKeyURIKeyIDAndCertificateFromInitData):

  • platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.cpp:

(WebCore::CDMSessionAVFoundationCF::generateKeyRequest):

  • platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:

(WebCore::AVFWrapper::shouldWaitForLoadingOfResource):

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

(WebCore::CDMSessionAVContentKeySession::generateKeyRequest):
(WebCore::CDMSessionAVContentKeySession::releaseKeys):
(WebCore::CDMSessionAVContentKeySession::update):
(WebCore::CDMSessionAVContentKeySession::generateKeyReleaseMessage):

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

(WebCore::CDMSessionAVFoundationObjC::generateKeyRequest):

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

(WebCore::CDMSessionAVStreamSession::generateKeyRequest):
(WebCore::CDMSessionAVStreamSession::releaseKeys):
(WebCore::CDMSessionAVStreamSession::generateKeyReleaseMessage):

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource):

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

(WebCore::MediaSampleAVFObjC::getRGBAImageData const):

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

(WebCore::SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID):

  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::getImageData):

  • platform/graphics/cg/ImageBufferDataCG.cpp:

(WebCore::ImageBufferData::getData const):

  • platform/graphics/filters/FEGaussianBlur.cpp:

(WebCore::FEGaussianBlur::platformApplySoftware):

  • platform/graphics/filters/FilterEffect.cpp:

(WebCore::FilterEffect::unmultipliedResult):
(WebCore::FilterEffect::premultipliedResult):
(WebCore::FilterEffect::copyUnmultipliedResult):
(WebCore::FilterEffect::copyPremultipliedResult):
(WebCore::FilterEffect::createUnmultipliedImageResult):
(WebCore::FilterEffect::createPremultipliedImageResult):

  • platform/graphics/win/ImageBufferDataDirect2D.cpp:

(WebCore::ImageBufferData::getData const):

  • platform/mac/SerializedPlatformRepresentationMac.mm:

(WebCore::jsValueWithDictionaryInContext):

  • platform/mock/mediasource/MockBox.cpp:

(WebCore::MockBox::peekType):
(WebCore::MockBox::peekLength):
(WebCore::MockTrackBox::MockTrackBox):
(WebCore::MockInitializationBox::MockInitializationBox):
(WebCore::MockSampleBox::MockSampleBox):

  • rendering/shapes/Shape.cpp:

(WebCore::Shape::createRasterShape):

  • testing/LegacyMockCDM.cpp:

(WebCore::initDataPrefix):
(WebCore::keyPrefix):
(WebCore::keyRequest):

Source/WebKit:

Use tryCreate or new create. If we use new create, we can use Ref<> and remove null check.

  • Shared/API/c/WKString.cpp:

(WKStringCopyJSString):

  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::toJSValue):
(WebKit::callPropertyFunction):
(WebKit::WebAutomationSessionProxy::scriptObjectForFrame):
(WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction):

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::runScriptsInPDFDocument):

Source/WebKitLegacy/ios:

Use tryCreate or new create. If we use new create, we can use Ref<> and remove null check.

  • WebView/WebPDFViewIOS.mm:

(-[WebPDFView finishedLoadingWithDataSource:]):

  • WebView/WebPDFViewPlaceholder.mm:

(-[WebPDFViewPlaceholder _evaluateJSForDocument:]):

Source/WebKitLegacy/mac:

Use tryCreate or new create. If we use new create, we can use Ref<> and remove null check.

  • WebView/WebPDFRepresentation.mm:

(-[WebPDFRepresentation finishedLoadingWithDataSource:]):

Tools:

  • TestWebKitAPI/Tests/WebCore/mac/GPUBuffer.mm:

(TestWebKitAPI::TEST_F):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/API/OpaqueJSString.h

    r230558 r237009  
    5252    }
    5353
    54     JS_EXPORT_PRIVATE static RefPtr<OpaqueJSString> create(const String&);
    55     JS_EXPORT_PRIVATE static RefPtr<OpaqueJSString> create(String&&);
     54    JS_EXPORT_PRIVATE static RefPtr<OpaqueJSString> tryCreate(const String&);
     55    JS_EXPORT_PRIVATE static RefPtr<OpaqueJSString> tryCreate(String&&);
    5656
    5757    JS_EXPORT_PRIVATE ~OpaqueJSString();
Note: See TracChangeset for help on using the changeset viewer.