⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 194428 in webkit


Ignore:
Timestamp:
Dec 28, 2015, 8:26:24 AM (11 years ago)
Author:
aestes@apple.com
Message:

Stop moving local objects in return statements
https://bugs.webkit.org/show_bug.cgi?id=152557

Reviewed by Brady Eidson.

Source/JavaScriptCore:

Calling std::move() on a local object in a return statement prevents the compiler from applying the return value optimization.

Clang can warn about these mistakes with -Wpessimizing-move, although only when std::move() is called directly.
I found these issues by temporarily replacing WTF::move with std::move and recompiling.

  • inspector/ScriptCallStack.cpp:

(Inspector::ScriptCallStack::buildInspectorArray):

  • inspector/agents/InspectorScriptProfilerAgent.cpp:

(Inspector::buildInspectorObject):

  • jit/CallFrameShuffler.h:

(JSC::CallFrameShuffler::snapshot):

  • runtime/TypeSet.cpp:

(JSC::TypeSet::allStructureRepresentations):
(JSC::StructureShape::inspectorRepresentation):

Source/WebCore:

Calling std::move() on a local object in a return statement prevents the compiler from applying the return value optimization.

Clang can warn about these mistakes with -Wpessimizing-move, although only when std::move() is called directly.
I found these issues by temporarily replacing WTF::move with std::move and recompiling.

  • Modules/indexeddb/IDBDatabaseIdentifier.cpp:

(WebCore::IDBDatabaseIdentifier::isolatedCopy):

  • Modules/indexeddb/IDBKeyData.cpp:

(WebCore::IDBKeyData::deletedValue):

  • Modules/indexeddb/client/IDBDatabaseImpl.cpp:

(WebCore::IDBClient::IDBDatabase::objectStoreNames):
(WebCore::IDBClient::IDBDatabase::startVersionChangeTransaction):

  • Modules/indexeddb/client/IDBTransactionImpl.cpp:

(WebCore::IDBClient::IDBTransaction::createObjectStore):
(WebCore::IDBClient::IDBTransaction::createIndex):
(WebCore::IDBClient::IDBTransaction::doRequestOpenCursor):
(WebCore::IDBClient::IDBTransaction::requestGetRecord):
(WebCore::IDBClient::IDBTransaction::requestIndexRecord):
(WebCore::IDBClient::IDBTransaction::requestClearObjectStore):
(WebCore::IDBClient::IDBTransaction::requestPutOrAdd):

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::takeNextRunnableTransaction):

  • Modules/indexeddb/shared/IDBDatabaseInfo.cpp:

(WebCore::IDBDatabaseInfo::isolatedCopy):
(WebCore::IDBDatabaseInfo::objectStoreNames):

  • Modules/indexeddb/shared/IDBResultData.cpp:

(WebCore::IDBResultData::error):
(WebCore::IDBResultData::openDatabaseSuccess):
(WebCore::IDBResultData::openDatabaseUpgradeNeeded):

  • Modules/indexeddb/shared/IDBTransactionInfo.cpp:

(WebCore::IDBTransactionInfo::versionChange):
(WebCore::IDBTransactionInfo::isolatedCopy):

  • Modules/indexeddb/shared/InProcessIDBServer.cpp:

(WebCore::InProcessIDBServer::create):

  • Modules/webaudio/OfflineAudioContext.cpp:

(WebCore::OfflineAudioContext::create):

  • Modules/webdatabase/DatabaseTracker.cpp:

(WebCore::DatabaseTracker::originLockFor):

  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::create):

  • css/CSSPrimitiveValue.cpp:

(WebCore::CSSPrimitiveValue::formatNumberValue):

  • dom/NodeOrString.cpp:

(WebCore::convertNodesOrStringsIntoNode):

  • inspector/InspectorApplicationCacheAgent.cpp:

(WebCore::InspectorApplicationCacheAgent::buildArrayForApplicationCacheResources):

  • inspector/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::buildObjectForNode):
(WebCore::InspectorDOMAgent::buildArrayForElementAttributes):
(WebCore::InspectorDOMAgent::buildArrayForContainerChildren):
(WebCore::InspectorDOMAgent::buildObjectForEventListener):

  • inspector/InspectorIndexedDBAgent.cpp:
  • inspector/InspectorLayerTreeAgent.cpp:

(WebCore::InspectorLayerTreeAgent::buildObjectForLayer):

  • inspector/InspectorNetworkAgent.cpp:

(WebCore::buildObjectForHeaders):
(WebCore::buildObjectForResourceRequest):
(WebCore::buildObjectForCachedResource):

  • inspector/InspectorOverlay.cpp:

