<!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&lt;Class&gt;.
(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&lt;Class&gt; 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&lt;JSCallbackObjectData&gt; m_callbackObjectData;
</del><ins>+    std::unique_ptr&lt;JSCallbackObjectData&gt; 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 &lt;class Parent&gt;
</span><span class="cx"> JSCallbackObject&lt;Parent&gt;::JSCallbackObject(ExecState* exec, Structure* structure, JSClassRef jsClass, void* data)
</span><span class="cx">     : Parent(exec-&gt;vm(), structure)
</span><del>-    , m_callbackObjectData(adoptPtr(new JSCallbackObjectData(data, jsClass)))
</del><ins>+    , m_callbackObjectData(std::make_unique&lt;JSCallbackObjectData&gt;(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 &lt;class Parent&gt;
</span><span class="cx"> JSCallbackObject&lt;Parent&gt;::JSCallbackObject(VM&amp; vm, JSClassRef jsClass, Structure* structure)
</span><span class="cx">     : Parent(vm, structure, &amp;javaScriptCoreAPIGlobalObjectMethodTable)
</span><del>-    , m_callbackObjectData(adoptPtr(new JSCallbackObjectData(0, jsClass)))
</del><ins>+    , m_callbackObjectData(std::make_unique&lt;JSCallbackObjectData&gt;(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&amp;, JSGlobalObject*, const String&amp; name, PassOwnPtr&lt;ObjCCallbackFunctionImpl&gt;);
</del><ins>+    static ObjCCallbackFunction* create(VM&amp;, JSGlobalObject*, const String&amp; name, std::unique_ptr&lt;ObjCCallbackFunctionImpl&gt;);
</ins><span class="cx">     static void destroy(JSCell*);
</span><span class="cx"> 
</span><span class="cx">     static Structure* createStructure(VM&amp; 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&amp;, JSGlobalObject*, JSObjectCallAsFunctionCallback, JSObjectCallAsConstructorCallback, PassOwnPtr&lt;ObjCCallbackFunctionImpl&gt;);
</del><ins>+    ObjCCallbackFunction(VM&amp;, JSGlobalObject*, JSObjectCallAsFunctionCallback, JSObjectCallAsConstructorCallback, std::unique_ptr&lt;ObjCCallbackFunctionImpl&gt;);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     static CallType getCallData(JSCell*, CallData&amp;);
</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&lt;ObjCCallbackFunctionImpl&gt; m_impl;
</del><ins>+    std::unique_ptr&lt;ObjCCallbackFunctionImpl&gt; 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&lt;CallbackArgument&gt; m_next;
</del><ins>+    std::unique_ptr&lt;CallbackArgument&gt; 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 &amp;&amp; [object isKindOfClass:m_class]) {
</del><ins>+        if (object &amp;&amp; [object isKindOfClass:m_class.get()]) {
</ins><span class="cx">             [invocation setArgument:&amp;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(&quot;Argument does not match Objective-C Class&quot;)));
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    Class m_class;
</del><ins>+    RetainPtr&lt;Class&gt; 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&lt;CallbackArgument&gt; ResultType;
</ins><span class="cx"> 
</span><span class="cx">     template&lt;typename T&gt;
</span><span class="cx">     static ResultType typeInteger()
</span><span class="cx">     {
</span><del>-        return new CallbackArgumentInteger&lt;T&gt;;
</del><ins>+        return std::make_unique&lt;CallbackArgumentInteger&lt;T&gt;&gt;();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     template&lt;typename T&gt;
</span><span class="cx">     static ResultType typeDouble()
</span><span class="cx">     {
</span><del>-        return new CallbackArgumentDouble&lt;T&gt;;
</del><ins>+        return std::make_unique&lt;CallbackArgumentDouble&lt;T&gt;&gt;();
</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&lt;CallbackArgumentBoolean&gt;();
</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&lt;CallbackArgumentId&gt;();
</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&lt;CallbackArgumentJSValue&gt;();
</ins><span class="cx">         if (cls == [NSString class])
</span><del>-            return new CallbackArgumentNSString;
</del><ins>+            return std::make_unique&lt;CallbackArgumentNSString&gt;();
</ins><span class="cx">         if (cls == [NSNumber class])
</span><del>-            return new CallbackArgumentNSNumber;
</del><ins>+            return std::make_unique&lt;CallbackArgumentNSNumber&gt;();
</ins><span class="cx">         if (cls == [NSDate class])
</span><del>-            return new CallbackArgumentNSDate;
</del><ins>+            return std::make_unique&lt;CallbackArgumentNSDate&gt;();
</ins><span class="cx">         if (cls == [NSArray class])
</span><del>-            return new CallbackArgumentNSArray;
</del><ins>+            return std::make_unique&lt;CallbackArgumentNSArray&gt;();
</ins><span class="cx">         if (cls == [NSDictionary class])
</span><del>-            return new CallbackArgumentNSDictionary;
</del><ins>+            return std::make_unique&lt;CallbackArgumentNSDictionary&gt;();
</ins><span class="cx"> 
</span><del>-        return new CallbackArgumentOfClass(cls);
</del><ins>+        return std::make_unique&lt;CallbackArgumentOfClass&gt;(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&lt;CallbackArgumentStruct&gt;(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&lt;CallbackResult&gt; ResultType;
</ins><span class="cx"> 
</span><span class="cx">     template&lt;typename T&gt;
</span><span class="cx">     static ResultType typeInteger()
</span><span class="cx">     {
</span><del>-        return new CallbackResultNumeric&lt;T&gt;;
</del><ins>+        return std::make_unique&lt;CallbackResultNumeric&lt;T&gt;&gt;();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     template&lt;typename T&gt;
</span><span class="cx">     static ResultType typeDouble()
</span><span class="cx">     {
</span><del>-        return new CallbackResultNumeric&lt;T&gt;;
</del><ins>+        return std::make_unique&lt;CallbackResultNumeric&lt;T&gt;&gt;();
</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&lt;CallbackResultBoolean&gt;();
</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&lt;CallbackResultVoid&gt;();
</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&lt;CallbackResultId&gt;();
</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&lt;CallbackResultId&gt;();
</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&lt;CallbackResultId&gt;();
</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&lt;CallbackResultStruct&gt;(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&lt;CallbackArgument&gt; arguments, PassOwnPtr&lt;CallbackResult&gt; result)
</del><ins>+    ObjCCallbackFunctionImpl(NSInvocation *invocation, CallbackType type, Class instanceClass, std::unique_ptr&lt;CallbackArgument&gt; arguments, std::unique_ptr&lt;CallbackResult&gt; 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 &amp;&amp; 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&lt;Class&gt; m_instanceClass;
</ins><span class="cx">     RetainPtr&lt;NSInvocation&gt; m_invocation;
</span><del>-    OwnPtr&lt;CallbackArgument&gt; m_arguments;
-    OwnPtr&lt;CallbackResult&gt; m_result;
</del><ins>+    std::unique_ptr&lt;CallbackArgument&gt; m_arguments;
+    std::unique_ptr&lt;CallbackResult&gt; 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:&amp;callbackData calleeValue:constructor thisValue:nil argumentCount:argumentCount arguments:arguments];
-        result = impl-&gt;call(context, NULL, argumentCount, arguments, exception);
</del><ins>+        [context beginCallbackWithData:&amp;callbackData calleeValue:constructor thisValue:nullptr argumentCount:argumentCount arguments:arguments];
+        result = impl-&gt;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:&amp;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(&quot;Objective-C blocks called as constructors must return an object.&quot;)));
</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 = { &quot;CallbackFunction&quot;, &amp;Base::s_info, 0, CREATE_METHOD_TABLE(ObjCCallbackFunction) };
</span><span class="cx"> 
</span><del>-ObjCCallbackFunction::ObjCCallbackFunction(JSC::VM&amp; vm, JSC::JSGlobalObject* globalObject, JSObjectCallAsFunctionCallback functionCallback, JSObjectCallAsConstructorCallback constructCallback, PassOwnPtr&lt;ObjCCallbackFunctionImpl&gt; impl)
</del><ins>+ObjCCallbackFunction::ObjCCallbackFunction(JSC::VM&amp; vm, JSC::JSGlobalObject* globalObject, JSObjectCallAsFunctionCallback functionCallback, JSObjectCallAsConstructorCallback constructCallback, std::unique_ptr&lt;ObjCCallbackFunctionImpl&gt; impl)
</ins><span class="cx">     : Base(vm, globalObject-&gt;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&amp; vm, JSC::JSGlobalObject* globalObject, const String&amp; name, PassOwnPtr&lt;ObjCCallbackFunctionImpl&gt; impl)
</del><ins>+ObjCCallbackFunction* ObjCCallbackFunction::create(JSC::VM&amp; vm, JSC::JSGlobalObject* globalObject, const String&amp; name, std::unique_ptr&lt;ObjCCallbackFunctionImpl&gt; impl)
</ins><span class="cx"> {
</span><del>-    ObjCCallbackFunction* function = new (NotNull, allocateCell&lt;ObjCCallbackFunction&gt;(vm.heap)) ObjCCallbackFunction(vm, globalObject, objCCallbackFunctionCallAsFunction, objCCallbackFunctionCallAsConstructor, impl);
</del><ins>+    ObjCCallbackFunction* function = new (NotNull, allocateCell&lt;ObjCCallbackFunction&gt;(vm.heap)) ObjCCallbackFunction(vm, globalObject, objCCallbackFunctionCallAsFunction, objCCallbackFunctionCallAsConstructor, WTF::move(impl));
</ins><span class="cx">     function-&gt;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 &quot;&quot;;
</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(&quot;self type check failed for Objective-C instance method&quot;)));
</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(&quot;self type check failed for Objective-C instance method&quot;)));
</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*&amp; position)
</del><ins>+static inline bool skipNumber(const char*&amp; 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&lt;CallbackResult&gt; result = adoptPtr(parseObjCType&lt;ResultTypeDelegate&gt;(position));
</del><ins>+    auto result = parseObjCType&lt;ResultTypeDelegate&gt;(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 &quot;@?&quot;.
</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() &amp;&amp; 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&lt;CallbackArgument&gt; arguments = 0;
-    OwnPtr&lt;CallbackArgument&gt;* nextArgument = &amp;arguments;
</del><ins>+    std::unique_ptr&lt;CallbackArgument&gt; arguments;
+    auto* nextArgument = &amp;arguments;
</ins><span class="cx">     unsigned argumentCount = 0;
</span><span class="cx">     while (*position) {
</span><del>-        OwnPtr&lt;CallbackArgument&gt; argument = adoptPtr(parseObjCType&lt;ArgumentTypeDelegate&gt;(position));
</del><ins>+        auto argument = parseObjCType&lt;ArgumentTypeDelegate&gt;(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 = &amp;(*nextArgument)-&gt;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&lt;JSC::ObjCCallbackFunctionImpl&gt; impl = adoptPtr(new JSC::ObjCCallbackFunctionImpl(invocation, type, instanceClass, arguments.release(), result.release()));
-    return toRef(JSC::ObjCCallbackFunction::create(exec-&gt;vm(), exec-&gt;lexicalGlobalObject(), impl-&gt;name(), impl.release()));
</del><ins>+    auto impl = std::make_unique&lt;JSC::ObjCCallbackFunctionImpl&gt;(invocation, type, instanceClass, WTF::move(arguments), WTF::move(result));
+    const String&amp; name = impl-&gt;name();
+    return toRef(JSC::ObjCCallbackFunction::create(exec-&gt;vm(), exec-&gt;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  &lt;darin@apple.com&gt;
+
+        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&lt;Class&gt;.
+        (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&lt;Class&gt; 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  &lt;benjamin@webkit.org&gt;
</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 &quot;Opcode.h&quot;
</span><span class="cx"> #include &quot;PolymorphicCallStubRoutine.h&quot;
</span><span class="cx"> #include &quot;WriteBarrier.h&quot;
</span><del>-#include &lt;wtf/OwnPtr.h&gt;
</del><span class="cx"> #include &lt;wtf/SentinelLinkedList.h&gt;
</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&amp; shared, SlotVisitor* slotVisitor, CopyVisitor* copyVisitor)
</del><ins>+GCThread::GCThread(GCThreadSharedData&amp; shared, std::unique_ptr&lt;SlotVisitor&gt; slotVisitor, std::unique_ptr&lt;CopyVisitor&gt; 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 &lt;GCThreadSharedData.h&gt;
</span><span class="cx"> #include &lt;wtf/Deque.h&gt;
</span><del>-#include &lt;wtf/OwnPtr.h&gt;
</del><span class="cx"> #include &lt;wtf/Threading.h&gt;
</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&amp;, SlotVisitor*, CopyVisitor*);
</del><ins>+    GCThread(GCThreadSharedData&amp;, std::unique_ptr&lt;SlotVisitor&gt;, std::unique_ptr&lt;CopyVisitor&gt;);
</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&amp; m_shared;
</span><del>-    OwnPtr&lt;SlotVisitor&gt; m_slotVisitor;
-    OwnPtr&lt;CopyVisitor&gt; m_copyVisitor;
</del><ins>+    std::unique_ptr&lt;SlotVisitor&gt; m_slotVisitor;
+    std::unique_ptr&lt;CopyVisitor&gt; 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&lt;std::mutex&gt; lock(m_phaseMutex);
</span><span class="cx">     for (unsigned i = 1; i &lt; 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&lt;SlotVisitor&gt;(*this), std::make_unique&lt;CopyVisitor&gt;(*this));
</ins><span class="cx">         ThreadIdentifier threadID = createThread(GCThread::gcThreadStartFunc, newThread, &quot;JavaScriptCore::Marking&quot;);
</span><span class="cx">         newThread-&gt;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 &lt;wtf/PassOwnPtr.h&gt;
</del><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><span class="cx"> #include &lt;wtf/text/TextPosition.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span></span></pre>
</div>
</div>

</body>
</html>