Do everything necessary to make IDBConnectionToServer::putOrAdd pass it's key by rvalue This is a spinoff from https://bugs.webkit.org/show_bug.cgi?id=158124 It seems simple to do this, but it opens a can of worms making templated objects and lambdas handle it. But we should still do it.
(In reply to comment #0) > Do everything necessary to make IDBConnectionToServer::putOrAdd pass it's > key by rvalue > > This is a spinoff from https://bugs.webkit.org/show_bug.cgi?id=158124 > > It seems simple to do this, but it opens a can of worms making templated > objects and lambdas handle it. > > But we should still do it. Actually... this is unlikely to be possible: The can of worms that opens is once that IDBKeyData rvalue hits CrossThreadCopier/CrossThreadTask. But when an object hits those, we *have* to make an isolatedCopy. So whether we WTFMove the IDBKeyData&& all the way along the chain, or just pass it by const IDBKeyData& all the way along the chain, we get no benefit - We have to make an isolatedCopy in the end. That said, while exploring this I came up with some great enhancements to CrossThreadTask.