(WebCore::buildArrayForQuad):
(WebCore::buildObjectForFlowRegions):
(WebCore::InspectorOverlay::buildObjectForHighlightedNodes):

  • inspector/InspectorPageAgent.cpp:

(WebCore::createXHRTextDecoder):
(WebCore::buildArrayForCookies):
(WebCore::InspectorPageAgent::buildObjectForFrame):

  • inspector/InspectorStyleSheet.cpp:

(WebCore::buildMediaObject):
(WebCore::InspectorStyle::buildArrayForComputedStyle):
(WebCore::buildObjectForSelectorHelper):
(WebCore::selectorsFromSource):
(WebCore::InspectorStyleSheet::buildObjectForSelectorList):
(WebCore::InspectorStyleSheet::buildObjectForStyle):
(WebCore::InspectorStyleSheet::buildArrayForRuleList):

  • inspector/InspectorTimelineAgent.cpp:

(WebCore::InspectorTimelineAgent::stopFromConsole):

  • inspector/TimelineRecordFactory.cpp:

(WebCore::TimelineRecordFactory::createGenericRecord):
(WebCore::TimelineRecordFactory::createFunctionCallData):
(WebCore::TimelineRecordFactory::createConsoleProfileData):
(WebCore::TimelineRecordFactory::createProbeSampleData):
(WebCore::TimelineRecordFactory::createEventDispatchData):
(WebCore::TimelineRecordFactory::createGenericTimerData):
(WebCore::TimelineRecordFactory::createTimerInstallData):
(WebCore::TimelineRecordFactory::createEvaluateScriptData):
(WebCore::TimelineRecordFactory::createTimeStampData):
(WebCore::TimelineRecordFactory::createAnimationFrameData):
(WebCore::createQuad):
(WebCore::TimelineRecordFactory::createPaintData):
(WebCore::buildInspectorObject):

  • loader/FrameLoader.cpp:

(WebCore::createWindow):

  • loader/NavigationAction.cpp:

(WebCore::NavigationAction::copyWithShouldOpenExternalURLsPolicy):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::createWindow):

  • platform/network/ios/QuickLook.mm:

(WebCore::QuickLookHandle::create):

  • testing/Internals.cpp:

(WebCore::Internals::openDummyInspectorFrontend):

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::createResourceRequest):

  • xml/XPathExpression.cpp:

(WebCore::XPathExpression::evaluate):

Source/WebKit2:

Calling std::move() on a local object in a return statement prevents the compiler from applying the return value optimization.

Clang can warn about these mistakes with -Wpessimizing-move, although only when std::move() is called directly.
I found these issues by temporarily replacing WTF::move with std::move and recompiling.

  • UIProcess/WebPageProxy.cpp:

(WebKit::ExceededDatabaseQuotaRecords::createRecord):

Source/WTF:

  • wtf/StdLibExtras.h: Added a FIXME about how using WTF::move() prevents several Clang diagnostics from emitting useful warnings.
