Remove copyRef() calls added in r243163
authorcdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 20 Mar 2019 16:13:30 +0000 (16:13 +0000)
committercdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 20 Mar 2019 16:13:30 +0000 (16:13 +0000)
https://bugs.webkit.org/show_bug.cgi?id=195962

Patch by Michael Catanzaro <mcatanzaro@igalia.com> on 2019-03-20
Reviewed by Chris Dumez.

Source/JavaScriptCore:

As best I can tell, may be a GCC 9 bug. It shouldn't warn about this case because the return
value is noncopyable and the WTFMove() is absolutely required. We can avoid the warning
without refcount churn by introducing an intermediate variable.

* inspector/scripts/codegen/cpp_generator_templates.py:

Source/WebCore:

The first two cases here can just directly return the RefPtr.

In the third case, we have to work around a GCC 6 bug because GCC 6 is unable to pick the
right constructor to use, unlike modern compilers.

* Modules/fetch/FetchBody.cpp:
(WebCore::FetchBody::bodyAsFormData const):
(WebCore::FetchBody::take):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@243204 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/inspector/scripts/codegen/cpp_generator_templates.py
Source/WebCore/ChangeLog
Source/WebCore/Modules/fetch/FetchBody.cpp

index f709af5..76853fb 100644 (file)
@@ -1,3 +1,16 @@
+2019-03-20  Michael Catanzaro  <mcatanzaro@igalia.com>
+
+        Remove copyRef() calls added in r243163
+        https://bugs.webkit.org/show_bug.cgi?id=195962
+
+        Reviewed by Chris Dumez.
+
+        As best I can tell, may be a GCC 9 bug. It shouldn't warn about this case because the return
+        value is noncopyable and the WTFMove() is absolutely required. We can avoid the warning
+        without refcount churn by introducing an intermediate variable.
+
+        * inspector/scripts/codegen/cpp_generator_templates.py:
+
 2019-03-20  Carlos Garcia Campos  <cgarcia@igalia.com>
 
         [GLIB] Optimize jsc_value_object_define_property_data|accessor
index 34d7c0b..c7b1c87 100755 (executable)
@@ -230,8 +230,9 @@ private:
             COMPILE_ASSERT(STATE == AllFieldsSet, result_is_not_ready);
             COMPILE_ASSERT(sizeof(${objectType}) == sizeof(JSON::Object), cannot_cast);
 
-            Ref<JSON::Object> result = m_result.releaseNonNull();
-            return reinterpret_cast<Ref<${objectType}>*>(&result)->copyRef();
+            Ref<JSON::Object> jsonResult = m_result.releaseNonNull();
+            auto result = WTFMove(*reinterpret_cast<Ref<${objectType}>*>(&jsonResult));
+            return result;
         }
     };
 
index 1014733..36e99b0 100644 (file)
@@ -1,3 +1,19 @@
+2019-03-20  Michael Catanzaro  <mcatanzaro@igalia.com>
+
+        Remove copyRef() calls added in r243163
+        https://bugs.webkit.org/show_bug.cgi?id=195962
+
+        Reviewed by Chris Dumez.
+
+        The first two cases here can just directly return the RefPtr.
+
+        In the third case, we have to work around a GCC 6 bug because GCC 6 is unable to pick the
+        right constructor to use, unlike modern compilers.
+
+        * Modules/fetch/FetchBody.cpp:
+        (WebCore::FetchBody::bodyAsFormData const):
+        (WebCore::FetchBody::take):
+
 2019-03-20  Alicia Boya GarcĂ­a  <aboya@igalia.com>
 
         [MSE][GStreamer] Fix handling of resolution changes in AppendPipeline
index 803281a..987e455 100644 (file)
@@ -243,7 +243,7 @@ RefPtr<FormData> FetchBody::bodyAsFormData(ScriptExecutionContext& context) cons
     if (isBlob()) {
         auto body = FormData::create();
         body->appendBlob(blobBody().url());
-        return body.copyRef();
+        return body;
     }
     if (isArrayBuffer())
         return FormData::create(arrayBufferBody().data(), arrayBufferBody().byteLength());
@@ -253,7 +253,7 @@ RefPtr<FormData> FetchBody::bodyAsFormData(ScriptExecutionContext& context) cons
         ASSERT(!context.isWorkerGlobalScope());
         auto body = makeRef(const_cast<FormData&>(formDataBody()));
         body->generateFiles(&downcast<Document>(context));
-        return body.copyRef();
+        return body;
     }
     if (auto* data = m_consumer.data())
         return FormData::create(data->data(), data->size());
@@ -274,7 +274,7 @@ FetchBody::TakenData FetchBody::take()
     if (isBlob()) {
         auto body = FormData::create();
         body->appendBlob(blobBody().url());
-        return body.copyRef();
+        return TakenData { WTFMove(body) };
     }
 
     if (isFormData())