<!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>[183005] 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/183005">183005</a></dd>
<dt>Author</dt> <dd>darin@apple.com</dd>
<dt>Date</dt> <dd>2015-04-19 23:05:26 -0700 (Sun, 19 Apr 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>Remove all the remaining uses of OwnPtr and PassOwnPtr in JavaScriptCore
https://bugs.webkit.org/show_bug.cgi?id=143941
Reviewed by Gyuyoung Kim.
* API/JSCallbackObject.h: Use unique_ptr for m_callbackObjectData.
* API/JSCallbackObjectFunctions.h: Ditto.
* API/ObjCCallbackFunction.h: Use unique_ptr for the arguments to the
create function and the constructor and for m_impl.
* API/ObjCCallbackFunction.mm:
(CallbackArgumentOfClass::CallbackArgumentOfClass): Streamline this
class by using RetainPtr<Class>.
(ArgumentTypeDelegate::typeInteger): Use make_unique.
(ArgumentTypeDelegate::typeDouble): Ditto.
(ArgumentTypeDelegate::typeBool): Ditto.
(ArgumentTypeDelegate::typeVoid): Ditto.
(ArgumentTypeDelegate::typeId): Ditto.
(ArgumentTypeDelegate::typeOfClass): Ditto.
(ArgumentTypeDelegate::typeBlock): Ditto.
(ArgumentTypeDelegate::typeStruct): Ditto.
(ResultTypeDelegate::typeInteger): Ditto.
(ResultTypeDelegate::typeDouble): Ditto.
(ResultTypeDelegate::typeBool): Ditto.
(ResultTypeDelegate::typeVoid): Ditto.
(ResultTypeDelegate::typeId): Ditto.
(ResultTypeDelegate::typeOfClass): Ditto.
(ResultTypeDelegate::typeBlock): Ditto.
(ResultTypeDelegate::typeStruct): Ditto.
(JSC::ObjCCallbackFunctionImpl::ObjCCallbackFunctionImpl): Use
unique_ptr for the arguments to the constructor, m_arguments, and m_result.
Use RetainPtr<Class> for m_instanceClass.
(JSC::objCCallbackFunctionCallAsConstructor): Use nullptr instead of nil or 0
for non-Objective-C object pointer null.
(JSC::ObjCCallbackFunction::ObjCCallbackFunction): Use unique_ptr for
the arguments to the constructor and for m_impl.
(JSC::ObjCCallbackFunction::create): Use unique_ptr for arguments.
(skipNumber): Mark this static since it's local to this source file.
(objCCallbackFunctionForInvocation): Call parseObjCType without doing any
explicit adoptPtr since the types in the traits are now unique_ptr. Also use
nullptr instead of nil for JSObjectRef values.
(objCCallbackFunctionForMethod): Tweaked comment.
(objCCallbackFunctionForBlock): Use nullptr instead of 0 for JSObjectRef.
* bytecode/CallLinkInfo.h: Removed unneeded include of OwnPtr.h.
* heap/GCThread.cpp:
(JSC::GCThread::GCThread): Use unique_ptr.
* heap/GCThread.h: Use unique_ptr for arguments to the constructor and for
m_slotVisitor and m_copyVisitor.
* heap/GCThreadSharedData.cpp:
(JSC::GCThreadSharedData::GCThreadSharedData): Ditto.
* parser/SourceProvider.h: Removed unneeded include of PassOwnPtr.h.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreAPIJSCallbackObjecth">trunk/Source/JavaScriptCore/API/JSCallbackObject.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPIJSCallbackObjectFunctionsh">trunk/Source/JavaScriptCore/API/JSCallbackObjectFunctions.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPIObjCCallbackFunctionh">trunk/Source/JavaScriptCore/API/ObjCCallbackFunction.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPIObjCCallbackFunctionmm">trunk/Source/JavaScriptCore/API/ObjCCallbackFunction.mm</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeCallLinkInfoh">trunk/Source/JavaScriptCore/bytecode/CallLinkInfo.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapGCThreadcpp">trunk/Source/JavaScriptCore/heap/GCThread.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapGCThreadh">trunk/Source/JavaScriptCore/heap/GCThread.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapGCThreadSharedDatacpp">trunk/Source/JavaScriptCore/heap/GCThreadSharedData.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserSourceProviderh">trunk/Source/JavaScriptCore/parser/SourceProvider.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreAPIJSCallbackObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSCallbackObject.h (183004 => 183005)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSCallbackObject.h        2015-04-20 05:32:19 UTC (rev 183004)
+++ trunk/Source/JavaScriptCore/API/JSCallbackObject.h        2015-04-20 06:05:26 UTC (rev 183005)
</span><span class="lines">@@ -212,7 +212,7 @@
</span><span class="cx"> static EncodedJSValue staticFunctionGetter(ExecState*, JSObject*, EncodedJSValue, PropertyName);
</span><span class="cx"> static EncodedJSValue callbackGetter(ExecState*, JSObject*, EncodedJSValue, PropertyName);
</span><span class="cx">
</span><del>- OwnPtr<JSCallbackObjectData> m_callbackObjectData;
</del><ins>+ std::unique_ptr<JSCallbackObjectData> m_callbackObjectData;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIJSCallbackObjectFunctionsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSCallbackObjectFunctions.h (183004 => 183005)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSCallbackObjectFunctions.h        2015-04-20 05:32:19 UTC (rev 183004)
+++ trunk/Source/JavaScriptCore/API/JSCallbackObjectFunctions.h        2015-04-20 06:05:26 UTC (rev 183005)
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx"> template <class Parent>
</span><span class="cx"> JSCallbackObject<Parent>::JSCallbackObject(ExecState* exec, Structure* structure, JSClassRef jsClass, void* data)
</span><span class="cx"> : Parent(exec->vm(), structure)
</span><del>- , m_callbackObjectData(adoptPtr(new JSCallbackObjectData(data, jsClass)))
</del><ins>+ , m_callbackObjectData(std::make_unique<JSCallbackObjectData>(data, jsClass))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx"> template <class Parent>
</span><span class="cx"> JSCallbackObject<Parent>::JSCallbackObject(VM& vm, JSClassRef jsClass, Structure* structure)
</span><span class="cx"> : Parent(vm, structure, &javaScriptCoreAPIGlobalObjectMethodTable)
</span><del>- , m_callbackObjectData(adoptPtr(new JSCallbackObjectData(0, jsClass)))
</del><ins>+ , m_callbackObjectData(std::make_unique<JSCallbackObjectData>(nullptr, jsClass))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIObjCCallbackFunctionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/ObjCCallbackFunction.h (183004 => 183005)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/ObjCCallbackFunction.h        2015-04-20 05:32:19 UTC (rev 183004)
+++ trunk/Source/JavaScriptCore/API/ObjCCallbackFunction.h        2015-04-20 06:05:26 UTC (rev 183005)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> public:
</span><span class="cx"> typedef InternalFunction Base;
</span><span class="cx">
</span><del>- static ObjCCallbackFunction* create(VM&, JSGlobalObject*, const String& name, PassOwnPtr<ObjCCallbackFunctionImpl>);
</del><ins>+ static ObjCCallbackFunction* create(VM&, JSGlobalObject*, const String& name, std::unique_ptr<ObjCCallbackFunctionImpl>);
</ins><span class="cx"> static void destroy(JSCell*);
</span><span class="cx">
</span><span class="cx"> static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
</span><span class="lines">@@ -62,7 +62,7 @@
</span><span class="cx"> ObjCCallbackFunctionImpl* impl() const { return m_impl.get(); }
</span><span class="cx">
</span><span class="cx"> protected:
</span><del>- ObjCCallbackFunction(VM&, JSGlobalObject*, JSObjectCallAsFunctionCallback, JSObjectCallAsConstructorCallback, PassOwnPtr<ObjCCallbackFunctionImpl>);
</del><ins>+ ObjCCallbackFunction(VM&, JSGlobalObject*, JSObjectCallAsFunctionCallback, JSObjectCallAsConstructorCallback, std::unique_ptr<ObjCCallbackFunctionImpl>);
</ins><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> static CallType getCallData(JSCell*, CallData&);
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx">
</span><span class="cx"> JSObjectCallAsFunctionCallback m_functionCallback;
</span><span class="cx"> JSObjectCallAsConstructorCallback m_constructCallback;
</span><del>- OwnPtr<ObjCCallbackFunctionImpl> m_impl;
</del><ins>+ std::unique_ptr<ObjCCallbackFunctionImpl> m_impl;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIObjCCallbackFunctionmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/ObjCCallbackFunction.mm (183004 => 183005)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/ObjCCallbackFunction.mm        2015-04-20 05:32:19 UTC (rev 183004)
+++ trunk/Source/JavaScriptCore/API/ObjCCallbackFunction.mm        2015-04-20 06:05:26 UTC (rev 183005)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx"> virtual ~CallbackArgument();
</span><span class="cx"> virtual void set(NSInvocation *, NSInteger, JSContext *, JSValueRef, JSValueRef*) = 0;
</span><span class="cx">
</span><del>- OwnPtr<CallbackArgument> m_next;
</del><ins>+ std::unique_ptr<CallbackArgument> m_next;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> CallbackArgument::~CallbackArgument()
</span><span class="lines">@@ -99,24 +99,17 @@
</span><span class="cx"> class CallbackArgumentOfClass : public CallbackArgument {
</span><span class="cx"> public:
</span><span class="cx"> CallbackArgumentOfClass(Class cls)
</span><del>- : CallbackArgument()
- , m_class(cls)
</del><ins>+ : m_class(cls)
</ins><span class="cx"> {
</span><del>- [m_class retain];
</del><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> private:
</span><del>- virtual ~CallbackArgumentOfClass()
- {
- [m_class release];
- }
-
</del><span class="cx"> virtual void set(NSInvocation *invocation, NSInteger argumentNumber, JSContext *context, JSValueRef argument, JSValueRef* exception) override
</span><span class="cx"> {
</span><span class="cx"> JSGlobalContextRef contextRef = [context JSGlobalContextRef];
</span><span class="cx">
</span><span class="cx"> id object = tryUnwrapObjcObject(contextRef, argument);
</span><del>- if (object && [object isKindOfClass:m_class]) {
</del><ins>+ if (object && [object isKindOfClass:m_class.get()]) {
</ins><span class="cx"> [invocation setArgument:&object atIndex:argumentNumber];
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="lines">@@ -130,7 +123,7 @@
</span><span class="cx"> *exception = toRef(JSC::createTypeError(toJS(contextRef), ASCIILiteral("Argument does not match Objective-C Class")));
</span><span class="cx"> }
</span><span class="cx">
</span><del>- Class m_class;
</del><ins>+ RetainPtr<Class> m_class;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> class CallbackArgumentNSNumber : public CallbackArgument {
</span><span class="lines">@@ -196,34 +189,34 @@
</span><span class="cx">
</span><span class="cx"> class ArgumentTypeDelegate {
</span><span class="cx"> public:
</span><del>- typedef CallbackArgument* ResultType;
</del><ins>+ typedef std::unique_ptr<CallbackArgument> ResultType;
</ins><span class="cx">
</span><span class="cx"> template<typename T>
</span><span class="cx"> static ResultType typeInteger()
</span><span class="cx"> {
</span><del>- return new CallbackArgumentInteger<T>;
</del><ins>+ return std::make_unique<CallbackArgumentInteger<T>>();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<typename T>
</span><span class="cx"> static ResultType typeDouble()
</span><span class="cx"> {
</span><del>- return new CallbackArgumentDouble<T>;
</del><ins>+ return std::make_unique<CallbackArgumentDouble<T>>();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static ResultType typeBool()
</span><span class="cx"> {
</span><del>- return new CallbackArgumentBoolean;
</del><ins>+ return std::make_unique<CallbackArgumentBoolean>();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static ResultType typeVoid()
</span><span class="cx"> {
</span><span class="cx"> RELEASE_ASSERT_NOT_REACHED();
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static ResultType typeId()
</span><span class="cx"> {
</span><del>- return new CallbackArgumentId;
</del><ins>+ return std::make_unique<CallbackArgumentId>();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static ResultType typeOfClass(const char* begin, const char* end)
</span><span class="lines">@@ -231,35 +224,35 @@
</span><span class="cx"> StringRange copy(begin, end);
</span><span class="cx"> Class cls = objc_getClass(copy);
</span><span class="cx"> if (!cls)
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx">
</span><span class="cx"> if (cls == [JSValue class])
</span><del>- return new CallbackArgumentJSValue;
</del><ins>+ return std::make_unique<CallbackArgumentJSValue>();
</ins><span class="cx"> if (cls == [NSString class])
</span><del>- return new CallbackArgumentNSString;
</del><ins>+ return std::make_unique<CallbackArgumentNSString>();
</ins><span class="cx"> if (cls == [NSNumber class])
</span><del>- return new CallbackArgumentNSNumber;
</del><ins>+ return std::make_unique<CallbackArgumentNSNumber>();
</ins><span class="cx"> if (cls == [NSDate class])
</span><del>- return new CallbackArgumentNSDate;
</del><ins>+ return std::make_unique<CallbackArgumentNSDate>();
</ins><span class="cx"> if (cls == [NSArray class])
</span><del>- return new CallbackArgumentNSArray;
</del><ins>+ return std::make_unique<CallbackArgumentNSArray>();
</ins><span class="cx"> if (cls == [NSDictionary class])
</span><del>- return new CallbackArgumentNSDictionary;
</del><ins>+ return std::make_unique<CallbackArgumentNSDictionary>();
</ins><span class="cx">
</span><del>- return new CallbackArgumentOfClass(cls);
</del><ins>+ return std::make_unique<CallbackArgumentOfClass>(cls);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static ResultType typeBlock(const char*, const char*)
</span><span class="cx"> {
</span><del>- return nil;
</del><ins>+ return nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static ResultType typeStruct(const char* begin, const char* end)
</span><span class="cx"> {
</span><span class="cx"> StringRange copy(begin, end);
</span><span class="cx"> if (NSInvocation *invocation = valueToTypeInvocationFor(copy))
</span><del>- return new CallbackArgumentStruct(invocation, copy);
- return 0;
</del><ins>+ return std::make_unique<CallbackArgumentStruct>(invocation, copy);
+ return nullptr;
</ins><span class="cx"> }
</span><span class="cx"> };
</span><span class="cx">
</span><span class="lines">@@ -335,51 +328,51 @@
</span><span class="cx">
</span><span class="cx"> class ResultTypeDelegate {
</span><span class="cx"> public:
</span><del>- typedef CallbackResult* ResultType;
</del><ins>+ typedef std::unique_ptr<CallbackResult> ResultType;
</ins><span class="cx">
</span><span class="cx"> template<typename T>
</span><span class="cx"> static ResultType typeInteger()
</span><span class="cx"> {
</span><del>- return new CallbackResultNumeric<T>;
</del><ins>+ return std::make_unique<CallbackResultNumeric<T>>();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<typename T>
</span><span class="cx"> static ResultType typeDouble()
</span><span class="cx"> {
</span><del>- return new CallbackResultNumeric<T>;
</del><ins>+ return std::make_unique<CallbackResultNumeric<T>>();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static ResultType typeBool()
</span><span class="cx"> {
</span><del>- return new CallbackResultBoolean;
</del><ins>+ return std::make_unique<CallbackResultBoolean>();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static ResultType typeVoid()
</span><span class="cx"> {
</span><del>- return new CallbackResultVoid;
</del><ins>+ return std::make_unique<CallbackResultVoid>();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static ResultType typeId()
</span><span class="cx"> {
</span><del>- return new CallbackResultId();
</del><ins>+ return std::make_unique<CallbackResultId>();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static ResultType typeOfClass(const char*, const char*)
</span><span class="cx"> {
</span><del>- return new CallbackResultId();
</del><ins>+ return std::make_unique<CallbackResultId>();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static ResultType typeBlock(const char*, const char*)
</span><span class="cx"> {
</span><del>- return new CallbackResultId();
</del><ins>+ return std::make_unique<CallbackResultId>();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static ResultType typeStruct(const char* begin, const char* end)
</span><span class="cx"> {
</span><span class="cx"> StringRange copy(begin, end);
</span><span class="cx"> if (NSInvocation *invocation = typeToValueInvocationFor(copy))
</span><del>- return new CallbackResultStruct(invocation, copy);
- return 0;
</del><ins>+ return std::make_unique<CallbackResultStruct>(invocation, copy);
+ return nullptr;
</ins><span class="cx"> }
</span><span class="cx"> };
</span><span class="cx">
</span><span class="lines">@@ -394,12 +387,12 @@
</span><span class="cx">
</span><span class="cx"> class ObjCCallbackFunctionImpl {
</span><span class="cx"> public:
</span><del>- ObjCCallbackFunctionImpl(NSInvocation *invocation, CallbackType type, Class instanceClass, PassOwnPtr<CallbackArgument> arguments, PassOwnPtr<CallbackResult> result)
</del><ins>+ ObjCCallbackFunctionImpl(NSInvocation *invocation, CallbackType type, Class instanceClass, std::unique_ptr<CallbackArgument> arguments, std::unique_ptr<CallbackResult> result)
</ins><span class="cx"> : m_type(type)
</span><del>- , m_instanceClass([instanceClass retain])
</del><ins>+ , m_instanceClass(instanceClass)
</ins><span class="cx"> , m_invocation(invocation)
</span><del>- , m_arguments(arguments)
- , m_result(result)
</del><ins>+ , m_arguments(WTF::move(arguments))
+ , m_result(WTF::move(result))
</ins><span class="cx"> {
</span><span class="cx"> ASSERT((type != CallbackInstanceMethod && type != CallbackInitMethod) || instanceClass);
</span><span class="cx"> }
</span><span class="lines">@@ -410,7 +403,7 @@
</span><span class="cx"> // -retainArguments on m_invocation (and we don't want to do so).
</span><span class="cx"> if (m_type == CallbackBlock || m_type == CallbackClassMethod)
</span><span class="cx"> heap.releaseSoon(adoptNS([m_invocation.get() target]));
</span><del>- [m_instanceClass release];
</del><ins>+ m_instanceClass = nil;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSValueRef call(JSContext *context, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
</span><span class="lines">@@ -426,7 +419,7 @@
</span><span class="cx"> case CallbackBlock:
</span><span class="cx"> return [m_invocation target];
</span><span class="cx"> case CallbackInitMethod:
</span><del>- return m_instanceClass;
</del><ins>+ return m_instanceClass.get();
</ins><span class="cx"> default:
</span><span class="cx"> return nil;
</span><span class="cx"> }
</span><span class="lines">@@ -441,10 +434,10 @@
</span><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> CallbackType m_type;
</span><del>- Class m_instanceClass;
</del><ins>+ RetainPtr<Class> m_instanceClass;
</ins><span class="cx"> RetainPtr<NSInvocation> m_invocation;
</span><del>- OwnPtr<CallbackArgument> m_arguments;
- OwnPtr<CallbackResult> m_result;
</del><ins>+ std::unique_ptr<CallbackArgument> m_arguments;
+ std::unique_ptr<CallbackResult> m_result;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> static JSValueRef objCCallbackFunctionCallAsFunction(JSContextRef callerContext, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
</span><span class="lines">@@ -482,8 +475,8 @@
</span><span class="cx"> CallbackData callbackData;
</span><span class="cx"> JSValueRef result;
</span><span class="cx"> @autoreleasepool {
</span><del>- [context beginCallbackWithData:&callbackData calleeValue:constructor thisValue:nil argumentCount:argumentCount arguments:arguments];
- result = impl->call(context, NULL, argumentCount, arguments, exception);
</del><ins>+ [context beginCallbackWithData:&callbackData calleeValue:constructor thisValue:nullptr argumentCount:argumentCount arguments:arguments];
+ result = impl->call(context, nullptr, argumentCount, arguments, exception);
</ins><span class="cx"> if (context.exception)
</span><span class="cx"> *exception = valueInternalValue(context.exception);
</span><span class="cx"> [context endCallbackWithData:&callbackData];
</span><span class="lines">@@ -491,28 +484,28 @@
</span><span class="cx">
</span><span class="cx"> JSGlobalContextRef contextRef = [context JSGlobalContextRef];
</span><span class="cx"> if (*exception)
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx">
</span><span class="cx"> if (!JSValueIsObject(contextRef, result)) {
</span><span class="cx"> *exception = toRef(JSC::createTypeError(toJS(contextRef), ASCIILiteral("Objective-C blocks called as constructors must return an object.")));
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx"> }
</span><span class="cx"> return (JSObjectRef)result;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> const JSC::ClassInfo ObjCCallbackFunction::s_info = { "CallbackFunction", &Base::s_info, 0, CREATE_METHOD_TABLE(ObjCCallbackFunction) };
</span><span class="cx">
</span><del>-ObjCCallbackFunction::ObjCCallbackFunction(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSObjectCallAsFunctionCallback functionCallback, JSObjectCallAsConstructorCallback constructCallback, PassOwnPtr<ObjCCallbackFunctionImpl> impl)
</del><ins>+ObjCCallbackFunction::ObjCCallbackFunction(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSObjectCallAsFunctionCallback functionCallback, JSObjectCallAsConstructorCallback constructCallback, std::unique_ptr<ObjCCallbackFunctionImpl> impl)
</ins><span class="cx"> : Base(vm, globalObject->objcCallbackFunctionStructure())
</span><span class="cx"> , m_functionCallback(functionCallback)
</span><span class="cx"> , m_constructCallback(constructCallback)
</span><del>- , m_impl(impl)
</del><ins>+ , m_impl(WTF::move(impl))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>-ObjCCallbackFunction* ObjCCallbackFunction::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, const String& name, PassOwnPtr<ObjCCallbackFunctionImpl> impl)
</del><ins>+ObjCCallbackFunction* ObjCCallbackFunction::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, const String& name, std::unique_ptr<ObjCCallbackFunctionImpl> impl)
</ins><span class="cx"> {
</span><del>- ObjCCallbackFunction* function = new (NotNull, allocateCell<ObjCCallbackFunction>(vm.heap)) ObjCCallbackFunction(vm, globalObject, objCCallbackFunctionCallAsFunction, objCCallbackFunctionCallAsConstructor, impl);
</del><ins>+ ObjCCallbackFunction* function = new (NotNull, allocateCell<ObjCCallbackFunction>(vm.heap)) ObjCCallbackFunction(vm, globalObject, objCCallbackFunctionCallAsFunction, objCCallbackFunctionCallAsConstructor, WTF::move(impl));
</ins><span class="cx"> function->finishCreation(vm, name);
</span><span class="cx"> return function;
</span><span class="cx"> }
</span><span class="lines">@@ -543,7 +536,7 @@
</span><span class="cx"> String ObjCCallbackFunctionImpl::name()
</span><span class="cx"> {
</span><span class="cx"> if (m_type == CallbackInitMethod)
</span><del>- return class_getName(m_instanceClass);
</del><ins>+ return class_getName(m_instanceClass.get());
</ins><span class="cx"> // FIXME: Maybe we could support having the selector as the name of the non-init
</span><span class="cx"> // functions to make it a bit more user-friendly from the JS side?
</span><span class="cx"> return "";
</span><span class="lines">@@ -559,7 +552,7 @@
</span><span class="cx"> case CallbackInitMethod: {
</span><span class="cx"> RELEASE_ASSERT(!thisObject);
</span><span class="cx"> target = [m_instanceClass alloc];
</span><del>- if (!target || ![target isKindOfClass:m_instanceClass]) {
</del><ins>+ if (!target || ![target isKindOfClass:m_instanceClass.get()]) {
</ins><span class="cx"> *exception = toRef(JSC::createTypeError(toJS(contextRef), ASCIILiteral("self type check failed for Objective-C instance method")));
</span><span class="cx"> return JSValueMakeUndefined(contextRef);
</span><span class="cx"> }
</span><span class="lines">@@ -569,7 +562,7 @@
</span><span class="cx"> }
</span><span class="cx"> case CallbackInstanceMethod: {
</span><span class="cx"> target = tryUnwrapObjcObject(contextRef, thisObject);
</span><del>- if (!target || ![target isKindOfClass:m_instanceClass]) {
</del><ins>+ if (!target || ![target isKindOfClass:m_instanceClass.get()]) {
</ins><span class="cx"> *exception = toRef(JSC::createTypeError(toJS(contextRef), ASCIILiteral("self type check failed for Objective-C instance method")));
</span><span class="cx"> return JSValueMakeUndefined(contextRef);
</span><span class="cx"> }
</span><span class="lines">@@ -620,7 +613,7 @@
</span><span class="cx"> return containsClass;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-inline bool skipNumber(const char*& position)
</del><ins>+static inline bool skipNumber(const char*& position)
</ins><span class="cx"> {
</span><span class="cx"> if (!isASCIIDigit(*position))
</span><span class="cx"> return false;
</span><span class="lines">@@ -631,13 +624,13 @@
</span><span class="cx"> static JSObjectRef objCCallbackFunctionForInvocation(JSContext *context, NSInvocation *invocation, CallbackType type, Class instanceClass, const char* signatureWithObjcClasses)
</span><span class="cx"> {
</span><span class="cx"> if (!signatureWithObjcClasses)
</span><del>- return nil;
</del><ins>+ return nullptr;
</ins><span class="cx">
</span><span class="cx"> const char* position = signatureWithObjcClasses;
</span><span class="cx">
</span><del>- OwnPtr<CallbackResult> result = adoptPtr(parseObjCType<ResultTypeDelegate>(position));
</del><ins>+ auto result = parseObjCType<ResultTypeDelegate>(position);
</ins><span class="cx"> if (!result || !skipNumber(position))
</span><del>- return nil;
</del><ins>+ return nullptr;
</ins><span class="cx">
</span><span class="cx"> switch (type) {
</span><span class="cx"> case CallbackInitMethod:
</span><span class="lines">@@ -645,35 +638,36 @@
</span><span class="cx"> case CallbackClassMethod:
</span><span class="cx"> // Methods are passed two implicit arguments - (id)self, and the selector.
</span><span class="cx"> if ('@' != *position++ || !skipNumber(position) || ':' != *position++ || !skipNumber(position))
</span><del>- return nil;
</del><ins>+ return nullptr;
</ins><span class="cx"> break;
</span><span class="cx"> case CallbackBlock:
</span><span class="cx"> // Blocks are passed one implicit argument - the block, of type "@?".
</span><span class="cx"> if (('@' != *position++) || ('?' != *position++) || !skipNumber(position))
</span><del>- return nil;
</del><ins>+ return nullptr;
</ins><span class="cx"> // Only allow arguments of type 'id' if the block signature contains the NS type information.
</span><span class="cx"> if ((!blockSignatureContainsClass() && strchr(position, '@')))
</span><del>- return nil;
</del><ins>+ return nullptr;
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- OwnPtr<CallbackArgument> arguments = 0;
- OwnPtr<CallbackArgument>* nextArgument = &arguments;
</del><ins>+ std::unique_ptr<CallbackArgument> arguments;
+ auto* nextArgument = &arguments;
</ins><span class="cx"> unsigned argumentCount = 0;
</span><span class="cx"> while (*position) {
</span><del>- OwnPtr<CallbackArgument> argument = adoptPtr(parseObjCType<ArgumentTypeDelegate>(position));
</del><ins>+ auto argument = parseObjCType<ArgumentTypeDelegate>(position);
</ins><span class="cx"> if (!argument || !skipNumber(position))
</span><del>- return nil;
</del><ins>+ return nullptr;
</ins><span class="cx">
</span><del>- *nextArgument = argument.release();
</del><ins>+ *nextArgument = WTF::move(argument);
</ins><span class="cx"> nextArgument = &(*nextArgument)->m_next;
</span><span class="cx"> ++argumentCount;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSC::ExecState* exec = toJS([context JSGlobalContextRef]);
</span><span class="cx"> JSC::JSLockHolder locker(exec);
</span><del>- OwnPtr<JSC::ObjCCallbackFunctionImpl> impl = adoptPtr(new JSC::ObjCCallbackFunctionImpl(invocation, type, instanceClass, arguments.release(), result.release()));
- return toRef(JSC::ObjCCallbackFunction::create(exec->vm(), exec->lexicalGlobalObject(), impl->name(), impl.release()));
</del><ins>+ auto impl = std::make_unique<JSC::ObjCCallbackFunctionImpl>(invocation, type, instanceClass, WTF::move(arguments), WTF::move(result));
+ const String& name = impl->name();
+ return toRef(JSC::ObjCCallbackFunction::create(exec->vm(), exec->lexicalGlobalObject(), name, WTF::move(impl)));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSObjectRef objCCallbackFunctionForInit(JSContext *context, Class cls, Protocol *protocol, SEL sel, const char* types)
</span><span class="lines">@@ -687,8 +681,8 @@
</span><span class="cx"> {
</span><span class="cx"> NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[NSMethodSignature signatureWithObjCTypes:types]];
</span><span class="cx"> [invocation setSelector:sel];
</span><del>- // We need to retain the target Class because m_invocation doesn't retain it
- // by default (and we don't want it to).
</del><ins>+ // We need to retain the target Class because m_invocation doesn't retain it by default (and we don't want it to).
+ // FIXME: What releases it?
</ins><span class="cx"> if (!isInstanceMethod)
</span><span class="cx"> [invocation setTarget:[cls retain]];
</span><span class="cx"> return objCCallbackFunctionForInvocation(context, invocation, isInstanceMethod ? CallbackInstanceMethod : CallbackClassMethod, isInstanceMethod ? cls : nil, _protocol_getMethodTypeEncoding(protocol, sel, YES, isInstanceMethod));
</span><span class="lines">@@ -697,7 +691,7 @@
</span><span class="cx"> JSObjectRef objCCallbackFunctionForBlock(JSContext *context, id target)
</span><span class="cx"> {
</span><span class="cx"> if (!_Block_has_signature(target))
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx"> const char* signature = _Block_signature(target);
</span><span class="cx"> NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[NSMethodSignature signatureWithObjCTypes:signature]];
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (183004 => 183005)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2015-04-20 05:32:19 UTC (rev 183004)
+++ trunk/Source/JavaScriptCore/ChangeLog        2015-04-20 06:05:26 UTC (rev 183005)
</span><span class="lines">@@ -1,3 +1,60 @@
</span><ins>+2015-04-19 Darin Adler <darin@apple.com>
+
+ Remove all the remaining uses of OwnPtr and PassOwnPtr in JavaScriptCore
+ https://bugs.webkit.org/show_bug.cgi?id=143941
+
+ Reviewed by Gyuyoung Kim.
+
+ * API/JSCallbackObject.h: Use unique_ptr for m_callbackObjectData.
+ * API/JSCallbackObjectFunctions.h: Ditto.
+
+ * API/ObjCCallbackFunction.h: Use unique_ptr for the arguments to the
+ create function and the constructor and for m_impl.
+ * API/ObjCCallbackFunction.mm:
+ (CallbackArgumentOfClass::CallbackArgumentOfClass): Streamline this
+ class by using RetainPtr<Class>.
+ (ArgumentTypeDelegate::typeInteger): Use make_unique.
+ (ArgumentTypeDelegate::typeDouble): Ditto.
+ (ArgumentTypeDelegate::typeBool): Ditto.
+ (ArgumentTypeDelegate::typeVoid): Ditto.
+ (ArgumentTypeDelegate::typeId): Ditto.
+ (ArgumentTypeDelegate::typeOfClass): Ditto.
+ (ArgumentTypeDelegate::typeBlock): Ditto.
+ (ArgumentTypeDelegate::typeStruct): Ditto.
+ (ResultTypeDelegate::typeInteger): Ditto.
+ (ResultTypeDelegate::typeDouble): Ditto.
+ (ResultTypeDelegate::typeBool): Ditto.
+ (ResultTypeDelegate::typeVoid): Ditto.
+ (ResultTypeDelegate::typeId): Ditto.
+ (ResultTypeDelegate::typeOfClass): Ditto.
+ (ResultTypeDelegate::typeBlock): Ditto.
+ (ResultTypeDelegate::typeStruct): Ditto.
+ (JSC::ObjCCallbackFunctionImpl::ObjCCallbackFunctionImpl): Use
+ unique_ptr for the arguments to the constructor, m_arguments, and m_result.
+ Use RetainPtr<Class> for m_instanceClass.
+ (JSC::objCCallbackFunctionCallAsConstructor): Use nullptr instead of nil or 0
+ for non-Objective-C object pointer null.
+ (JSC::ObjCCallbackFunction::ObjCCallbackFunction): Use unique_ptr for
+ the arguments to the constructor and for m_impl.
+ (JSC::ObjCCallbackFunction::create): Use unique_ptr for arguments.
+ (skipNumber): Mark this static since it's local to this source file.
+ (objCCallbackFunctionForInvocation): Call parseObjCType without doing any
+ explicit adoptPtr since the types in the traits are now unique_ptr. Also use
+ nullptr instead of nil for JSObjectRef values.
+ (objCCallbackFunctionForMethod): Tweaked comment.
+ (objCCallbackFunctionForBlock): Use nullptr instead of 0 for JSObjectRef.
+
+ * bytecode/CallLinkInfo.h: Removed unneeded include of OwnPtr.h.
+
+ * heap/GCThread.cpp:
+ (JSC::GCThread::GCThread): Use unique_ptr.
+ * heap/GCThread.h: Use unique_ptr for arguments to the constructor and for
+ m_slotVisitor and m_copyVisitor.
+ * heap/GCThreadSharedData.cpp:
+ (JSC::GCThreadSharedData::GCThreadSharedData): Ditto.
+
+ * parser/SourceProvider.h: Removed unneeded include of PassOwnPtr.h.
+
</ins><span class="cx"> 2015-04-19 Benjamin Poulain <benjamin@webkit.org>
</span><span class="cx">
</span><span class="cx"> Improve the feature.json files
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeCallLinkInfoh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/CallLinkInfo.h (183004 => 183005)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/CallLinkInfo.h        2015-04-20 05:32:19 UTC (rev 183004)
+++ trunk/Source/JavaScriptCore/bytecode/CallLinkInfo.h        2015-04-20 06:05:26 UTC (rev 183005)
</span><span class="lines">@@ -33,7 +33,6 @@
</span><span class="cx"> #include "Opcode.h"
</span><span class="cx"> #include "PolymorphicCallStubRoutine.h"
</span><span class="cx"> #include "WriteBarrier.h"
</span><del>-#include <wtf/OwnPtr.h>
</del><span class="cx"> #include <wtf/SentinelLinkedList.h>
</span><span class="cx">
</span><span class="cx"> namespace JSC {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapGCThreadcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/GCThread.cpp (183004 => 183005)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/GCThread.cpp        2015-04-20 05:32:19 UTC (rev 183004)
+++ trunk/Source/JavaScriptCore/heap/GCThread.cpp        2015-04-20 06:05:26 UTC (rev 183005)
</span><span class="lines">@@ -35,11 +35,11 @@
</span><span class="cx">
</span><span class="cx"> namespace JSC {
</span><span class="cx">
</span><del>-GCThread::GCThread(GCThreadSharedData& shared, SlotVisitor* slotVisitor, CopyVisitor* copyVisitor)
</del><ins>+GCThread::GCThread(GCThreadSharedData& shared, std::unique_ptr<SlotVisitor> slotVisitor, std::unique_ptr<CopyVisitor> copyVisitor)
</ins><span class="cx"> : m_threadID(0)
</span><span class="cx"> , m_shared(shared)
</span><del>- , m_slotVisitor(WTF::adoptPtr(slotVisitor))
- , m_copyVisitor(WTF::adoptPtr(copyVisitor))
</del><ins>+ , m_slotVisitor(WTF::move(slotVisitor))
+ , m_copyVisitor(WTF::move(copyVisitor))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapGCThreadh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/GCThread.h (183004 => 183005)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/GCThread.h        2015-04-20 05:32:19 UTC (rev 183004)
+++ trunk/Source/JavaScriptCore/heap/GCThread.h        2015-04-20 06:05:26 UTC (rev 183005)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx">
</span><span class="cx"> #include <GCThreadSharedData.h>
</span><span class="cx"> #include <wtf/Deque.h>
</span><del>-#include <wtf/OwnPtr.h>
</del><span class="cx"> #include <wtf/Threading.h>
</span><span class="cx">
</span><span class="cx"> namespace JSC {
</span><span class="lines">@@ -39,7 +38,7 @@
</span><span class="cx">
</span><span class="cx"> class GCThread {
</span><span class="cx"> public:
</span><del>- GCThread(GCThreadSharedData&, SlotVisitor*, CopyVisitor*);
</del><ins>+ GCThread(GCThreadSharedData&, std::unique_ptr<SlotVisitor>, std::unique_ptr<CopyVisitor>);
</ins><span class="cx">
</span><span class="cx"> SlotVisitor* slotVisitor();
</span><span class="cx"> CopyVisitor* copyVisitor();
</span><span class="lines">@@ -54,8 +53,8 @@
</span><span class="cx">
</span><span class="cx"> ThreadIdentifier m_threadID;
</span><span class="cx"> GCThreadSharedData& m_shared;
</span><del>- OwnPtr<SlotVisitor> m_slotVisitor;
- OwnPtr<CopyVisitor> m_copyVisitor;
</del><ins>+ std::unique_ptr<SlotVisitor> m_slotVisitor;
+ std::unique_ptr<CopyVisitor> m_copyVisitor;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapGCThreadSharedDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/GCThreadSharedData.cpp (183004 => 183005)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/GCThreadSharedData.cpp        2015-04-20 05:32:19 UTC (rev 183004)
+++ trunk/Source/JavaScriptCore/heap/GCThreadSharedData.cpp        2015-04-20 06:05:26 UTC (rev 183005)
</span><span class="lines">@@ -86,9 +86,7 @@
</span><span class="cx"> std::unique_lock<std::mutex> lock(m_phaseMutex);
</span><span class="cx"> for (unsigned i = 1; i < Options::numberOfGCMarkers(); ++i) {
</span><span class="cx"> m_numberOfActiveGCThreads++;
</span><del>- SlotVisitor* slotVisitor = new SlotVisitor(*this);
- CopyVisitor* copyVisitor = new CopyVisitor(*this);
- GCThread* newThread = new GCThread(*this, slotVisitor, copyVisitor);
</del><ins>+ GCThread* newThread = new GCThread(*this, std::make_unique<SlotVisitor>(*this), std::make_unique<CopyVisitor>(*this));
</ins><span class="cx"> ThreadIdentifier threadID = createThread(GCThread::gcThreadStartFunc, newThread, "JavaScriptCore::Marking");
</span><span class="cx"> newThread->initializeThreadID(threadID);
</span><span class="cx"> m_gcThreads.append(newThread);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserSourceProviderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/SourceProvider.h (183004 => 183005)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/SourceProvider.h        2015-04-20 05:32:19 UTC (rev 183004)
+++ trunk/Source/JavaScriptCore/parser/SourceProvider.h        2015-04-20 06:05:26 UTC (rev 183005)
</span><span class="lines">@@ -29,7 +29,6 @@
</span><span class="cx"> #ifndef SourceProvider_h
</span><span class="cx"> #define SourceProvider_h
</span><span class="cx">
</span><del>-#include <wtf/PassOwnPtr.h>
</del><span class="cx"> #include <wtf/RefCounted.h>
</span><span class="cx"> #include <wtf/text/TextPosition.h>
</span><span class="cx"> #include <wtf/text/WTFString.h>
</span></span></pre>
</div>
</div>
</body>
</html>