Location:
trunk/Source
Files:
41 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r194423 r194428  
     12015-12-25  Andy Estes  <aestes@apple.com>
     2
     3        Stop moving local objects in return statements
     4        https://bugs.webkit.org/show_bug.cgi?id=152557
     5
     6        Reviewed by Brady Eidson.
     7
     8        Calling std::move() on a local object in a return statement prevents the compiler from applying the return value optimization.
     9
     10        Clang can warn about these mistakes with -Wpessimizing-move, although only when std::move() is called directly.
     11        I found these issues by temporarily replacing WTF::move with std::move and recompiling.
     12
     13        * inspector/ScriptCallStack.cpp:
     14        (Inspector::ScriptCallStack::buildInspectorArray):
     15        * inspector/agents/InspectorScriptProfilerAgent.cpp:
     16        (Inspector::buildInspectorObject):
     17        * jit/CallFrameShuffler.h:
     18        (JSC::CallFrameShuffler::snapshot):
     19        * runtime/TypeSet.cpp:
     20        (JSC::TypeSet::allStructureRepresentations):
     21        (JSC::StructureShape::inspectorRepresentation):
     22
    1232015-12-26  Mark Lam  <mark.lam@apple.com>
    224
  • trunk/Source/JavaScriptCore/inspector/ScriptCallStack.cpp

    r178820 r194428  
    112112    for (size_t i = 0; i < m_frames.size(); i++)
    113113        frames->addItem(m_frames.at(i).buildInspectorObject());
    114     return WTF::move(frames);
     114    return frames;
    115115}
    116116
  • trunk/Source/JavaScriptCore/inspector/agents/InspectorScriptProfilerAgent.cpp

    r194242 r194428  
    182182    }
    183183
    184     return WTF::move(result);
     184    return result;
    185185}
    186186
  • trunk/Source/JavaScriptCore/jit/CallFrameShuffler.h

    r190370 r194428  
    118118#endif
    119119        }
    120         return WTF::move(data);
     120        return data;
    121121    }
    122122
  • trunk/Source/JavaScriptCore/runtime/TypeSet.cpp

    r184828 r194428  
    225225        description->addItem(m_structureHistory.at(i)->inspectorRepresentation());
    226226
    227     return WTF::move(description);
     227    return description;
    228228}
    229229
     
    524524    }
    525525
    526     return WTF::move(base);
     526    return base;
    527527}
    528528
  • trunk/Source/WTF/ChangeLog

    r194382 r194428  
     12015-12-25  Andy Estes  <aestes@apple.com>
     2
     3        Stop moving local objects in return statements
     4        https://bugs.webkit.org/show_bug.cgi?id=152557
     5
     6        Reviewed by Brady Eidson.
     7
     8        * wtf/StdLibExtras.h: Added a FIXME about how using WTF::move() prevents several Clang diagnostics from emitting useful warnings.
     9
    1102015-12-22  Filip Pizlo  <fpizlo@apple.com>
    211
  • trunk/Source/WTF/wtf/StdLibExtras.h

    r190090 r194428  
    112112namespace WTF {
    113113
     114// FIXME: Using this function prevents Clang's move diagnostics (-Wpessimizing-move, -Wredundant-move, -Wself-move) from
     115// finding mistakes, since these diagnostics only evaluate calls to std::move().
    114116template<typename T>
    115117ALWAYS_INLINE typename std::remove_reference<T>::type&& move(T&& value)
  • trunk/Source/WebCore/ChangeLog

    r194426 r194428  
     12015-12-25  Andy Estes  <aestes@apple.com>
     2
     3        Stop moving local objects in return statements
     4        https://bugs.webkit.org/show_bug.cgi?id=152557
     5
     6        Reviewed by Brady Eidson.
     7
     8        Calling std::move() on a local object in a return statement prevents the compiler from applying the return value optimization.
     9
     10        Clang can warn about these mistakes with -Wpessimizing-move, although only when std::move() is called directly.
     11        I found these issues by temporarily replacing WTF::move with std::move and recompiling.
     12
     13        * Modules/indexeddb/IDBDatabaseIdentifier.cpp:
     14        (WebCore::IDBDatabaseIdentifier::isolatedCopy):
     15        * Modules/indexeddb/IDBKeyData.cpp:
     16        (WebCore::IDBKeyData::deletedValue):
     17        * Modules/indexeddb/client/IDBDatabaseImpl.cpp:
     18        (WebCore::IDBClient::IDBDatabase::objectStoreNames):
     19        (WebCore::IDBClient::IDBDatabase::startVersionChangeTransaction):
     20        * Modules/indexeddb/client/IDBTransactionImpl.cpp:
     21        (WebCore::IDBClient::IDBTransaction::createObjectStore):
     22        (WebCore::IDBClient::IDBTransaction::createIndex):
     23        (WebCore::IDBClient::IDBTransaction::doRequestOpenCursor):
     24        (WebCore::IDBClient::IDBTransaction::requestGetRecord):
     25        (WebCore::IDBClient::IDBTransaction::requestIndexRecord):
     26        (WebCore::IDBClient::IDBTransaction::requestClearObjectStore):
     27        (WebCore::IDBClient::IDBTransaction::requestPutOrAdd):
     28        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
     29        (WebCore::IDBServer::UniqueIDBDatabase::takeNextRunnableTransaction):
     30        * Modules/indexeddb/shared/IDBDatabaseInfo.cpp:
     31        (WebCore::IDBDatabaseInfo::isolatedCopy):
     32        (WebCore::IDBDatabaseInfo::objectStoreNames):
     33        * Modules/indexeddb/shared/IDBResultData.cpp:
     34        (WebCore::IDBResultData::error):
     35        (WebCore::IDBResultData::openDatabaseSuccess):
     36        (WebCore::IDBResultData::openDatabaseUpgradeNeeded):
     37        * Modules/indexeddb/shared/IDBTransactionInfo.cpp:
     38        (WebCore::IDBTransactionInfo::versionChange):
     39        (WebCore::IDBTransactionInfo::isolatedCopy):
     40        * Modules/indexeddb/shared/InProcessIDBServer.cpp:
     41        (WebCore::InProcessIDBServer::create):
     42        * Modules/webaudio/OfflineAudioContext.cpp:
     43        (WebCore::OfflineAudioContext::create):
     44        * Modules/webdatabase/DatabaseTracker.cpp:
     45        (WebCore::DatabaseTracker::originLockFor):
     46        * Modules/websockets/WebSocket.cpp:
     47        (WebCore::WebSocket::create):
     48        * css/CSSPrimitiveValue.cpp:
     49        (WebCore::CSSPrimitiveValue::formatNumberValue):
     50        * dom/NodeOrString.cpp:
     51        (WebCore::convertNodesOrStringsIntoNode):
     52        * inspector/InspectorApplicationCacheAgent.cpp:
     53        (WebCore::InspectorApplicationCacheAgent::buildArrayForApplicationCacheResources):
     54        * inspector/InspectorDOMAgent.cpp:
     55        (WebCore::InspectorDOMAgent::buildObjectForNode):
     56        (WebCore::InspectorDOMAgent::buildArrayForElementAttributes):
     57        (WebCore::InspectorDOMAgent::buildArrayForContainerChildren):
     58        (WebCore::InspectorDOMAgent::buildObjectForEventListener):
     59        * inspector/InspectorIndexedDBAgent.cpp:
     60        * inspector/InspectorLayerTreeAgent.cpp:
     61        (WebCore::InspectorLayerTreeAgent::buildObjectForLayer):
     62        * inspector/InspectorNetworkAgent.cpp:
     63        (WebCore::buildObjectForHeaders):
     64        (WebCore::buildObjectForResourceRequest):
     65        (WebCore::buildObjectForCachedResource):
     66        * inspector/InspectorOverlay.cpp:
     67        (WebCore::buildArrayForQuad):
     68        (WebCore::buildObjectForFlowRegions):
     69        (WebCore::InspectorOverlay::buildObjectForHighlightedNodes):
     70        * inspector/InspectorPageAgent.cpp:
     71        (WebCore::createXHRTextDecoder):
     72        (WebCore::buildArrayForCookies):
     73        (WebCore::InspectorPageAgent::buildObjectForFrame):
     74        * inspector/InspectorStyleSheet.cpp:
     75        (WebCore::buildMediaObject):
     76        (WebCore::InspectorStyle::buildArrayForComputedStyle):
     77        (WebCore::buildObjectForSelectorHelper):
     78        (WebCore::selectorsFromSource):
     79        (WebCore::InspectorStyleSheet::buildObjectForSelectorList):
     80        (WebCore::InspectorStyleSheet::buildObjectForStyle):
     81        (WebCore::InspectorStyleSheet::buildArrayForRuleList):
     82        * inspector/InspectorTimelineAgent.cpp:
     83        (WebCore::InspectorTimelineAgent::stopFromConsole):
     84        * inspector/TimelineRecordFactory.cpp:
     85        (WebCore::TimelineRecordFactory::createGenericRecord):
     86        (WebCore::TimelineRecordFactory::createFunctionCallData):
     87        (WebCore::TimelineRecordFactory::createConsoleProfileData):
     88        (WebCore::TimelineRecordFactory::createProbeSampleData):
     89        (WebCore::TimelineRecordFactory::createEventDispatchData):
     90        (WebCore::TimelineRecordFactory::createGenericTimerData):
     91        (WebCore::TimelineRecordFactory::createTimerInstallData):
     92        (WebCore::TimelineRecordFactory::createEvaluateScriptData):
     93        (WebCore::TimelineRecordFactory::createTimeStampData):
     94        (WebCore::TimelineRecordFactory::createAnimationFrameData):
     95        (WebCore::createQuad):
     96        (WebCore::TimelineRecordFactory::createPaintData):
     97        (WebCore::buildInspectorObject):
     98        * loader/FrameLoader.cpp:
     99        (WebCore::createWindow):
     100        * loader/NavigationAction.cpp:
     101        (WebCore::NavigationAction::copyWithShouldOpenExternalURLsPolicy):
     102        * page/DOMWindow.cpp:
     103        (WebCore::DOMWindow::createWindow):
     104        * platform/network/ios/QuickLook.mm:
     105        (WebCore::QuickLookHandle::create):
     106        * testing/Internals.cpp:
     107        (WebCore::Internals::openDummyInspectorFrontend):
     108        * workers/WorkerScriptLoader.cpp:
     109        (WebCore::WorkerScriptLoader::createResourceRequest):
     110        * xml/XPathExpression.cpp:
     111        (WebCore::XPathExpression::evaluate):
     112
    11132015-12-27  Zalan Bujtas  <zalan@apple.com>
    2114
  • trunk/Source/WebCore/Modules/indexeddb/IDBDatabaseIdentifier.cpp

    r190379 r194428  
    5353    identifier.m_mainFrameOrigin = m_mainFrameOrigin.isolatedCopy();
    5454
    55     return WTF::move(identifier);
     55    return identifier;
    5656}
    5757
  • trunk/Source/WebCore/Modules/indexeddb/IDBKeyData.cpp

    r191635 r194428  
    325325    result.m_isNull = false;
    326326    result.m_isDeletedValue = true;
    327     return WTF::move(result);
     327    return result;
    328328}
    329329
  • trunk/Source/WebCore/Modules/indexeddb/client/IDBDatabaseImpl.cpp

    r194413 r194428  
    8585        objectStoreNames->append(name);
    8686    objectStoreNames->sort();
    87     return WTF::move(objectStoreNames);
     87    return objectStoreNames;
    8888}
    8989
     
    267267    m_activeTransactions.set(transaction->info().identifier(), &transaction.get());
    268268
    269     return WTF::move(transaction);
     269    return transaction;
    270270}
    271271
  • trunk/Source/WebCore/Modules/indexeddb/client/IDBTransactionImpl.cpp

    r193970 r194428  
    445445    scheduleOperation(WTF::move(operation));
    446446
    447     return WTF::move(objectStore);
     447    return objectStore;
    448448}
    449449
     
    474474    scheduleOperation(WTF::move(operation));
    475475
    476     return WTF::move(index);
     476    return index;
    477477}
    478478
     
    530530    scheduleOperation(WTF::move(operation));
    531531
    532     return WTF::move(request);
     532    return request;
    533533}
    534534
     
    585585    scheduleOperation(WTF::move(operation));
    586586
    587     return WTF::move(request);
     587    return request;
    588588}
    589589
     
    612612    scheduleOperation(WTF::move(operation));
    613613
    614     return WTF::move(request);
     614    return request;
    615615}
    616616
     
    733733    scheduleOperation(WTF::move(operation));
    734734
    735     return WTF::move(request);
     735    return request;
    736736}
    737737
     
    764764    scheduleOperation(WTF::move(operation));
    765765
    766     return WTF::move(request);
     766    return request;
    767767}
    768768
  • trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp

    r194414 r194428  
    10861086    hadDeferredTransactions = !deferredTransactions.isEmpty();
    10871087    if (!hadDeferredTransactions)
    1088         return WTF::move(currentTransaction);
     1088        return currentTransaction;
    10891089
    10901090    // Prepend the deferred transactions back on the beginning of the deque for future scheduling passes.
     
    10921092        m_pendingTransactions.prepend(deferredTransactions.takeLast());
    10931093
    1094     return WTF::move(currentTransaction);
     1094    return currentTransaction;
    10951095}
    10961096
  • trunk/Source/WebCore/Modules/indexeddb/shared/IDBDatabaseInfo.cpp

    r192645 r194428  
    4848    info.m_version = m_version;
    4949
    50     return WTF::move(info);
     50    return info;
    5151}
    5252
     
    124124        names.uncheckedAppend(objectStore.name());
    125125
    126     return WTF::move(names);
     126    return names;
    127127}
    128128
  • trunk/Source/WebCore/Modules/indexeddb/shared/IDBResultData.cpp

    r192687 r194428  
    6868    result.m_type = IDBResultType::Error;
    6969    result.m_error = error;
    70     return WTF::move(result);
     70    return result;
    7171}
    7272
     
    7777    result.m_databaseConnectionIdentifier = connection.identifier();
    7878    result.m_databaseInfo = std::make_unique<IDBDatabaseInfo>(connection.database().info());
    79     return WTF::move(result);
     79    return result;
    8080}
    8181
     
    8888    result.m_databaseInfo = std::make_unique<IDBDatabaseInfo>(transaction.databaseConnection().database().info());
    8989    result.m_transactionInfo = std::make_unique<IDBTransactionInfo>(transaction.info());
    90     return WTF::move(result);
     90    return result;
    9191}
    9292
  • trunk/Source/WebCore/Modules/indexeddb/shared/IDBTransactionInfo.cpp

    r194414 r194428  
    5454    result.m_originalDatabaseInfo = std::make_unique<IDBDatabaseInfo>(originalDatabaseInfo);
    5555
    56     return WTF::move(result);
     56    return result;
    5757}
    5858
     
    8080        result.m_originalDatabaseInfo = std::make_unique<IDBDatabaseInfo>(*m_originalDatabaseInfo);
    8181
    82     return WTF::move(result);
     82    return result;
    8383}
    8484
  • trunk/Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.cpp

    r194414 r194428  
    4545    Ref<InProcessIDBServer> server = adoptRef(*new InProcessIDBServer);
    4646    server->m_server->registerConnection(server->connectionToClient());
    47     return WTF::move(server);
     47    return server;
    4848}
    4949
  • trunk/Source/WebCore/Modules/webaudio/OfflineAudioContext.cpp

    r184709 r194428  
    5252    RefPtr<OfflineAudioContext> audioContext(adoptRef(new OfflineAudioContext(document, numberOfChannels, numberOfFrames, sampleRate)));
    5353    audioContext->suspendIfNeeded();
    54     return WTF::move(audioContext);
     54    return audioContext;
    5555}
    5656
  • trunk/Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp

    r188772 r194428  
    668668    addResult.iterator->value = lock;
    669669
    670     return WTF::move(lock);
     670    return lock;
    671671}
    672672
  • trunk/Source/WebCore/Modules/websockets/WebSocket.cpp

    r192848 r194428  
    184184        return nullptr;
    185185
    186     return WTF::move(webSocket);
     186    return webSocket;
    187187}
    188188
  • trunk/Source/WebCore/css/CSSPrimitiveValue.cpp

    r191128 r194428  
    977977        buffer[length + i] = static_cast<LChar>(suffix[i]);
    978978
    979     return WTF::move(string);
     979    return string;
    980980}
    981981
  • trunk/Source/WebCore/dom/NodeOrString.cpp

    r186803 r194428  
    6262    }
    6363   
    64     return WTF::move(nodeToReturn);
     64    return nodeToReturn;
    6565}
    6666
  • trunk/Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp

    r189438 r194428  
    165165        resources->addItem(buildObjectForApplicationCacheResource(resourceInfo));
    166166
    167     return WTF::move(resources);
     167    return resources;
    168168}
    169169
  • trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp

    r190271 r194428  
    13771377    }
    13781378
    1379     return WTF::move(value);
     1379    return value;
    13801380}
    13811381
     
    13851385    // Go through all attributes and serialize them.
    13861386    if (!element->hasAttributes())
    1387         return WTF::move(attributesValue);
     1387        return attributesValue;
    13881388    for (const Attribute& attribute : element->attributesIterator()) {
    13891389        // Add attribute pair
     
    13911391        attributesValue->addItem(attribute.value());
    13921392    }
    1393     return WTF::move(attributesValue);
     1393    return attributesValue;
    13941394}
    13951395
     
    14041404            m_childrenRequested.add(bind(container, nodesMap));
    14051405        }
    1406         return WTF::move(children);
     1406        return children;
    14071407    }
    14081408
     
    14151415        child = innerNextSibling(child);
    14161416    }
    1417     return WTF::move(children);
     1417    return children;
    14181418}
    14191419
     
    14821482            value->setSourceName(sourceName);
    14831483    }
    1484     return WTF::move(value);
     1484    return value;
    14851485}
    14861486   
  • trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.cpp

    r193428 r194428  
    226226    if (ec.code)
    227227        return nullptr;
    228     return WTF::move(idbTransaction);
     228    return idbTransaction;
    229229}
    230230
     
    235235    if (ec.code)
    236236        return nullptr;
    237     return WTF::move(idbObjectStore);
     237    return idbObjectStore;
    238238}
    239239
     
    244244    if (ec.code)
    245245        return nullptr;
    246     return WTF::move(idbIndex);
     246    return idbIndex;
    247247}
    248248
     
    277277    }
    278278
    279     return WTF::move(keyPath);
     279    return keyPath;
    280280}
    281281
  • trunk/Source/WebCore/inspector/InspectorLayerTreeAgent.cpp

    r189438 r194428  
    197197    }
    198198
    199     return WTF::move(layerObject);
     199    return layerObject;
    200200}
    201201
  • trunk/Source/WebCore/inspector/InspectorNetworkAgent.cpp

    r192061 r194428  
    187187    for (const auto& header : headers)
    188188        headersObject->setString(header.key, header.value);
    189     return WTF::move(headersObject);
     189    return headersObject;
    190190}
    191191
     
    213213    if (request.httpBody() && !request.httpBody()->isEmpty())
    214214        requestObject->setPostData(request.httpBody()->flattenToString());
    215     return WTF::move(requestObject);
     215    return requestObject;
    216216}
    217217
     
    253253        resourceObject->setSourceMapURL(sourceMappingURL);
    254254
    255     return WTF::move(resourceObject);
     255    return resourceObject;
    256256}
    257257
  • trunk/Source/WebCore/inspector/InspectorOverlay.cpp

    r190271 r194428  
    373373    array->addItem(buildObjectForPoint(quad.p3()));
    374374    array->addItem(buildObjectForPoint(quad.p4()));
    375     return WTF::move(array);
     375    return array;
    376376}
    377377
     
    451451    }
    452452
    453     return WTF::move(arrayOfRegions);
     453    return arrayOfRegions;
    454454}
    455455
     
    835835    }
    836836
    837     return WTF::move(highlights);
     837    return highlights;
    838838}
    839839
  • trunk/Source/WebCore/inspector/InspectorPageAgent.cpp

    r194017 r194428  
    131131    else
    132132        decoder = TextResourceDecoder::create("text/plain", "UTF-8");
    133     return WTF::move(decoder);
     133    return decoder;
    134134}
    135135
     
    444444        cookies->addItem(buildObjectForCookie(cookie));
    445445
    446     return WTF::move(cookies);
     446    return cookies;
    447447}
    448448
     
    909909    }
    910910
    911     return WTF::move(frameObject);
     911    return frameObject;
    912912}
    913913
  • trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp

    r190271 r194428  
    184184        mediaObject->setSourceLine(media->queries()->lastLine());
    185185    }
    186     return WTF::move(mediaObject);
     186    return mediaObject;
    187187}
    188188
     
    328328    }
    329329
    330     return WTF::move(result);
     330    return result;
    331331}
    332332
     
    876876    }
    877877
    878     return WTF::move(inspectorSelector);
     878    return inspectorSelector;
    879879}
    880880
     
    900900        selector = CSSSelectorList::next(selector);
    901901    }
    902     return WTF::move(result);
     902    return result;
    903903}
    904904
     
    932932    if (sourceData)
    933933        result->setRange(buildSourceRangeObject(sourceData->ruleHeaderRange, lineEndings().get()));
    934     return WTF::move(result);
     934    return result;
    935935}
    936936
     
    993993    }
    994994
    995     return WTF::move(result);
     995    return result;
    996996}
    997997
     
    12321232    auto result = Inspector::Protocol::Array<Inspector::Protocol::CSS::CSSRule>::create();
    12331233    if (!ruleList)
    1234         return WTF::move(result);
     1234        return result;
    12351235
    12361236    RefPtr<CSSRuleList> refRuleList = ruleList;
     
    12411241        result->addItem(buildObjectForRule(rule.get(), nullptr));
    12421242
    1243     return WTF::move(result);
     1243    return result;
    12441244}
    12451245
  • trunk/Source/WebCore/inspector/InspectorTimelineAgent.cpp

    r193426 r194428  
    267267                internalStop();
    268268
    269             return WTF::move(profile);
     269            return profile;
    270270        }
    271271    }
  • trunk/Source/WebCore/inspector/TimelineRecordFactory.cpp

    r191967 r194428  
    5656            record->setValue(ASCIILiteral("stackTrace"), stackTrace->buildInspectorArray());
    5757    }
    58     return WTF::move(record);
     58    return record;
    5959}
    6060
     
    6464    data->setString(ASCIILiteral("scriptName"), scriptName);
    6565    data->setInteger(ASCIILiteral("scriptLine"), scriptLine);
    66     return WTF::move(data);
     66    return data;
    6767}
    6868
     
    7171    Ref<InspectorObject> data = InspectorObject::create();
    7272    data->setString(ASCIILiteral("title"), title);
    73     return WTF::move(data);
     73    return data;
    7474}
    7575
     
    7979    data->setInteger(ASCIILiteral("probeId"), action.identifier);
    8080    data->setInteger(ASCIILiteral("sampleId"), sampleId);
    81     return WTF::move(data);
     81    return data;
    8282}
    8383
     
    8686    Ref<InspectorObject> data = InspectorObject::create();
    8787    data->setString(ASCIILiteral("type"), event.type().string());
    88     return WTF::move(data);
     88    return data;
    8989}
    9090
     
    9393    Ref<InspectorObject> data = InspectorObject::create();
    9494    data->setInteger(ASCIILiteral("timerId"), timerId);
    95     return WTF::move(data);
     95    return data;
    9696}
    9797
     
    102102    data->setInteger(ASCIILiteral("timeout"), timeout);
    103103    data->setBoolean(ASCIILiteral("singleShot"), singleShot);
    104     return WTF::move(data);
     104    return data;
    105105}
    106106
     
    110110    data->setString(ASCIILiteral("url"), url);
    111111    data->setInteger(ASCIILiteral("lineNumber"), lineNumber);
    112     return WTF::move(data);
     112    return data;
    113113}
    114114
     
    117117    Ref<InspectorObject> data = InspectorObject::create();
    118118    data->setString(ASCIILiteral("message"), message);
    119     return WTF::move(data);
     119    return data;
    120120}
    121121
     
    124124    Ref<InspectorObject> data = InspectorObject::create();
    125125    data->setInteger(ASCIILiteral("id"), callbackId);
    126     return WTF::move(data);
     126    return data;
    127127}
    128128
     
    138138    array->pushDouble(quad.p4().x());
    139139    array->pushDouble(quad.p4().y());
    140     return WTF::move(array);
     140    return array;
    141141}
    142142
     
    145145    Ref<InspectorObject> data = InspectorObject::create();
    146146    data->setArray(ASCIILiteral("clip"), createQuad(quad));
    147     return WTF::move(data);
     147    return data;
    148148}
    149149
     
    193193    }
    194194
    195     return WTF::move(result);
     195    return result;
    196196}
    197197
  • trunk/Source/WebCore/loader/FrameLoader.cpp

    r194419 r194428  
    35243524                    page->chrome().focus();
    35253525            }
    3526             return WTF::move(frame);
     3526            return frame;
    35273527        }
    35283528    }
     
    36163616
    36173617    created = true;
    3618     return WTF::move(frame);
     3618    return frame;
    36193619}
    36203620
  • trunk/Source/WebCore/loader/NavigationAction.cpp

    r185111 r194428  
    107107    NavigationAction result(*this);
    108108    result.m_shouldOpenExternalURLsPolicy = shouldOpenExternalURLsPolicy;
    109     return WTF::move(result);
     109    return result;
    110110}
    111111
  • trunk/Source/WebCore/page/DOMWindow.cpp

    r192848 r194428  
    21292129
    21302130    if (newFrame->document()->domWindow()->isInsecureScriptAccess(activeWindow, completedURL))
    2131         return WTF::move(newFrame);
     2131        return newFrame;
    21322132
    21332133    if (prepareDialogFunction)
     
    21472147        return nullptr;
    21482148
    2149     return WTF::move(newFrame);
     2149    return newFrame;
    21502150}
    21512151
  • trunk/Source/WebCore/platform/network/ios/QuickLook.mm

    r194378 r194428  
    404404    std::unique_ptr<QuickLookHandle> quickLookHandle(new QuickLookHandle([handle->firstRequest().nsURLRequest(DoNotUpdateHTTPBody) URL], connection, nsResponse, delegate));
    405405    handle->client()->didCreateQuickLookHandle(*quickLookHandle);
    406     return WTF::move(quickLookHandle);
     406    return quickLookHandle;
    407407}
    408408
     
    418418    std::unique_ptr<QuickLookHandle> quickLookHandle(new QuickLookHandle([handle->firstRequest().nsURLRequest(DoNotUpdateHTTPBody) URL], nil, nsResponse, delegate));
    419419    handle->client()->didCreateQuickLookHandle(*quickLookHandle);
    420     return WTF::move(quickLookHandle);
     420    return quickLookHandle;
    421421}
    422422
     
    440440    [delegate setQuickLookHandle:quickLookHandle.get()];
    441441    loader.didCreateQuickLookHandle(*quickLookHandle);
    442     return WTF::move(quickLookHandle);
     442    return quickLookHandle;
    443443}
    444444
  • trunk/Source/WebCore/testing/Internals.cpp

    r194322 r194428  
    18021802    m_inspectorFrontend = std::make_unique<InspectorStubFrontend>(inspectedPage, frontendWindow.copyRef());
    18031803
    1804     return WTF::move(frontendWindow);
     1804    return frontendWindow;
    18051805}
    18061806
  • trunk/Source/WebCore/workers/WorkerScriptLoader.cpp

    r174125 r194428  
    102102    auto request = std::make_unique<ResourceRequest>(m_url);
    103103    request->setHTTPMethod("GET");
    104     return WTF::move(request);
     104    return request;
    105105}
    106106   
  • trunk/Source/WebCore/xml/XPathExpression.cpp

    r184709 r194428  
    8888    }
    8989
    90     return WTF::move(result);
     90    return result;
    9191}
    9292
  • trunk/Source/WebKit2/ChangeLog

    r194425 r194428  
     12015-12-25  Andy Estes  <aestes@apple.com>
     2
     3        Stop moving local objects in return statements
     4        https://bugs.webkit.org/show_bug.cgi?id=152557
     5
     6        Reviewed by Brady Eidson.
     7
     8        Calling std::move() on a local object in a return statement prevents the compiler from applying the return value optimization.
     9
     10        Clang can warn about these mistakes with -Wpessimizing-move, although only when std::move() is called directly.
     11        I found these issues by temporarily replacing WTF::move with std::move and recompiling.
     12
     13        * UIProcess/WebPageProxy.cpp:
     14        (WebKit::ExceededDatabaseQuotaRecords::createRecord):
     15
    1162015-12-26  Joonghun Park  <jh718.park@samsung.com>
    217
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r194264 r194428  
    240240    record->expectedUsage = expectedUsage;
    241241    record->reply = reply;
    242     return WTF::move(record);
     242    return record;
    243243}
    244244
Note: See TracChangeset for help on using the changeset viewer.