Ignore:
Timestamp:
Sep 17, 2018, 9:54:55 AM (7 years ago)
Author:
Darin Adler
Message:

Use OpaqueJSString rather than JSRetainPtr inside WebKit
https://bugs.webkit.org/show_bug.cgi?id=189652

Reviewed by Saam Barati.

Source/JavaScriptCore:

  • API/JSCallbackObjectFunctions.h: Removed an uneeded include of

JSStringRef.h.

  • API/JSContext.mm:

(-[JSContext evaluateScript:withSourceURL:]): Use OpaqueJSString::create rather
than JSStringCreateWithCFString, simplifying the code and also obviating the
need for explicit JSStringRelease.
(-[JSContext setName:]): Ditto.

  • API/JSStringRef.cpp:

(JSStringIsEqualToUTF8CString): Use adoptRef rather than explicit JSStringRelease.
It seems that additional optimization is possible, obviating the need to allocate
an OpaqueJSString, but that's true almost everywhere else in this patch, too.

  • API/JSValue.mm:

(+[JSValue valueWithNewRegularExpressionFromPattern:flags:inContext:]): Use
OpaqueJSString::create and adoptRef as appropriate.
(+[JSValue valueWithNewErrorFromMessage:inContext:]): Ditto.
(+[JSValue valueWithNewSymbolFromDescription:inContext:]): Ditto.
(performPropertyOperation): Ditto.
(-[JSValue invokeMethod:withArguments:]): Ditto.
(valueToObjectWithoutCopy): Ditto.
(containerValueToObject): Ditto.
(valueToString): Ditto.
(objectToValueWithoutCopy): Ditto.
(objectToValue): Ditto.

Source/WebCore:

  • Modules/plugins/QuickTimePluginReplacement.mm:

(WebCore::jsValueWithDictionaryInContext): Use OpaqueJSString::create.
(WebCore::jsValueWithAVMetadataItemInContext): Use adoptCF.

  • platform/mac/SerializedPlatformRepresentationMac.mm:

(WebCore::jsValueWithDictionaryInContext): Use OpaqueJSString::create.

Source/WebKit:

  • Shared/API/c/WKString.cpp: Removed unneeded include of JSStringRef.h.
  • WebProcess/Automation/WebAutomationSessionProxy.cpp: Removed unneeded

include of JSRetainPtr.
(WebKit::toJSString): Deleted.
(WebKit::toJSValue): Use OpaqueJSString::create.
(WebKit::callPropertyFunction): Ditto.
(WebKit::evaluate): Use adoptRef.
(WebKit::evaluateJavaScriptCallback): Ditto.
(WebKit::WebAutomationSessionProxy::scriptObjectForFrame):
Use OpaqueJSString::create.
(WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction): Use
String rather than JSStringRef.

  • WebProcess/Plugins/PDF/PDFPlugin.mm: Removed unneeded includes.

(WebKit::PDFPlugin::runScriptsInPDFDocument): Use OpaqueJSString::create.

Source/WebKitLegacy/ios:

  • WebView/WebPDFViewIOS.mm:

(-[WebPDFView finishedLoadingWithDataSource:]): Use OpaqueJSString::create.

  • WebView/WebPDFViewPlaceholder.mm:

(-[WebPDFViewPlaceholder _evaluateJSForDocument:]): Ditto.

Source/WebKitLegacy/mac:

  • WebView/WebPDFRepresentation.mm:

(-[WebPDFRepresentation finishedLoadingWithDataSource:]): Use OpaqueJSString::create.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/API/JSContext.mm

    r233409 r236066  
    101101{
    102102    JSValueRef exceptionValue = nullptr;
    103     JSStringRef scriptJS = JSStringCreateWithCFString((__bridge CFStringRef)script);
    104     JSStringRef sourceURLJS = sourceURL ? JSStringCreateWithCFString((__bridge CFStringRef)[sourceURL absoluteString]) : nullptr;
    105     JSValueRef result = JSEvaluateScript(m_context, scriptJS, nullptr, sourceURLJS, 0, &exceptionValue);
    106     if (sourceURLJS)
    107         JSStringRelease(sourceURLJS);
    108     JSStringRelease(scriptJS);
     103    auto scriptJS = OpaqueJSString::create(script);
     104    auto sourceURLJS = OpaqueJSString::create([sourceURL absoluteString]);
     105    JSValueRef result = JSEvaluateScript(m_context, scriptJS.get(), nullptr, sourceURLJS.get(), 0, &exceptionValue);
    109106
    110107    if (exceptionValue)
     
    203200- (void)setName:(NSString *)name
    204201{
    205     JSStringRef nameJS = name ? JSStringCreateWithCFString((__bridge CFStringRef)name) : nullptr;
    206     JSGlobalContextSetName(m_context, nameJS);
    207     if (nameJS)
    208         JSStringRelease(nameJS);
     202    JSGlobalContextSetName(m_context, OpaqueJSString::create(name).get());
    209203}
    210204
Note: See TracChangeset for help on using the changeset viewer.