HashTable::removeIf always shrinks the hash table by half even if there is nothing...
[WebKit-https.git] / Source / WTF / ChangeLog
index 884d884..5c29b20 100644 (file)
@@ -1,3 +1,582 @@
+2019-04-19  Ryosuke Niwa  <rniwa@webkit.org>
+
+        HashTable::removeIf always shrinks the hash table by half even if there is nothing left
+        https://bugs.webkit.org/show_bug.cgi?id=196681
+        <rdar://problem/49917764>
+
+        Reviewed by Darin Adler.
+
+        Address Darin's comments by removing the explicit type from std::max.
+
+        * wtf/HashTable.h:
+        (WTF::KeyTraits>::computeBestTableSize):
+        (WTF::KeyTraits>::shrinkToBestSize):
+
+2019-04-18  Chris Dumez  <cdumez@apple.com>
+
+        [iOS] Improve detection of when web views go to background / foreground
+        https://bugs.webkit.org/show_bug.cgi?id=197035
+        <rdar://problem/45281182>
+
+        Reviewed by Tim Horton.
+
+        Add build time flag.
+
+        * wtf/FeatureDefines.h:
+
+2019-04-18  Jer Noble  <jer.noble@apple.com>
+
+        Add support for parsing FairPlayStreaming PSSH boxes.
+        https://bugs.webkit.org/show_bug.cgi?id=197064
+
+        Reviewed by Eric Carlson.
+
+        * wtf/Platform.h:
+
+2019-04-18  Yusuke Suzuki  <ysuzuki@apple.com>
+
+        [WTF] StringBuilder should set correct m_is8Bit flag when merging
+        https://bugs.webkit.org/show_bug.cgi?id=197053
+
+        Reviewed by Saam Barati.
+
+        When appending StringBuilder to the other StringBuilder, we have a path that does not set m_is8Bit flag correctly.
+        This patch correctly sets this flag. And we also change 0 to nullptr when we are using 0 as a pointer.
+
+        * wtf/text/StringBuilder.cpp:
+        (WTF::StringBuilder::reserveCapacity):
+        (WTF::StringBuilder::appendUninitializedSlow):
+        (WTF::StringBuilder::append):
+        * wtf/text/StringBuilder.h:
+        (WTF::StringBuilder::append):
+        (WTF::StringBuilder::characters8 const):
+        (WTF::StringBuilder::characters16 const):
+        (WTF::StringBuilder::clear):
+
+2019-04-17  Tim Horton  <timothy_horton@apple.com>
+
+        Adopt different scroll view flashing SPI
+        https://bugs.webkit.org/show_bug.cgi?id=197043
+        <rdar://problem/49996476>
+
+        Reviewed by Wenson Hsieh.
+
+        * wtf/Platform.h:
+
+2019-04-17  Jer Noble  <jer.noble@apple.com>
+
+        Enable HAVE_AVFOUNDATION_VIDEO_OUTPUT on PLATFORM(IOSMAC)
+        https://bugs.webkit.org/show_bug.cgi?id=196994
+        <rdar://problem/44158331>
+
+        Reviewed by Alex Christensen.
+
+        * wtf/Platform.h:
+
+2019-04-16  Stephan Szabo  <stephan.szabo@sony.com>
+
+        [PlayStation] Update port for system library changes
+        https://bugs.webkit.org/show_bug.cgi?id=196978
+
+        Reviewed by Ross Kirsling.
+
+        * wtf/PlatformPlayStation.cmake:
+        Remove reference to deleted system library
+
+2019-04-16  Jer Noble  <jer.noble@apple.com>
+
+        Enable HAVE_AVKIT on PLATFORM(IOSMAC)
+        https://bugs.webkit.org/show_bug.cgi?id=196987
+
+        Reviewed by Tim Horton.
+
+        * wtf/Platform.h:
+
+2019-04-16  Robin Morisset  <rmorisset@apple.com>
+
+        [WTF] holdLock should be marked WARN_UNUSED_RETURN
+        https://bugs.webkit.org/show_bug.cgi?id=196922
+
+        Reviewed by Keith Miller.
+
+        * wtf/Locker.h:
+
+2019-04-16  Don Olmstead  <don.olmstead@sony.com>
+
+        [CMake] Set WTF_SCRIPTS_DIR
+        https://bugs.webkit.org/show_bug.cgi?id=196917
+
+        Reviewed by Konstantin Tokarev.
+
+        Use WTF_SCRIPTS_DIR for copying the unified sources script.
+
+        * wtf/CMakeLists.txt:
+
+2019-04-15  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        [Cocoa] FontPlatformData objects aren't cached at all when using font-family:system-ui
+        https://bugs.webkit.org/show_bug.cgi?id=196846
+        <rdar://problem/49499971>
+
+        Reviewed by Simon Fraser and Darin Adler.
+
+        * wtf/RetainPtr.h:
+        (WTF::safeCFEqual):
+        (WTF::safeCFHash):
+
+2019-04-12  Ryosuke Niwa  <rniwa@webkit.org>
+
+        HashTable::removeIf always shrinks the hash table by half even if there is nothing left
+        https://bugs.webkit.org/show_bug.cgi?id=196681
+
+        Reviewed by Darin Adler.
+
+        Made HashTable::removeIf shrink to the "best size", which is the least power of two bigger
+        than twice the key count as already used in the copy constructor.
+
+        * wtf/HashTable.h:
+        (WTF::HashTable::computeBestTableSize): Extracted from the copy constructor.
+        (WTF::HashTable::shrinkToBestSize): Added.
+        (WTF::HashTable::removeIf): Use shrinkToBestSize instead of shrink.
+        (WTF::HashTable::HashTable):
+
+2019-04-12  Eric Carlson  <eric.carlson@apple.com>
+
+        Update AudioSession route sharing policy
+        https://bugs.webkit.org/show_bug.cgi?id=196776
+        <rdar://problem/46501611>
+
+        Reviewed by Jer Noble.
+
+        * wtf/Platform.h: Define HAVE_ROUTE_SHARING_POLICY_LONG_FORM_VIDEO.
+
+2019-04-10  Said Abou-Hallawa  <sabouhallawa@apple.com>
+
+        requestAnimationFrame should execute before the next frame
+        https://bugs.webkit.org/show_bug.cgi?id=177484
+
+        Reviewed by Simon Fraser.
+
+        Add trace points for the page RenderingUpdate.
+
+        * wtf/SystemTracing.h:
+
+2019-04-10  Claudio Saavedra  <csaavedra@igalia.com>
+
+        Do not generate empty unified sources when unified builds are disabled
+        https://bugs.webkit.org/show_bug.cgi?id=196767
+
+        Reviewed by Konstantin Tokarev.
+
+        If unified builds are disabled, the ruby script to generate them
+        is still used to list the sources that need to be
+        compiled. Currently, the script always generates bundled unified
+        sources, even if it's being used just to list all the sources. So
+        when the unified builds are disabled and no files are going to be
+        bundled, the script generates one empty file per bundle manager
+        (that is, one C++ and one ObjectiveC), that gets added to the
+        sources to be compiled.
+
+        * Scripts/generate-unified-source-bundles.rb: Only go through the
+        bundle managers file generation when not running in
+        PrintAllSources mode, to avoid generating empty bundle files.
+
+2019-04-10  Enrique Ocaña González  <eocanha@igalia.com>
+
+        [WPE] Avoid async IO starving timers
+        https://bugs.webkit.org/show_bug.cgi?id=196733
+
+        Reviewed by Carlos Garcia Campos.
+
+        If AsyncIONetwork and DiskCacheRead priorities are higher than
+        MainThreadSharedTimer the timers get starved. This causes the NetworkProcess
+        to accumulate MB of data instead of handing it down to the WebProcess (done
+        using a Timer). This eventually causes an Out Of Memory kill on the
+        NetworkProcess on some embedded platforms with low memory limits.
+
+        This patch levels the three priorities to the same value, while still leaving
+        DiskCacheWrite with less priority than DiskCacheRead.
+
+        * wtf/glib/RunLoopSourcePriority.h: Changed RunLoopSourcePriority values for WPE.
+
+2019-04-09  Don Olmstead  <don.olmstead@sony.com>
+
+        [CMake] WTF derived sources should only be referenced inside WTF
+        https://bugs.webkit.org/show_bug.cgi?id=196706
+
+        Reviewed by Konstantin Tokarev.
+
+        Use ${WTF_DERIVED_SOURCES_DIR} instead of ${DERIVED_SOURCES_DIR} within WTF.
+
+        * wtf/CMakeLists.txt:
+        * wtf/PlatformJSCOnly.cmake:
+        * wtf/PlatformMac.cmake:
+
+2019-04-09  Don Olmstead  <don.olmstead@sony.com>
+
+        [CMake] Apple builds should use ICU_INCLUDE_DIRS
+        https://bugs.webkit.org/show_bug.cgi?id=196720
+
+        Reviewed by Konstantin Tokarev.
+
+        Copy ICU headers for Apple builds into ICU_INCLUDE_DIRS.
+
+        * CMakeLists.txt:
+        * wtf/PlatformMac.cmake:
+
+2019-04-08  Don Olmstead  <don.olmstead@sony.com>
+
+        [CMake][WinCairo] Separate copied headers into different directories
+        https://bugs.webkit.org/show_bug.cgi?id=196655
+
+        Reviewed by Michael Catanzaro.
+
+        * wtf/CMakeLists.txt:
+
+2019-04-08  Guillaume Emont  <guijemont@igalia.com>
+
+        Enable DFG on MIPS
+        https://bugs.webkit.org/show_bug.cgi?id=196689
+
+        Reviewed by Žan Doberšek.
+
+        Since the bytecode change, we enabled the baseline JIT on mips in
+        r240432, but DFG is still missing. With this change, all tests are
+        passing on a ci20 board.
+
+        * wtf/Platform.h: Enable DFG on MIPS by default.
+
+2019-04-06  Ryosuke Niwa  <rniwa@webkit.org>
+
+        Added tests for WeakHashSet::computesEmpty and WeakHashSet::computeSize
+        https://bugs.webkit.org/show_bug.cgi?id=196669
+
+        Reviewed by Geoffrey Garen.
+
+        Removed the superflous type names from forward declarations, and made WeakHashSet::add
+        take a const object to match other container types in WTF.
+
+        * wtf/WeakHashSet.h:
+        (WTF::WeakHashSet::add):
+        * wtf/WeakPtr.h:
+
+2019-04-05  Ryosuke Niwa  <rniwa@webkit.org>
+
+        Make WeakPtr<Element> possible and deploy it in form associated elements code
+        https://bugs.webkit.org/show_bug.cgi?id=196626
+
+        Reviewed by Antti Koivisto.
+
+        Make it possible to call WeakHashSet::remove and WeakHashSet::contains with
+        a subclass type U of a type T used to define WeakReference<T>.
+
+        Also added computesEmpty, which is slightly more efficient than computeSize
+        when m_set is either empty or when there are non-released weak references in the set.
+
+        * wtf/WeakHashSet.h:
+        (WTF::WeakHashSet::remove):
+        (WTF::WeakHashSet::contains const):
+        (WTF::WeakHashSet::computesEmpty const): Added.
+        * wtf/WeakPtr.h: Added an explicit forward declaration of WeakHashSet to avoid
+        build failures in GTK+ and WPE ports.
+
+2019-04-05  Eric Carlson  <eric.carlson@apple.com>
+
+        Remove AUDIO_TOOLBOX_AUDIO_SESSION
+        https://bugs.webkit.org/show_bug.cgi?id=196653
+        <rdar://problem/49652098>
+
+        Reviewed by Jer Noble.
+
+        * wtf/Platform.h:
+
+2019-04-05  Michael Catanzaro  <mcatanzaro@igalia.com>
+
+        Unreviewed manual rollout of r243929
+        https://bugs.webkit.org/show_bug.cgi?id=196626
+
+        * wtf/WeakHashSet.h:
+        (WTF::WeakHashSet::remove):
+        (WTF::WeakHashSet::contains const):
+        (WTF::WeakHashSet::computesEmpty const): Deleted.
+
+2019-04-05  Commit Queue  <commit-queue@webkit.org>
+
+        Unreviewed, rolling out r243833.
+        https://bugs.webkit.org/show_bug.cgi?id=196645
+
+        This change breaks build of WPE and GTK ports (Requested by
+        annulen on #webkit).
+
+        Reverted changeset:
+
+        "[CMake][WTF] Mirror XCode header directories"
+        https://bugs.webkit.org/show_bug.cgi?id=191662
+        https://trac.webkit.org/changeset/243833
+
+2019-04-05  Ryosuke Niwa  <rniwa@webkit.org>
+
+        Make WeakPtr<Element> possible and deploy it in form associated elements code
+        https://bugs.webkit.org/show_bug.cgi?id=196626
+
+        Reviewed by Antti Koivisto.
+
+        Make it possible to call WeakHashSet::remove and WeakHashSet::contains with
+        a subclass type U of a type T used to define WeakReference<T>.
+
+        Also added computesEmpty, which is slightly more efficient than computeSize
+        when m_set is either empty or when there are non-released weak references in the set.
+
+        * wtf/WeakHashSet.h:
+        (WTF::WeakHashSet::remove):
+        (WTF::WeakHashSet::contains const):
+        (WTF::WeakHashSet::computesEmpty const): Added.
+
+2019-04-04  Yusuke Suzuki  <ysuzuki@apple.com>
+
+        [WebCore] Put most of derived classes of ScriptWrappable into IsoHeap
+        https://bugs.webkit.org/show_bug.cgi?id=196475
+
+        Reviewed by Saam Barati.
+
+        * wtf/ForbidHeapAllocation.h:
+        * wtf/IsoMalloc.h:
+        * wtf/IsoMallocInlines.h:
+
+2019-04-03  Don Olmstead  <don.olmstead@sony.com>
+
+        [CMake][WTF] Mirror XCode header directories
+        https://bugs.webkit.org/show_bug.cgi?id=191662
+
+        Reviewed by Konstantin Tokarev.
+
+        Rename WTF forwarding header target to WTFFramework and update the install location
+        to WTF_FRAMEWORK_HEADERS_DIR.
+
+        * wtf/CMakeLists.txt:
+
+2019-04-03  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Remote Inspector indicate callback should always happen on the main thread
+        https://bugs.webkit.org/show_bug.cgi?id=196513
+        <rdar://problem/49498284>
+
+        Reviewed by Devin Rousso.
+
+        * wtf/MainThread.h:
+        * wtf/cocoa/MainThreadCocoa.mm:
+        (WTF::dispatchAsyncOnMainThreadWithWebThreadLockIfNeeded):
+        * wtf/ios/WebCoreThread.cpp:
+        * wtf/ios/WebCoreThread.h:
+
+2019-04-02  Keith Rollin  <krollin@apple.com>
+
+        Inhibit CFNetwork logging in private sessions
+        https://bugs.webkit.org/show_bug.cgi?id=196268
+        <rdar://problem/48210793>
+
+        Fix a conditional in Platform.h where IOS should have been used
+        instead of IOS_FAMILY. The latter happened to work, but we really want
+        to be using the proper symbol here.
+
+        Reviewed by Alexey Proskuryakov.
+
+        * wtf/Platform.h:
+
+2019-04-01  Michael Catanzaro  <mcatanzaro@igalia.com>
+
+        Stop trying to support building JSC with clang 3.8
+        https://bugs.webkit.org/show_bug.cgi?id=195947
+        <rdar://problem/49069219>
+
+        Reviewed by Darin Adler.
+
+        It seems WebKit hasn't built with clang 3.8 in a while, no devs are using this compiler, we
+        don't know how much effort it would be to make JSC work again, and it's making the code
+        worse. Remove my hacks to support clang 3.8 from WTF.
+
+        * wtf/MetaAllocator.cpp:
+        (WTF::MetaAllocator::allocate):
+        * wtf/text/StringConcatenate.h:
+        (WTF::tryMakeStringFromAdapters):
+
+2019-03-31  Yusuke Suzuki  <ysuzuki@apple.com>
+
+        [JSC] Butterfly allocation from LargeAllocation should try "realloc" behavior if collector thread is not active
+        https://bugs.webkit.org/show_bug.cgi?id=196160
+
+        Reviewed by Saam Barati.
+
+        * wtf/FastMalloc.h:
+        (WTF::FastMalloc::tryRealloc):
+        * wtf/Gigacage.cpp:
+        (Gigacage::tryRealloc):
+        * wtf/Gigacage.h:
+
+2019-03-31  Andy Estes  <aestes@apple.com>
+
+        [iOS] WebKit should consult the navigation response policy delegate before previewing a QuickLook document
+        https://bugs.webkit.org/show_bug.cgi?id=196433
+        <rdar://problem/49293305>
+
+        Reviewed by Tim Horton.
+
+        * wtf/NeverDestroyed.h:
+        (WTF::NeverDestroyed::operator->):
+        (WTF::NeverDestroyed::operator-> const):
+
+2019-03-28  Fujii Hironori  <Hironori.Fujii@sony.com>
+
+        Unreviewed build fix.
+
+        * wtf/CMakeLists.txt: Added SpanningTree.h to WTF_PUBLIC_HEADERS.
+
+2019-03-28  Saam Barati  <sbarati@apple.com>
+
+        BackwardsGraph needs to consider back edges as the backward's root successor
+        https://bugs.webkit.org/show_bug.cgi?id=195991
+
+        Reviewed by Filip Pizlo.
+
+        Previously, our backwards graph analysis was slightly wrong. The idea of
+        backwards graph is that the root of the graph has edges to terminals in
+        the original graph. And then the original directed edges in the graph are flipped.
+        
+        However, we weren't considering loops as a form of terminality. For example,
+        we wouldn't consider an infinite loop as a terminal. So there were no edges
+        from the root to a node in the infinite loop. This lead us to make mistakes
+        when we used backwards dominators to compute control flow equivalence.
+        
+        This is better understood in an example:
+        
+        ```
+        preheader:
+        while (1) {
+            if (!isCell(v))
+                continue;
+            load structure ID
+            if (cond)
+               continue;
+            return
+        }
+        ```
+        
+        In the previous version of this algorithm, the only edge from the backwards
+        root would be to the block containing the return. This would lead us to
+        believe that the loading of the structureID backwards dominates the preheader,
+        leading us to believe it's control flow equivalent to preheader. This is
+        obviously wrong, since we can loop forever if "v" isn't a cell.
+        
+        The solution here is to treat any backedge in the graph as a "terminal" node.
+        Since a backedge implies the existence of a loop.
+        
+        In the above example, the backwards root now has an edge to both blocks with
+        "continue". This prevents us from falsely claiming that the return is control
+        flow equivalent with the preheader.
+        
+        This patch uses DFS spanning trees to compute back edges. An edge
+        u->v is a back edge when u is a descendent of v in the DFS spanning
+        tree of the Graph.
+
+        * WTF.xcodeproj/project.pbxproj:
+        * wtf/BackwardsGraph.h:
+        (WTF::BackwardsGraph::BackwardsGraph):
+        * wtf/SpanningTree.h: Added.
+        (SpanningTree::SpanningTree):
+        (SpanningTree::isDescendent):
+
+2019-03-28  Tim Horton  <timothy_horton@apple.com>
+
+        Un-fix the build
+
+        * wtf/Platform.h:
+        It is no longer necessary to exclude this from PLATFORM(IOSMAC).
+
+2019-03-27  Per Arne Vollan  <pvollan@apple.com>
+
+        Layout Test js/math-clz32.html is failing
+        https://bugs.webkit.org/show_bug.cgi?id=196209
+
+        Reviewed by Ross Kirsling.
+
+        Use the correct number of loop iterations when counting leading zeros. Also, the
+        count was off by one for the Win64 case.
+
+        * wtf/MathExtras.h:
+        (WTF::clz):
+
+2019-03-26  Keith Rollin  <krollin@apple.com>
+
+        Inhibit CFNetwork logging in private sessions
+        https://bugs.webkit.org/show_bug.cgi?id=196268
+        <rdar://problem/48210793>
+
+        Reviewed by Alex Christensen.
+
+        Before performing any logging, the NetworkProcess checks to see if
+        it's performing an operation associated with a private (ephemeral)
+        browsing session. If so, it skips the logging. However, networking
+        layers below the NetworkProcess don't know about private browsing, so
+        they would still perform their own logging. CFNetwork now has a flag
+        that lets us control that, so set it to False if private browsing.
+
+        * wtf/Platform.h:
+
+2019-03-25  Alex Christensen  <achristensen@webkit.org>
+
+        Expected shouldn't assume its contained types are copyable
+        https://bugs.webkit.org/show_bug.cgi?id=195986
+
+        Reviewed by JF Bastien.
+
+        * wtf/Expected.h:
+        (std::experimental::fundamentals_v3::__expected_detail::constexpr_base::constexpr_base):
+        (std::experimental::fundamentals_v3::operator==):
+        (std::experimental::fundamentals_v3::operator!=):
+        * wtf/Unexpected.h:
+        (std::experimental::fundamentals_v3::unexpected::unexpected):
+
+2019-03-24  Keith Miller  <keith_miller@apple.com>
+
+        Unreviewed, forgot to refactor variable name for windows build in
+        r243418.
+
+        * wtf/MathExtras.h:
+        (WTF::clz):
+        (WTF::ctz):
+
+2019-03-24  Andy Estes  <aestes@apple.com>
+
+        [watchOS] Remove unused Proximity Networking code
+        https://bugs.webkit.org/show_bug.cgi?id=196188
+
+        Reviewed by Tim Horton.
+
+        * wtf/FeatureDefines.h:
+
+2019-03-23  Keith Miller  <keith_miller@apple.com>
+
+        Refactor clz/ctz and fix getLSBSet.
+        https://bugs.webkit.org/show_bug.cgi?id=196162
+
+        Reviewed by Saam Barati.
+
+        This patch makes clz32/64 and ctz32 generic so they work on any
+        numeric type. Since these methods work on any type we don't need
+        to have a separate implementation of getLSBSet, which also
+        happened to be getMSBSet. This patch also adds getMSBSet as there
+        may be users who want that in the future.
+
+        * wtf/MathExtras.h:
+        (WTF::clz):
+        (WTF::ctz):
+        (WTF::getLSBSet):
+        (WTF::getMSBSet):
+        (getLSBSet): Deleted.
+        (WTF::clz32): Deleted.
+        (WTF::clz64): Deleted.
+        (WTF::ctz32): Deleted.
+
 2019-03-22  Keith Rollin  <krollin@apple.com>
 
         Enable ThinLTO support in Production builds