ChangeLog   [plain text]


2018-10-23  Kocsen Chung  <kocsen_chung@apple.com>

        Cherry-pick r236589. rdar://problem/45285669

    Verify the contents of AssemblerBuffer on arm64e
    https://bugs.webkit.org/show_bug.cgi?id=190057
    <rdar://problem/38916630>
    
    Reviewed by Mark Lam.
    
    JSTests:
    
    * stress/regress-189132.js:
    
    Source/JavaScriptCore:
    
    * assembler/ARM64Assembler.h:
    (JSC::ARM64Assembler::ARM64Assembler):
    (JSC::ARM64Assembler::fillNops):
    (JSC::ARM64Assembler::link):
    (JSC::ARM64Assembler::linkJumpOrCall):
    (JSC::ARM64Assembler::linkCompareAndBranch):
    (JSC::ARM64Assembler::linkConditionalBranch):
    (JSC::ARM64Assembler::linkTestAndBranch):
    (JSC::ARM64Assembler::unlinkedCode): Deleted.
    * assembler/ARMAssembler.h:
    (JSC::ARMAssembler::fillNops):
    * assembler/ARMv7Assembler.h:
    (JSC::ARMv7Assembler::unlinkedCode): Deleted.
    * assembler/AbstractMacroAssembler.h:
    (JSC::AbstractMacroAssembler::emitNops):
    (JSC::AbstractMacroAssembler::AbstractMacroAssembler):
    * assembler/AssemblerBuffer.h:
    (JSC::ARM64EHash::ARM64EHash):
    (JSC::ARM64EHash::update):
    (JSC::ARM64EHash::hash const):
    (JSC::ARM64EHash::randomSeed const):
    (JSC::AssemblerBuffer::AssemblerBuffer):
    (JSC::AssemblerBuffer::putShort):
    (JSC::AssemblerBuffer::putIntUnchecked):
    (JSC::AssemblerBuffer::putInt):
    (JSC::AssemblerBuffer::hash const):
    (JSC::AssemblerBuffer::data const):
    (JSC::AssemblerBuffer::putIntegralUnchecked):
    (JSC::AssemblerBuffer::append): Deleted.
    * assembler/LinkBuffer.cpp:
    (JSC::LinkBuffer::copyCompactAndLinkCode):
    * assembler/MIPSAssembler.h:
    (JSC::MIPSAssembler::fillNops):
    * assembler/MacroAssemblerARM64.h:
    (JSC::MacroAssemblerARM64::jumpsToLink):
    (JSC::MacroAssemblerARM64::link):
    (JSC::MacroAssemblerARM64::unlinkedCode): Deleted.
    * assembler/MacroAssemblerARMv7.h:
    (JSC::MacroAssemblerARMv7::jumpsToLink):
    (JSC::MacroAssemblerARMv7::unlinkedCode): Deleted.
    * assembler/X86Assembler.h:
    (JSC::X86Assembler::fillNops):
    
    Source/WTF:
    
    * wtf/PtrTag.h:
    (WTF::tagInt):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236589 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-09-27  Saam barati  <sbarati@apple.com>

            Verify the contents of AssemblerBuffer on arm64e
            https://bugs.webkit.org/show_bug.cgi?id=190057
            <rdar://problem/38916630>

            Reviewed by Mark Lam.

            * wtf/PtrTag.h:
            (WTF::tagInt):

2018-10-25  Kocsen Chung  <kocsen_chung@apple.com>

        Revert r237373. rdar://problem/45285669

2018-10-23  Kocsen Chung  <kocsen_chung@apple.com>

        Cherry-pick r236589. rdar://problem/45285669

    Verify the contents of AssemblerBuffer on arm64e
    https://bugs.webkit.org/show_bug.cgi?id=190057
    <rdar://problem/38916630>
    
    Reviewed by Mark Lam.
    
    JSTests:
    
    * stress/regress-189132.js:
    
    Source/JavaScriptCore:
    
    * assembler/ARM64Assembler.h:
    (JSC::ARM64Assembler::ARM64Assembler):
    (JSC::ARM64Assembler::fillNops):
    (JSC::ARM64Assembler::link):
    (JSC::ARM64Assembler::linkJumpOrCall):
    (JSC::ARM64Assembler::linkCompareAndBranch):
    (JSC::ARM64Assembler::linkConditionalBranch):
    (JSC::ARM64Assembler::linkTestAndBranch):
    (JSC::ARM64Assembler::unlinkedCode): Deleted.
    * assembler/ARMAssembler.h:
    (JSC::ARMAssembler::fillNops):
    * assembler/ARMv7Assembler.h:
    (JSC::ARMv7Assembler::unlinkedCode): Deleted.
    * assembler/AbstractMacroAssembler.h:
    (JSC::AbstractMacroAssembler::emitNops):
    (JSC::AbstractMacroAssembler::AbstractMacroAssembler):
    * assembler/AssemblerBuffer.h:
    (JSC::ARM64EHash::ARM64EHash):
    (JSC::ARM64EHash::update):
    (JSC::ARM64EHash::hash const):
    (JSC::ARM64EHash::randomSeed const):
    (JSC::AssemblerBuffer::AssemblerBuffer):
    (JSC::AssemblerBuffer::putShort):
    (JSC::AssemblerBuffer::putIntUnchecked):
    (JSC::AssemblerBuffer::putInt):
    (JSC::AssemblerBuffer::hash const):
    (JSC::AssemblerBuffer::data const):
    (JSC::AssemblerBuffer::putIntegralUnchecked):
    (JSC::AssemblerBuffer::append): Deleted.
    * assembler/LinkBuffer.cpp:
    (JSC::LinkBuffer::copyCompactAndLinkCode):
    * assembler/MIPSAssembler.h:
    (JSC::MIPSAssembler::fillNops):
    * assembler/MacroAssemblerARM64.h:
    (JSC::MacroAssemblerARM64::jumpsToLink):
    (JSC::MacroAssemblerARM64::link):
    (JSC::MacroAssemblerARM64::unlinkedCode): Deleted.
    * assembler/MacroAssemblerARMv7.h:
    (JSC::MacroAssemblerARMv7::jumpsToLink):
    (JSC::MacroAssemblerARMv7::unlinkedCode): Deleted.
    * assembler/X86Assembler.h:
    (JSC::X86Assembler::fillNops):
    
    Source/WTF:
    
    * wtf/PtrTag.h:
    (WTF::tagInt):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236589 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-09-27  Saam barati  <sbarati@apple.com>

            Verify the contents of AssemblerBuffer on arm64e
            https://bugs.webkit.org/show_bug.cgi?id=190057
            <rdar://problem/38916630>

            Reviewed by Mark Lam.

            * wtf/PtrTag.h:
            (WTF::tagInt):

2018-10-21  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r236969. rdar://problem/45285687

    StringTypeAdapter constructor is not properly enforcing String::MaxLength.
    https://bugs.webkit.org/show_bug.cgi?id=190392
    <rdar://problem/45116210>
    
    Reviewed by Saam Barati.
    
    Previously, the StringTypeAdapter constructor for a UChar* string was summing the
    unsigned length of the source string without an overflow check.  We now make that
    length a size_t which removes this issue, and assert that it's within
    String::MaxLength thereafter.
    
    Also made the StringTypeAdapter constructor for a LChar* string behave in an
    equivalent manner for consistency.  In both cases, we'll crash in a RELEASE_ASSERT
    if the source string length exceeds String::MaxLength.
    
    * wtf/text/StringConcatenate.h:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236969 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-10-09  Mark Lam  <mark.lam@apple.com>

            StringTypeAdapter constructor is not properly enforcing String::MaxLength.
            https://bugs.webkit.org/show_bug.cgi?id=190392
            <rdar://problem/45116210>

            Reviewed by Saam Barati.

            Previously, the StringTypeAdapter constructor for a UChar* string was summing the
            unsigned length of the source string without an overflow check.  We now make that
            length a size_t which removes this issue, and assert that it's within
            String::MaxLength thereafter.

            Also made the StringTypeAdapter constructor for a LChar* string behave in an
            equivalent manner for consistency.  In both cases, we'll crash in a RELEASE_ASSERT
            if the source string length exceeds String::MaxLength.

            * wtf/text/StringConcatenate.h:

2018-10-21  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r236804. rdar://problem/45285687

    Make string MaxLength for all WTF and JS strings consistently equal to INT_MAX.
    https://bugs.webkit.org/show_bug.cgi?id=190187
    <rdar://problem/42512909>
    
    Reviewed by Michael Saboff.
    
    JSTests:
    
    * stress/regress-190187.js: Added.
    
    Source/JavaScriptCore:
    
    Allowing different max string lengths at each level opens up opportunities for
    bugs to creep in.  With 2 different max length values, it is more difficult to
    keep the story straight on how we do overflow / bounds checks at each place in
    the code.  It's also difficult to tell if a seemingly valid check at the WTF level
    will have bad ramifications at the JSC level.  Also, it's also not meaningful to
    support a max length > INT_MAX.  To eliminate this class of bugs, we'll
    standardize on a MaxLength of INT_MAX at all levels.
    
    We'll also standardize the way we do length overflow checks on using
    CheckedArithmetic, and add some asserts to document the assumptions of the code.
    
    * runtime/FunctionConstructor.cpp:
    (JSC::constructFunctionSkippingEvalEnabledCheck):
    - Fix OOM error handling which crashed a test after the new MaxLength was applied.
    * runtime/JSString.h:
    (JSC::JSString::finishCreation):
    (JSC::JSString::createHasOtherOwner):
    (JSC::JSString::setLength):
    * runtime/JSStringInlines.h:
    (JSC::jsMakeNontrivialString):
    * runtime/Operations.h:
    (JSC::jsString):
    
    Source/WTF:
    
    * wtf/text/StringConcatenate.h:
    (WTF::tryMakeStringFromAdapters):
    (WTF::sumWithOverflow): Deleted.
    * wtf/text/StringImpl.h:
    * wtf/text/WTFString.h:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236804 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-10-03  Mark Lam  <mark.lam@apple.com>

            Make string MaxLength for all WTF and JS strings consistently equal to INT_MAX.
            https://bugs.webkit.org/show_bug.cgi?id=190187
            <rdar://problem/42512909>

            Reviewed by Michael Saboff.

            * wtf/text/StringConcatenate.h:
            (WTF::tryMakeStringFromAdapters):
            (WTF::sumWithOverflow): Deleted.
            * wtf/text/StringImpl.h:
            * wtf/text/WTFString.h:

2018-09-06  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r235721. rdar://problem/44212406

    Source/WebCore:
    The width of an empty or nullptr TextRun should be zero
    https://bugs.webkit.org/show_bug.cgi?id=189154
    <rdar://problem/43685926>
    
    Reviewed by Zalan Bujtas.
    
    If a page has an empty TextRun and attempts to paint it we can crash with a nullptr.
    
    This patch recognizes that an empty TextRun should always produce a zero width, rather than
    attempt to compute this value from font data. It also prevents ListBox from attempting to
    paint a null string.
    
    Test: fast/text/null-string-textrun.html
    
    * platform/graphics/FontCascade.cpp:
    (WebCore::FontCascade::widthOfTextRange const): An empty TextRun has zero width.
    (WebCore::FontCascade::width const): Ditto.
    * platform/graphics/TextRun.h:
    (WebCore::TextRun::TextRun): ASSERT that the supplied String is non-null.
    (WebCore::TextRun::setText): Ditto.
    * rendering/RenderListBox.cpp:
    (WebCore::RenderListBox::paintItemForeground): Don't attempt to paint a null string.
    
    Source/WTF:
    The width of an empty or nullptr TextRun should be zero
    https://bugs.webkit.org/show_bug.cgi?id=189154
    <rdar://problem/43685926>
    
    Reviewed by Zalan Bujtas.
    
    Most accessors in WTFString.cpp, such as isAllASCII(), hash(), etc., perform a nullptr check
    before using m_impl, but is8Bit() does not.
    
    This patch adds a check in the is8Bit() implementation to be consistent with other methods,
    and to address a small number of crashes observed in testing.
    
    * wtf/text/WTFString.h:
    (WTF::String::is8Bit const):
    
    LayoutTests:
    The width of a nullptr TextRun should be zero
    https://bugs.webkit.org/show_bug.cgi?id=189154
    <rdar://problem/43685926>
    
    Reviewed by Zalan Bujtas.
    
    * fast/text/null-string-textrun-expected.txt: Added.
    * fast/text/null-string-textrun.html: Added.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@235721 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-09-05  Brent Fulgham  <bfulgham@apple.com>

            The width of an empty or nullptr TextRun should be zero
            https://bugs.webkit.org/show_bug.cgi?id=189154
            <rdar://problem/43685926>

            Reviewed by Zalan Bujtas.

            Most accessors in WTFString.cpp, such as isAllASCII(), hash(), etc., perform a nullptr check
            before using m_impl, but is8Bit() does not.

            This patch adds a check in the is8Bit() implementation to be consistent with other methods,
            and to address a small number of crashes observed in testing.

            * wtf/text/WTFString.h:
            (WTF::String::is8Bit const):

2018-09-05  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234873. rdar://problem/44144063

    isValidCSSSelector is unsafe to be called from a non-main thread
    https://bugs.webkit.org/show_bug.cgi?id=188581
    <rdar://problem/40517358>
    
    Reviewed by Sam Weinig.
    
    Source/WebCore:
    
    Parsing and determining whether the css selectors are valid is fast enough to do before
    hopping to the background thread for the slow NFA/DFA operations and writing to disk.
    Doing it on the main thread avoids the thread safety issues in the CSSParser's use of strings.
    
    * contentextensions/ContentExtensionCompiler.cpp:
    (WebCore::ContentExtensions::compileRuleList):
    * contentextensions/ContentExtensionCompiler.h:
    * contentextensions/ContentExtensionParser.cpp:
    (WebCore::ContentExtensions::isValidCSSSelector):
    (WebCore::ContentExtensions::loadEncodedRules):
    (WebCore::ContentExtensions::parseRuleList):
    * contentextensions/ContentExtensionParser.h:
    * contentextensions/ContentExtensionRule.cpp:
    (WebCore::ContentExtensions::Trigger::isolatedCopy const):
    (WebCore::ContentExtensions::Action::isolatedCopy const):
    * contentextensions/ContentExtensionRule.h:
    (WebCore::ContentExtensions::Trigger::isEmpty const):
    (WebCore::ContentExtensions::Trigger::operator== const):
    (WebCore::ContentExtensions::Action::Action):
    (WebCore::ContentExtensions::ContentExtensionRule::isolatedCopy const):
    (WebCore::ContentExtensions::ContentExtensionRule::operator== const):
    (WebCore::ContentExtensions::vectorIsolatedCopy):
    
    Source/WebKit:
    
    * UIProcess/API/APIContentRuleListStore.cpp:
    (API::compiledToFile):
    (API::ContentRuleListStore::lookupContentRuleList):
    (API::ContentRuleListStore::getAvailableContentRuleListIdentifiers):
    (API::ContentRuleListStore::compileContentRuleList):
    (API::ContentRuleListStore::removeContentRuleList):
    (API::ContentRuleListStore::getContentRuleListSource):
    * UIProcess/API/APIContentRuleListStore.h:
    * UIProcess/API/Cocoa/WKContentRuleListStore.mm:
    
    Source/WTF:
    
    * wtf/Vector.h:
    (WTF::minCapacity>::isolatedCopy):
    
    Tools:
    
    * TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:
    (TestWebKitAPI::InMemoryCompiledContentExtension::create):
    (TestWebKitAPI::checkCompilerError):
    
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234873 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-08-14  Alex Christensen  <achristensen@webkit.org>

            isValidCSSSelector is unsafe to be called from a non-main thread
            https://bugs.webkit.org/show_bug.cgi?id=188581
            <rdar://problem/40517358>

            Reviewed by Sam Weinig.

            * wtf/Vector.h:
            (WTF::minCapacity>::isolatedCopy):

2018-09-05  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234778. rdar://problem/44144053

    [macOS] Multiple third party apps crash due to the thread safety check in TimerBase::setNextFireTime
    https://bugs.webkit.org/show_bug.cgi?id=188480
    
    Reviewed by Simon Fraser.
    
    Source/WebCore:
    
    Suppress the release assert in WebKit1 on macOS (isInWebProcess is always true in non-Cocoa platforms).
    
    In the future, we should consider throwing Objective-C exceptions when third party apps call WebKit1
    or WebKit2 APIs in non-main threads.
    
    * platform/Timer.cpp:
    (WebCore::shouldSuppressThreadSafetyCheck): Extracted out of ~TimerBase and setNextFireTime.
    (WebCore::TimerBase::~TimerBase):
    (WebCore::TimerBase::setNextFireTime):
    
    Source/WTF:
    
    Added the SDK version for macOS Mojave.
    
    * wtf/spi/darwin/dyldSPI.h:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234778 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-08-10  Ryosuke Niwa  <rniwa@webkit.org>

            [macOS] Multiple third party apps crash due to the thread safety check in TimerBase::setNextFireTime
            https://bugs.webkit.org/show_bug.cgi?id=188480

            Reviewed by Simon Fraser.

            Added the SDK version for macOS Mojave.

            * wtf/spi/darwin/dyldSPI.h:

2018-08-02  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234528. rdar://problem/42883788

    Source/JavaScriptCore:
    Reading instructionPointer from PlatformRegisters may fail when using pointer profiling
    https://bugs.webkit.org/show_bug.cgi?id=188271
    <rdar://problem/42850884>
    
    Reviewed by Michael Saboff.
    
    This patch defends against the instructionPointer containing garbage bits.
    See radar for details.
    
    * runtime/MachineContext.h:
    (JSC::MachineContext::instructionPointer):
    * runtime/SamplingProfiler.cpp:
    (JSC::SamplingProfiler::takeSample):
    * runtime/VMTraps.cpp:
    (JSC::SignalContext::SignalContext):
    (JSC::SignalContext::tryCreate):
    * tools/CodeProfiling.cpp:
    (JSC::profilingTimer):
    * tools/SigillCrashAnalyzer.cpp:
    (JSC::SignalContext::SignalContext):
    (JSC::SignalContext::tryCreate):
    (JSC::SignalContext::dump):
    (JSC::installCrashHandler):
    * wasm/WasmFaultSignalHandler.cpp:
    (JSC::Wasm::trapHandler):
    
    Source/WTF:
    Reading instructionPointer from PlatformRegisters may fail when using pointer tagging
    https://bugs.webkit.org/show_bug.cgi?id=188271
    <rdar://problem/42850884>
    
    Reviewed by Michael Saboff.
    
    * wtf/PtrTag.h:
    (WTF::isTaggedWith):
    (WTF::usesPointerTagging):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234528 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-08-02  Saam Barati  <sbarati@apple.com>

            Reading instructionPointer from PlatformRegisters may fail when using pointer tagging
            https://bugs.webkit.org/show_bug.cgi?id=188271
            <rdar://problem/42850884>

            Reviewed by Michael Saboff.

            * wtf/PtrTag.h:
            (WTF::isTaggedWith):
            (WTF::usesPointerTagging):

2018-07-29  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234330. rdar://problem/42721217

    Be more conservative with compositing layer creation when memory is low
    https://bugs.webkit.org/show_bug.cgi?id=187866
    rdar://problem/42366345
    
    Reviewed by Zalan Bujtas.
    
    Source/WebCore:
    
    When process physical footprint is above a fraction of the jetsam limit, be more conservative in making
    compositing layers. We avoid compositing for these situations:
    1. Layers with 3D transforms which are affine (like translateZ(0)).
    2. Layers with will-change
    3. Layers for canvases (other than WebGL/WebGPU)
    
    We reuse some macOS code in MemoryPressureHandler() but choose different thresholds for iOS,
    falling into "conservative mode" at 50% of jetsam limit, and "strict mode" at 65%.
    Compositing chooses to be more conservative in either "conservative" or "strict" memory modes.
    
    Plumb through a "compositingPolicyOverride" both so that on-device testing isn't
    flakily falling into a different mode, and so that we can impose the conservative
    mode for testing.
    
    Test: compositing/layer-creation/compositing-policy.html
    
    * page/Page.h:
    (WebCore::Page::compositingPolicyOverride const):
    (WebCore::Page::setCompositingPolicyOverride):
    * platform/graphics/transforms/Matrix3DTransformOperation.cpp:
    (WebCore::Matrix3DTransformOperation::isRepresentableIn2D const):
    * platform/graphics/transforms/Matrix3DTransformOperation.h:
    * platform/graphics/transforms/PerspectiveTransformOperation.h:
    * platform/graphics/transforms/RotateTransformOperation.h:
    * platform/graphics/transforms/ScaleTransformOperation.h:
    * platform/graphics/transforms/TransformOperation.h:
    (WebCore::TransformOperation::isRepresentableIn2D const):
    * platform/graphics/transforms/TransformOperations.h:
    (WebCore::TransformOperations::has3DOperation const):
    (WebCore::TransformOperations::isRepresentableIn2D const):
    * platform/graphics/transforms/TranslateTransformOperation.h:
    * rendering/RenderLayerBacking.cpp:
    (WebCore::RenderLayerBacking::updateGeometry):
    * rendering/RenderLayerCompositor.cpp:
    (WebCore::RenderLayerCompositor::cacheAcceleratedCompositingFlags):
    (WebCore::RenderLayerCompositor::updateCompositingPolicy):
    (WebCore::RenderLayerCompositor::updateCompositingLayers):
    (WebCore::RenderLayerCompositor::requiresCompositingForTransform const):
    (WebCore::RenderLayerCompositor::requiresCompositingForVideo const):
    (WebCore::RenderLayerCompositor::requiresCompositingForCanvas const):
    (WebCore::RenderLayerCompositor::requiresCompositingForPlugin const):
    (WebCore::RenderLayerCompositor::requiresCompositingForWillChange const):
    (WebCore::RenderLayerCompositor::needsFixedRootBackgroundLayer const):
    (WebCore::operator<<):
    * rendering/RenderLayerCompositor.h:
    * testing/Internals.cpp:
    (WebCore::Internals::setCompositingPolicyOverride):
    (WebCore::Internals::compositingPolicyOverride const):
    * testing/Internals.h:
    * testing/Internals.idl:
    
    Source/WebKit:
    
    When process physical footprint is above a fraction of the jetsam limit, be more conservative in making
    compositing layers. We avoid compositing for these situations:
    1. Layers with 3D transforms which are affine (like translateZ(0)).
    2. Layers with will-change
    3. Layers for canvases (other than WebGL/WebGPU)
    
    We reuse some macOS code in MemoryPressureHandler() but choose different thresholds for iOS,
    falling into "conservative mode" at 50% of jetsam limit, and "strict mode" at 65%.
    Compositing chooses to be more conservative in either "conservative" or "strict" memory modes.
    
    Plumb through a "compositingPolicyOverride" both so that on-device testing isn't
    flakily falling into a different mode, and so that we can impose the conservative
    mode for testing.
    
    * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
    (WKBundlePageSetCompositingPolicyOverride):
    * WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:
    
    Source/WTF:
    
    When process physical footprint is above a fraction of the jetsam limit, be more conservative in making
    compositing layers. We avoid compositing for these situations:
    1. Layers with 3D transforms which are affine (like translateZ(0)).
    2. Layers with will-change
    3. Layers for canvases (other than WebGL/WebGPU)
    
    We reuse some macOS code in MemoryPressureHandler() but choose different thresholds for iOS,
    falling into "conservative mode" at 50% of jetsam limit, and "strict mode" at 65%.
    Compositing chooses to be more conservative in either "conservative" or "strict" memory modes.
    
    Plumb through a "compositingPolicyOverride" both so that on-device testing isn't
    flakily falling into a different mode, and so that we can impose the conservative
    mode for testing.
    
    * wtf/MemoryPressureHandler.cpp:
    (WTF::thresholdForPolicy):
    (WTF::MemoryPressureHandler::currentMemoryUsagePolicy):
    * wtf/MemoryPressureHandler.h:
    
    Tools:
    
    When process physical footprint is above a fraction of the jetsam limit, be more conservative in making
    compositing layers. We avoid compositing for these situations:
    1. Layers with 3D transforms which are affine (like translateZ(0)).
    2. Layers with will-change
    3. Layers for canvases (other than WebGL/WebGPU)
    
    We reuse some macOS code in MemoryPressureHandler() but choose different thresholds for iOS,
    falling into "conservative mode" at 50% of jetsam limit, and "strict mode" at 65%.
    Compositing chooses to be more conservative in either "conservative" or "strict" memory modes.
    
    Plumb through a "compositingPolicyOverride" both so that on-device testing isn't
    flakily falling into a different mode, and so that we can impose the conservative
    mode for testing.
    
    * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
    (WTR::InjectedBundlePage::prepare):
    
    LayoutTests:
    
    * compositing/layer-creation/compositing-policy-expected.txt: Added.
    * compositing/layer-creation/compositing-policy.html: Added.
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234330 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-27  Simon Fraser  <simon.fraser@apple.com>

            Be more conservative with compositing layer creation when memory is low
            https://bugs.webkit.org/show_bug.cgi?id=187866
            rdar://problem/42366345

            Reviewed by Zalan Bujtas.

            When process physical footprint is above a fraction of the jetsam limit, be more conservative in making
            compositing layers. We avoid compositing for these situations:
            1. Layers with 3D transforms which are affine (like translateZ(0)).
            2. Layers with will-change
            3. Layers for canvases (other than WebGL/WebGPU)

            We reuse some macOS code in MemoryPressureHandler() but choose different thresholds for iOS,
            falling into "conservative mode" at 50% of jetsam limit, and "strict mode" at 65%.
            Compositing chooses to be more conservative in either "conservative" or "strict" memory modes.

            Plumb through a "compositingPolicyOverride" both so that on-device testing isn't
            flakily falling into a different mode, and so that we can impose the conservative
            mode for testing.

            * wtf/MemoryPressureHandler.cpp:
            (WTF::thresholdForPolicy):
            (WTF::MemoryPressureHandler::currentMemoryUsagePolicy):
            * wtf/MemoryPressureHandler.h:

2018-07-26  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234272. rdar://problem/42645434

    Unreviewed, rolling out r234181 and r234189.
    https://bugs.webkit.org/show_bug.cgi?id=188075
    
    These are not needed right now (Requested by thorton on
    #webkit).
    
    Reverted changesets:
    
    "Enable Web Content Filtering on watchOS"
    https://bugs.webkit.org/show_bug.cgi?id=187979
    https://trac.webkit.org/changeset/234181
    
    "HAVE(PARENTAL_CONTROLS) should be true on watchOS"
    https://bugs.webkit.org/show_bug.cgi?id=187985
    https://trac.webkit.org/changeset/234189
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234272 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-26  Commit Queue  <commit-queue@webkit.org>

            Unreviewed, rolling out r234181 and r234189.
            https://bugs.webkit.org/show_bug.cgi?id=188075

            These are not needed right now (Requested by thorton on
            #webkit).

            Reverted changesets:

            "Enable Web Content Filtering on watchOS"
            https://bugs.webkit.org/show_bug.cgi?id=187979
            https://trac.webkit.org/changeset/234181

            "HAVE(PARENTAL_CONTROLS) should be true on watchOS"
            https://bugs.webkit.org/show_bug.cgi?id=187985
            https://trac.webkit.org/changeset/234189

2018-07-25  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234189. rdar://problem/42604524

    HAVE(PARENTAL_CONTROLS) should be true on watchOS
    https://bugs.webkit.org/show_bug.cgi?id=187985
    <rdar://problem/42559346>
    
    Reviewed by Andy Estes.
    
    * wtf/Platform.h:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234189 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-24  Tim Horton  <timothy_horton@apple.com>

            HAVE(PARENTAL_CONTROLS) should be true on watchOS
            https://bugs.webkit.org/show_bug.cgi?id=187985
            <rdar://problem/42559346>

            Reviewed by Andy Estes.

            * wtf/Platform.h:

2018-07-14  Kocsen Chung  <kocsen_chung@apple.com>

        Ensure WebKit stack is ad-hoc signed
        https://bugs.webkit.org/show_bug.cgi?id=187667

        Reviewed by Alexey Proskuryakov.

        * Configurations/Base.xcconfig:

2018-07-14  David Kilzer  <ddkilzer@apple.com>

        Replace TR2_OPTIONAL_ASSERTED_EXPRESSION macro in <wtf/Optional.h>
        <https://webkit.org/b/187672>

        Reviewed by Frédéric Wang.

        * wtf/Optional.h:
        (std::optional::operator -> const):
        (std::optional::operator * const):
        (std::optional<T::operator-> const):
        (std::optional<T::operator* const):
        - Replace TR2_OPTIONAL_ASSERTED_EXPRESSION macro with
          ASSERT_UNDER_CONSTEXPR_CONTEXT macro and return statement.

2018-07-13  Mark Lam  <mark.lam@apple.com>

        Signal.cpp's activeThreads() should only create its ThreadGroup once.
        https://bugs.webkit.org/show_bug.cgi?id=187634
        <rdar://problem/40662311>

        Reviewed by Yusuke Suzuki.

        registerThreadForMachExceptionHandling() is relying on the activeThreads()
        ThreadGroup being a singleton.

        * wtf/threads/Signals.cpp:
        (WTF::activeThreads):

2018-07-12  David Kilzer  <ddkilzer@apple.com>

        Revert: iOS port should define HAVE_RUNLOOP_TIMER
        <https://webkit.org/b/187370>

        * wtf/Platform.h: This is only needed on macOS when using
        -[WebView scheduleInRunLoop:forMode:] and
        -[WebView unscheduleFromRunLoop:forMode:] to make WK1 WebViews
        load synchronously using -loadHTMLString: or -loadData:.

2018-07-12  Per Arne Vollan  <pvollan@apple.com>

        Add compile guard for enabling NSRunLoop in the WebContent process.
        https://bugs.webkit.org/show_bug.cgi?id=187563

        Reviewed by Chris Dumez.

        * wtf/FeatureDefines.h:

2018-07-09  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed follow-up to r233660.

        * wtf/linux/MemoryFootprintLinux.cpp:
        (WTF::memoryFootprint): Revert accidental change of logical OR into a bitwise OR.

2018-07-09  Youenn Fablet  <youenn@apple.com>

        StringView operator==(char*) should check the length of the string
        https://bugs.webkit.org/show_bug.cgi?id=187422

        Reviewed by Chris Dumez.

        Update StringView operator== to ensure that any character raw pointer comparison actually check the length of the raw pointer string.
        This patch mimicks the behavior of String.
        For instance, comparing a StringView with "he\0llo" and "he" will give the same result.

        * wtf/linux/MemoryFootprintLinux.cpp:
        (WTF::memoryFootprint):
        * wtf/text/StringView.h:
        (WTF::operator==):
        (WTF::operator!=):
        (WTF::equal):
        (WTF::StringView::stripLeadingAndTrailingMatchedCharacters):

2018-07-09  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Annotate RunLoop::Timer fast-allocated
        https://bugs.webkit.org/show_bug.cgi?id=187473

        Reviewed by Saam Barati.

        It is allocated by std::unique_ptr for MemoryPressureHandler. And it uses system malloc now.

        * wtf/RunLoop.h:

2018-07-08  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Optimize padding of UnlinkedCodeBlock to shrink
        https://bugs.webkit.org/show_bug.cgi?id=187448

        Reviewed by Saam Barati.

        * wtf/TriState.h:

2018-07-07  David Kilzer  <ddkilzer@apple.com>

        iOS port should define HAVE_RUNLOOP_TIMER
        <https://webkit.org/b/187370>

        Reviewed by Simon Fraser.

        * wtf/Platform.h:
        (HAVE_DTRACE): Remove unused macro since r200568.
        (HAVE_RUNLOOP_TIMER): Define for PLATFORM(COCOA), not just
        PLATFORM(MAC).  Alphabetize macros.

2018-07-07  Yusuke Suzuki  <utatane.tea@gmail.com>

        [linux] ASSERT: Using an alternative signal stack is not supported. Consider disabling the concurrent GC.
        https://bugs.webkit.org/show_bug.cgi?id=187297

        Reviewed by Mark Lam.

        This patch relaxes the JSC's limitation: accepting an alternative signal stack mechanism.

        * wtf/ThreadingPthreads.cpp:
        (WTF::getApproximateStackPointer):
        Fix approximate stack pointer function to make it valid.

        (WTF::Thread::signalHandlerSuspendResume):
        Use StackBounds::contains to check whether the given stack pointer is in range of StackBounds.
        If it is out of range, it seems that this stack pointer is pointing an alternative signal stack.

        (WTF::Thread::suspend):
        Repeatedly retry suspension by using Thread::yield().

        (WTF::isOnAlternativeSignalStack): Deleted.

2018-07-06  Frederic Wang  <fwang@igalia.com>

        WTF's internal std::optional implementation should abort() on bad optional access
        https://bugs.webkit.org/show_bug.cgi?id=186536

        Reviewed by Michael Catanzaro.

        Currently, some ports built with recent compilers will cause the program to abort when one
        tries to access the value of an unset std:optional (i.e. std::nullopt) as specified by C++17.
        However, most ports still use WTF's internal std::optional implementation, which does not
        verify illegal access. Hence it's not possible for developers working on these ports to
        detect issues like bugs #186189, #186535, #186752, #186753, #187139, #187145, #187243 or
        #187382.
        WTF's version of std::optional was introduced in bug #164199 but it was not possible to
        verify the availability of the value inside constexpr member functions because the assert
        might involve asm declarations. This commit introduces a new ASSERT_UNDER_CONSTEXPR_CONTEXT
        macro (a simplified version of ASSERT that can be used in constexpr context) and uses it in
        WTF's implementation of std::optional.

        * wtf/Assertions.h: Define ASSERT_UNDER_CONSTEXPR_CONTEXT as a version of ASSERT that can be
        used in constexpr context (in particular avoids asm declarations).
        * wtf/Optional.h:
        (std::optional::operator ->): Add an assert to ensure the optional value is available.
        (std::optional::operator *): Ditto.
        (std::optional::value const): Ditto.
        (std::optional::value): Ditto.
        (std::optional<T::value const): Ditto.

2018-07-05  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r233417 and r233418.
        https://bugs.webkit.org/show_bug.cgi?id=187364

        Introduced an occasional crash on Google Drive (Requested by
        rniwa on #webkit).

        Reverted changesets:

        "WTF's internal std::optional implementation should abort() on
        bad optional access"
        https://bugs.webkit.org/show_bug.cgi?id=186536
        https://trac.webkit.org/changeset/233417

        "WTF's internal std::optional implementation should abort() on
        bad optional access"
        https://bugs.webkit.org/show_bug.cgi?id=186536
        https://trac.webkit.org/changeset/233418

2018-07-04  Guillaume Emont  <guijemont@igalia.com>

        FunctionTraits: Make cCallArity() constant on 32-bits.
        https://bugs.webkit.org/show_bug.cgi?id=187292

        Reviewed by Yusuke Suzuki.

        On X86, in Source/JavaScriptCore/jit/CCallHelpers.h we have a
        static_assert that uses cCallArity(), so it needs to be constant to
        avoid a compilation error. This is achieved by changing an ASSERT into
        a static_assert.


        * wtf/FunctionTraits.h:
        (WTF::slotsForCCallArgument):

2018-07-04  Tim Horton  <timothy_horton@apple.com>

        Introduce PLATFORM(IOSMAC)
        https://bugs.webkit.org/show_bug.cgi?id=187315

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:
        * wtf/FeatureDefines.h:
        * wtf/Platform.h:

2018-07-02  Alicia Boya García  <aboya@igalia.com>

        [Linux] Fix memory leak in WTF::forEachLine()
        https://bugs.webkit.org/show_bug.cgi?id=187174

        Reviewed by Žan Doberšek.

        * wtf/linux/MemoryFootprintLinux.cpp:
        (WTF::forEachLine):

2018-07-02  Frederic Wang  <fwang@igalia.com>

        WTF's internal std::optional implementation should abort() on bad optional access
        https://bugs.webkit.org/show_bug.cgi?id=186536

        Reviewed by Michael Catanzaro.

        Currently, some ports built with recent compilers will cause the program to abort when one
        tries to access the value of an unset std:optional (i.e. std::nullopt) as specified by C++17.
        However, most ports still use WTF's internal std::optional implementation, which does not
        verify illegal access. Hence it's not possible for developers working on these ports to
        detect issues like bugs #186189, #186535, #186752, #186753, #187139, #187145 or #187243.
        WTF's version of std::optional was introduced in bug #164199 but it was not possible to
        verify the availability of the value inside constexpr member functions because the assert
        might involve asm declarations. This commit introduces a new
        RELEASE_ASSERT_UNDER_CONSTEXPR_CONTEXT macro (a simplified version of RELEASE_ASSERT that can
        be used in constexpr context) and uses it in WTF's implementation of std::optional.

        * wtf/Assertions.h: Define RELEASE_ASSERT_UNDER_CONSTEXPR_CONTEXT as a version of
        RELEASE_ASSERT that can be used in constexpr context (in particular avoids asm declarations).
        * wtf/Optional.h:
        (std::optional::operator ->): Add an assert to ensure the optional value is available.
        (std::optional::operator *): Ditto.
        (std::optional::value const): Ditto.
        (std::optional::value): Ditto.
        (std::optional<T::value const): Ditto.

2018-07-01  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] RandomDevice should be initialized inside std::call_once
        https://bugs.webkit.org/show_bug.cgi?id=186017

        Reviewed by Darin Adler.

        While Linux ports uses mutex-guarded static variables, Mac ports do not.
        So we should guard static variables' initialization by using std::call_once.
        This patch does it for RandomDevice.

        * wtf/OSRandomSource.cpp:
        (WTF::cryptographicallyRandomValuesFromOS):
        * wtf/RandomDevice.h: Small fix for OS(FUCHSIA).

2018-07-01  Myles C. Maxfield  <mmaxfield@apple.com>

        [Cocoa] LastResort in the font family list causes emoji with joiners to be rendered as multiple .notdef characters
        https://bugs.webkit.org/show_bug.cgi?id=187209
        <rdar://problem/40920785>

        Reviewed by Darin Adler.

        * wtf/unicode/CharacterNames.h:

2018-06-23  Darin Adler  <darin@apple.com>

        [Cocoa] Improve ARC compatibility of more code in JavaScriptCore
        https://bugs.webkit.org/show_bug.cgi?id=186973

        Reviewed by Dan Bernstein.

        * WTF.xcodeproj/project.pbxproj: Added CFXPCBridgeSPI.h, fixed a few
        other small problems in the project file, and let Xcode fix a few too.

        * wtf/cocoa/Entitlements.h: Added hasEntitlement function with overloads
        for an audit token and an XPC connection.
        * wtf/cocoa/Entitlements.mm:
        (WTF::hasEntitlement): Added, with overloads for a SecTask, an audit token,
        and an XPC connection.
        (WTF::processHasEntitlement): Refactored to use the function above.

        * wtf/spi/cocoa/CFXPCBridgeSPI.h: Added.

2018-06-30  Adam Barth  <abarth@webkit.org>

        Port JavaScriptCore to OS(FUCHSIA)
        https://bugs.webkit.org/show_bug.cgi?id=187223

        Reviewed by Daniel Bates.

        * wtf/Platform.h: Fuchsia uses mcontext_t to provide machine context.

2018-06-30  Adam Barth  <abarth@webkit.org>

        Port WTF to OS(FUCHSIA)
        https://bugs.webkit.org/show_bug.cgi?id=187221

        Reviewed by Yusuke Suzuki.

        * wtf/FastMalloc.cpp: Fuchsia does not have resource.h
        (WTF::fastMallocStatistics): Skip collecting stats without resource.h
        * wtf/InlineASM.h: Fuchsia uses ELF
        * wtf/Platform.h: Define OS(FUCHSIA) as an OS(UNIX) variant
        * wtf/RandomDevice.cpp: Call zx_cprng_draw for crypographic randomness
        (WTF::RandomDevice::cryptographicallyRandomValues):
        * wtf/ThreadingPthreads.cpp: Fuchsia does not have pthread_setschedparam
        (WTF::Thread::changePriority):
        * wtf/unix/CPUTimeFuchsia.cpp: Added.

2018-06-30  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r233391.
        https://bugs.webkit.org/show_bug.cgi?id=187217

        This patch broke Windows ports (Requested by fredw on
        #webkit).

        Reverted changeset:

        "WTF's internal std::optional implementation should abort() on
        bad optional access"
        https://bugs.webkit.org/show_bug.cgi?id=186536
        https://trac.webkit.org/changeset/233391

2018-06-29  Frederic Wang  <fwang@igalia.com>

        WTF's internal std::optional implementation should abort() on bad optional access
        https://bugs.webkit.org/show_bug.cgi?id=186536

        Reviewed by Michael Catanzaro.

        Currently, some ports built with recent compilers will cause the program to abort when one
        tries to access the value of an unset std:optional (i.e. std::nullopt) as specified by C++17.
        However, most ports still use WTF's internal std::optional implementation, which does not
        verify illegal access. Hence it's not possible for developers working on these ports to
        detect issues like bugs #186189, #186535, #186752, #186753, #187139 or #187145. WTF's version
        of std::optional was introduced in bug #164199 but it was not possible to verify the
        availability of the value inside constexpr member functions because the assert might involve
        asm declarations. This commit introduces a new RELEASE_ASSERT_UNDER_CONSTEXPR_CONTEXT macro
        (a simplified version of RELEASE_ASSERT that can be used in constexpr context) and uses it in
        WTF's implementation of std::optional.

        * wtf/Assertions.h: Define RELEASE_ASSERT_UNDER_CONSTEXPR_CONTEXT as a version of
        RELEASE_ASSERT that can be used in constexpr context (in particular avoids asm declarations).
        * wtf/Optional.h:
        (std::optional::operator ->): Add an assert to ensure the optional value is available.
        (std::optional::operator *): Ditto.
        (std::optional::value const): Ditto. 
        (std::optional::value): Ditto.
        (std::optional<T::value const): Ditto.

2018-06-29  Darin Adler  <darin@apple.com>

        [Cocoa] reduce unnecessary use of .mm source files in WTF, spruce up some implementation details
        https://bugs.webkit.org/show_bug.cgi?id=186924

        Reviewed by Anders Carlsson.

        * WTF.xcodeproj/project.pbxproj: Update for file and directory renames, file type changes,
        and deletions.

        * wtf/MemoryPressureHandler.cpp:
        (WTF::MemoryPressureHandler::holdOff): Deleted empty placeholder; this one is not needed.

        * wtf/PlatformMac.cmake: Update for file and directory renames, file type changes,
        and deletions.

        * wtf/cocoa/CPUTimeCocoa.cpp: Renamed from Source/WTF/wtf/cocoa/CPUTimeCocoa.mm.

        * wtf/text/cocoa/StringImplCocoa.mm: Renamed from Source/WTF/wtf/text/mac/StringImplMac.mm.
        Also removed an unneeded include.

        * wtf/text/cocoa/StringViewCocoa.mm: Renamed from Source/WTF/wtf/text/mac/StringViewObjC.mm.

        * wtf/text/cocoa/TextBreakIteratorInternalICUCocoa.cpp: Renamed from
        Source/WTF/wtf/text/mac/TextBreakIteratorInternalICUMac.mm.

2018-06-28  Olivia Barnett  <obarnett@apple.com>

        Find in page for typographic quotes does not find low (German) quotes
        https://bugs.webkit.org/show_bug.cgi?id=187164
        <rdar://problem/29612785>

        Reviewed by Tim Horton.

        Added Unicode definitions for German quotation marks.

        * wtf/unicode/CharacterNames.h:

2018-06-27  Jonathan Bedard  <jbedard@apple.com>

        Enable WebKit iOS 12 build
        https://bugs.webkit.org/show_bug.cgi?id=187024
        <rdar://problem/39759057>

        Reviewed by David Kilzer.

        * wtf/spi/darwin/XPCSPI.h: Add endpoint and connection declarations.

2018-06-25  David Fenton  <david_fenton@apple.com>

        Unreviewed, rolling out r233120.

        caused regression in ios API tests

        Reverted changeset:

        "[Cocoa] reduce unnecessary use of .mm source files in WTF,
        spruce up some implementation details"
        https://bugs.webkit.org/show_bug.cgi?id=186924
        https://trac.webkit.org/changeset/233120

2018-06-25  Alicia Boya García  <aboya@igalia.com>

        Fix ASAN_ENABLED in GCC
        https://bugs.webkit.org/show_bug.cgi?id=186957

        Reviewed by Michael Catanzaro.

        ASAN_ENABLED used to rely on Clang-specific features for detection.
        This patch enables ASAN_ENABLED to work on GCC too.

        It also fixes compilation errors and warnings that were triggered when
        compiling code guarded by ASAN_ENABLED in gcc.

        * wtf/Compiler.h:
        * wtf/Vector.h:
        (WTF::VectorBuffer::endOfBuffer):

2018-06-22  Darin Adler  <darin@apple.com>

        [Cocoa] Convert the small bit of Objective-C++ code in WTF to ARC
        https://bugs.webkit.org/show_bug.cgi?id=186961

        Reviewed by Anders Carlsson.

        * Configurations/Base.xcconfig: Turn on ARC.

        * wtf/cocoa/MemoryPressureHandlerCocoa.mm:
        (WTF::MemoryPressureHandler::uninstall): Remove calls to dispatch_release.
        (WTF::MemoryPressureHandler::holdOff): Ditto.

        * wtf/mac/MainThreadMac.mm:
        (WTF::initializeMainThreadPlatform): Remove call to retain.
        (WTF::initializeWebThreadPlatform): Ditto.

2018-06-22  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Use Ref<> for the result type of non-failing factory functions
        https://bugs.webkit.org/show_bug.cgi?id=186920

        Reviewed by Darin Adler.

        Use Ref<> instead of RefPtr<> if the `create` function do not return nullptr.

        * wtf/AutomaticThread.cpp:
        (WTF::AutomaticThreadCondition::create):
        (WTF::AutomaticThread::AutomaticThread):
        * wtf/AutomaticThread.h:
        * wtf/ParallelHelperPool.cpp:
        (WTF::ParallelHelperPool::Thread::Thread):
        * wtf/ParallelHelperPool.h:
        * wtf/WorkerPool.cpp:
        (WTF::WorkerPool::WorkerPool):
        * wtf/WorkerPool.h:
        * wtf/win/WorkQueueWin.cpp:
        (WTF::TimerContext::create):
        (WTF::WorkQueue::dispatchAfter):

2018-06-23  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Add user-defined literal for ASCIILiteral
        https://bugs.webkit.org/show_bug.cgi?id=186839

        Reviewed by Darin Adler.

        This patch adds user-defined literal for ASCIILiteral. We can create ASCIILiteral in the form of `"Hello World"_s`.
        And we remove public ASCIILiteral constructor. This change ensures that ASCIILiteral is created from literal.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/Indenter.h:
        (WTF::Indenter::Indenter):
        * wtf/Logger.h:
        (WTF::LogArgument::toString):
        * wtf/MediaTime.cpp:
        (WTF::toJSONStringInternal):
        (WTF::MediaTimeRange::toJSONString const):
        * wtf/linux/MemoryFootprintLinux.cpp:
        (WTF::memoryFootprint):
        * wtf/text/ASCIILiteral.cpp: Copied from Source/WebCore/css/CSSUnsetValue.cpp.
        (WTF::ASCIILiteral::dump const):
        * wtf/text/ASCIILiteral.h: Copied from Source/WTF/wtf/Indenter.h.
        (WTF::ASCIILiteral::operator const char* const):
        (WTF::ASCIILiteral::fromLiteralUnsafe):
        (WTF::ASCIILiteral::null):
        (WTF::ASCIILiteral::characters const):
        (WTF::ASCIILiteral::ASCIILiteral):
        (WTF::StringLiterals::operator _s):
        * wtf/text/WTFString.cpp:
        (asciiDebug):
        * wtf/text/WTFString.h:
        (WTF::operator==):
        (WTF::operator!=):
        (WTF::ASCIILiteral::ASCIILiteral): Deleted.
        (WTF::ASCIILiteral::operator const char*): Deleted.
        * wtf/unix/LanguageUnix.cpp:
        (WTF::platformLanguage):

2018-06-22  Darin Adler  <darin@apple.com>

        [Cocoa] reduce unnecessary use of .mm source files in WTF, spruce up some implementation details
        https://bugs.webkit.org/show_bug.cgi?id=186924

        Reviewed by Anders Carlsson.

        * WTF.xcodeproj/project.pbxproj: Update for file and directory renames, file type changes,
        and deletions.

        * wtf/MemoryPressureHandler.cpp:
        (WTF::MemoryPressureHandler::holdOff): Deleted empty placeholder; this one is not needed.

        * wtf/PlatformMac.cmake: Update for file and directory renames, file type changes,
        and deletions.

        * wtf/cocoa/CPUTimeCocoa.cpp: Renamed from Source/WTF/wtf/cocoa/CPUTimeCocoa.mm.
        Reworked math to make better use of the Seconds class.

        * wtf/text/WTFString.h: Added a new inline version of the constructor that takes an NSString.
        This is identical to the one that takes a CFStringRef, so no need to keep both.

        * wtf/text/cocoa/StringImplCocoa.mm: Renamed from Source/WTF/wtf/text/mac/StringImplMac.mm.
        Also removed an unneeded include.

        * wtf/text/cocoa/StringViewCocoa.mm: Renamed from Source/WTF/wtf/text/mac/StringViewObjC.mm.

        * wtf/text/cocoa/TextBreakIteratorInternalICUCocoa.cpp: Renamed from
        Source/WTF/wtf/text/mac/TextBreakIteratorInternalICUMac.mm.

        * wtf/text/mac/StringMac.mm: Removed.

2018-06-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GLIB] improve get_type() fast path in WEBKIT_DEFINE_TYPE
        https://bugs.webkit.org/show_bug.cgi?id=186885

        Reviewed by Anders Carlsson.

        This is a backport of glib commit
        https://gitlab.gnome.org/GNOME/glib/commit/e924f777369710221c3e0a9d7bf40392a27d1fa4

        "The -fstack-protector-strong used in many distributions by default has a
        rather drastic slowdown of the fast path in generated _get_type()
        functions using G_DEFINE_* macros. The amount can vary by architecture,
        GCC version, and compiler flags.

        To work around this, and ensure a higher probability that our fast-path
        will match what we had previously, we need to break out the slow-path
        (registering the type) into a secondary function that is not a candidate
        for inlining.

        This ensures that the common case (type registered, return the GType id)
        is the hot path and handled in the prologue of the generated assembly even
        when -fstack-protector-strong is enabled."

        * wtf/glib/WTFGType.h:

2018-06-20  Yusuke Suzuki  <utatane.tea@gmail.com>

        [GTK][WPE][Nicosia] Add name for Nicosia Painting Threads
        https://bugs.webkit.org/show_bug.cgi?id=186836

        Reviewed by Carlos Garcia Campos.

        AutomaticThread can take a name for the generated threads now.
        This patch adds the above ability to WorkerPool.

        * wtf/WorkerPool.cpp:
        (WTF::WorkerPool::WorkerPool):
        * wtf/WorkerPool.h:
        (WTF::WorkerPool::create):
        (WTF::WorkerPool::name const):

2018-06-18  Jiewen Tan  <jiewen_tan@apple.com>

        Add a graceful exit for AuthenticationManager::initializeConnection
        https://bugs.webkit.org/show_bug.cgi?id=186632
        <rdar://problem/41041033>

        Reviewed by Brent Fulgham.

        * wtf/spi/darwin/XPCSPI.h:

2018-06-18  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [WTF] Remove workarounds needed to support libstdc++-4
        https://bugs.webkit.org/show_bug.cgi?id=186762

        Reviewed by Michael Catanzaro.

        Revert r226299, r226300 r226301 and r226302-

        * wtf/StdLibExtras.h:

2018-06-12  Darin Adler  <darin@apple.com>

        [Cocoa] Make some RetainPtr refinements to get more ready for ARC
        https://bugs.webkit.org/show_bug.cgi?id=186526

        Reviewed by Anders Carlsson.

        * wtf/RetainPtr.h: Improved the definition of autorelease so it does
        the right thing for both Objective-C types and non-Objective-C types.
        Also added bridgingAutorelease for when we want to autorelease as
        part of converting from a CF type to an Objective-C type. The two
        advantages of bridgingAutorelease are that it does not require an
        additional explicit __bridge cast and that it does not prevent the
        ARC objc_autoreleaseReturnValue optimization the way that doing an
        autorelease on the CF type would.

        * wtf/text/mac/StringImplMac.mm:
        (WTF::StringImpl::operator NSString *): Use bridgingAutorelease.

2018-06-15  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [WinCairo] Move unrelated features of WorkQueueWin into IPC::Connection
        https://bugs.webkit.org/show_bug.cgi?id=186582

        Remove unrelated feature from WorkQueueWin.

        Reviewed by Brent Fulgham.

        * wtf/PlatformWin.cmake: Remove WorkItemContext.*
        * wtf/WorkQueue.cpp:
        * wtf/WorkQueue.h:
        * wtf/win/Win32Handle.h:
        * wtf/win/WorkItemContext.cpp: Removed.
        * wtf/win/WorkItemContext.h: Removed.
        * wtf/win/WorkQueueWin.cpp:
        (WTF::WorkQueue::handleCallback): Deleted.
        (WTF::WorkQueue::registerHandle): Deleted.
        (WTF::WorkQueue::unregisterAndCloseHandle): Deleted.
        (WTF::WorkQueue::unregisterWaitAndDestroyItemSoon): Deleted.
        (WTF::WorkQueue::unregisterWaitAndDestroyItemCallback): Deleted.

2018-06-13  Keith Miller  <keith_miller@apple.com>

        AutomaticThread should have a way to provide a thread name
        https://bugs.webkit.org/show_bug.cgi?id=186604

        Reviewed by Filip Pizlo.

        AutomaticThread now has a virtual method to get a name, which can be
        overridden to provide a custom name to the thread.

        * wtf/AutomaticThread.cpp:
        (WTF::AutomaticThread::start):
        * wtf/AutomaticThread.h:
        * wtf/WorkerPool.cpp:

2018-06-11  Saam Barati  <sbarati@apple.com>

        The NaturalLoops algorithm only works when the list of blocks in a loop is de-duplicated
        https://bugs.webkit.org/show_bug.cgi?id=184829

        Reviewed by Michael Saboff.

        This patch switches NaturalLoops to walking over a block's predecessors
        instead of successors when building the initial list of loops and their
        headers. The algorithm broke down when we had a footer block with multiple
        control flow edges pointing to the same header. This made the loop data
        structure contain multiple entries for the same basic block. The algorithm
        breaks down when we end up in this state, since it means our way of detecting
        what loop is more inner is broken, since that check uses a loop's size.

        * wtf/NaturalLoops.h:
        (WTF::NaturalLoop::addBlock):
        (WTF::NaturalLoops::NaturalLoops):

2018-06-11  Keith Rollin  <krollin@apple.com>

        Add logging around internalError(const URL&)
        https://bugs.webkit.org/show_bug.cgi?id=186369
        <rdar://problem/40872046>

        Reviewed by Brent Fulgham.

        There are times when we receive bug reports where the user says that
        they are simply shown a page saying an internal error occurred. To
        help understand the circumstances of that error, add some logging to
        internalError() in WebErrors.cpp. This logging logs at the Error level
        that internalError() was called and then logs a backtrace.

        * wtf/Assertions.cpp:
        * wtf/Assertions.h:

2018-06-11  Michael Saboff  <msaboff@apple.com>

        JavaScriptCore: Disable 32-bit JIT on Windows
        https://bugs.webkit.org/show_bug.cgi?id=185989

        Reviewed by Mark Lam.

        Fixed the CLOOP so it can work when COMPUTED_GOTOs are not supported.

        * wtf/Platform.h:

2018-06-09  Dan Bernstein  <mitz@apple.com>

        [Xcode] Clean up and modernize some build setting definitions
        https://bugs.webkit.org/show_bug.cgi?id=186463

        Reviewed by Sam Weinig.

        * Configurations/Base.xcconfig: Removed definition for macOS 10.11.
        * Configurations/DebugRelease.xcconfig: Ditto.

2018-06-08  Darin Adler  <darin@apple.com>

        [Cocoa] Remove all uses of NSAutoreleasePool as part of preparation for ARC
        https://bugs.webkit.org/show_bug.cgi?id=186436

        Reviewed by Anders Carlsson.

        * WTF.xcodeproj/project.pbxproj: Added FoundationSPI.h.

        * wtf/AutodrainedPool.h: Streamlined header a bit, added some comments.

        * wtf/PlatformMac.cmake: Added FoundationSPI.h.

        * wtf/cocoa/AutodrainedPool.cpp: Moved here from AutodrainedPoolMac.mm.
        (WTF::AutodrainedPool::AutodrainedPool): Use objc_autoreleasePoolPush/Pop instead of
        the NSAutoreleasePool class.
        (WTF::AutodrainedPool::~AutodrainedPool): Ditto.

         * wtf/spi/cocoa/FoundationSPI.h: Moved from Source/WebCore/PAL/pal/spi/cocoa/FoundationSPI.h.
         Changed both include and declarations so it's the objc_autoreleasePoolPush/Pop instead
         of the higher level NS functions that call them.

2018-06-08  Brian Burg  <bburg@apple.com>

        [Cocoa] Web Automation: include browser name and version in listing for automation targets
        https://bugs.webkit.org/show_bug.cgi?id=186204
        <rdar://problem/36950423>

        Reviewed by Darin Adler.

        * wtf/spi/cf/CFBundleSPI.h: Add needed infoDictionary key values.

2018-06-07  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Add WorkerPool
        https://bugs.webkit.org/show_bug.cgi?id=174569

        Reviewed by Carlos Garcia Campos.

        This patch adds WorkerPool, which is a thread pool that consists of AutomaticThread.
        Since it is based on AutomaticThread, this WorkerPool can take `timeout`: once `timeout`
        passes without any tasks, threads in WorkerPool will be destroyed.

        We add shouldSleep handler to AutomaticThread to make destruction of threads in WorkerPool moderate.
        Without this, all threads are destroyed at once after `timeout` passes.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/AutomaticThread.cpp:
        (WTF::AutomaticThread::AutomaticThread):
        (WTF::AutomaticThread::start):
        * wtf/AutomaticThread.h:
        * wtf/CMakeLists.txt:
        * wtf/WorkerPool.cpp: Added.
        (WTF::WorkerPool::WorkerPool):
        (WTF::WorkerPool::~WorkerPool):
        (WTF::WorkerPool::shouldSleep):
        (WTF::WorkerPool::postTask):
        * wtf/WorkerPool.h: Added.
        (WTF::WorkerPool::create):

2018-06-07  Chris Dumez  <cdumez@apple.com>

        Add base class to get WeakPtrFactory member and avoid some boilerplate code
        https://bugs.webkit.org/show_bug.cgi?id=186407

        Reviewed by Brent Fulgham.

        Add CanMakeWeakPtr base class to get WeakPtrFactory member and its getter, in
        order to avoid some boilerplate code in every class needing a WeakPtrFactory.
        This also gets rid of old-style createWeakPtr() methods in favor of the newer
        makeWeakPtr().

        * wtf/WeakPtr.h:
        (WTF::CanMakeWeakPtr::weakPtrFactory const):
        (WTF::CanMakeWeakPtr::weakPtrFactory):

2018-06-07  Tadeu Zagallo  <tzagallo@apple.com>

        Don't try to allocate JIT memory if we don't have the JIT entitlement
        https://bugs.webkit.org/show_bug.cgi?id=182605
        <rdar://problem/38271229>

        Reviewed by Mark Lam.

        Move processHasEntitlement from Source/WebKit/Shared/mac/SandboxUtilities.h
        into WTF so JavaScriptCore can also use it.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/PlatformMac.cmake:
        * wtf/cocoa/Entitlements.cpp:
        (WTF::processHasEntitlement):
        * wtf/cocoa/Entitlements.h:
        * wtf/spi/cocoa/SecuritySPI.h:

2018-06-05  Darin Adler  <darin@apple.com>

        [Cocoa] Retire DispatchPtr, and add more move semantics and simpler #ifs to other smart pointers
        https://bugs.webkit.org/show_bug.cgi?id=186324

        Reviewed by Anders Carlsson.

        * WTF.xcodeproj/project.pbxproj: Removed DispatchPtr.h.
        * wtf/BlockPtr.h: Remove unneeded checks for __OBJC__. Added some use
        of WTFMove.
        * wtf/CMakeLists.txt: Removed DispatchPtr.h.
        * wtf/DispatchPtr.h: Removed. We no longer need to support Mavericks.
        * wtf/OSObjectPtr.h: Remove unneeded checks for __OBJC__. Added some use
        of WTFMove.

2018-06-05  Darin Adler  <darin@apple.com>

        [Cocoa] More preparation for ARC, focusing on WebKit and smart pointers
        https://bugs.webkit.org/show_bug.cgi?id=186314

        Reviewed by Anders Carlsson.

        * wtf/BlockPtr.h: Put Block_copy/release calls into #if since they are
        not needed under ARC.

        * wtf/OSObjectPtr.h: Added constructor and assignment operator so we can
        work with OS objects without adopting them.

2018-06-05  Darin Adler  <darin@apple.com>

        [Cocoa] Improve some soft linking compatibility with ARC
        https://bugs.webkit.org/show_bug.cgi?id=186309

        Reviewed by Anders Carlsson.

        * wtf/cocoa/SoftLinking.h: Updated the SOFT_LINK_CONSTANT family of
        macros to use a const type. This increases the chance that they will
        work without triggering ARC compilation errors since it's easier to
        get the type right for read-only access than for read/write.

2018-06-05  Youenn Fablet  <youenn@apple.com>

        ServiceWorker registration should store any script fetched through importScripts
        https://bugs.webkit.org/show_bug.cgi?id=182444
        <rdar://problem/37164835>

        Reviewed by Chris Dumez.

        * wtf/persistence/PersistentCoders.h:

2018-06-04  Darin Adler  <darin@apple.com>

        [Cocoa] Improve smart pointer support for ARC (OSObjectPtr/DispatchPtr)
        https://bugs.webkit.org/show_bug.cgi?id=186300

        Reviewed by Daniel Bates.

        * wtf/DispatchPtr.h: Don't call dispatch_retain or dispatch_release
        since ARC will automatically do it for us in the same places we are
        doing it here.

        * wtf/OSObjectPtr.h:
        (WTF::retainOSObject): Don't call os_retain since ARC will do it.
        (WTF::releaseOSObject): Don't call os_release since ARC will do it.

2018-05-31  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r232212.
        https://bugs.webkit.org/show_bug.cgi?id=186153

        broke build (Requested by alexchristensen on #webkit).

        Reverted changeset:

        "JavaScriptCore: Disable 32-bit JIT on Windows"
        https://bugs.webkit.org/show_bug.cgi?id=185989
        https://trac.webkit.org/changeset/232212

2018-05-30  Keith Miller  <keith_miller@apple.com>

        LLInt get_by_id prototype caching doesn't properly handle changes
        https://bugs.webkit.org/show_bug.cgi?id=186112

        Reviewed by Filip Pizlo.

        Mark some methods const.

        * wtf/Bag.h:
        (WTF::Bag::begin const):
        (WTF::Bag::end const):
        (WTF::Bag::unwrappedHead const):
        (WTF::Bag::end): Deleted.
        (WTF::Bag::unwrappedHead): Deleted.

2018-05-30  Alex Christensen  <achristensen@webkit.org>

        Reduce String allocations
        https://bugs.webkit.org/show_bug.cgi?id=186059

        Reviewed by Darin Adler.

        * wtf/text/StringView.cpp:
        (WTF::convertASCIICase):
        (WTF::StringView::convertToASCIILowercase const):
        (WTF::StringView::convertToASCIIUppercase const):
        * wtf/text/StringView.h:
        * wtf/text/cf/StringViewCF.cpp:
        (WTF::StringView::createCFString const):

2018-05-30  Dominik Infuehr  <dinfuehr@igalia.com>

        [MIPS] Fix build on MIPS32r1
        https://bugs.webkit.org/show_bug.cgi?id=185944

        Reviewed by Yusuke Suzuki.

        Added WTF_MIPS_ISA_REV_AT_LEAST to test for certain release or later.

        * wtf/Platform.h:

2018-05-29  Tim Horton  <timothy_horton@apple.com>

        Fix the build
        https://bugs.webkit.org/show_bug.cgi?id=186078

        Unreviewed build fix.

        * wtf/Platform.h:

2018-05-29  Saam Barati  <sbarati@apple.com>

        JSC should put bmalloc's scavenger into mini mode
        https://bugs.webkit.org/show_bug.cgi?id=185988

        Reviewed by Michael Saboff.

        * wtf/FastMalloc.cpp:
        (WTF::fastEnableMiniMode):
        * wtf/FastMalloc.h:

2018-05-29  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, follow-up after r232244
        https://bugs.webkit.org/show_bug.cgi?id=186023

        _BitScanReverse64 is available only in X86_64 and ARM.

        * wtf/MathExtras.h:
        (WTF::clz64):

2018-05-27  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Add clz32 / clz64 for MSVC
        https://bugs.webkit.org/show_bug.cgi?id=186023

        Reviewed by Daniel Bates.

        This patch adds efficient implementations of clz32 and clz64 for MSVC.
        While MSVC has _lzcnt intrinsic, it is only valid if the CPU has lzcnt instruction.
        Instead of checking cpuid here, we just use _BitScanReverse and _BitScanReverse64.

        * wtf/MathExtras.h:
        (WTF::clz32):
        (WTF::clz64):

2018-05-26  Filip Pizlo  <fpizlo@apple.com>

        testair sometimes crashes due to races in initialization of ARC4RandomNumberGenerator
        https://bugs.webkit.org/show_bug.cgi?id=186014

        Reviewed by Yusuke Suzuki.
        
        testair launches a bunch of threads and the threads do B3 things that use random numbers.
        Sometimes two threads will initialize the random number generator at the same time, because
        that's what happens when you use static NeverDestroyed<>.
        
        This changes that code to use std::call_once to initialize the shared
        ARC4RandomNumberGenerator.
        
        Also, this adds a diagnostic message to the lock's assertion. This assertion was the symptom
        of the race, and knowing the state of the lock when the assertion fired gave a darn good clue
        about what was going on: the lock's value was 0 at time of unlock, implying that another
        thread reinitialized the lock to zero by rerunning the constructor.

        * wtf/CryptographicallyRandomNumber.cpp:
        * wtf/LockAlgorithmInlines.h:
        (WTF::Hooks>::unlockSlow):

2018-05-25  Michael Saboff  <msaboff@apple.com>

        JavaScriptCore: Disable 32-bit JIT on Windows
        https://bugs.webkit.org/show_bug.cgi?id=185989

        Reviewed by Saam Barati.

        * wtf/Platform.h:

2018-05-24  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [GTK][WPE] Memory pressure monitor doesn't reliable notify all the subprocesses
        https://bugs.webkit.org/show_bug.cgi?id=184261

        Reviewed by Carlos Garcia Campos.

        Receive the memory pressure notifications from the UIProcess memory monitor via WebKit IPC.

        * wtf/MemoryPressureHandler.h:
        * wtf/linux/MemoryPressureHandlerLinux.cpp:
        (WTF::MemoryPressureHandler::triggerMemoryPressureEvent):
        (WTF::MemoryPressureHandler::install):
        (WTF::MemoryPressureHandler::uninstall):

2018-05-24  Jiewen Tan  <jiewen_tan@apple.com>

        Adopt SecKeyProxy SPI in certificate based challenge response code
        https://bugs.webkit.org/show_bug.cgi?id=185848
        <rdar://problem/34586181>

        Reviewed by Alex Christensen.

        Add a condition macro to determine if SecKeyProxy SPI exists.

        * wtf/Platform.h:

2018-05-23  Eric Carlson  <eric.carlson@apple.com>

        Avoid loading AVFoundation to check supported MIME types if possible
        https://bugs.webkit.org/show_bug.cgi?id=185839
        <rdar://problem/40182010>

        Reviewed by Jer Noble.

        * wtf/cocoa/SoftLinking.h: Add SOFT_LINK_FRAMEWORK_OPTIONAL_PREFLIGHT.

2018-05-23  Filip Pizlo  <fpizlo@apple.com>

        Speed up JetStream/base64
        https://bugs.webkit.org/show_bug.cgi?id=185914

        Reviewed by Michael Saboff.
        
        Make Vector<>::append ALWAYS_INLINE.

        * wtf/Vector.h:
        (WTF::Vector::append):
        (WTF::minCapacity>::expandCapacity):
        (WTF::minCapacity>::append):
        (WTF::minCapacity>::tryAppend):

2018-05-23  Michael Saboff  <msaboff@apple.com>

        Date.parse() doesn't properly handle input outside of ES Spec limits
        https://bugs.webkit.org/show_bug.cgi?id=185868

        Reviewed by Mark Lam.

        Clamped date creation to +/-100,000,000 days relative to midnight at the beginning
        of 01 January, 1970 UTC as per ecma262/#sec-time-values-and-time-range and
        ecma262/#sec-date-time-string-format.

        * wtf/DateMath.cpp:
        (WTF::ymdhmsToSeconds):
        (WTF::parseES5DateFromNullTerminatedCharacters):

2018-05-22  Michael Catanzaro  <mcatanzaro@igalia.com>

        Prohibit shrinking the FastBitVector
        https://bugs.webkit.org/show_bug.cgi?id=181020

        Reviewed by Oliver Hunt.

        Prohibit shrinking the FastBitVector. It's not prepared for this and the current usage does
        not require it.

        * wtf/FastBitVector.cpp:
        (WTF::FastBitVectorWordOwner::resizeSlow):

2018-05-22  Mark Lam  <mark.lam@apple.com>

        StringImpl utf8 conversion should not fail silently.
        https://bugs.webkit.org/show_bug.cgi?id=185888
        <rdar://problem/40464506>

        Reviewed by Filip Pizlo.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/PrintStream.cpp:
        (WTF::printExpectedCStringHelper):
        (WTF::printInternal):
        * wtf/text/StringImpl.cpp:
        (WTF::StringImpl::utf8Impl):
        (WTF::StringImpl::utf8ForCharacters):
        (WTF::StringImpl::tryUtf8ForRange const):
        (WTF::StringImpl::tryUtf8 const):
        (WTF::StringImpl::utf8 const):
        (WTF::StringImpl::utf8ForRange const): Deleted.
        * wtf/text/StringImpl.h:
        * wtf/text/StringView.cpp:
        (WTF::StringView::tryUtf8 const):
        (WTF::StringView::utf8 const):
        * wtf/text/StringView.h:
        * wtf/text/UTF8ConversionError.h: Added.
        * wtf/text/WTFString.cpp:
        (WTF::String::tryUtf8 const):
        (WTF::String::utf8 const):
        * wtf/text/WTFString.h:

2018-05-22  Chris Dumez  <cdumez@apple.com>

        Regression(AsyncPolicyDelegates): Box.app login Window is blank
        https://bugs.webkit.org/show_bug.cgi?id=185832
        <rdar://problem/40307871>

        Reviewed by Geoffrey Garen.

        Moved WeakObjCPtr.h from WebKit2 to WTF with RetainPtr.h, so that it can be used
        in WebKitLegacy code.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/WeakObjCPtr.h: Renamed from Source/WebKit/Shared/mac/WeakObjCPtr.h.

2018-05-22  Filip Pizlo  <fpizlo@apple.com>

        Get rid of TLCs
        https://bugs.webkit.org/show_bug.cgi?id=185846

        Rubber stamped by Geoffrey Garen.

        * wtf/Platform.h:

2018-05-22  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r232052.

        Breaks internal builds.

        Reverted changeset:

        "Use more C++17"
        https://bugs.webkit.org/show_bug.cgi?id=185176
        https://trac.webkit.org/changeset/232052

2018-05-21  Yusuke Suzuki  <utatane.tea@gmail.com>

        Use more C++17
        https://bugs.webkit.org/show_bug.cgi?id=185176

        Reviewed by JF Bastien.

        * Configurations/Base.xcconfig:
        * wtf/StdLibExtras.h:

2018-05-18  Filip Pizlo  <fpizlo@apple.com>

        DFG should inline InstanceOf ICs
        https://bugs.webkit.org/show_bug.cgi?id=185695

        Reviewed by Yusuke Suzuki.
        
        I found myself needing a way to represent bottom/false/true/top, so I created it.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/BooleanLattice.h: Added.
        (WTF::lubBooleanLattice):
        (WTF::printInternal):
        * wtf/CMakeLists.txt:

2018-05-17  Jiewen Tan  <jiewen_tan@apple.com>

        Convert CertificateInfo into Credential in UI Process instead of Networking Process
        https://bugs.webkit.org/show_bug.cgi?id=185662
        <rdar://problem/40275561>

        Reviewed by Alex Christensen.

        Remove marco HAVE_SEC_IDENTITY since it is no longer useful.

        * wtf/Platform.h:

2018-05-17  Zalan Bujtas  <zalan@apple.com>

        Add ASSERT_NOT_IMPLEMENTED_YET() macro
        https://bugs.webkit.org/show_bug.cgi?id=185713

        Reviewed by Antti Koivisto.

        To mark unimplemented code paths.

        * wtf/Assertions.cpp:
        * wtf/Assertions.h:

2018-05-16  Andy VanWagoner  <andy@vanwagoner.family>

        Add support for Intl NumberFormat formatToParts
        https://bugs.webkit.org/show_bug.cgi?id=185375

        Reviewed by Yusuke Suzuki.

        Add flag for NumberFormat formatToParts.

        * wtf/FeatureDefines.h:

2018-05-16  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, follow-up after r231762
        https://bugs.webkit.org/show_bug.cgi?id=185589

        Addresses darin's suggestions to improve timeClip.

        * wtf/DateMath.cpp:
        (WTF::timeClip):

2018-05-14  Yusuke Suzuki  <utatane.tea@gmail.com>

        [Win] Use C++17 in MSVC
        https://bugs.webkit.org/show_bug.cgi?id=185232

        Reviewed by Alex Christensen.

        Disable some WebKit defined C++17 features for MSVC.

        * wtf/StdLibExtras.h:

2018-05-14  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] timeClip(-0) should produce +0
        https://bugs.webkit.org/show_bug.cgi?id=185589

        Reviewed by Saam Barati.

        According to the spec[1], timeClip(-0) should produce +0.
        We achieve this by adding 0.0 to the result of trunc(t).

        [1]: https://tc39.github.io/ecma262/#sec-timeclip

        * wtf/DateMath.cpp:
        (WTF::timeClip):

2018-05-13  Geoffrey Garen  <ggaren@apple.com>

        Simplified Mach exception handling
        https://bugs.webkit.org/show_bug.cgi?id=185595

        Reviewed by Keith Miller.

        * wtf/threads/Signals.cpp:
        (WTF::startMachExceptionHandlerThread): Use mach_msg_server_once instead
        of duplicating its functionality. Separate error handling logic from
        program logic to help program logic stand out. Use
        DISPATCH_TARGET_QUEUE_* instead of explicitly fetching a queue.

        Also, we don't need the high priority queue. The kernel donates a
        priority voucher from the exception thread to the receiver thread, and
        mach_msg_server_once takes care to forward that voucher.

2018-05-14  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] REGRESSION(r231170) Build broken with Clang 5.0
        https://bugs.webkit.org/show_bug.cgi?id=185198

        Reviewed by Michael Catanzaro.

        * wtf/Compiler.h:
        * wtf/Forward.h: Delete the std::optional forward declaration that is
        potentially incompatible with definition provided by the standard library.
        * wtf/Hasher.h:
        * wtf/StdLibExtras.h: In addition to the remaining C++14 configurations,
        also use custom std::in_place_t implementation when compiling with
        libstdc++ 6.x, which doesn't provide its own.

2018-05-13  Filip Pizlo  <fpizlo@apple.com>

        Disable pointer poisoning
        https://bugs.webkit.org/show_bug.cgi?id=185586

        Reviewed by Yusuke Suzuki.
        
        This seems like a 0.3% speed-up on microbenchmarks. It seems like it may be a small speed-up on
        other tests, too.

        * wtf/Platform.h:

2018-05-11  Chris Dumez  <cdumez@apple.com>

        REGRESSION (async policy delegate): Revoking an object URL immediately after triggering download breaks file download
        https://bugs.webkit.org/show_bug.cgi?id=185531
        <rdar://problem/39909589>

        Reviewed by Geoffrey Garen.

        Add a default constructor for CompletionHandlerCallingScope, for convenience.

        * wtf/CompletionHandler.h:

2018-05-11  Saam Barati  <sbarati@apple.com>

        Don't allocate value profiles when the JIT is disabled
        https://bugs.webkit.org/show_bug.cgi?id=185525

        Reviewed by Michael Saboff.

        * wtf/RefCountedArray.h:
        (WTF::RefCountedArray::RefCountedArray):

2018-05-10  Tim Horton  <timothy_horton@apple.com>

        Fix the build after r231393
        https://bugs.webkit.org/show_bug.cgi?id=185519
        <rdar://problem/40131741>

        Reviewed by Simon Fraser.

        * wtf/Platform.h:

2018-05-09  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE] Build cleanly with GCC 8 and ICU 60
        https://bugs.webkit.org/show_bug.cgi?id=185462

        Reviewed by Carlos Alberto Lopez Perez.

        * wtf/HashTable.h:
        (WTF::HashTableBucketInitializer<true>::initialize): Since -Wclass-memaccess warning. This
        is probably safe enough, since it's for an empty bucket.
        * wtf/StdLibExtras.h:
        (WTF::bitwise_cast): Silence -Wclass-memaccess as we use type traits to ensure safety here.
        * wtf/Vector.h: Ditto, all uses are safe.
        * wtf/glib/WTFGType.h: Silence -Wcast-function-type.

2018-05-09  Yusuke Suzuki  <utatane.tea@gmail.com>

        [ARMv7] Drop ARMv7 disassembler in favor of capstone
        https://bugs.webkit.org/show_bug.cgi?id=185423

        Reviewed by Michael Catanzaro.

        Remove USE_ARMV7_DISASSEMBLER. Just use Capstone.

        * wtf/Platform.h:

2018-05-06  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC][GTK][JSCONLY] Use capstone disassembler
        https://bugs.webkit.org/show_bug.cgi?id=185283

        Reviewed by Michael Catanzaro.

        Add USE_CAPSTONE used for MIPS and ARM.

        * wtf/Platform.h:

2018-05-09  Antti Koivisto  <antti@apple.com>

        Add OptionSet::operator& and operator bool
        https://bugs.webkit.org/show_bug.cgi?id=185306

        Reviewed by Anders Carlsson.

        This is primarily to allow writing

            if (options & Option:A)

        instead of

            if (options.contains(Option:A))

        This is consistent with other OptionSet operators.

        * wtf/OptionSet.h:
        (WTF::OptionSet::operator bool):
        (WTF::OptionSet::operator&):

        Also remove T versions of operator| and operator-, they are not needed due to
        implicit conversion from T to OptionSet<T>.

2018-05-06  Filip Pizlo  <fpizlo@apple.com>

        InPlaceAbstractState::beginBasicBlock shouldn't have to clear any abstract values
        https://bugs.webkit.org/show_bug.cgi?id=185365

        Reviewed by Saam Barati.
        
        Fix some inlining goof-ups.
        
        Rolling back in after fixing cloop build.

        * wtf/TinyPtrSet.h:
        (WTF::TinyPtrSet::add):
        (WTF::TinyPtrSet::merge):
        (WTF::TinyPtrSet::addOutOfLine):
        (WTF::TinyPtrSet::mergeOtherOutOfLine):

2018-05-08  Dean Jackson  <dino@apple.com>

        Use thumbnails in System Previews
        https://bugs.webkit.org/show_bug.cgi?id=185397
        <rdar://problem/40039376>

        Reviewed by Jon Lee.

        SYSTEM_PREVIEW is only available on some platforms.

        * wtf/Platform.h:

2018-05-08  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r231468.

        Broke the CLoop build

        Reverted changeset:

        "InPlaceAbstractState::beginBasicBlock shouldn't have to clear
        any abstract values"
        https://bugs.webkit.org/show_bug.cgi?id=185365
        https://trac.webkit.org/changeset/231468

2018-05-07  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSCONLY] Enable ARMv7 DFG
        https://bugs.webkit.org/show_bug.cgi?id=185415

        Reviewed by Mark Lam.

        Enable ARMv7 DFG JIT by default on Linux and FreeBSD.

        * wtf/Platform.h:

2018-05-06  Filip Pizlo  <fpizlo@apple.com>

        InPlaceAbstractState::beginBasicBlock shouldn't have to clear any abstract values
        https://bugs.webkit.org/show_bug.cgi?id=185365

        Reviewed by Saam Barati.
        
        Fix some inlining goof-ups.

        * wtf/TinyPtrSet.h:
        (WTF::TinyPtrSet::add):
        (WTF::TinyPtrSet::merge):
        (WTF::TinyPtrSet::addOutOfLine):
        (WTF::TinyPtrSet::mergeOtherOutOfLine):

2018-05-06  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Embed default atomic string table in Thread
        https://bugs.webkit.org/show_bug.cgi?id=185349

        Reviewed by Darin Adler.

        Do not need to allocate AtomicStringTable separate from Thread
        since the table's lifetime is completely the same as Thread.

        This patch just embeds it as a data member of Thread.

        * wtf/Threading.cpp:
        (WTF::Thread::initializeInThread):
        (WTF::Thread::didExit):
        * wtf/Threading.h:
        * wtf/text/AtomicStringTable.cpp:
        (WTF::AtomicStringTable::create): Deleted.
        (WTF::AtomicStringTable::destroy): Deleted.
        * wtf/text/AtomicStringTable.h:

2018-05-06  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Use static initializers for WTF::Mutex and WTF::ThreadCondition
        https://bugs.webkit.org/show_bug.cgi?id=185361

        Reviewed by Sam Weinig.

        Use static initializers for WTF::Mutex and WTF::ThreadCondition to make
        constructors of them simple and constexpr.

        * wtf/ThreadingPrimitives.h:
        * wtf/ThreadingPthreads.cpp:
        (WTF::Mutex::Mutex): Deleted.
        (WTF::ThreadCondition::ThreadCondition): Deleted.
        * wtf/ThreadingWin.cpp:
        (WTF::Mutex::Mutex): Deleted.
        (WTF::ThreadCondition::ThreadCondition): Deleted.

2018-05-04  Tim Horton  <timothy_horton@apple.com>

        Shift to a lower-level framework for simplifying URLs
        https://bugs.webkit.org/show_bug.cgi?id=185334

        Reviewed by Dan Bernstein.

        * wtf/Platform.h:

2018-05-04  Eric Carlson  <eric.carlson@apple.com>

        Log media time range as JSON
        https://bugs.webkit.org/show_bug.cgi?id=185321
        <rdar://problem/39986746>

        Reviewed by Youenn Fablet.

        * wtf/MediaTime.cpp:
        (WTF::toJSONStringInternal): Extract guts of MediaTime::toJSONString to this static function
        so it can be used by MediaTimeRange::toJSONString as well.
        (WTF::MediaTime::toJSONString const):
        (WTF::MediaTimeRange::toJSONString const):
        * wtf/MediaTime.h:

2018-05-04  Antti Koivisto  <antti@apple.com>

        OptionsSet initializer list constructor should be constexpr
        https://bugs.webkit.org/show_bug.cgi?id=185298

        Reviewed by Anders Carlsson.

        * wtf/OptionSet.h:
        (WTF::OptionSet::OptionSet):

2018-05-03  Yusuke Suzuki  <utatane.tea@gmail.com>

        Use default std::optional if it is provided
        https://bugs.webkit.org/show_bug.cgi?id=185159

        Reviewed by Michael Catanzaro.

        * wtf/Expected.h:
        * wtf/Optional.h:
        Do not use <optional> for clang currently.
        (WTF::valueOrCompute):

2018-05-03  Filip Pizlo  <fpizlo@apple.com>

        Strings should not be allocated in a gigacage
        https://bugs.webkit.org/show_bug.cgi?id=185218

        Reviewed by Saam Barati.
        
        * WTF.xcodeproj/project.pbxproj:
        * wtf/Deque.h:
        * wtf/Forward.h:
        * wtf/Gigacage.h:
        (Gigacage::name):
        (Gigacage::basePtr):
        * wtf/Vector.h:
        (WTF::VectorBufferBase::allocateBuffer):
        (WTF::VectorBufferBase::tryAllocateBuffer):
        (WTF::VectorBufferBase::reallocateBuffer):
        (WTF::VectorBufferBase::deallocateBuffer):
        (WTF::minCapacity>::Vector):
        (WTF::=):
        (WTF::minCapacity>::contains const):
        (WTF::minCapacity>::findMatching const):
        (WTF::minCapacity>::find const):
        (WTF::minCapacity>::reverseFind const):
        (WTF::minCapacity>::appendIfNotContains):
        (WTF::minCapacity>::fill):
        (WTF::minCapacity>::appendRange):
        (WTF::minCapacity>::expandCapacity):
        (WTF::minCapacity>::tryExpandCapacity):
        (WTF::minCapacity>::resize):
        (WTF::minCapacity>::resizeToFit):
        (WTF::minCapacity>::shrink):
        (WTF::minCapacity>::grow):
        (WTF::minCapacity>::asanSetInitialBufferSizeTo):
        (WTF::minCapacity>::asanSetBufferSizeToFullCapacity):
        (WTF::minCapacity>::asanBufferSizeWillChangeTo):
        (WTF::minCapacity>::reserveCapacity):
        (WTF::minCapacity>::tryReserveCapacity):
        (WTF::minCapacity>::reserveInitialCapacity):
        (WTF::minCapacity>::shrinkCapacity):
        (WTF::minCapacity>::append):
        (WTF::minCapacity>::tryAppend):
        (WTF::minCapacity>::constructAndAppend):
        (WTF::minCapacity>::tryConstructAndAppend):
        (WTF::minCapacity>::appendSlowCase):
        (WTF::minCapacity>::constructAndAppendSlowCase):
        (WTF::minCapacity>::tryConstructAndAppendSlowCase):
        (WTF::minCapacity>::uncheckedAppend):
        (WTF::minCapacity>::appendVector):
        (WTF::minCapacity>::insert):
        (WTF::minCapacity>::insertVector):
        (WTF::minCapacity>::remove):
        (WTF::minCapacity>::removeFirst):
        (WTF::minCapacity>::removeFirstMatching):
        (WTF::minCapacity>::removeAll):
        (WTF::minCapacity>::removeAllMatching):
        (WTF::minCapacity>::reverse):
        (WTF::minCapacity>::map const):
        (WTF::minCapacity>::releaseBuffer):
        (WTF::minCapacity>::checkConsistency):
        (WTF::swap):
        (WTF::operator==):
        (WTF::operator!=):
        (WTF::removeRepeatedElements):
        (WTF::Malloc>::Vector): Deleted.
        (WTF::Malloc>::contains const): Deleted.
        (WTF::Malloc>::findMatching const): Deleted.
        (WTF::Malloc>::find const): Deleted.
        (WTF::Malloc>::reverseFind const): Deleted.
        (WTF::Malloc>::appendIfNotContains): Deleted.
        (WTF::Malloc>::fill): Deleted.
        (WTF::Malloc>::appendRange): Deleted.
        (WTF::Malloc>::expandCapacity): Deleted.
        (WTF::Malloc>::tryExpandCapacity): Deleted.
        (WTF::Malloc>::resize): Deleted.
        (WTF::Malloc>::resizeToFit): Deleted.
        (WTF::Malloc>::shrink): Deleted.
        (WTF::Malloc>::grow): Deleted.
        (WTF::Malloc>::asanSetInitialBufferSizeTo): Deleted.
        (WTF::Malloc>::asanSetBufferSizeToFullCapacity): Deleted.
        (WTF::Malloc>::asanBufferSizeWillChangeTo): Deleted.
        (WTF::Malloc>::reserveCapacity): Deleted.
        (WTF::Malloc>::tryReserveCapacity): Deleted.
        (WTF::Malloc>::reserveInitialCapacity): Deleted.
        (WTF::Malloc>::shrinkCapacity): Deleted.
        (WTF::Malloc>::append): Deleted.
        (WTF::Malloc>::tryAppend): Deleted.
        (WTF::Malloc>::constructAndAppend): Deleted.
        (WTF::Malloc>::tryConstructAndAppend): Deleted.
        (WTF::Malloc>::appendSlowCase): Deleted.
        (WTF::Malloc>::constructAndAppendSlowCase): Deleted.
        (WTF::Malloc>::tryConstructAndAppendSlowCase): Deleted.
        (WTF::Malloc>::uncheckedAppend): Deleted.
        (WTF::Malloc>::appendVector): Deleted.
        (WTF::Malloc>::insert): Deleted.
        (WTF::Malloc>::insertVector): Deleted.
        (WTF::Malloc>::remove): Deleted.
        (WTF::Malloc>::removeFirst): Deleted.
        (WTF::Malloc>::removeFirstMatching): Deleted.
        (WTF::Malloc>::removeAll): Deleted.
        (WTF::Malloc>::removeAllMatching): Deleted.
        (WTF::Malloc>::reverse): Deleted.
        (WTF::Malloc>::map const): Deleted.
        (WTF::Malloc>::releaseBuffer): Deleted.
        (WTF::Malloc>::checkConsistency): Deleted.
        * wtf/text/AtomicStringImpl.h:
        * wtf/text/CString.cpp:
        (WTF::CStringBuffer::createUninitialized):
        * wtf/text/CString.h:
        * wtf/text/StringBuffer.h:
        (WTF::StringBuffer::StringBuffer):
        (WTF::StringBuffer::~StringBuffer):
        (WTF::StringBuffer::resize):
        * wtf/text/StringImpl.cpp:
        (WTF::StringImpl::~StringImpl):
        (WTF::StringImpl::destroy):
        (WTF::StringImpl::createUninitializedInternalNonEmpty):
        (WTF::StringImpl::reallocateInternal):
        (WTF::StringImpl::releaseAssertCaged const): Deleted.
        * wtf/text/StringImpl.h:
        (WTF::StringImpl::createSubstringSharingImpl):
        (WTF::StringImpl::tryCreateUninitialized):
        (WTF::StringImpl::adopt):
        (WTF::StringImpl::assertCaged const): Deleted.
        * wtf/text/StringMalloc.cpp: Removed.
        * wtf/text/StringMalloc.h: Removed.
        * wtf/text/StringVector.h: Removed.
        * wtf/text/SymbolImpl.h:
        * wtf/text/UniquedStringImpl.h:
        * wtf/text/WTFString.h:
        (WTF::String::adopt):
        (WTF::String::assertCaged const): Deleted.
        (WTF::String::releaseAssertCaged const): Deleted.

2018-05-03  Wenson Hsieh  <wenson_hsieh@apple.com>

        Ads in NYTimes app are shifted downwards by the scroll view's top content inset
        https://bugs.webkit.org/show_bug.cgi?id=185251
        <rdar://problem/39062357>

        Reviewed by Tim Horton.

        Add a new DYLD_IOS_VERSION macro definition for previous or non-internal SDKs.

        * wtf/spi/darwin/dyldSPI.h:

2018-05-03  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r231197.

        The test added with this change crashes on the 32-bit JSC bot.

        Reverted changeset:

        "Correctly detect string overflow when using the 'Function'
        constructor"
        https://bugs.webkit.org/show_bug.cgi?id=184883
        https://trac.webkit.org/changeset/231197

2018-05-03  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r231223 and r231288.
        https://bugs.webkit.org/show_bug.cgi?id=185256

        The change in r231223 breaks internal builds, and r231288 is a
        dependent change. (Requested by ryanhaddad on #webkit).

        Reverted changesets:

        "Use default std::optional if it is provided"
        https://bugs.webkit.org/show_bug.cgi?id=185159
        https://trac.webkit.org/changeset/231223

        "Use pointer instead of
        std::optional<std::reference_wrapper<>>"
        https://bugs.webkit.org/show_bug.cgi?id=185186
        https://trac.webkit.org/changeset/231288

2018-05-02  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r231251.
        https://bugs.webkit.org/show_bug.cgi?id=185229

        __cpp_lib_optional should be used after including <optional>
        since it is defined in <optional> (Requested by yusukesuzuki
        on #webkit).

        Reverted changeset:

        "Follow-up build fix for r231223"
        https://bugs.webkit.org/show_bug.cgi?id=185159
        https://trac.webkit.org/changeset/231251

2018-05-02  Jonathan Bedard  <jbedard@apple.com>

        Follow-up build fix for r231223
        https://bugs.webkit.org/show_bug.cgi?id=185159
        <rdar://problem/39891074>

        Unreviewed build fix.

        We should be consistent about when we include <optional> vs define our own.

        * wtf/Optional.h:

2018-05-02  Jer Noble  <jer.noble@apple.com>

        Enable HAVE_AVKIT for the MINIMAL_SIMULATOR
        https://bugs.webkit.org/show_bug.cgi?id=185183

        Reviewed by Daniel Bates.

        * wtf/Platform.h:

2018-05-01  Yusuke Suzuki  <utatane.tea@gmail.com>

        Use default std::optional if it is provided
        https://bugs.webkit.org/show_bug.cgi?id=185159

        Reviewed by JF Bastien.

        Now C++17 flag is enabled. It means that any standard libraries can use <optional> internally.
        If we define std::optional regardless of the existence of the standard library's <optional>,
        it causes compile errors. For example, in GCC 7 (specifically GCC 7.3.0) environment,
        <optional> is included in <unordered_map>.
        We do not define std::optional in WebKit side if <optional> is offered.

        And we also remove std::optional<T&> use since this is not accepted in C++17. Use
        std::optional<std::reference_wrapper<T>> instead.

        * wtf/Expected.h:
        constexpr does not mean const in C++17.

        * wtf/Optional.h:
        Do not define std::optional if <optional> is provided.

        (WTF::valueOrCompute):

2018-05-01  Robin Morisset  <rmorisset@apple.com>

        Correctly detect string overflow when using the 'Function' constructor
        https://bugs.webkit.org/show_bug.cgi?id=184883
        <rdar://problem/36320331>

        Reviewed by Filip Pizlo.

        I added new tryAppend methods alongside the old append methods in StringBuilder, that return a boolean (true means success, false means an overflow happened).
        I made new methods instead of just adapting the existing ones (and reverted such a change on appendQuotedJSONString) so that callers that rely on the old behaviour (a hard CRASH() on overflow) don't silently start failing.

        * wtf/text/StringBuilder.cpp:
        (WTF::StringBuilder::allocateBufferUpConvert):
        (WTF::StringBuilder::tryAllocateBufferUpConvert):
        (WTF::StringBuilder::appendUninitialized):
        (WTF::StringBuilder::append):
        (WTF::StringBuilder::tryAppend):
        * wtf/text/StringBuilder.h:
        (WTF::StringBuilder::tryAppend):
        (WTF::StringBuilder::append):
        (WTF::StringBuilder::tryAppendLiteral):
        * wtf/text/StringBuilderJSON.cpp:
        (WTF::StringBuilder::appendQuotedJSONString):
        (WTF::StringBuilder::tryAppendQuotedJSONString):

2018-04-30  Mark Lam  <mark.lam@apple.com>

        Apply PtrTags to the MetaAllocator and friends.
        https://bugs.webkit.org/show_bug.cgi?id=185110
        <rdar://problem/39533895>

        Reviewed by Saam Barati.

        1. Introduce a MetaAllocatorPtr smart pointer to do pointer tagging.
        2. Use MetaAllocatorPtr in MetaAllocator and MetaAllocatorHandle.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/MetaAllocator.cpp:
        (WTF::MetaAllocator::release):
        (WTF::MetaAllocatorHandle::MetaAllocatorHandle):
        (WTF::MetaAllocatorHandle::shrink):
        (WTF::MetaAllocatorHandle::dump const):
        (WTF::MetaAllocator::allocate):
        (WTF::MetaAllocator::findAndRemoveFreeSpace):
        (WTF::MetaAllocator::addFreeSpaceFromReleasedHandle):
        (WTF::MetaAllocator::addFreshFreeSpace):
        (WTF::MetaAllocator::debugFreeSpaceSize):
        (WTF::MetaAllocator::addFreeSpace):
        (WTF::MetaAllocator::allocFreeSpaceNode):
        * wtf/MetaAllocator.h:
        (WTF::MetaAllocatorTracker::find):
        (WTF::MetaAllocator::FreeSpaceNode::FreeSpaceNode):
        (WTF::MetaAllocator::FreeSpaceNode::sizeInBytes):
        (WTF::MetaAllocator::FreeSpaceNode::key):
        * wtf/MetaAllocatorHandle.h:
        (WTF::MetaAllocatorHandle::start const):
        (WTF::MetaAllocatorHandle::end const):
        (WTF::MetaAllocatorHandle::startAsInteger const):
        (WTF::MetaAllocatorHandle::endAsInteger const):
        (WTF::MetaAllocatorHandle::sizeInBytes const):
        (WTF::MetaAllocatorHandle::containsIntegerAddress const):
        (WTF::MetaAllocatorHandle::key):
        * wtf/MetaAllocatorPtr.h: Added.
        (WTF::MetaAllocatorPtr::MetaAllocatorPtr):
        (WTF::MetaAllocatorPtr:: const):
        (WTF::MetaAllocatorPtr::operator bool const):
        (WTF::MetaAllocatorPtr::operator! const):
        (WTF::MetaAllocatorPtr::operator== const):
        (WTF::MetaAllocatorPtr::operator!= const):
        (WTF::MetaAllocatorPtr::operator+ const):
        (WTF::MetaAllocatorPtr::operator- const):
        (WTF::MetaAllocatorPtr::operator+=):
        (WTF::MetaAllocatorPtr::operator-=):
        (WTF::MetaAllocatorPtr::isEmptyValue const):
        (WTF::MetaAllocatorPtr::isDeletedValue const):
        (WTF::MetaAllocatorPtr::hash const):
        (WTF::MetaAllocatorPtr::emptyValue):
        (WTF::MetaAllocatorPtr::deletedValue):
        (WTF::MetaAllocatorPtrHash::hash):
        (WTF::MetaAllocatorPtrHash::equal):
        * wtf/PtrTag.h:

2018-04-30  JF Bastien  <jfbastien@apple.com>

        Use some C++17 features
        https://bugs.webkit.org/show_bug.cgi?id=185135

        Reviewed by Alex Christensen.

        * wtf/StdLibExtras.h: libstdc++ doesn't say it's C++17 when it
        defines std::conjunction. Use the feature test macro instead.

2018-04-30  Yusuke Suzuki  <utatane.tea@gmail.com>

        Use WordLock instead of std::mutex for Threading
        https://bugs.webkit.org/show_bug.cgi?id=185121

        Reviewed by Geoffrey Garen.

        Before r231151, WordLock depends on ThreadSpecific. It means that our Threading implementation
        cannot use this lock since Threading primitives could touch these locks after ThreadSpecific
        for that WordLock is destroyed.

        Now WordLock is changed not to use ThreadSpecific. So it does not depend on our Threading
        mechanism and our Threading can start using WordLock internally.

        This patch changes WTF::Thread and WTF::ThreadGroup to use WordLock instead of std::mutex.

        And add constexpr to explicitly describe that Lock, Condition, and WordLock constructors are constexpr.

        * wtf/Condition.h:
        * wtf/Lock.h:
        * wtf/ThreadGroup.h:
        (WTF::ThreadGroup::getLock):
        * wtf/Threading.cpp:
        (WTF::Thread::didExit):
        (WTF::Thread::addToThreadGroup):
        (WTF::Thread::removeFromThreadGroup):
        * wtf/Threading.h:
        * wtf/ThreadingPthreads.cpp:
        (WTF::Thread::changePriority):
        (WTF::Thread::waitForCompletion):
        (WTF::Thread::detach):
        (WTF::Thread::signal):
        (WTF::Thread::establishPlatformSpecificHandle):
        * wtf/ThreadingWin.cpp:
        (WTF::Thread::changePriority):
        (WTF::Thread::waitForCompletion):
        (WTF::Thread::detach):
        (WTF::Thread::establishPlatformSpecificHandle):
        (WTF::Thread::initializeTLSKey):
        (WTF::Thread::currentDying):
        (WTF::Thread::get):
        (WTF::Thread::initializeTLS):
        (WTF::Thread::destructTLS):
        (WTF::threadMapMutex): Deleted.
        * wtf/WordLock.h:

2018-04-29  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Require GCC 6
        https://bugs.webkit.org/show_bug.cgi?id=184985

        Reviewed by Alex Christensen.

        Stop enforcing GCC version in Compiler.h. It's better to do this in the build system. And I
        don't like having the same check in two different places.

        * wtf/Compiler.h:

2018-04-29  Geoffrey Garen  <ggaren@apple.com>

        WordLock doesn't need per-thread data
        https://bugs.webkit.org/show_bug.cgi?id=185119

        Reviewed by Yusuke Suzuki.

        The stack is per-thread data, so we can stack-allocate our ThreadData.

        This eliminates malloc() and high-level WTF threading primitives from
        WordLock, making WordLock more portable to non-WTF code, including
        bmalloc.

        (NOTE: This patch makes the bug fixed in r231148 100% reproducible.)

        * wtf/WordLock.cpp:
        (WTF::WordLock::lockSlow): Allocate ThreadData on the stack.

2018-04-28  Geoffrey Garen  <ggaren@apple.com>

        Fixed a very unlikely race condition in WTF::WordLock
        https://bugs.webkit.org/show_bug.cgi?id=185117

        Reviewed by Saam Barati.

        The race goes like this:

        Thread L is in lockSlowCase() and thread U is in unlockSlowCase();

        - U acquires queueHead->parkingLock.
        - U sets queueHead->shouldPark = false
        - U releases queueHead->parkingLock.
        - L spuriously wakes up from queueHead->parkingLock.wait()
        - L acquires queueHead->parkingLock.
        - L notices that queueHead->shouldPark = false, and acquires the WordLock
        - L finishes all its work and exits, freeing queueHead
        - U notifies queueHead->parkingLock (after free) and crashes or deadlocks

        These conditions are currently so unlikely that I don't know how to test
        them. I noticed this race because I changed WordLock's allocation pattern
        to allow queueHead to be freed more often, and I crashed / deadlocked 100%.

        Shout out to <http://en.cppreference.com/w/cpp/thread/condition_variable/notify_one>
        for explaining this.

        * benchmarks/ToyLocks.h: Fixed build.

        * wtf/WordLock.cpp:
        (WTF::WordLock::unlockSlow): Hold the lock a little longer to avoid
        this race.

2018-04-27  David Kilzer  <ddkilzer@apple.com>

        Add logging when SpringBoard enables WebThread
        <https://webkit.org/b/185100>
        <rdar://problem/39746542>

        Reviewed by Daniel Bates.

        * wtf/Assertions.h:
        (RELEASE_LOG_FAULT): Add macro to call os_log_fault().
        * wtf/Platform.h: Drive-by fix to enable USE(OS_LOG) on
        public iOS SDKs since <rdar://problem/27758343> was
        fixed in iOS 11.0.

2018-04-26  Mark Lam  <mark.lam@apple.com>

        Gardening: Speculative build fix for Windows.
        https://bugs.webkit.org/show_bug.cgi?id=184976
        <rdar://problem/39723901>

        Not reviewed.

        * wtf/PtrTag.h:
        (WTF::makePtrTagHash): Undo last speculative build fix that did not work for 64-bit.

2018-04-26  Andy VanWagoner  <thetalecrafter@gmail.com>

        [INTL] Implement Intl.PluralRules
        https://bugs.webkit.org/show_bug.cgi?id=184312

        Reviewed by JF Bastien.

        Added Intl.PluralRules feature flag.

        * wtf/FeatureDefines.h:

2018-04-25  Mark Lam  <mark.lam@apple.com>

        Gardening: Speculative build fix for Windows 32-bit to compensate for MSVC's lack of smarts.
        https://bugs.webkit.org/show_bug.cgi?id=184976
        <rdar://problem/39723901>

        Not reviewed.

        According to https://stackoverflow.com/questions/37658794/integer-constant-overflow-warning-in-constexpr,
        disabling the warning around the definition of the function will not disable it
        for all clients of the function.

        * wtf/PtrTag.h:
        (WTF::makePtrTagHash):

2018-04-25  Mark Lam  <mark.lam@apple.com>

        Push the definition of PtrTag down to the WTF layer.
        https://bugs.webkit.org/show_bug.cgi?id=184976
        <rdar://problem/39723901>

        Reviewed by Saam Barati.

        This is in preparation for doing pointer profiling at the WTF layer as well.
        Also deleted an unused ptrTag() function.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/PtrTag.h: Copied from Source/JavaScriptCore/runtime/PtrTag.h.
        (WTF::makePtrTagHash):
        (JSC::ptrTagName): Deleted.
        (JSC::tagForPtr): Deleted.
        (JSC::ptrTag): Deleted.
        (JSC::tagCodePtr): Deleted.
        (JSC::untagCodePtr): Deleted.
        (JSC::retagCodePtr): Deleted.
        (JSC::removeCodePtrTag): Deleted.
        (JSC::tagCFunctionPtr): Deleted.
        (JSC::untagCFunctionPtr): Deleted.
        (JSC::assertIsCFunctionPtr): Deleted.
        (JSC::assertIsNullOrCFunctionPtr): Deleted.
        (JSC::assertIsNotTagged): Deleted.
        (JSC::assertIsTagged): Deleted.
        (JSC::assertIsNullOrTagged): Deleted.
        (JSC::assertIsTaggedWith): Deleted.
        (JSC::assertIsNullOrTaggedWith): Deleted.

2018-04-25  Dean Jackson  <dino@apple.com>

        Make a better flag for system preview, and disable it where necessary
        https://bugs.webkit.org/show_bug.cgi?id=184968
        <rdar://problem/39686506>

        Reviewed by Eric Carlson.

        Add a new USE(SYSTEM_PREVIEW).

        * wtf/Platform.h:

2018-04-24  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r230971.
        https://bugs.webkit.org/show_bug.cgi?id=184939

        This fix was not appropriate (Requested by n_wang on #webkit).

        Reverted changeset:

        "AX: soft link libAccessibility.dylb"
        https://bugs.webkit.org/show_bug.cgi?id=184919
        https://trac.webkit.org/changeset/230971

2018-04-24  Nan Wang  <n_wang@apple.com>

        AX: soft link libAccessibility.dylb
        https://bugs.webkit.org/show_bug.cgi?id=184919

        Reviewed by Chris Fleizach.

        * wtf/cocoa/SoftLinking.h:

2018-04-23  Zalan Bujtas  <zalan@apple.com>

        [LayoutFormattingContext] Initial commit.
        https://bugs.webkit.org/show_bug.cgi?id=184896

        Reviewed by Antti Koivisto.

        * wtf/FeatureDefines.h:

2018-04-23  Per Arne Vollan  <pvollan@apple.com>

        Deactivate the WindowServer connection for the WebContent process.
        https://bugs.webkit.org/show_bug.cgi?id=184451
        <rdar://problem/38313938>

        Reviewed by Brent Fulgham.

        Defining ENABLE_WEBPROCESS_WINDOWSERVER_BLOCKING as 1 will deactivate the WindowServer connection
        for the WebContent process by enabling the call to 'CGSSetDenyWindowServerConnections(true)' on
        process startup. After calling this function, every attempt to establish a connection to the
        WindowServer from the WebContent process will fail, except for CA render server connections.

        * wtf/FeatureDefines.h:

2018-04-20  JF Bastien  <jfbastien@apple.com>

        Handle more JSON stringify OOM
        https://bugs.webkit.org/show_bug.cgi?id=184846
        <rdar://problem/39390672>

        Reviewed by Mark Lam.

        JSON stringification can OOM easily. Here's another case.

        * wtf/text/StringBuilderJSON.cpp:
        (WTF::StringBuilder::appendQuotedJSONString):

2018-04-18  Jer Noble  <jer.noble@apple.com>

        Don't put build products into WK_ALTERNATE_WEBKIT_SDK_PATH for engineering builds
        https://bugs.webkit.org/show_bug.cgi?id=184762

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:

2018-04-20  Daniel Bates  <dabates@apple.com>

        Remove code for compilers that did not support NSDMI for aggregates
        https://bugs.webkit.org/show_bug.cgi?id=184599

        Reviewed by Per Arne Vollan.

        Remove workaround for earlier Visual Studio versions that did not support non-static data
        member initializers (NSDMI) for aggregates. We have since updated all the build.webkit.org
        and EWS bots to a newer version that supports this feature.

        * wtf/Compiler.h:

2018-04-19  David Kilzer  <ddkilzer@apple.com>

        Enable Objective-C weak references
        <https://webkit.org/b/184789>
        <rdar://problem/39571716>

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:
        (CLANG_ENABLE_OBJC_WEAK): Enable.

2018-04-19  Brady Eidson  <beidson@apple.com>

        Add globally-unique HistoryItem identifiers (and have WebKit2 adopt them).
        <rdar://problem/39533949> and https://bugs.webkit.org/show_bug.cgi?id=184750

        Reviewed by Ryosuke Niwa.

        * wtf/DebugUtilities.h:
        (WTF::debugString):

2018-04-19  Per Arne Vollan  <pvollan@apple.com>

        Unreviewed, rolling out r230677.

        Introduced Netflix problems.

        Reverted changeset:

        "Deactivate the WindowServer connection for the WebContent process."
        https://bugs.webkit.org/show_bug.cgi?id=184451
        https://trac.webkit.org/changeset/230677

2018-04-19  Nan Wang  <n_wang@apple.com>

        AX: AOM: respect the accessibility setting for dispatching the accessible events
        https://bugs.webkit.org/show_bug.cgi?id=184619

        Reviewed by Ryosuke Niwa.

        * wtf/Platform.h:

2018-04-18  Ross Kirsling  <ross.kirsling@sony.com>

        [Win] Layout Test js/date-constructor.html is failing
        https://bugs.webkit.org/show_bug.cgi?id=140945

        Reviewed by Per Arne Vollan.

        * wtf/DateMath.cpp:
        (WTF::calculateDSTOffset):
        Move all shared calculations outside of the #if -- including the "jump forward a day" case that had been overlooked.

2018-04-17  Saam Barati  <sbarati@apple.com>

        Add system trace points for process launch and for initializeWebProcess
        https://bugs.webkit.org/show_bug.cgi?id=184669

        Reviewed by Simon Fraser.

        This patch adds TracePointCodes to measure process launch time and
        WebProcess::initializeWebProcess time.
        
        It also renames the TracePoint function to tracePoint since WebKit style
        does not capitalize the first letter in function names.

        * wtf/SystemTracing.h:
        (WTF::tracePoint):
        (WTF::TraceScope::TraceScope):
        (WTF::TraceScope::~TraceScope):
        (WTF::TracePoint): Deleted.

2018-04-16  Andy Estes  <aestes@apple.com>

        [iOS] Enable WKPDFView by default
        https://bugs.webkit.org/show_bug.cgi?id=184675
        <rdar://problem/27885452>

        Reviewed by Darin Adler.

        * wtf/FeatureDefines.h:

2018-04-16  Per Arne Vollan  <pvollan@apple.com>

        Deactivate the WindowServer connection for the WebContent process.
        https://bugs.webkit.org/show_bug.cgi?id=184451
        <rdar://problem/38313938>

        Reviewed by Brent Fulgham.

        Defining ENABLE_WEBPROCESS_WINDOWSERVER_BLOCKING as 1 will deactivate the WindowServer connection
        for the WebContent process by enabling the call to 'CGSSetDenyWindowServerConnections(true)' on
        process startup. After calling this function, every attempt to establish a connection to the
        WindowServer from the WebContent process will fail, except for CA render server connections.

        * wtf/FeatureDefines.h:

2018-04-14  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r230659.
        https://bugs.webkit.org/show_bug.cgi?id=184633

        Landed prematurely (Requested by ap on #webkit).

        Reverted changeset:

        "Deactivate the WindowServer connection for the WebContent
        process."
        https://bugs.webkit.org/show_bug.cgi?id=184451
        https://trac.webkit.org/changeset/230659

2018-04-14  Per Arne Vollan  <pvollan@apple.com>

        Deactivate the WindowServer connection for the WebContent process.
        https://bugs.webkit.org/show_bug.cgi?id=184451
        <rdar://problem/38313938>

        Reviewed by Brent Fulgham.

        Defining ENABLE_WEBPROCESS_WINDOWSERVER_BLOCKING as 1 will deactivate the WindowServer connection
        for the WebContent process by enabling the call to 'CGSSetDenyWindowServerConnections(true)' on
        process startup. After calling this function, every attempt to establish a connection to the
        WindowServer from the WebContent process will fail, except for CA render server connections.

        * wtf/FeatureDefines.h:

2018-04-13  Chris Dumez  <cdumez@apple.com>

        Split WindowProxy handling out of ScriptController and into a new class owned by AbstractFrame
        https://bugs.webkit.org/show_bug.cgi?id=184591

        Reviewed by Sam Weinig.

        Add isEmpty() convenience method to SizedIteratorRange.

        * wtf/IteratorRange.h:
        (WTF::SizedIteratorRange::isEmpty const):

2018-04-13  Brady Eidson  <beidson@apple.com>

        Introduce SuspendedPageProxy to keep old web processes around after their WebPageProxy has been swapped to a new one.
        https://bugs.webkit.org/show_bug.cgi?id=184559

        Reviewed by Alex Christensen.

        * wtf/DebugUtilities.h:
        (WTF::debugString): Add a debug utility to easily construct a "const char*" that is released after a spin of the run loop.
          This greatly eases uses our String classes and functions inside of "%s" style environments like printf and LOG.

2018-04-12  Michael Catanzaro  <mcatanzaro@igalia.com>

        Remove unused crash hook functionality
        https://bugs.webkit.org/show_bug.cgi?id=183369

        Reviewed by Alexey Proskuryakov.

        WTFSetCrashHook and WTFInstallReportBacktraceOnCrashHook are not used on any platforms and
        can be removed.

        * wtf/Assertions.cpp:
        * wtf/Assertions.h:

2018-04-11  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Unreviewed, rolling out r230523.

        Introduced MotionMark regression

        Reverted changeset:

        "Deactivate the WindowServer connection for the WebContent
        process."
        https://bugs.webkit.org/show_bug.cgi?id=184451
        https://trac.webkit.org/changeset/230523

2018-04-11  Per Arne Vollan  <pvollan@apple.com>

        Deactivate the WindowServer connection for the WebContent process.
        https://bugs.webkit.org/show_bug.cgi?id=184451
        <rdar://problem/38313938>

        Reviewed by Brent Fulgham.

        Defining ENABLE_WEBPROCESS_WINDOWSERVER_BLOCKING as 1 will deactivate the WindowServer connection
        for the WebContent process by enabling the call to 'CGSSetDenyWindowServerConnections(true)' on
        process startup. After calling this function, every attempt to establish a connection to the
        WindowServer from the WebContent process will fail, except for CA render server connections.

        * wtf/FeatureDefines.h:

2018-04-10  Andy Estes  <aestes@apple.com>

        [iOS] Use PDFKit to render PDFs in WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=184387

        Reviewed by Beth Dakin.

        * wtf/FeatureDefines.h: Defined ENABLE_WKLEGACYPDFVIEW and ENABLE_WKPDFVIEW.

2018-04-09  Mark Lam  <mark.lam@apple.com>

        Decorate method table entries to support pointer profiling.
        https://bugs.webkit.org/show_bug.cgi?id=184430
        <rdar://problem/39296190>

        Reviewed by Saam Barati.

        * wtf/PointerPreparations.h:

2018-04-08  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, use alignas(void*)
        https://bugs.webkit.org/show_bug.cgi?id=183508

        Very large alignment is not supported in MSVC.

        * wtf/Gigacage.cpp:
        * wtf/Gigacage.h:

2018-04-08  Yusuke Suzuki  <utatane.tea@gmail.com>

        Use alignas instead of compiler-specific attributes
        https://bugs.webkit.org/show_bug.cgi?id=183508

        Reviewed by Mark Lam.

        Use alignas for g_gigacageBasePtr. We also add reinterpret_cast to fix
        compile errors in ARMv7 and MIPS JSCOnly ports.

        * wtf/Gigacage.cpp:
        * wtf/Gigacage.h:
        (Gigacage::basePtrs):

2018-04-06  Saam Barati  <sbarati@apple.com>

        bmalloc's tryLargeZeroedMemalignVirtual shouldn't treat the entire virtual size as dirty towards its footprint
        https://bugs.webkit.org/show_bug.cgi?id=184207

        Reviewed by Mark Lam.

        * wtf/Gigacage.cpp:
        (Gigacage::freeVirtualPages):

2018-04-05  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Remove StaticLock
        https://bugs.webkit.org/show_bug.cgi?id=184332

        Reviewed by Mark Lam.

        Now, WTF::StaticLock is `using StaticLock = Lock`. Lock just works
        in either static storage and dynamic storage. Remove StaticLock and
        always use Lock.

        We also remove StaticWordLock and StaticReadWriteLock. And we add
        WTF::RecursiveLock, which is RecursiveLockAdapter<Lock>.

        * wtf/HashTable.cpp:
        (WTF::HashTableStats::recordCollisionAtCount):
        (WTF::HashTableStats::dumpStats):
        * wtf/Language.cpp:
        (WTF::userPreferredLanguages):
        * wtf/Lock.h:
        * wtf/MainThread.cpp:
        (WTF::dispatchFunctionsFromMainThread):
        (WTF::callOnMainThread):
        * wtf/ParkingLot.cpp:
        * wtf/ReadWriteLock.h:
        * wtf/RecursiveLockAdapter.h:
        * wtf/StackStats.cpp:
        (WTF::StackStats::CheckPoint::CheckPoint):
        (WTF::StackStats::CheckPoint::~CheckPoint):
        (WTF::StackStats::probe):
        (WTF::StackStats::LayoutCheckPoint::LayoutCheckPoint):
        (WTF::StackStats::LayoutCheckPoint::~LayoutCheckPoint):
        * wtf/StackStats.h:
        * wtf/ThreadMessage.cpp:
        (WTF::sendMessageScoped):
        * wtf/ThreadingPthreads.cpp:
        * wtf/ThreadingWin.cpp:
        * wtf/WordLock.h:
        * wtf/cf/LanguageCF.cpp:
        (WTF::languagePreferencesDidChange):
        (WTF::platformUserPreferredLanguages):
        * wtf/dtoa.cpp:
        * wtf/text/AtomicStringImpl.cpp:
        * wtf/text/StringView.cpp:
        (WTF::StringView::invalidate):
        (WTF::StringView::adoptUnderlyingString):
        (WTF::StringView::setUnderlyingString):
        * wtf/unicode/icu/CollatorICU.cpp:
        (WTF::Collator::Collator):
        (WTF::Collator::~Collator):
        * wtf/win/LanguageWin.cpp:
        (WTF::platformLanguage):

2018-04-04  Brent Fulgham  <bfulgham@apple.com>

        Failures from mach port reference handling should be fatal
        https://bugs.webkit.org/show_bug.cgi?id=184202
        <rdar://problem/37771114>

        Reviewed by Anders Carlsson.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/MachSendRight.h: Copied from WebCore/platform/cocoa/MachSendRight.h.
        (WebCore::MachSendRight::operator bool const): Deleted.
        (WebCore::MachSendRight::sendRight const): Deleted.
        * wtf/PlatformMac.cmake:
        * wtf/cocoa/CPUTimeCocoa.mm:
        (WTF::CPUTime::forCurrentThread): Do proper cleanup if the port is invalid.
        * wtf/cocoa/MachSendRight.cpp: Copied from WebCore/platform/cocoa/MachSendRight.cpp.
        (WTF::retainSendRight):
        (WTF::releaseSendRight):
        (WTF::deallocateSendRightSafely):
        (WebCore::retainSendRight): Deleted.
        (WebCore::releaseSendRight): Deleted.
        (WebCore::MachSendRight::adopt): Deleted.
        (WebCore::MachSendRight::create): Deleted.
        (WebCore::MachSendRight::MachSendRight): Deleted.
        (WebCore::MachSendRight::~MachSendRight): Deleted.
        (WebCore::MachSendRight::operator=): Deleted.
        (WebCore::MachSendRight::copySendRight const): Deleted.
        (WebCore::MachSendRight::leakSendRight): Deleted.

2018-04-04  Youenn Fablet  <youenn@apple.com>

        Introduce a ThreadSafeRefCounted parameter to ensure being destroyed on the main thread
        https://bugs.webkit.org/show_bug.cgi?id=183988

        Reviewed by Darin Adler.

        * wtf/ThreadSafeRefCounted.h:
        (WTF::ThreadSafeRefCounted::deref const):

2018-04-04  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Remove Atomics.cpp
        https://bugs.webkit.org/show_bug.cgi?id=184300

        Reviewed by Konstantin Tokarev.

        This Atomics.cpp is a workaround for GCC which version is < 4.8.
        Our compiler requirement is now 5.0.0. This workaround is no
        longer necessary.

        * wtf/Atomics.cpp: Removed.
        * wtf/CMakeLists.txt:

2018-04-03  Tomas Popela  <tpopela@redhat.com>

        Unreviewed, mute the unused parameter compilation warning

        Triggered on the PPC64 machine.

        * wtf/ThreadingPthreads.cpp:
        (WTF::Thread::signalHandlerSuspendResume):

2018-04-03  Tomas Popela  <tpopela@redhat.com>

        Unreviewed, fix the unused variable compilation warning

        Move the ucontext_t code under the HAVE(MACHINE_CONTEXT). Triggered
        on the PPC64 machine.

        * wtf/ThreadingPthreads.cpp:
        (WTF::Thread::signalHandlerSuspendResume):

2018-04-02  Saam Barati  <sbarati@apple.com>

        bmalloc should compute its own estimate of its footprint
        https://bugs.webkit.org/show_bug.cgi?id=184121

        Reviewed by Filip Pizlo.

        * wtf/FastMalloc.cpp:
        (WTF::fastCommitAlignedMemory):
        (WTF::fastDecommitAlignedMemory):
        * wtf/FastMalloc.h:

2018-03-30  Filip Pizlo  <fpizlo@apple.com>

        Strings and Vectors shouldn't do index masking
        https://bugs.webkit.org/show_bug.cgi?id=184193

        Reviewed by Mark Lam.

        * wtf/SizeLimits.cpp:
        * wtf/Vector.h:
        (WTF::VectorBufferBase::allocateBuffer):
        (WTF::VectorBufferBase::tryAllocateBuffer):
        (WTF::VectorBufferBase::reallocateBuffer):
        (WTF::VectorBufferBase::deallocateBuffer):
        (WTF::VectorBufferBase::releaseBuffer):
        (WTF::VectorBufferBase::VectorBufferBase):
        (WTF::VectorBuffer::allocateBuffer):
        (WTF::VectorBuffer::tryAllocateBuffer):
        (WTF::VectorBuffer::swap):
        (WTF::VectorBuffer::restoreInlineBufferIfNeeded):
        (WTF::Vector::at):
        (WTF::Vector::at const):
        (WTF::VectorBufferBase::updateMask): Deleted.
        * wtf/text/StringImpl.h:
        (WTF::StringImpl::flagIsSymbol):
        (WTF::StringImpl::length const):
        (WTF::StringImplShape::StringImplShape):
        (WTF::StringImpl::at const):
        (WTF::StringImpl::tailOffset):
        (WTF::StringImpl::maskOffset): Deleted.
        (WTF::StringImpl::mask const): Deleted.
        * wtf/text/StringView.h:
        (WTF::StringView::StringView):
        (WTF::StringView::operator=):
        (WTF::StringView::initialize):
        (WTF::StringView::clear):
        (WTF::StringView::operator[] const):
        * wtf/text/WTFString.h:
        (WTF::String::length const):
        (WTF::String::mask const): Deleted.

2018-03-30  Mark Lam  <mark.lam@apple.com>

        Add pointer profiling support in baseline JIT and supporting files.
        https://bugs.webkit.org/show_bug.cgi?id=184200
        <rdar://problem/39057300>

        Reviewed by Filip Pizlo.

        * wtf/PointerPreparations.h:
        - Remove WTF_PREPARE_FUNCTION_POINTER_FOR_EXECUTION.  It is no longer needed.

2018-03-30  JF Bastien  <jfbastien@apple.com>

        WorkQueueWin: don't move rvalues
        https://bugs.webkit.org/show_bug.cgi?id=184190
        <rdar://problem/39049850>

        Reviewed by Mark Lam.

        As part of #184167 optional is now more frequently an rvalue
        reference, and moving its .value() is not a thing that should be
        done anymore.

        * wtf/win/WorkQueueWin.cpp:
        (WTF::WorkQueue::unregisterAndCloseHandle):

2018-03-30  JF Bastien  <jfbastien@apple.com>

        Remove CXX_REFERENCE_QUALIFIED_FUNCTIONS and optional's equivalent
        https://bugs.webkit.org/show_bug.cgi?id=184167
        <rdar://problem/39023130>

        Reviewed by Yusuke Suzuki.

        Remove COMPILER_SUPPORTS(CXX_REFERENCE_QUALIFIED_FUNCTIONS), it's
        supported by all compilers WebKit supports (it's a C++11 feature,
        *detection* of it with __has_extension was added to clang on May
        13th 2011, and VS2015 / GCC support it).

        Optional.h had a similar thing, ditch it too.

        * wtf/Compiler.h:
        * wtf/Optional.h:
        (std::optional::contained_val const):
        (std::optional::contained_val):
        * wtf/Ref.h:
        * wtf/RefPtr.h:
        * wtf/text/WTFString.cpp:
        * wtf/text/WTFString.h:

2018-03-30  JF Bastien  <jfbastien@apple.com>

        Introduce WTF_LAZY_INSTANTIATE
        https://bugs.webkit.org/show_bug.cgi?id=184169
        <rdar://problem/39023385>

        Reviewed by Mark Lam.

        As part of #184164 I'm adding some forwarding methods to
        WTF::String. These need to forward RetainPtr and CString, and
        usually that would require #include'ing RetainPtr.h and CString.h
        to WTFString.h which isn't really something we should do.

        Introduce WTF_LAZY_INSTANTIATE to forward-declare functions which
        just pass parameters to another function, and return whatever that
        other function returned, without having to include the return's /
        parameters' type header.

        Try it out here: godbolt.org/g/oV8G5Q

        * wtf/Forward.h:

2018-03-29  JF Bastien  <jfbastien@apple.com>

        Use Forward.h instead of forward-declaring WTF::String
        https://bugs.webkit.org/show_bug.cgi?id=184172
        <rdar://problem/39026146>

        Reviewed by Yusuke Suzuki.

        As part of #184164 I'm changing WTF::String, and the forward
        declarations are just wrong because I'm making it templated. We
        should use Forward.h anyways, so do that instead.

        * wtf/Forward.h:
        * wtf/HashTraits.h:
        * wtf/PrintStream.h:

2018-03-29  Yusuke Suzuki  <utatane.tea@gmail.com>

        Remove WTF_EXPORTDATA and JS_EXPORTDATA
        https://bugs.webkit.org/show_bug.cgi?id=184170

        Reviewed by JF Bastien.

        Replace WTF_EXPORTDATA and JS_EXPORTDATA with
        WTF_EXPORT_PRIVATE and JS_EXPORT_PRIVATE respectively.

        * wtf/ExportMacros.h:
        * wtf/Gigacage.h:
        * wtf/HashTable.h:
        * wtf/Threading.h:
        * wtf/text/AtomicString.cpp:
        * wtf/text/AtomicString.h:
        * wtf/text/StringImpl.h:

2018-03-29  Ross Kirsling  <ross.kirsling@sony.com>

        MSVC __forceinline slows down JSC release build fivefold after r229391
        https://bugs.webkit.org/show_bug.cgi?id=184062

        Reviewed by Alex Christensen.

        * wtf/Compiler.h:
        Add ALWAYS_INLINE_EXCEPT_MSVC to support MSVC optimizer sensitivities.

2018-03-29  JF Bastien  <jfbastien@apple.com>

        Remove WTF_EXPORT_STRING_API
        https://bugs.webkit.org/show_bug.cgi?id=184168
        <rdar://problem/39023253>

        Reviewed by Yusuke Suzuki.

        Remove WTF_EXPORT_STRING_API as requested by a FIXME, and use
        WTF_EXPORT_PRIVATE instead.

        * wtf/ExportMacros.h:
        * wtf/text/AtomicString.h:
        * wtf/text/AtomicStringImpl.h:
        * wtf/text/StringImpl.h:
        * wtf/text/StringView.h:
        * wtf/text/SymbolImpl.h:
        * wtf/text/WTFString.h:

2018-03-29  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r230062.
        https://bugs.webkit.org/show_bug.cgi?id=184128

        Broke mac port. web content process crashes while loading any
        web page (Requested by rniwa on #webkit).

        Reverted changeset:

        "MSVC __forceinline slows down JSC release build fivefold
        after r229391"
        https://bugs.webkit.org/show_bug.cgi?id=184062
        https://trac.webkit.org/changeset/230062

2018-03-28  Ross Kirsling  <ross.kirsling@sony.com>

        MSVC __forceinline slows down JSC release build fivefold after r229391
        https://bugs.webkit.org/show_bug.cgi?id=184062

        Reviewed by Alex Christensen.

        * wtf/Compiler.h:
        Add ALWAYS_INLINE_EXCEPT_MSVC to support MSVC optimizer sensitivities.

2018-03-28  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win] Assertions.h: VC doesn't support GCC extension ##__VA_ARGS__
        https://bugs.webkit.org/show_bug.cgi?id=184076

        Reviewed by Alex Christensen.

        ##__VA_ARGS__ is used to define RELEASE_LOG, RELEASE_LOG_ERROR,
        RELEASE_LOG_IF, RELEASE_LOG_ERROR_IF, RELEASE_LOG_WITH_LEVEL,
        RELEASE_LOG_WITH_LEVEL_IF and RELEASE_LOG_INFO_IF.

        A macro using ##__VA_ARGS__,

          #define foo(format, ...) bar(format, ##__VA_ARGS__)

        can be defined without ##__VA_ARGS__:

          #define foo(...) bar(__VA_ARGS__)

        * wtf/Assertions.h: Use __VA_ARGS__ instead of ##__VA_ARGS__.

2018-03-28  Brent Fulgham  <bfulgham@apple.com>

        Avoid uninitialized mach ports
        https://bugs.webkit.org/show_bug.cgi?id=184090
        <rdar://problem/37261129>

        Reviewed by Chris Dumez.

        It is possible for mach_port_allocate to return an error, but we rarely check its return value. The value
        of the argument passed to mach_port_allocate is not guaranteed to be valid when it returns an error, so
        there is a potential for us to try to use invalid ports.

        We should always check return values, and ensure that the mach port variables we seek to initialize are
        kept in a valid state.

        Reviewed by Chris Dumez.

        * wtf/Threading.h: Initialize mach port.

2018-03-28  Robin Morisset  <rmorisset@apple.com>

        appendQuotedJSONString stops on arithmetic overflow instead of propagating it upwards
        https://bugs.webkit.org/show_bug.cgi?id=183894

        Reviewed by Saam Barati.

        appendQuotedJSONString now returns a bool indicating whether it succeeded, instead of silently failing when given a string too large
        to fit in 4GB.

        * wtf/text/StringBuilder.h:
        * wtf/text/StringBuilderJSON.cpp:
        (WTF::StringBuilder::appendQuotedJSONString):

2018-03-27  Per Arne Vollan  <pvollan@apple.com>

        The layout test fast/canvas/webgl/read-pixels-test.html is timing out.
        https://bugs.webkit.org/show_bug.cgi?id=183923
        <rdar://problem/38756869>

        Reviewed by Brent Fulgham.

        Add compile guard for blocking of the WindowServer in the WebProcess.

        * wtf/FeatureDefines.h:

2018-03-26  Tim Horton  <timothy_horton@apple.com>

        Add and adopt HAVE(CORE_ANIMATION_RENDER_SERVER)
        https://bugs.webkit.org/show_bug.cgi?id=184026
        <rdar://problem/38883321>

        Reviewed by Sam Weinig.

        * wtf/Platform.h:

2018-03-26  Yusuke Suzuki  <utatane.tea@gmail.com>

        We should have SSE4 detection in the X86 MacroAssembler.
        https://bugs.webkit.org/show_bug.cgi?id=165363

        Reviewed by JF Bastien.

        GCC 5 supports clobbering PIC registers in inline ASM [1,2].

        [1]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47602
        [2]: https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=216154

        * wtf/Atomics.h:
        (WTF::x86_cpuid):

2018-03-26  Antoine Quint  <graouts@apple.com>

        [ASan] Allow Ref<> to be swapped
        https://bugs.webkit.org/show_bug.cgi?id=184017
        <rdar://problem/36336787>

        Reviewed by JF Bastien.

        Unpoison a Ref in various calls just like in ~Ref so that sorting a Vector<Ref<>> works with ASan on.

        * wtf/Ref.h:
        (WTF::Ref::assignToHashTableEmptyValue):
        (WTF::=):
        (WTF::U>::replace):

2018-03-26  Brent Fulgham  <bfulgham@apple.com>

        Warn against cookie access in the WebContent process using ProcessPrivilege assertions
        https://bugs.webkit.org/show_bug.cgi?id=183911
        <rdar://problem/38762306>

        Reviewed by Youenn Fablet.

        Extend the ProcessPrivilege API with the ability to add and remove individual
        privileges.

        * wtf/ProcessPrivilege.cpp:
        (WTF::addProcessPrivilege):
        (WTF::removeProcessPrivilege):
        * wtf/ProcessPrivilege.h:

2018-03-25  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        WebProcess memory monitor: use %zu format specifier for size_t
        https://bugs.webkit.org/show_bug.cgi?id=183997

        Reviewed by Michael Catanzaro.

        usse %zu format specifier for size_t instead of %lu.

        * wtf/MemoryPressureHandler.cpp:
        (WTF::MemoryPressureHandler::shrinkOrDie):
        (WTF::MemoryPressureHandler::measurementTimerFired):

2018-03-25  Tim Horton  <timothy_horton@apple.com>

        Add and adopt ENABLE(AIRPLAY_PICKER)
        https://bugs.webkit.org/show_bug.cgi?id=183992

        Reviewed by Daniel Bates.

        * wtf/FeatureDefines.h:

2018-03-23  Tim Horton  <timothy_horton@apple.com>

        Introduce and adopt HAVE(AUDIO_TOOLBOX_AUDIO_SESSION)
        https://bugs.webkit.org/show_bug.cgi?id=183954
        <rdar://problem/38808858>

        Reviewed by Dan Bernstein.

        * wtf/Platform.h:

2018-03-23  David Kilzer  <ddkilzer@apple.com>

        Stop using dispatch_set_target_queue()
        <https://webkit.org/b/183908>
        <rdar://problem/33553533>

        Reviewed by Daniel Bates.

        * wtf/cocoa/WorkQueueCocoa.cpp:
        (WTF::WorkQueue::platformInitialize): Remove !HAVE(QOS_CLASSES)
        code path since it's never used now that HAVE(QOS_CLASSES) is
        equivalent to PLATFORM(COCOA) in <wtf/Platform.h>.

2018-03-23  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        WebProcess memory monitor thresholds should be better tuned for embedded systems.
        https://bugs.webkit.org/show_bug.cgi?id=183773

        Reviewed by Yusuke Suzuki.

        Take into account the total system RAM for the thresholds calculation.

        For systems with more than 3GB the conservative and strict thresholds remain as they are,
        but for systems with less RAM the thresholds are dynamically configured as follows:

        - Conservative threshold (release non critical memory) if WebProcess using more than 33% of the total RAM.
        - Strict threshold (release all possible memory) if WebProcess using more than 50% of the total RAM.

        The Kill threshold is also modified. Now it is capped at 90% of the total RAM.

        * wtf/MemoryPressureHandler.cpp:
        (WTF::thresholdForMemoryKillWithProcessState):
        (WTF::thresholdForPolicy):
        (WTF::MemoryPressureHandler::shrinkOrDie):

2018-03-23  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Add standard containers with FastAllocator specialization
        https://bugs.webkit.org/show_bug.cgi?id=183789

        Reviewed by Darin Adler.

        Sometimes we want standard containers due to various reasons.
        For example, WTF::HashMap lacks the ability to hold all the
        integer keys since it uses 0 for empty value and -1 for deleted
        value. However, using std::containers use std::allocator without
        specialization.

        This patch introduces WTF::{StdMap, StdSet, StdList, StdUnorderedMap, StdUnorderedSet}.
        They are standard containers with FastAllocator specialization.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/StdList.h: Copied from Source/JavaScriptCore/runtime/TypeLocationCache.h.
        * wtf/StdMap.h: Copied from Source/JavaScriptCore/runtime/TypeLocationCache.h.
        * wtf/StdSet.h: Copied from Source/JavaScriptCore/runtime/TypeLocationCache.h.
        * wtf/StdUnorderedMap.h: Copied from Source/JavaScriptCore/runtime/TypeLocationCache.h.
        * wtf/StdUnorderedSet.h: Copied from Source/JavaScriptCore/runtime/TypeLocationCache.h.

2018-03-22  Tim Horton  <timothy_horton@apple.com>

        Adopt USE(OPENGL[_ES]) in more places
        https://bugs.webkit.org/show_bug.cgi?id=183882
        <rdar://problem/37912195>

        Reviewed by Dan Bernstein.

        * wtf/Platform.h:

2018-03-20  Brent Fulgham  <bfulgham@apple.com>

        Create an assertion mechanism to ensure proper WebCore use in each WebKit Process
        https://bugs.webkit.org/show_bug.cgi?id=183806
        <rdar://problem/38694251>

        Reviewed by Ryosuke Niwa.

        Part of our security improvements involve better isolation between the different WebKit
        processes (UIProcess, WebContent, Networking, Storage, etc.).

        We need an assertion language we can use to protect certain critical APIs and code paths
        against accidental misuse.

        This patch adds a new enum type meant to represent different categories of program logic
        that we do not want used in the wrong process.

        This first patch just creates these types and makes them available. New assertions using
        these values will be added as we complete our work ensuring proper process isolation.

        In a method we want to protect, we can add an assertion describing the process privileges
        needed to execute the code. For example, for cookie access we might use this:

            ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessRawCookies);

        At the launch of the UIProcess we would use this method to ensure all privileges are available:

            setProcessPrivileges(allPrivileges());

        In the network process, during platform initialization, we would use something like this:

            setProcessPrivileges({ ProcessPrivilege::CanAccessRawCookies, ProcessPrivilege::CanAccessCredentials });

        In the WebContent process, we would not set any privileges. We could just leave it as the
        default initialization, or use this:

            setProcessPrivileges({ });

        Later, when we attempt to execute the initial code, we would expect an assertion for the
        WebContent process, while Network and UIProcess pass the assertion.

        * WTF.xcodeproj/project.pbxproj: Add new files.
        * wtf/CMakeLists.txt: Ditto.
        * wtf/ProcessPrivilege.cpp: Added.
        (WTF::processPrivileges):
        (WTF::setProcessPrivileges):
        (WTF::hasProcessPrivilege):
        * wtf/ProcessPrivilege.h: Added.

2018-03-20  Tim Horton  <timothy_horton@apple.com>

        Introduce HAVE_MEDIA_PLAYER and HAVE_CORE_VIDEO
        https://bugs.webkit.org/show_bug.cgi?id=183803
        <rdar://problem/38690487>

        Reviewed by Sam Weinig.

        * wtf/Platform.h:

2018-03-20  Brian Burg  <bburg@apple.com>

        SLEEP_THREAD_FOR_DEBUGGER should not use fancy number literals
        https://bugs.webkit.org/show_bug.cgi?id=183792

        Reviewed by Timothy Hatcher.

        * wtf/DebugUtilities.h: Remove the '_s' since this won't
        compile when included by files compiled as Objective-C++.

2018-03-20  Tim Horton  <timothy_horton@apple.com>

        Add and adopt WK_PLATFORM_NAME and adjust default feature defines
        https://bugs.webkit.org/show_bug.cgi?id=183758
        <rdar://problem/38017644>

        Reviewed by Dan Bernstein.

        * wtf/FeatureDefines.h:

2018-03-19  Eric Carlson  <eric.carlson@apple.com>

        [Extra zoom mode] Require fullscreen for video playback
        https://bugs.webkit.org/show_bug.cgi?id=183742
        <rdar://problem/38235862>

        Reviewed by Jer Noble.

        * wtf/Platform.h:

2018-03-15  Tim Horton  <timothy_horton@apple.com>

        Avoid defining commonly-named system macros on all Cocoa platforms
        https://bugs.webkit.org/show_bug.cgi?id=183687

        Reviewed by Dan Bernstein.

        * wtf/Platform.h:

2018-03-14  Tim Horton  <timothy_horton@apple.com>

        Fix the build after r229387
        https://bugs.webkit.org/show_bug.cgi?id=183639
        <rdar://problem/38448568>

        Reviewed by Dean Jackson.

        * wtf/Platform.h:

2018-03-13  Tim Horton  <timothy_horton@apple.com>

        Add and adopt WK_ALTERNATE_FRAMEWORKS_DIR in WTF and bmalloc
        https://bugs.webkit.org/show_bug.cgi?id=183576
        <rdar://problem/38396766>

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:
        * Configurations/CopyWTFHeaders.xcconfig:
        * Configurations/WTF.xcconfig:
        * Configurations/mbmalloc.xcconfig:

2018-03-13  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix typo in a comment

        * wtf/Platform.h:

2018-03-12  Don Olmstead  <don.olmstead@sony.com>

        [CMake][Win] Forwarding headers of WTF and PAL are copied twice in Visual Studio builds
        https://bugs.webkit.org/show_bug.cgi?id=183240

        Reviewed by Alex Christensen.

        * wtf/CMakeLists.txt:
        * wtf/PlatformGTK.cmake:
        * wtf/PlatformJSCOnly.cmake:
        * wtf/PlatformMac.cmake:
        * wtf/PlatformWPE.cmake:
        * wtf/PlatformWin.cmake:

2018-03-12  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, include time.h
        https://bugs.webkit.org/show_bug.cgi?id=183312

        Attempt to fix oss-fuzz build.

        * wtf/CurrentTime.cpp:
        * wtf/unix/CPUTimeUnix.cpp:

2018-03-12  Yoav Weiss  <yoav@yoav.ws>

        Runtime flag for link prefetch and remove link subresource.
        https://bugs.webkit.org/show_bug.cgi?id=183540

        Reviewed by Chris Dumez.

        Remove the LINK_PREFETCH build time flag.

        * wtf/FeatureDefines.h:

2018-03-12  Mark Lam  <mark.lam@apple.com>

        Make a NativeFunction into a class to support pointer profiling.
        https://bugs.webkit.org/show_bug.cgi?id=183573
        <rdar://problem/38384697>

        Reviewed by Filip Pizlo.

        Changed Poisoned so that it can be used on tagged pointers as well.

        * wtf/Poisoned.h:

2018-03-11  Filip Pizlo  <fpizlo@apple.com>

        Split DirectArguments into JSValueOOB and JSValueStrict parts
        https://bugs.webkit.org/show_bug.cgi?id=183458

        Reviewed by Yusuke Suzuki.

        * wtf/MathExtras.h:
        (WTF::dynamicPoison): Deleted.

2018-03-11  Yusuke Suzuki  <utatane.tea@gmail.com>

        [Win] Use SRWLOCK and CONDITION_VARIABLE to simplify implementation
        https://bugs.webkit.org/show_bug.cgi?id=183541

        Reviewed by Darin Adler.

        After Windows Vista, Windows offers SRWLOCK and CONDITION_VARIABLE.
        They can simplify the implementation of our WTF::Mutex and WTF::ThreadCondition.

        C++ std::mutex and std::condition_variable uses std::chrono for their timed
        functions. Since std::chrono is not overflow-aware, we cannot reliably use
        this functionalities. This is why we still keep WTF::Mutex and WTF::ThreadCondition.
        They are used for ParkingLot.

        * wtf/ThreadingPrimitives.h:
        * wtf/ThreadingWin.cpp:
        (WTF::Mutex::Mutex):
        (WTF::Mutex::~Mutex):
        (WTF::Mutex::lock):
        (WTF::Mutex::tryLock):
        (WTF::Mutex::unlock):
        (WTF::absoluteTimeToWaitTimeoutInterval):
        (WTF::ThreadCondition::ThreadCondition):
        (WTF::ThreadCondition::~ThreadCondition):
        (WTF::ThreadCondition::wait):
        (WTF::ThreadCondition::timedWait):
        (WTF::ThreadCondition::signal):
        (WTF::ThreadCondition::broadcast):
        (WTF::PlatformCondition::timedWait): Deleted.
        (WTF::PlatformCondition::signal): Deleted.

2018-03-10  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r229436.
        https://bugs.webkit.org/show_bug.cgi?id=183542

        seems to have regressed wasm compile times by 10% (Requested
        by pizlo-mbp on #webkit).

        Reverted changeset:

        "bmalloc mutex should be adaptive"
        https://bugs.webkit.org/show_bug.cgi?id=177839
        https://trac.webkit.org/changeset/229436

2018-03-09  Mark Lam  <mark.lam@apple.com>

        [Re-landing] Prepare LLInt code to support pointer profiling.
        https://bugs.webkit.org/show_bug.cgi?id=183387
        <rdar://problem/38199678>

        Reviewed by JF Bastien.

        * wtf/Platform.h:

2018-03-08  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r229354 and r229364.
        https://bugs.webkit.org/show_bug.cgi?id=183492

        Breaks internal builds (Requested by ryanhaddad on #webkit).

        Reverted changesets:

        "Prepare LLInt code to support pointer profiling."
        https://bugs.webkit.org/show_bug.cgi?id=183387
        https://trac.webkit.org/changeset/229354

        "Add support for ARM64E."
        https://bugs.webkit.org/show_bug.cgi?id=183398
        https://trac.webkit.org/changeset/229364

2018-03-08  Filip Pizlo  <fpizlo@apple.com>

        bmalloc mutex should be adaptive
        https://bugs.webkit.org/show_bug.cgi?id=177839

        Reviewed by Michael Saboff.
        
        Add some comments that I thought of while copy-pasting this code.

        Reland after failing to reproduce the WasmBench crash that caused it to get rolled out. Maybe that fixed
        itself somehow?

        * wtf/LockAlgorithmInlines.h:
        * wtf/WordLock.cpp:
        (WTF::WordLock::unlockSlow):

2018-03-08  Keith Miller  <keith_miller@apple.com>

        Disable JIT on Cocoa 32-bit ARM.
        https://bugs.webkit.org/show_bug.cgi?id=183426

        Reviewed by Michael Saboff.

        * wtf/Platform.h:

2018-03-08  Keith Miller  <keith_miller@apple.com>

        Use asm instead of __asm__ in WTFBreakpointTrap so MSVC builds
        https://bugs.webkit.org/show_bug.cgi?id=183465

        Reviewed by Michael Saboff.

        * wtf/Assertions.h:

2018-03-07  Filip Pizlo  <fpizlo@apple.com>

        Make it possible to randomize register allocation
        https://bugs.webkit.org/show_bug.cgi?id=183416

        Reviewed by Keith Miller.

        * wtf/MathExtras.h:
        (WTF::shuffleVector):

2018-03-08  Yusuke Suzuki  <utatane.tea@gmail.com>

        [Win] Use __debugbreak for WTFBreakpointTrap
        https://bugs.webkit.org/show_bug.cgi?id=183450

        Reviewed by Mark Lam.

        This patch adds WTFBreakpointTrap() implementation for MSVC by using
        __debugbreak. It fixes build failure in Windows due to the use of
        WTFBreakpointTrap().

        * wtf/Assertions.h:

2018-03-08  Zan Dobersek  <zdobersek@igalia.com>

        [GLib] RunLoop::wakeUp(): use a zero value instead of the monotonic time
        https://bugs.webkit.org/show_bug.cgi?id=183447

        Reviewed by Carlos Garcia Campos.

        * wtf/glib/RunLoopGLib.cpp:
        (WTF::RunLoop::wakeUp): Micro-optimize the wake-up schedule by using
        a zero value as the GSource ready time, instead of retrieving and using
        the current monotonic time.

2018-03-08  Tim Horton  <timothy_horton@apple.com>

        Don't have Celestial in minimal simulator configuration
        https://bugs.webkit.org/show_bug.cgi?id=183432
        <rdar://problem/38252985>

        Reviewed by Dan Bernstein.

        * wtf/Platform.h:

2018-03-06  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Set canInitializeWithMemset = true if T is an integral type
        https://bugs.webkit.org/show_bug.cgi?id=183357

        Reviewed by Darin Adler.

        This patch set `canInitializeWithMemset = true` if T is an integral type.
        This can offer a chance to use memset if we use UniqueArray<T> where T is
        an integral type. We also rename VectorTypeOperations::initialize to
        VectorTypeOperations::initializeIfNonPOD, VectorTypeOperations::forceInitialize
        to VectorTypeOperations::initialize respectively.

        * wtf/RefCountedArray.h:
        (WTF::RefCountedArray::RefCountedArray):
        * wtf/UniqueArray.h:
        * wtf/Vector.h:
        (WTF::VectorTypeOperations::initializeIfNonPOD):
        (WTF::VectorTypeOperations::initialize):
        (WTF::Vector::Vector):
        (WTF::Malloc>::resize):
        (WTF::Malloc>::grow):
        (WTF::VectorTypeOperations::forceInitialize): Deleted.
        * wtf/VectorTraits.h:

2018-03-07  Keith Miller  <keith_miller@apple.com>

        Meta-program setupArguments and callOperation
        https://bugs.webkit.org/show_bug.cgi?id=183263

        Rubber-stamped by Filip Pizlo.

        Add a new function traits struct that provides interesting
        information about the provided function pointer. Right now it only
        provides information for function pointers, in theory we could
        also get it to work for other types.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/Bitmap.h:
        (WTF::WordType>::Bitmap):
        * wtf/CMakeLists.txt:
        * wtf/FunctionTraits.h: Added.
        (WTF::slotsForCCallArgument):
        (WTF::computeCCallSlots):
        (WTF::FunctionTraits<Result):

2018-03-07  Tim Horton  <timothy_horton@apple.com>

        Shuffle around some feature flags for minimal simulator mode
        https://bugs.webkit.org/show_bug.cgi?id=183419
        <rdar://problem/37694987>

        Reviewed by Beth Dakin.

        * wtf/FeatureDefines.h:
        * wtf/Platform.h:

2018-03-06  Mark Lam  <mark.lam@apple.com>

        Prepare LLInt code to support pointer profiling.
        https://bugs.webkit.org/show_bug.cgi?id=183387
        <rdar://problem/38199678>

        Reviewed by JF Bastien.

        * wtf/Platform.h:

2018-03-06  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r229330.
        https://bugs.webkit.org/show_bug.cgi?id=183379

        Broke some Apple internal code (Requested by ap on #webkit).

        Reverted changeset:

        "Remove unused crash hook functionality"
        https://bugs.webkit.org/show_bug.cgi?id=183369
        https://trac.webkit.org/changeset/229330

2018-03-06  Michael Catanzaro  <mcatanzaro@igalia.com>

        Remove unused crash hook functionality
        https://bugs.webkit.org/show_bug.cgi?id=183369

        Reviewed by Alexey Proskuryakov.

        WTFSetCrashHook and WTFInstallReportBacktraceOnCrashHook are not used on any platforms and
        can be removed.

        * wtf/Assertions.cpp:
        * wtf/Assertions.h:

2018-03-05  Yusuke Suzuki  <utatane.tea@gmail.com>

        Fix std::make_unique / new[] using system malloc
        https://bugs.webkit.org/show_bug.cgi?id=182975

        Reviewed by JF Bastien.

        If we use `make_unique<char[]>(num)` or `new char[num]`, allocation is
        done by the system malloc instead of bmalloc. This patch fixes this issue
        by following three changes.

        1. Introduce UniqueArray<T>. It allocates memory from FastMalloc. While C++
        array with `new` need to hold the size to call destructor correctly, our
        UniqueArray only supports type T which does not have a non trivial destructor.
        It reduces the allocation size since we do not need to track the size of the
        array compared to standard `new T[]`. This is basically usable if we want to
        have raw array which pointer won't be changed even if the container is moved.
        In addition, we also extend UniqueArray<T> for types which have non trivial
        destructors.

        2. Use Vector<T> instead.

        3. Annotate allocated types with MAKE_FAST_ALLOCATED. Since it introduces
        new[] and delete[] operators, make_unique<T[]>(num) will allocate memory
        from FastMalloc.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/Assertions.cpp:
        * wtf/CMakeLists.txt:
        * wtf/FastMalloc.h:
        (WTF::FastFree::operator() const):
        (WTF::FastFree<T::operator() const):
        * wtf/MallocPtr.h:
        (WTF::MallocPtr::operator bool const):
        * wtf/StackShot.h:
        (WTF::StackShot::StackShot):
        (WTF::StackShot::operator=):
        * wtf/SystemFree.h:
        (WTF::SystemFree<T::operator() const):
        * wtf/UniqueArray.h: Copied from Source/WebKit/Platform/win/LoggingWin.cpp.
        (WTF::makeUniqueArray):
        * wtf/Vector.h:
        (WTF::VectorTypeOperations::forceInitialize):

2018-03-05  Michael Saboff  <msaboff@apple.com>

        Start using MAP_JIT for macOS
        https://bugs.webkit.org/show_bug.cgi?id=183353

        Reviewed by Filip Pizlo.

        Unify setting this flag for both iOS and macOS.

        * wtf/OSAllocatorPosix.cpp:
        (WTF::OSAllocator::reserveAndCommit):

2018-03-05  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, follow-up after r229209
        https://bugs.webkit.org/show_bug.cgi?id=183312

        Add RELEASE_ASSERT to ensure success.

        * wtf/cocoa/CPUTimeCocoa.mm:
        (WTF::CPUTime::forCurrentThread):
        * wtf/unix/CPUTimeUnix.cpp:
        (WTF::CPUTime::forCurrentThread):
        * wtf/win/CPUTimeWin.cpp:
        (WTF::CPUTime::forCurrentThread):

2018-03-05  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, fix MediaTime test
        https://bugs.webkit.org/show_bug.cgi?id=183319

        __builtin_xxx_overflow writes overflowed data into ResultType value even if overflow happens.
        This is different from the original CheckedArithmetic semantics.

        * wtf/CheckedArithmetic.h:

2018-03-04  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Move currentCPUTime and sleep(Seconds) to CPUTime.h and Seconds.h respectively
        https://bugs.webkit.org/show_bug.cgi?id=183312

        Reviewed by Mark Lam.

        1. currentCPUTime to CPUTime.h. It is now defined as CPUTime::forCurrentThread.
        We also removes fallback implementation for currentCPUTime since (1) that implementation
        is wrong and (2) no environments we support needs this.

        2. sleep(Seconds) to Seconds.h. Since sleep(MonotonicTime) and sleep(WallTime) are defined
        in MonotonicTime.h and WallTime.h, this code move is natural.

        3. Remove wtf/CurrentTime.h since nothing is defined now. But we keep CurrentTime.cpp to
        consolidate various time-source implementations in one place.

        * WTF.xcodeproj/project.pbxproj:
        * benchmarks/ConditionSpeedTest.cpp:
        * benchmarks/LockFairnessTest.cpp:
        * benchmarks/LockSpeedTest.cpp:
        * wtf/CMakeLists.txt:
        * wtf/CPUTime.h:
        * wtf/CurrentTime.cpp:
        (WTF::currentCPUTime): Deleted.
        (WTF::sleep): Deleted.
        * wtf/CurrentTime.h: Removed.
        * wtf/DateMath.cpp:
        * wtf/DebugUtilities.h:
        * wtf/FastMalloc.cpp:
        * wtf/MainThread.cpp:
        * wtf/MonotonicTime.cpp:
        * wtf/ParkingLot.cpp:
        * wtf/Seconds.cpp:
        (WTF::sleep):
        * wtf/Seconds.h:
        * wtf/StackShotProfiler.h:
        * wtf/Stopwatch.h:
        * wtf/ThreadingPthreads.cpp:
        * wtf/ThreadingWin.cpp:
        * wtf/cocoa/CPUTimeCocoa.mm:
        (WTF::CPUTime::forCurrentThread):
        * wtf/cocoa/MemoryPressureHandlerCocoa.mm:
        * wtf/linux/MemoryPressureHandlerLinux.cpp:
        * wtf/unix/CPUTimeUnix.cpp:
        (WTF::CPUTime::forCurrentThread):
        * wtf/win/CPUTimeWin.cpp:
        (WTF::CPUTime::forCurrentThread):
        * wtf/win/RunLoopWin.cpp:

2018-03-04  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Use __builtin_xxx_overflow for CheckedArithmetic
        https://bugs.webkit.org/show_bug.cgi?id=183319

        Reviewed by Darin Adler.

        GCC and Clang has the builtins for arithmetic operations with overflow flags.
        CheckedArithmetic operations can be done with this builtins. Since the compiler
        can use overflow flags, potentially this is more efficient. CheckedArithmetic
        already has TestWebKitAPI tests and we ensured the tests pass.

        * wtf/CheckedArithmetic.h:

2018-03-02  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Remove RunLoop and RunLoop::Timer's interface using double as seconds
        https://bugs.webkit.org/show_bug.cgi?id=183293

        Reviewed by Alex Christensen.

        This patch mainly drops startRepeating(double) and startOneShot(double) interfaces.
        Use startRepeating(Seconds) and startOneShot(Seconds) instead.

        * wtf/MemoryPressureHandler.cpp:
        (WTF::MemoryPressureHandler::setShouldUsePeriodicMemoryMonitor):
        * wtf/RunLoop.h:
        (WTF::RunLoop::TimerBase::startRepeating):
        (WTF::RunLoop::TimerBase::startOneShot):
        (WTF::RunLoop::TimerBase::startInternal):
        * wtf/RunLoopTimer.h:
        * wtf/RunLoopTimerCF.cpp:
        (WTF::RunLoopTimerBase::start):
        * wtf/cf/RunLoopCF.cpp:
        (WTF::RunLoop::runForDuration):
        (WTF::RunLoop::TimerBase::start):
        * wtf/generic/RunLoopGeneric.cpp:
        (WTF::RunLoop::TimerBase::start):
        * wtf/glib/RunLoopGLib.cpp:
        (WTF::RunLoop::TimerBase::start):
        * wtf/win/MemoryPressureHandlerWin.cpp:
        (WTF::MemoryPressureHandler::install):
        * wtf/win/RunLoopWin.cpp:
        (WTF::RunLoop::TimerBase::start):

2018-03-02  Christopher Reid  <chris.reid@sony.com>

        Build fix after r229174
        https://bugs.webkit.org/show_bug.cgi?id=183301

        Reviewed by Alex Christensen.

        Updating MemoryPressureHandler::holdOff to use Seconds instead of unsigned.

        * wtf/MemoryPressureHandler.cpp:

2018-03-02  Tim Horton  <timothy_horton@apple.com>

        Make it possible to build for iOS without Celestial
        https://bugs.webkit.org/show_bug.cgi?id=183295
        <rdar://problem/38074468>

        Reviewed by Dan Bernstein.

        * wtf/Platform.h:

2018-03-02  Tim Horton  <timothy_horton@apple.com>

        Make it possible to disable WKPDFView
        https://bugs.webkit.org/show_bug.cgi?id=183281
        <rdar://problem/38060815>

        Reviewed by Dan Bates.

        * wtf/FeatureDefines.h:

2018-03-02  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Annotate more classes with WTF_MAKE_FAST_ALLOCATED
        https://bugs.webkit.org/show_bug.cgi?id=183279

        Reviewed by JF Bastien.

        * wtf/SimpleStats.h:
        * wtf/ThreadGroup.h:

2018-03-01  Yusuke Suzuki  <utatane.tea@gmail.com>

        Remove monotonicallyIncreasingTime
        https://bugs.webkit.org/show_bug.cgi?id=182911

        Reviewed by Michael Catanzaro.

        This patch drops monotonicallyIncreasingTime and monotonicallyIncreasingTimeMS.
        We have MonotonicTime API instead. This offers strongly typed MonotonicTime,
        Seconds etc. This reduces the chance of bugs mixing doubles which represent milliseconds
        and seconds.

        Large part of this patch is mechanical one: replacing monotonicallyIncreasingTime with
        MonotonicTime, using MonotonicTime and Seconds instead of raw doubles.

        But this patch actually finds some bugs (but it is a bit difficult to show it as a test).
        One is mixing media time (CACurrentMediaTime()) and MonotonicTime. Basically they are
        super close because both uses mach_absolute_time(). But they would be slightly different.
        So we should not mix them.

        The second bug is GraphicsLayer::suspendAnimations(double). While CA ports (Apple, AppleWin,
        iOS etc.) use this double as MonotonicTime, GTK and WPE use this double as Seconds (timeOffset).
        This patch fixes it and now the signature becomes GraphicsLayer::suspendAnimations(MonotonicTime).

        In this patch, we still uses bunch of double for Seconds. But fixing them at this patch increases
        the size of this larger and larger. So some of them remains double. This should be fixed in
        subsequent patches.

        * benchmarks/ConditionSpeedTest.cpp:
        * benchmarks/LockSpeedTest.cpp:
        * wtf/CurrentTime.cpp:
        (WTF::MonotonicTime::now):
        (WTF::monotonicallyIncreasingTime): Deleted.
        * wtf/CurrentTime.h:
        (WTF::monotonicallyIncreasingTimeMS): Deleted.
        * wtf/MemoryPressureHandler.h:
        * wtf/MonotonicTime.cpp:
        (WTF::MonotonicTime::now): Deleted.
        * wtf/MonotonicTime.h:
        * wtf/ParkingLot.cpp:
        * wtf/Seconds.h:
        (WTF::Seconds::nan):
        * wtf/Stopwatch.h:
        (WTF::Stopwatch::reset):
        (WTF::Stopwatch::start):
        (WTF::Stopwatch::stop):
        (WTF::Stopwatch::elapsedTime):
        (WTF::Stopwatch::elapsedTimeSince):
        * wtf/cocoa/MemoryPressureHandlerCocoa.mm:
        (WTF::MemoryPressureHandler::holdOff):
        (WTF::MemoryPressureHandler::respondToMemoryPressure):
        * wtf/linux/MemoryPressureHandlerLinux.cpp:
        (WTF::MemoryPressureHandler::EventFDPoller::EventFDPoller):
        (WTF::MemoryPressureHandler::holdOff):
        (WTF::MemoryPressureHandler::respondToMemoryPressure):
        * wtf/win/MemoryPressureHandlerWin.cpp:
        (WTF::MemoryPressureHandler::holdOff):

2018-03-02  Dan Bernstein  <mitz@apple.com>

        Safari uses WebContent.Development when loading injected bundle embedded in its app bundle
        https://bugs.webkit.org/show_bug.cgi?id=183275

        Reviewed by Tim Horton.

        * wtf/spi/cocoa/SecuritySPI.h: Declared SecTaskGetCodeSignStatus.

2018-02-27  Karlen Simonyan  <szkarlen@gmail.com>

        [Win64] JSCOnly compile error using VS2017 and cmake
        https://bugs.webkit.org/show_bug.cgi?id=183176

        Reviewed by Alex Christensen.

        * wtf/PlatformJSCOnly.cmake:

2018-02-26  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GStreamer] User current executable name instead of g_get_prgname() for gst_init
        https://bugs.webkit.org/show_bug.cgi?id=183119

        Reviewed by Philippe Normand.

        Add getCurrentExecutableName() helper function to get the name of the current executable.

        * wtf/glib/GLibUtilities.cpp:
        (getCurrentExecutableName): Get the basename of getCurrentExecutablePath() falling back to g_get_prgname().
        * wtf/glib/GLibUtilities.h:

2018-02-23  John Wilander  <wilander@apple.com>

        Introduce ITP debug logging as an opt-in developer feature
        https://bugs.webkit.org/show_bug.cgi?id=183065
        <rdar://problem/37803761>

        Reviewed by Brent Fulgham.

        * wtf/Assertions.h:
            Introduces RELEASE_LOG_INFO() and RELEASE_LOG_INFO_IF().

2018-02-23  Fujii Hironori  <Hironori.Fujii@sony.com>

        warning: unused variable 'InitialBufferSize' in Assertions.cpp
        https://bugs.webkit.org/show_bug.cgi?id=183076

        Reviewed by Yusuke Suzuki.

        * wtf/Assertions.cpp: Moved the definition of InitialBufferSize to inside #if.

2018-02-22  Yusuke Suzuki  <utatane.tea@gmail.com>

        Remove currentTime() / currentTimeMS()
        https://bugs.webkit.org/show_bug.cgi?id=183052

        Reviewed by Mark Lam.

        This patch removes WTF::currentTime() and WTF::currentTimeMS().
        We have fancy WallTime APIs. It has strong types like WallTime and Seconds,
        and this reduces the chance of bugs mixing doubles which represent milliseconds
        and seconds.

        * wtf/Condition.h:
        * wtf/CurrentTime.cpp:
        (WTF::currentTime):
        (WTF::WallTime::now):
        * wtf/CurrentTime.h:
        (WTF::currentTimeMS): Deleted.
        * wtf/DateMath.h:
        (WTF::jsCurrentTime):
        * wtf/ParkingLot.cpp:
        (WTF::ParkingLot::parkConditionallyImpl):
        * wtf/ThreadingPrimitives.h:
        * wtf/ThreadingPthreads.cpp:
        (WTF::ThreadCondition::timedWait):
        * wtf/ThreadingWin.cpp:
        (WTF::ThreadCondition::timedWait):
        (WTF::absoluteTimeToWaitTimeoutInterval):
        * wtf/WallTime.cpp:
        (WTF::WallTime::now): Deleted.
        * wtf/WallTime.h:

2018-02-22  Yusuke Suzuki  <utatane.tea@gmail.com>

        Remove sleep(double) and sleepMS(double) interfaces
        https://bugs.webkit.org/show_bug.cgi?id=183038

        Reviewed by Mark Lam.

        This patch removes sleep(double) and sleepMS(double) interfaces.
        We can just use sleep(Seconds) instead.

        * benchmarks/LockFairnessTest.cpp:
        * benchmarks/LockSpeedTest.cpp:
        * wtf/CurrentTime.cpp:
        (WTF::sleep):
        * wtf/CurrentTime.h:
        (WTF::sleepMS): Deleted.
        * wtf/DebugUtilities.h:
        * wtf/Seconds.cpp:
        (WTF::sleep): Deleted.
        * wtf/Seconds.h:
        * wtf/StackShotProfiler.h:

2018-02-21  Don Olmstead  <don.olmstead@sony.com>

        [CMake][Win] Use cmakeconfig.h rather than config.h and Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=182883

        Reviewed by Per Arne Vollan.

        * wtf/Platform.h:

2018-02-14  Brian Burg  <bburg@apple.com>

        Web Automation: combine session commands to resize and move top-level browsing contexts
        https://bugs.webkit.org/show_bug.cgi?id=182749
        <rdar://problem/37515170>

        Reviewed by Andy Estes.

        * wtf/JSONValues.h: add a getDouble() implementation that returns a std::optional<T>
        rather than using an out-parameter. I'd like to move more code to this style.

2018-02-20  Tim Horton  <timothy_horton@apple.com>

        Introduce HAVE(IOSURFACE_ACCELERATOR)
        https://bugs.webkit.org/show_bug.cgi?id=182955
        <rdar://problem/37699510>

        Reviewed by Sam Weinig.

        * wtf/Platform.h:

2018-02-20  Chris Dumez  <cdumez@apple.com>

        Provisional load may get committed before receiving the decidePolicyForNavigationResponse response
        https://bugs.webkit.org/show_bug.cgi?id=182720
        <rdar://problem/37515204>

        Reviewed by Alex Christensen.

        Add convenience CompletionHandlerCallingScope class which calls its CompletionHandler
        when destroyed, and provides a release() methods to manually call the completionHandler.

        * wtf/CompletionHandler.h:
        (WTF::CompletionHandlerCallingScope::CompletionHandlerCallingScope):
        (WTF::CompletionHandlerCallingScope::~CompletionHandlerCallingScope):
        (WTF::CompletionHandlerCallingScope::CompletionHandler<void):

2018-02-20  Tim Horton  <timothy_horton@apple.com>

        Always inline soft linking functions to work around a clang bug
        https://bugs.webkit.org/show_bug.cgi?id=182985
        <rdar://problem/37587017>

        Reviewed by Dan Bernstein.

        * wtf/cocoa/SoftLinking.h:
        In some cases, clang will emit a weak extern symbol for a re-declared
        symbol that has availability attributes on it. To avoid this, always
        inline to avoid emitting a second symbol.

2018-02-16  Dean Jackson  <dino@apple.com>

        Use OPENGL macros to be more clear about which OpenGL/ES WebGL uses on Cocoa
        https://bugs.webkit.org/show_bug.cgi?id=182894

        Reviewed by Tim Horton.

        If we're on a Cocoa platform, define USE_OPENGL/USE_OPENGL_ES
        depending on what we're actually going to use. In this case,
        they are exclusive, but it doesn't appear that other platforms
        use this approach. Ultimately the idea is to be more concerned
        with the type of OpenGL we're using, rather than the platform.

        * wtf/Platform.h: Define USE_OPENGL(_ES) for PLATFORM(COCOA).

2018-02-16  Filip Pizlo  <fpizlo@apple.com>

        Unreviewed, roll out r228306 (custom memcpy/memset) because the bots say that it was not a
        progression.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/BitVector.cpp:
        (WTF::BitVector::setSlow):
        (WTF::BitVector::clearAll):
        (WTF::BitVector::resizeOutOfLine):
        * wtf/BitVector.h:
        (WTF::BitVector::OutOfLineBits::numWords const):
        (WTF::BitVector::wordCount): Deleted.
        * wtf/CMakeLists.txt:
        * wtf/ConcurrentBuffer.h:
        (WTF::ConcurrentBuffer::growExact):
        * wtf/FastBitVector.h:
        (WTF::FastBitVectorWordOwner::operator=):
        (WTF::FastBitVectorWordOwner::clearAll):
        (WTF::FastBitVectorWordOwner::set):
        * wtf/FastCopy.h: Removed.
        * wtf/FastMalloc.cpp:
        (WTF::fastZeroedMalloc):
        (WTF::fastStrDup):
        (WTF::tryFastZeroedMalloc):
        * wtf/FastZeroFill.h: Removed.
        * wtf/OSAllocator.h:
        (WTF::OSAllocator::reallocateCommitted):
        * wtf/StringPrintStream.cpp:
        (WTF::StringPrintStream::increaseSize):
        * wtf/Vector.h:
        * wtf/persistence/PersistentDecoder.cpp:
        (WTF::Persistence::Decoder::decodeFixedLengthData):
        * wtf/persistence/PersistentEncoder.cpp:
        (WTF::Persistence::Encoder::encodeFixedLengthData):
        * wtf/text/CString.cpp:
        (WTF::CString::init):
        (WTF::CString::copyBufferIfNeeded):
        * wtf/text/LineBreakIteratorPoolICU.h:
        (WTF::LineBreakIteratorPool::makeLocaleWithBreakKeyword):
        * wtf/text/StringBuilder.cpp:
        (WTF::StringBuilder::allocateBuffer):
        (WTF::StringBuilder::append):
        * wtf/text/StringConcatenate.h:
        * wtf/text/StringImpl.h:
        (WTF::StringImpl::copyCharacters):
        * wtf/text/icu/UTextProvider.cpp:
        (WTF::uTextCloneImpl):
        * wtf/text/icu/UTextProviderLatin1.cpp:
        (WTF::uTextLatin1Clone):
        (WTF::openLatin1UTextProvider):
        * wtf/threads/Signals.cpp:

2018-02-16  Keith Miller  <keith_miller@apple.com>

        Remove unused line from Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=182871

        Reviewed by Mark Lam.

        * wtf/Platform.h:

2018-02-14  Michael Saboff  <msaboff@apple.com>

        REGRESSION(225695) : com.apple.WebKit.WebContent at com.apple.JavaScriptCore: JSC::RegExp::match + 630 :: stack overflow
        https://bugs.webkit.org/show_bug.cgi?id=182705

        Reviewed by Mark Lam.

        Moved the setting of ENABLE_YARR_JIT_ALL_PARENS_EXPRESSIONS to Platform.h since more than just the YARR
        code needs to know if that feature is enabled.

        * wtf/Platform.h:

2018-02-12  Mark Lam  <mark.lam@apple.com>

        Add more support for pointer preparations.
        https://bugs.webkit.org/show_bug.cgi?id=182703
        <rdar://problem/37469451>

        Reviewed by Saam Barati.

        * wtf/PointerPreparations.h:

2018-02-09  Ross Kirsling  <ross.kirsling@sony.com>

        Use REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR on any non-Windows port.
        https://bugs.webkit.org/show_bug.cgi?id=182623

        Reviewed by Alex Christensen.

        * wtf/Platform.h:
        Simplify #if.

2018-02-08  Filip Pizlo  <fpizlo@apple.com>

        Experiment with alternative implementation of memcpy/memset
        https://bugs.webkit.org/show_bug.cgi?id=182563

        Reviewed by Michael Saboff and Mark Lam.
        
        Adds a faster x86_64-specific implementation of memcpy and memset. These versions go by
        different names than memcpy/memset and have a different API:
        
        WTF::fastCopy<T>(T* dst, T* src, size_t N): copies N values of type T from src to dst.
        WTF::fastZeroFill(T* dst, size_T N): writes N * sizeof(T) zeroes to dst.
        
        There are also *Bytes variants that take void* for dst and src and size_t numBytes. Those are
        most appropriate in places where the code is already computing bytes.
        
        These will just call memcpy/memset on platforms where the optimized versions are not supported.
        
        These new functions are not known to the compiler to be memcpy/memset. This has the effect that
        the compiler will not try to replace them with anything else. This could be good or bad:
        
        - It's *good* if the size is *not known* at compile time. In that case, by my benchmarks, these
          versions are faster than either the memcpy/memset call or whatever else the compiler could
          emit. This is because of a combination of inlining and the algorithm itself (see below).
        
        - It's *bad* if the size is *known* at compile time. In that case, the compiler could
          potentially emit a fully unrolled memcpy/memset. That might not happen if the size is large
          (even if it's known), but in this patch I avoid replacing any memcpy/memset calls when the
          size is a constant. In particular, this totally avoids the call overhead -- if the size is
          small, then the compiler will emit a nice inlined copy or set. If the size is large, then the
          most optimal thing to do is emit the shortest piece of code possible, and that's a call to
          memcpy/memset.
        
        It's unfortunate that you have to choose between them on your own. One way to avoid that might
        have been to override the memcpy/memset symbols, so that the compiler can still do its
        reasoning. But that's not quite right, since then we would lose inlining in the unknonw-size
        case. Also, it's possible that for some unknown-size cases, the compiler could choose to emit
        something on its own because it might think that some property of aliasing or alignment could
        help it. I think it's a bit better to use our own copy/set implementations even in those cases.
        Another way that I tried avoiding this is to detect inside fastCopy/fastZeroFill if the size is
        constant. But there is no good way to do that in C++. There is a builtin for doing that inside a
        macro, but that feels janky, so I didn't want to do it in this patch.
        
        The reason why these new fastCopy/fastZeroFill functions are faster is that:
        
        - They can be inlined. There is no function call. Only a few registers get clobbered. So, the
          impact on the quality of the code surrounding the memcpy/memset is smaller.
        
        - They use type information to select the implementation. For sizes that are multiples of 2, 4,
          or 8, the resulting code performs dramatically better on small arrays than memcpy because it
          uses fewer cycles. The difference is greatest for 2 and 4 byte types, since memcpy usually
          handles small arrays by tiering from a 8-byte word copy loop to a byte copy loop. So, for 2
          or 4 byte arrays, we use an algorithm that tiers from 8-byte word down to a 2-byte or 4-byte
          (depending on type) copy loop. So, for example, when copying a 16-bit string that has 1, 2, or
          3 characters, this means doing 1, 2, or 3 word copies rather than 2, 4, or 6 byte copies. For
          8-byte types, the resulting savings are mainly that there is no check to see if a tier-down to
          the byte-copy loop is needed -- so really that means reducing code size. 1-byte types don't
          get this inherent advantage over memcpy/memset, but they still benefit from all of the other
          advantages of these functions. Of course, this advantage isn't inherent to our approach. The
          compiler could also notice that the arguments to memcpy/memset have some alignment properties.
          It could do it even more generally than we do - for example a copy over bytes where the size
          is a multiple of 4 can use the 4-byte word algorithm. But based on my tests, the compiler does
          not do this (even though it does other things, like turn a memset call with a zero value
          argument into a bzero call).
        
        - They use a very nicely written word copy/set loop for small arrays. I spent a lot of time
          getting the assembly just right. When we use memcpy/memset, sometimes we would optimize the
          call by having a fast path word copy loop for small sizes. That's not necessary with this
          implementation, since the assembly copy loop gets inlined.
        
        - They use `rep movs` or `rep stos` for copies of 200 bytes or more. This decision benchmarks
          poorly on every synthetic memcpy/memset benchmark I have built, and so unsurprisingly, it's
          not what system memcpy/memset does. Most system memcpy/memset implementations end up doing
          some SSE for medium-sized copies,. However, I previously found that this decision is bad for
          one of the memset calls in GC (see clearArray() and friends in ArrayConventions.h|cpp) - I was
          able to make the overhead of that call virtually disappear by doing `rep stos` more
          aggressively. The theory behind this change is that it's not just the GC that prefers smaller
          `rep` threshold and no SSE. I am betting that `rep`ing more is better when the heap gets
          chaotic and the data being copied is used in interesting ways -- hence, synthetic
          memcpy/memset benchmarks think it's bad (they don't do enough chaotic memory accesses) while
          it's good for real-world uses. Also, when I previously worked on JVMs, I had found that the
          best memcpy/memset heuristics when dealing with GC'd objects in a crazy heap were different
          than any memcpy/memset in any system library.
        
        This appears to be a 0.9% speed-up on PLT. I'm not sure if it's more because of the inlining or
        the `rep`. I think it's both. I'll leave figuring out the exact tuning for future patches.

        * wtf/BitVector.cpp:
        (WTF::BitVector::setSlow):
        (WTF::BitVector::clearAll):
        (WTF::BitVector::resizeOutOfLine):
        * wtf/BitVector.h:
        (WTF::BitVector::wordCount):
        (WTF::BitVector::OutOfLineBits::numWords const):
        * wtf/ConcurrentBuffer.h:
        (WTF::ConcurrentBuffer::growExact):
        * wtf/FastBitVector.h:
        (WTF::FastBitVectorWordOwner::operator=):
        (WTF::FastBitVectorWordOwner::clearAll):
        (WTF::FastBitVectorWordOwner::set):
        * wtf/FastCopy.h: Added.
        (WTF::fastCopy):
        (WTF::fastCopyBytes):
        * wtf/FastMalloc.cpp:
        (WTF::fastZeroedMalloc):
        (WTF::fastStrDup):
        (WTF::tryFastZeroedMalloc):
        * wtf/FastZeroFill.h: Added.
        (WTF::fastZeroFill):
        (WTF::fastZeroFillBytes):
        * wtf/MD5.cpp:
        * wtf/OSAllocator.h:
        (WTF::OSAllocator::reallocateCommitted):
        * wtf/StringPrintStream.cpp:
        (WTF::StringPrintStream::increaseSize):
        * wtf/Vector.h:
        * wtf/persistence/PersistentDecoder.cpp:
        (WTF::Persistence::Decoder::decodeFixedLengthData):
        * wtf/persistence/PersistentEncoder.cpp:
        (WTF::Persistence::Encoder::encodeFixedLengthData):
        * wtf/text/CString.cpp:
        (WTF::CString::init):
        (WTF::CString::copyBufferIfNeeded):
        * wtf/text/LineBreakIteratorPoolICU.h:
        (WTF::LineBreakIteratorPool::makeLocaleWithBreakKeyword):
        * wtf/text/StringBuilder.cpp:
        (WTF::StringBuilder::allocateBuffer):
        (WTF::StringBuilder::append):
        * wtf/text/StringConcatenate.h:
        * wtf/text/StringImpl.h:
        (WTF::StringImpl::copyCharacters):
        * wtf/text/icu/UTextProvider.cpp:
        (WTF::uTextCloneImpl):
        * wtf/text/icu/UTextProviderLatin1.cpp:
        (WTF::uTextLatin1Clone):
        (WTF::openLatin1UTextProvider):
        * wtf/threads/Signals.cpp:

2018-02-06  Darin Adler  <darin@apple.com>

        Event improvements
        https://bugs.webkit.org/show_bug.cgi?id=179591

        Reviewed by Chris Dumez.

        * wtf/text/OrdinalNumber.h: Added som missing const.
        * wtf/text/TextPosition.h: Ditto.

2018-02-06  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] fast/events/message-channel-gc-4.html is flaky
        https://bugs.webkit.org/show_bug.cgi?id=182104

        Reviewed by Carlos Garcia Campos.

        Revert r228001 because RunLoop::current isn't called in GC thread
        anymore since r228152.

        * wtf/RunLoop.cpp:
        (WTF::RunLoop::current): Removed a template argument
        CanBeGCThread::True of ThreadSpecific.

2018-02-05  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Fix build with ICU configured without collation support
        https://bugs.webkit.org/show_bug.cgi?id=182498

        Reviewed by Alex Christensen.

        WebKit has CollatorDefault.cpp providing necessary stubs when
        UCONFIG_NO_COLLATION is defined, however it is not included in cmake
        file list.

        * wtf/CMakeLists.txt:

2018-02-05  Alicia Boya García  <aboya@igalia.com>

        Fix bug in MediaTime comparison for negative values with different scale.
        https://bugs.webkit.org/show_bug.cgi?id=182433

        Reviewed by Xabier Rodriguez-Calvar.

        * wtf/MediaTime.cpp:
        (WTF::MediaTime::compare const):

2018-02-02  Mark Lam  <mark.lam@apple.com>

        More ARM64_32 fixes.
        https://bugs.webkit.org/show_bug.cgi?id=182441
        <rdar://problem/37162310>

        Reviewed by Dan Bernstein.

        My previous speculative ARM64_32 build fix in copyLCharsFromUCharSource() was wrong.
        I've now fixed it to choose the default implementation case instead of the ARM64
        case if the target is ARM64_32.

        * wtf/text/ASCIIFastPath.h:
        (WTF::copyLCharsFromUCharSource):

2018-02-02  Konstantin Tokarev  <annulen@yandex.ru>

        Unreviewed build fix for JSCOnly on macOS after r227845.
        https://bugs.webkit.org/show_bug.cgi?id=182274

        Reverted part of r227845 that moved CommonCryptoSPI.h
        handling into PlatformMac, because it is needed for all
        ports which can be built on macOS.

        * wtf/CMakeLists.txt:
        * wtf/PlatformMac.cmake:

2018-02-02  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] fast/events/message-channel-gc-4.html is flaky
        https://bugs.webkit.org/show_bug.cgi?id=182104

        Reviewed by Carlos Garcia Campos.

        RELEASE_ASSERT of ThreadSpecific::set fails because
        RunLoop::current is called even in GC thread since r227275.

        * wtf/RunLoop.cpp:
        (WTF::RunLoop::current):
        Let the second template argument of ThreadSpecific CanBeGCThread::True.

2018-02-01  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE][GTK] Make RunLoop::TimerBase robust to its own deletion inside its source callback
        https://bugs.webkit.org/show_bug.cgi?id=182271

        Reviewed by Carlos Garcia Campos.

        RunLoopTimer::fired executes the user's callback, which could delete the RunLoopTimer
        itself. But the source callback is not prepared to handle this case. We can detect it
        easily, because TimerBase's destructor will call g_source_destroy(), which confusingly
        removes the GSource from its GMainContext without actually destroying the GSource. Then we
        can check if the GSource is still attached using g_source_is_destroyed().

        * wtf/glib/RunLoopGLib.cpp:
        (WTF::RunLoop::TimerBase::TimerBase):

2018-01-31  Saam Barati  <sbarati@apple.com>

        Replace tryLargeMemalignVirtual with tryLargeZeroedMemalignVirtual and use it to allocate large zeroed memory in Wasm
        https://bugs.webkit.org/show_bug.cgi?id=182064
        <rdar://problem/36840132>

        Reviewed by Geoffrey Garen.

        * wtf/Gigacage.cpp:
        (Gigacage::tryAllocateZeroedVirtualPages):
        (Gigacage::freeVirtualPages):
        (Gigacage::tryAllocateVirtualPages): Deleted.
        * wtf/Gigacage.h:
        * wtf/OSAllocator.h:

2018-01-31  Mark Lam  <mark.lam@apple.com>

        Fix some ARM64_32 build failures.
        https://bugs.webkit.org/show_bug.cgi?id=182356
        <rdar://problem/37057690>

        Reviewed by Michael Saboff.

        * wtf/MathExtras.h:
        (WTF::dynamicPoison):
        * wtf/text/ASCIIFastPath.h:
        (WTF::copyLCharsFromUCharSource):

2018-01-30  Mark Lam  <mark.lam@apple.com>

        Apply poisoning to TypedArray vector pointers.
        https://bugs.webkit.org/show_bug.cgi?id=182155
        <rdar://problem/36286266>

        Reviewed by JF Bastien.

        1. Added the ability to poison a CagedPtr.

        2. Prevent CagedPtr from being implicitly instantiated, and add operator= methods
           instead.  This is because implicitly instantiated CagedPtrs with a poisoned
           trait may silently use a wrong poison value.

        * wtf/CagedPtr.h:
        (WTF::CagedPtr::CagedPtr):
        (WTF::CagedPtr::get const):
        (WTF::CagedPtr::operator=):

2018-01-30  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win] Warning fix.
        https://bugs.webkit.org/show_bug.cgi?id=177007

        Reviewed by Yusuke Suzuki.

        A 32 bit integer should not be casted to a pointer directly in 64
        bit Windows. It should be casted to a uintptr_t beforehand.

        Rules for Using Pointers (Windows)
        https://msdn.microsoft.com/library/windows/desktop/aa384242

        * wtf/ThreadingWin.cpp (InvalidThread): Casted 0xbbadbeef to uintptr_t.

2018-01-30  Don Olmstead  <don.olmstead@sony.com>

        Unreviewed build fix for JSCOnly after r227845.
        https://bugs.webkit.org/show_bug.cgi?id=182274

        * wtf/PlatformJSCOnly.cmake:

2018-01-30  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Make WTF headers copies
        https://bugs.webkit.org/show_bug.cgi?id=182274

        Reviewed by Alex Christensen.

        * wtf/CMakeLists.txt:
        * wtf/PlatformGTK.cmake:
        * wtf/PlatformJSCOnly.cmake:
        * wtf/PlatformMac.cmake:
        * wtf/PlatformWPE.cmake:
        * wtf/PlatformWin.cmake:

2018-01-30  Mark Lam  <mark.lam@apple.com>

        Move ENABLE_POISON to Platform.h.
        https://bugs.webkit.org/show_bug.cgi?id=182298
        <rdar://problem/37032686>

        Reviewed by Michael Saboff and JF Bastien.

        ENABLE_POISON belongs in Platform.h to ensure that all places that depend on
        ENABLE(POISON) will see it properly defined.

        * wtf/Platform.h:
        * wtf/Poisoned.h:

2018-01-26  Mark Lam  <mark.lam@apple.com>

        Add infrastructure for pointer preparation.
        https://bugs.webkit.org/show_bug.cgi?id=182191
        <rdar://problem/36889194>

        Reviewed by JF Bastien.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/PointerPreparations.h: Added.

2018-01-26  Chris Nardi  <cnardi@chromium.org>

        Addressing post-review comments after r226614
        https://bugs.webkit.org/show_bug.cgi?id=182151

        Reviewed by Myles C. Maxfield.

        * wtf/text/StringImpl.h:
        (WTF::isSpaceOrNewline):
        * wtf/text/TextBreakIterator.cpp:
        (WTF::numCodeUnitsInGraphemeClusters):
        * wtf/text/TextBreakIterator.h:

2018-01-26  Filip Pizlo  <fpizlo@apple.com>

        Fix style - need to use C comments.

        * wtf/Platform.h:

2018-01-26  Filip Pizlo  <fpizlo@apple.com>

        Disable TLS-based TLCs
        https://bugs.webkit.org/show_bug.cgi?id=182175

        Reviewed by Saam Barati.

        Add a flag for TLS-based TLCs and set it to 0. We can re-enable this feature when we need to use TLCs for
        actual thread-local allocation and when we fix the fact that WebCore context switches JSC VMs without telling
        us.

        * wtf/Platform.h:

2018-01-25  Filip Pizlo  <fpizlo@apple.com>

        Unreviewed, fix windows build.

        * wtf/MathExtras.h:
        (WTF::opaque):

2018-01-24  Filip Pizlo  <fpizlo@apple.com>

        DirectArguments should protect itself using dynamic poisoning and precise index masking
        https://bugs.webkit.org/show_bug.cgi?id=182086

        Reviewed by Saam Barati.
        
        Add helpers for:
        
        Dynamic poisoning: this means arranging to have the pointer you will dereference become an
        invalid pointer if the type check you were relying on would have failed.
        
        Precise index masking: a variant of index masking that does not depend on distancing. I figured
        I'd just try this first for DirectArguments, since I didn't think that arguments[i] was ever
        hot enough to warrant anything better. Turns out that in all of the benchmarks that care about
        arguments performance, we optimize things to the point that the index masking isn't on a hot
        path anymore. Turns out, it's neutral!

        * wtf/MathExtras.h:
        (WTF::preciseIndexMask):
        (WTF::dynamicPoison):

2018-01-25  Jer Noble  <jer.noble@apple.com>

        Unreviewed build fix after r227631; make USE_VIDEOTOOLBOX universally enabled on iOS.

        * wtf/Platform.h:

2018-01-25  Jer Noble  <jer.noble@apple.com>

        Move ImageDecoderAVFObjC from using AVSampleBufferGenerator to AVAssetReaderOutput for parsing
        https://bugs.webkit.org/show_bug.cgi?id=182091

        Reviewed by Eric Carlson.

        * wtf/Platform.h:

2018-01-25  Mark Lam  <mark.lam@apple.com>

        Rename the Poisoned::isPoisoned constant to Poisoned::isPoisonedType.
        https://bugs.webkit.org/show_bug.cgi?id=182143
        <rdar://problem/36880970>

        Reviewed by JF Bastien.

        This is so that it doesn't conflict with the isPoisoned() debugging methods that
        are normally not built.  Also renamed PoisonedUniquePtr::isPoisonedUniquePtr to
        PoisonedUniquePtr::isPoisonedUniquePtrType to be consistent.

        * wtf/Poisoned.h:
        * wtf/PoisonedUniquePtr.h:

2018-01-25  Filip Pizlo  <fpizlo@apple.com>

        JSC GC should support TLCs (thread local caches)
        https://bugs.webkit.org/show_bug.cgi?id=181559

        Reviewed by Mark Lam and Saam Barati.

        * wtf/Bitmap.h: Just fixing a compile error.

2018-01-25  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r227592.
        https://bugs.webkit.org/show_bug.cgi?id=182110

        it made ARM64 (Linux and iOS) crash (Requested by pizlo-mbp on
        #webkit).

        Reverted changeset:

        "JSC GC should support TLCs (thread local caches)"
        https://bugs.webkit.org/show_bug.cgi?id=181559
        https://trac.webkit.org/changeset/227592

2018-01-20  Filip Pizlo  <fpizlo@apple.com>

        JSC GC should support TLCs (thread local caches)
        https://bugs.webkit.org/show_bug.cgi?id=181559

        Reviewed by Mark Lam and Saam Barati.

        * wtf/Bitmap.h: Just fixing a compile error.

2018-01-23  Mark Lam  <mark.lam@apple.com>

        Update Poisoned pointers to take a Poison class instead of a uintptr_t&.
        https://bugs.webkit.org/show_bug.cgi?id=182017
        <rdar://problem/36795513>

        Reviewed by Filip Pizlo and JF Bastien.

        This paves the way for custom poison values which we'll need for use in
        TypedArrays later.

        * wtf/Bag.h:
        * wtf/DumbPtrTraits.h:
        (WTF::DumbPtrTraits::poison): Deleted.
        * wtf/DumbValueTraits.h:
        (WTF::DumbValueTraits::poison): Deleted.
        * wtf/Poisoned.h:
        (WTF::Poison::key):
        (WTF::Poisoned::swap):
        (WTF::Poisoned::poison const):
        (WTF::Poisoned::unpoison const):
        (WTF::Poisoned::poison):
        (WTF::Poisoned::unpoison):
        (WTF::PoisonedPtrTraits::swap):
        (WTF::PoisonedValueTraits::swap):
        (WTF::PoisonedPtrTraits::poison): Deleted.
        (WTF::PoisonedValueTraits::poison): Deleted.
        * wtf/PoisonedUniquePtr.h:
        * wtf/Ref.h:
        * wtf/RefCountedArray.h:
        * wtf/RefPtr.h:
        * wtf/WTFAssertions.cpp:

2018-01-23  Alex Christensen  <achristensen@webkit.org>

        Remove pre-Sierra-OS-specific code in WTF and JavaScriptCore
        https://bugs.webkit.org/show_bug.cgi?id=182028

        Reviewed by Keith Miller.

        * wtf/Platform.h:
        * wtf/mac/AppKitCompatibilityDeclarations.h:
        * wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
        (WTF::MainThreadFunctionTracker::singleton): Deleted.
        (WTF::MainThreadFunctionTracker::callOnMainThread): Deleted.
        (WTF::MainThreadFunctionTracker::cancelCallOnMainThread): Deleted.
        (WTF::MainThreadFunctionTracker::addFunction): Deleted.
        (WTF::MainThreadFunctionTracker::removeIdentifier): Deleted.
        (WTF::MainThreadFunctionTracker::removeFunctions): Deleted.
        (WTF::callOnMainThread): Deleted.
        (WTF::cancelCallOnMainThread): Deleted.
        * wtf/spi/cocoa/SecuritySPI.h:
        * wtf/spi/darwin/dyldSPI.h:
        * wtf/text/icu/TextBreakIteratorICU.h:
        (WTF::TextBreakIteratorICU::TextBreakIteratorICU):
        (WTF::caretRules): Deleted.

2018-01-23  Filip Pizlo  <fpizlo@apple.com>

        JSC should use a speculation fence on VM entry/exit
        https://bugs.webkit.org/show_bug.cgi?id=181991

        Reviewed by JF Bastien and Mark Lam.
        
        Implement speculationFence as lfence on x86 and isb on ARM64. I'm not sure if isb is
        appropriate for all ARM64's.

        * wtf/Atomics.h:
        (WTF::speculationFence):
        (WTF::x86_lfence):

2018-01-22  Alex Christensen  <achristensen@webkit.org>

        Begin removing QTKit code
        https://bugs.webkit.org/show_bug.cgi?id=181951

        Reviewed by Jer Noble.

        * wtf/Platform.h:

2018-01-21  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add a new feature flag for EXTRA_ZOOM_MODE and reintroduce AdditionalFeatureDefines.h
        https://bugs.webkit.org/show_bug.cgi?id=181918

        Reviewed by Tim Horton.

        Include AdditionalFeatureDefines.h, if possible. This allows WebKitAdditions to override
        the value of certain feature flags in the OpenSource WebKit repository.

        * wtf/Platform.h:

2018-01-19  Alex Christensen  <achristensen@webkit.org>

        Fix jsc-only build
        https://bugs.webkit.org/show_bug.cgi?id=181874

        Reviewed by JF Bastien.

        This makes "build-webkit --jsc-only" work on Mac!

        * wtf/PlatformJSCOnly.cmake:

2018-01-19  Keith Miller  <keith_miller@apple.com>

        HaveInternalSDK includes should be "#include?"
        https://bugs.webkit.org/show_bug.cgi?id=179670

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:

2018-01-19  Alexey Proskuryakov  <ap@apple.com>

        Update XPCSPI.h
        https://bugs.webkit.org/show_bug.cgi?id=181827
        rdar://problem/36393031

        Reviewed by Daniel Bates.

        * wtf/spi/darwin/XPCSPI.h:

2018-01-18  Chris Dumez  <cdumez@apple.com>

        We should be able to terminate service workers that are unresponsive
        https://bugs.webkit.org/show_bug.cgi?id=181563
        <rdar://problem/35280031>

        Reviewed by Alex Christensen.

        * wtf/ObjectIdentifier.h:
        (WTF::ObjectIdentifier::loggingString const):
        Allow using loggingString() from RELEASE_LOG().

2018-01-18  Dan Bernstein  <mitz@apple.com>

        [Xcode] Streamline and future-proof target-macOS-version-dependent build setting definitions
        https://bugs.webkit.org/show_bug.cgi?id=181803

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig: Updated.
        * Configurations/DebugRelease.xcconfig: Updated.

2018-01-17  Daniel Bates  <dabates@apple.com>

        REGRESSION (r222795): Cardiogram never signs in
        https://bugs.webkit.org/show_bug.cgi?id=181693
        <rdar://problem/36286293>

        Reviewed by Ryosuke Niwa.

        Add macro define for future iOS.

        * wtf/spi/darwin/dyldSPI.h:

2018-01-17  Per Arne Vollan  <pvollan@apple.com>

        [Win] Compile error: 'wtf/text/icu/TextBreakIteratorICU.h' not found.
        https://bugs.webkit.org/show_bug.cgi?id=181744
        <rdar://problem/36582562>

        Reviewed by Alex Christensen.

        Add WTF folders to forwarding headers directories.

        * wtf/PlatformWin.cmake:

2018-01-16  Per Arne Vollan  <pvollan@apple.com>

        [Win] JSC compile error in runtime/DateConversion.cpp.
        https://bugs.webkit.org/show_bug.cgi?id=181690
        <rdar://problem/36480409>
 
        Reviewed by Brent Fulgham.

        Add 'text/win' folder to list of forwarding headers directories.
 
        * wtf/PlatformWin.cmake:

2018-01-15  Michael Catanzaro  <mcatanzaro@igalia.com>

        Improve use of ExportMacros
        https://bugs.webkit.org/show_bug.cgi?id=181652

        Reviewed by Konstantin Tokarev.

        * wtf/ExportMacros.h: Simplify the #defines in this file.
        * wtf/Platform.h: Remove unneeded define. Remove comment that expects all ports to
          eventually enable the export macros. WPE will never want these. We don't currently want
          them for GTK either, though how we link GTK has been in flux recently.

2018-01-15  JF Bastien  <jfbastien@apple.com>

        Remove makePoisonedUnique
        https://bugs.webkit.org/show_bug.cgi?id=181630
        <rdar://problem/36498623>

        Reviewed by Mark Lam.

        I added a conversion from std::unique_ptr, so we can just use
        std::make_unique and it'll auto-poison when converted.

        * wtf/PoisonedUniquePtr.h:
        (WTF::makePoisonedUnique): Deleted.

2018-01-13  Mark Lam  <mark.lam@apple.com>

        Replace all use of ConstExprPoisoned with Poisoned.
        https://bugs.webkit.org/show_bug.cgi?id=181542
        <rdar://problem/36442138>

        Reviewed by JF Bastien.

        1. Removed ConstExprPoisoned and its artifacts.

        2. Consolidated Poisoned into PoisonedImpl.  PoisonedImpl is not more.

        3. Changed all clients of ConstExprPoisoned to use Poisoned instead.

        4. Worked around the GCC and Clang compiler bug that confuses an intptr_t&
           template arg with intptr_t.
           See use of std::enable_if_t<Other::isPoisoned> in Poisoned.h.

        5. Removed ENABLE(MIXED_POISON) since we now have a workaround (3) that makes it
           possible to use the mixed poison code.

        6. Also fixed broken implementation of comparison operators in Poisoned.

        * wtf/Bag.h:
        * wtf/DumbPtrTraits.h:
        (WTF::DumbPtrTraits::poison):
        * wtf/DumbValueTraits.h:
        (WTF::DumbValueTraits::poison):
        * wtf/Poisoned.h:
        (WTF::Poisoned::Poisoned):
        (WTF::Poisoned::operator== const):
        (WTF::Poisoned::operator!= const):
        (WTF::Poisoned::operator< const):
        (WTF::Poisoned::operator<= const):
        (WTF::Poisoned::operator> const):
        (WTF::Poisoned::operator>= const):
        (WTF::Poisoned::operator=):
        (WTF::Poisoned::swap):
        (WTF::swap):
        (WTF::PoisonedPtrTraits::poison):
        (WTF::PoisonedPtrTraits::swap):
        (WTF::PoisonedValueTraits::poison):
        (WTF::PoisonedValueTraits::swap):
        (WTF::PoisonedImpl::PoisonedImpl): Deleted.
        (WTF::PoisonedImpl::assertIsPoisoned const): Deleted.
        (WTF::PoisonedImpl::assertIsNotPoisoned const): Deleted.
        (WTF::PoisonedImpl::unpoisoned const): Deleted.
        (WTF::PoisonedImpl::clear): Deleted.
        (WTF::PoisonedImpl::operator* const): Deleted.
        (WTF::PoisonedImpl::operator-> const): Deleted.
        (WTF::PoisonedImpl::bits const): Deleted.
        (WTF::PoisonedImpl::operator! const): Deleted.
        (WTF::PoisonedImpl::operator bool const): Deleted.
        (WTF::PoisonedImpl::operator== const): Deleted.
        (WTF::PoisonedImpl::operator!= const): Deleted.
        (WTF::PoisonedImpl::operator< const): Deleted.
        (WTF::PoisonedImpl::operator<= const): Deleted.
        (WTF::PoisonedImpl::operator> const): Deleted.
        (WTF::PoisonedImpl::operator>= const): Deleted.
        (WTF::PoisonedImpl::operator=): Deleted.
        (WTF::PoisonedImpl::swap): Deleted.
        (WTF::PoisonedImpl::exchange): Deleted.
        (WTF::PoisonedImpl::poison): Deleted.
        (WTF::PoisonedImpl::unpoison): Deleted.
        (WTF::constExprPoisonRandom): Deleted.
        (WTF::makeConstExprPoison): Deleted.
        (WTF::ConstExprPoisonedPtrTraits::exchange): Deleted.
        (WTF::ConstExprPoisonedPtrTraits::swap): Deleted.
        (WTF::ConstExprPoisonedPtrTraits::unwrap): Deleted.
        (WTF::ConstExprPoisonedValueTraits::exchange): Deleted.
        (WTF::ConstExprPoisonedValueTraits::swap): Deleted.
        (WTF::ConstExprPoisonedValueTraits::unwrap): Deleted.
        * wtf/PoisonedUniquePtr.h:
        (WTF::PoisonedUniquePtr::PoisonedUniquePtr):
        (WTF::PoisonedUniquePtr::operator=):
        * wtf/Ref.h:
        * wtf/RefCountedArray.h:
        (WTF::RefCountedArray::RefCountedArray):
        * wtf/RefPtr.h:
        * wtf/WTFAssertions.cpp:

2018-01-12  JF Bastien  <jfbastien@apple.com>

        PoisonedWriteBarrier
        https://bugs.webkit.org/show_bug.cgi?id=181599
        <rdar://problem/36474351>

        Reviewed by Mark Lam.

        Supporting changes needed to allow poisoning of WriteBarrier
        objects.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/DumbPtrTraits.h:
        * wtf/DumbValueTraits.h: Copied from Source/WTF/wtf/DumbPtrTraits.h.
        (WTF::DumbValueTraits::exchange):
        (WTF::DumbValueTraits::swap):
        (WTF::DumbValueTraits::unwrap):
        * wtf/Forward.h:
        * wtf/Poisoned.h:
        (WTF::ConstExprPoisonedValueTraits::exchange):
        (WTF::ConstExprPoisonedValueTraits::swap):
        (WTF::ConstExprPoisonedValueTraits::unwrap):

2018-01-11  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        Remove noexcept from definition of std::tie()
        https://bugs.webkit.org/show_bug.cgi?id=181577

        Reviewed by Yusuke Suzuki.

        * wtf/StdLibExtras.h:
        (WTF::tie):

2018-01-11  Filip Pizlo  <fpizlo@apple.com>

        Reserve a fast TLS key for GC TLC
        https://bugs.webkit.org/show_bug.cgi?id=181539

        Reviewed by Alexey Proskuryakov.
        
        Who knew that thread-local caches would be a mitigation for timing attacks. Here's how it
        works: if we have TLCs then we can "context switch" them when we "context switch" origins. 
        This allows us to put some minimal distance between objects from different origins, which
        gives us the ability to allow small overflows when doing certain bounds checks without
        creating a useful Spectre information leak.
        
        So I think that means we have to implement thread-local caches (also known as thread-local
        allocation buffers, but I prefer the TLC terminology).

        * wtf/FastTLS.h:

2018-01-04  Filip Pizlo  <fpizlo@apple.com>

        CodeBlocks should be in IsoSubspaces
        https://bugs.webkit.org/show_bug.cgi?id=180884

        Reviewed by Saam Barati.
        
        Deque<>::contains() is helpful for a debug ASSERT.

        * wtf/Deque.h:
        (WTF::inlineCapacity>::contains):

2018-01-11  JF Bastien  <jfbastien@apple.com>

        NFC reorder headers
        https://bugs.webkit.org/show_bug.cgi?id=181521

        Reviewed by Darin Adler.

        Follow-up on r226752. I misunderstood the header include order
        style. No functional change.

        * wtf/Poisoned.h:
        * wtf/PoisonedUniquePtr.h:

2018-01-10  JF Bastien  <jfbastien@apple.com>

        Poison small JSObject derivatives which only contain pointers
        https://bugs.webkit.org/show_bug.cgi?id=181483
        <rdar://problem/36407127>

        Reviewed by Mark Lam.

        The associated JSC poisoning change requires some template
        "improvements" to our poisoning machinery. Worth noting is that
        I'm making PoisonedUniquePtr move-assignable and
        move-constructible from unique_ptr, which makes it a better
        drop-in replacement because we don't need to use
        makePoisonedUniquePtr. This means function-locals can be
        unique_ptr and get the nice RAII pattern, and once the function is
        done you can just move to the class' PoisonedUniquePtr without
        worrying.

        * wtf/Poisoned.h:
        (WTF::PoisonedImpl::PoisonedImpl):
        * wtf/PoisonedUniquePtr.h:
        (WTF::PoisonedUniquePtr::PoisonedUniquePtr):
        (WTF::PoisonedUniquePtr::operator=):

2018-01-10  Don Olmstead  <don.olmstead@sony.com>

        Add nullptr_t specialization of poison
        https://bugs.webkit.org/show_bug.cgi?id=181469

        Reviewed by JF Bastien.

        * wtf/Poisoned.h:
        (WTF::PoisonedImpl::poison):

2018-01-10  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r226667 and r226673.
        https://bugs.webkit.org/show_bug.cgi?id=181488

        This caused a flaky crash. (Requested by mlewis13 on #webkit).

        Reverted changesets:

        "CodeBlocks should be in IsoSubspaces"
        https://bugs.webkit.org/show_bug.cgi?id=180884
        https://trac.webkit.org/changeset/226667

        "REGRESSION (r226667): CodeBlocks should be in IsoSubspaces"
        https://bugs.webkit.org/show_bug.cgi?id=180884
        https://trac.webkit.org/changeset/226673

2018-01-04  Filip Pizlo  <fpizlo@apple.com>

        CodeBlocks should be in IsoSubspaces
        https://bugs.webkit.org/show_bug.cgi?id=180884

        Reviewed by Saam Barati.
        
        Deque<>::contains() is helpful for a debug ASSERT.

        * wtf/Deque.h:
        (WTF::inlineCapacity>::contains):

2018-01-08  Don Olmstead  <don.olmstead@sony.com>

        Add WTF_EXPORTs to UniStdExtras
        https://bugs.webkit.org/show_bug.cgi?id=181415

        Reviewed by Alex Christensen.

        * wtf/UniStdExtras.h:

2018-01-07  Mark Lam  <mark.lam@apple.com>

        Apply poisoning to more pointers in JSC.
        https://bugs.webkit.org/show_bug.cgi?id=181096
        <rdar://problem/36182970>

        Reviewed by JF Bastien.

        Added support for PoisonedBag and PoisonedRefCountedArray.

        * wtf/Bag.h:
        (WTF::Private::BagNode::BagNode):
        (WTF::Bag::Bag):
        (WTF::Bag::operator=):
        (WTF::Bag::clear):
        (WTF::Bag::add):
        (WTF::Bag::begin):
        (WTF::Bag::unwrappedHead):
        (WTF::Bag::Node::Node): Deleted.
        * wtf/BagToHashMap.h:
        (WTF::toHashMap):
        * wtf/Poisoned.h:
        (WTF::constExprPoisonRandom):
        (WTF::makeConstExprPoison):
        * wtf/RefCountedArray.h:
        (WTF::RefCountedArray::RefCountedArray):
        (WTF::RefCountedArray::clone const):
        (WTF::RefCountedArray::operator=):
        (WTF::RefCountedArray::~RefCountedArray):
        (WTF::RefCountedArray::refCount const):
        (WTF::RefCountedArray::size const):
        (WTF::RefCountedArray::data):
        (WTF::RefCountedArray::begin):
        (WTF::RefCountedArray::end):
        (WTF::RefCountedArray::data const):
        (WTF::RefCountedArray::begin const):
        (WTF::RefCountedArray::operator== const):
        (WTF::RefCountedArray::Header::fromPayload):
        * wtf/WTFAssertions.cpp:

2018-01-05  JF Bastien  <jfbastien@apple.com>

        WebAssembly: poison JS object's secrets
        https://bugs.webkit.org/show_bug.cgi?id=181339
        <rdar://problem/36325001>

        Reviewed by Mark Lam.

        swapping a poisoned pointer with a non-poisoned one (as is done in
        JSWebAssembyMemory::adopt) was missing.

        * wtf/Poisoned.h:
        (WTF::PoisonedImpl::swap):
        (WTF::ConstExprPoisonedPtrTraits::swap):

2018-01-05  David Kilzer  <ddkilzer@apple.com>

        Re-enable -Wcast-qual in WebCore for Apple ports
        <https://webkit.org/b/177895>
        <rdar://problem/34960830>

        Reviewed by Joseph Pecoraro.

        * wtf/RetainPtr.h:
        (WTF::RetainPtr::fromStorageTypeHelper const): Add const_cast<>
        operator here since some CFTypes are not defined as const
        pointers, which triggers a warning in C++ source with
        -Wcast-qual when casting from CFTypeRef back to the original
        type.  Note that we use const_cast<CF_BRIDGED_TYPE(id) void*>()
        here (and in TypeCastsCF.h below) since this is what CFTypeRef
        is defined as in CFBase.h, but without the 'const' modifier.
        (WTF::RetainPtr::fromStorageType const): Ditto.

        * wtf/cf/TypeCastsCF.h: Use #pragma once.
        (WTF_DECLARE_CF_TYPE_TRAIT): Rename from DECLARE_CF_TYPE_TRAIT.
        Don't #undef it so that it can be used in other source files.
        (WTF_DECLARE_CF_MUTABLE_TYPE_TRAIT): Add new macro that is used
        for declaring CFMutable types.  The CFTypeID for CF_Foo_ and
        CFMutable_Foo_ are the same, so we have to use a different macro
        to declare type traits for those types.
        (WTF::dynamic_cf_cast): Add assertion to catch issues in Debug
        builds.
        (WTF::checked_cf_cast): Inline code from WTF::dynamic_cf_cast
        and change behavior to be more consistent between Debug and
        Release builds, as well as other "checked" functions.
        Previously this function would return nullptr in Release builds
        if nullptr or the wrong type of object was passed in, but crash
        in both cases on Debug builds.  The new behavior always returns
        nullptr if nullptr was passed in (but never crashes), and always
        crashes if the wrong type of object is passed in.

2018-01-04  Keith Miller  <keith_miller@apple.com>

        TypedArrays and Wasm should use index masking.
        https://bugs.webkit.org/show_bug.cgi?id=181313

        Reviewed by Michael Saboff.

        * wtf/MathExtras.h:
        (WTF::computeIndexingMask):

2018-01-03  Michael Saboff  <msaboff@apple.com>

        Disable SharedArrayBuffers from Web API
        https://bugs.webkit.org/show_bug.cgi?id=181266

        Reviewed by Saam Barati.

        Turn off SharedArrayBuffers using a compile time flag ENABLE_SHARED_ARRAY_BUFFER.

        * wtf/Platform.h:

2017-12-28  Yusuke Suzuki  <utatane.tea@gmail.com>

        Remove std::chrono completely
        https://bugs.webkit.org/show_bug.cgi?id=181186

        Reviewed by Alex Christensen.

        std::chrono's overflow unaware design is dangerous[1]. Even small code like
        `condition.wait_for(std::chrono::seconds::max())` is broken in some platforms
        due to overflow of std::chrono::time_point. So we intentionally avoid using
        std::chrono, and use WallTime, MonotonicTime, Seconds instead.

        This patch removes all the remaining use of std::chrono from WebKit tree.

        [1]: https://lists.webkit.org/pipermail/webkit-dev/2016-May/028242.html

        * wtf/CrossThreadCopier.h:
        Remove std::chrono support from cross thread copiers.
        * wtf/Forward.h:
        * wtf/MonotonicTime.h:
        (WTF::MonotonicTime::isolatedCopy const):
        Add isolatedCopy function.
        * wtf/RunLoop.h:
        (WTF::RunLoop::TimerBase::startRepeating):
        (WTF::RunLoop::TimerBase::startOneShot):
        Just remove these helpers.
        * wtf/Seconds.h:
        (WTF::Seconds::isolatedCopy const):
        Add isolatedCopy function.
        * wtf/WallTime.h:
        (WTF::WallTime::isolatedCopy const):
        Add isolatedCopy function.
        * wtf/persistence/PersistentCoders.h:
        (WTF::Persistence::Coder<Seconds>::encode):
        (WTF::Persistence::Coder<Seconds>::decode):
        (WTF::Persistence::Coder<WallTime>::encode):
        (WTF::Persistence::Coder<WallTime>::decode):
        Add persistent coder support for Seconds and WallTime.
        (WTF::Persistence::Coder<std::chrono::system_clock::time_point>::encode): Deleted.
        (WTF::Persistence::Coder<std::chrono::system_clock::time_point>::decode): Deleted.
        Remove std::chrono support from persistent coders.

2018-01-02  Mark Lam  <mark.lam@apple.com>

        Refactoring: Rename DummyClass to DummyStruct because it's a struct.
        https://bugs.webkit.org/show_bug.cgi?id=181230

        Reviewed by JF Bastien.

        * wtf/WTFAssertions.cpp:

2018-01-02  Mark Lam  <mark.lam@apple.com>

        Ensure that poisoned pointers do not look like double or int32 JSValues.
        https://bugs.webkit.org/show_bug.cgi?id=181221
        <rdar://problem/36248638>

        Reviewed by JF Bastien.

        Changed poison values to ensure that poisoned bits (i.e. pointer ^ poison)
        satisfies the following conditions:
        1. bits 48-63 are 0: this ensures that poisoned bits look like a pointer and
           not a double or int32 JSValue.
        2. bits 32-47 are not completely 0.
        3. bit 2 is never 0: this ensures that the poisoned value of a non-null pointer
           will never be null.
        4. bit 0-1 is always 0: this ensures that clients can still use the 2 bottom
           bits of the poisoned value as flag bits (just like they were able to do with
           pointer values).  The only difference is that bit 2 can no longer be used for
           flag bits because poisoned values need it to always be set.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/PointerAsserts.cpp: Removed.

        * wtf/Poisoned.cpp:
        (WTF::makePoison):
        - Updated to satisfy the above requirements.
        
        * wtf/Poisoned.h:
        (WTF::makeConstExprPoison):
        (WTF::makePoison): Deleted.

        * wtf/WTFAssertions.cpp: Copied from Source/WTF/wtf/PointerAsserts.cpp.
        - Renamed from PointerAsserts.cpp because we assert more things than just
          pointers here.
        - Added some assertions to test makeConstExprPoison() to ensure that it satisfies
          the above requirements.

2017-12-28  Yusuke Suzuki  <utatane.tea@gmail.com>

        Remove std::chrono if it is not used for ArgumentCoder or PersistentCoder
        https://bugs.webkit.org/show_bug.cgi?id=181174

        Reviewed by Konstantin Tokarev.

        Make WallTime more constexpr friendly. This change is already applied to MonoTonicTime.

        We would like to move std::{isfinite,isinf,isnan} overloadings from std:: to each class scope in a separate patch[1].

        [1]: https://bugs.webkit.org/show_bug.cgi?id=181183

        * wtf/WallTime.h:
        (WTF::WallTime::WallTime):
        (WTF::WallTime::fromRawSeconds):
        (WTF::WallTime::infinity):
        (WTF::WallTime::secondsSinceEpoch const):
        (WTF::WallTime::operator bool const):
        (WTF::WallTime::operator+ const):
        (WTF::WallTime::operator- const):
        (WTF::WallTime::operator== const):
        (WTF::WallTime::operator!= const):
        (WTF::WallTime::operator< const):
        (WTF::WallTime::operator> const):
        (WTF::WallTime::operator<= const):
        (WTF::WallTime::operator>= const):

2017-12-28  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][CMake] Use add_custom_command to copy each forwarding header files
        https://bugs.webkit.org/show_bug.cgi?id=180921

        Reviewed by Brent Fulgham.

        * wtf/PlatformWin.cmake: Use WEBKIT_MAKE_FORWARDING_HEADERS.

2017-12-27  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Add clock_gettime based monotonicallyIncreasingTime implementation for Linux and BSDs
        https://bugs.webkit.org/show_bug.cgi?id=181175

        Reviewed by Michael Catanzaro.

        Use platform-provided POSIX APIs to get monotonic time.

        * wtf/CurrentTime.cpp:
        (WTF::monotonicallyIncreasingTime):

2017-12-26  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        REGRESSION(r225769): Build error with constexpr std::max // std::min in libdstdc++4
        https://bugs.webkit.org/show_bug.cgi?id=181160

        Reviewed by Myles C. Maxfield.

        In libstdc++-4 std::max and std::min are not annotated with constexpr.
        This patch adds a WTF::min and WTF::max for using where a constexpr result is expected.
        Related: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60271

        * wtf/StdLibExtras.h:
        (WTF::min):
        (WTF::max):

2017-12-26  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Remove std::chrono completely
        https://bugs.webkit.org/show_bug.cgi?id=181165

        Reviewed by Konstantin Tokarev.

        WTF::currentCPUTime now returns WTF::Seconds.
        We also add the implementaiton for Linux and FreeBSD.

        * wtf/CurrentTime.cpp:
        (WTF::currentCPUTime):
        * wtf/CurrentTime.h:

2017-12-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, try to fix the Sierra build after r226277.

        The macOS 10.12 SDK does not know about NSControlStateValue and some types of NSLevelIndicatorStyles, so these
        need to be declared in a separate section in AppKitCompatibilityDeclarations.h (rather than in the < macOS 10.12
        SDK #ifdef).

        * wtf/mac/AppKitCompatibilityDeclarations.h:

2017-12-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        Fix build failures due to using deprecated AppKit symbols
        https://bugs.webkit.org/show_bug.cgi?id=181110
        <rdar://problem/36162865>

        Reviewed by Dan Bernstein and Tim Horton.

        When building with older macOS SDKs where some AppKit constants don't exist, define the modern constants to be
        equal to their deprecated counterparts. This allows us to just have the modern types in WebKit sources while
        avoiding breakage on old SDKs.

        This, along with many other symbols in the compability header, can be removed once WebKit stops supporting macOS
        10.11.

        * wtf/mac/AppKitCompatibilityDeclarations.h:

2017-12-21  Mark Lam  <mark.lam@apple.com>

        Add WTF::PoisonedUniquePtr to replace std::unique_ptr when poisoning is desired.
        https://bugs.webkit.org/show_bug.cgi?id=181062
        <rdar://problem/36167040>

        Reviewed by Chris Dumez.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/PointerAsserts.cpp: Copied from Source/WTF/wtf/RefPtr.cpp.
        - renamed file because we asserts all kinds of pointers in here, not just RefPtr.
        
        * wtf/Poisoned.h:
        - added a missing #include.
        - make constexpr poison values more scrambled.
        (WTF::makePoison):

        * wtf/PoisonedUniquePtr.h: Added.
        (WTF::PoisonedUniquePtr::PoisonedUniquePtr):
        (WTF::PoisonedUniquePtr::~PoisonedUniquePtr):
        (WTF::PoisonedUniquePtr::create):
        (WTF::PoisonedUniquePtr::operator=):
        (WTF::PoisonedUniquePtr::get const):
        (WTF::PoisonedUniquePtr::operator[] const):
        (WTF::PoisonedUniquePtr::clear):
        (WTF::PoisonedUniquePtr::destroy):
        (WTF::PoisonedUniquePtr::clearWithoutDestroy):
        (WTF::makePoisonedUnique):
        * wtf/RefPtr.cpp: Removed.

2017-12-21  Jeremy Jones  <jeremyj@apple.com>

        Element fullscreen interface should display the location
        https://bugs.webkit.org/show_bug.cgi?id=181006
        rdar://problem/36143176

        Reviewed by Simon Fraser.

        Add SecTrustCopyInfo SPI.

        * wtf/spi/cocoa/SecuritySPI.h:

2017-12-20  Fujii Hironori  <Hironori.Fujii@sony.com>

        [CMake][WTF] Lowercase ForwardingHeaders directory name of WTF
        https://bugs.webkit.org/show_bug.cgi?id=181022

        Reviewed by Konstantin Tokarev.

        * wtf/CMakeLists.txt: Renamed ForwardingHeaders directory name WTF to wtf.
        * wtf/PlatformWin.cmake: Ditto.

2017-12-19  Brian Burg  <bburg@apple.com>

        SLEEP_THREAD_FOR_DEBUGGER() macro should try to print out the PID of the affected process
        https://bugs.webkit.org/show_bug.cgi?id=180947

        Reviewed by Joseph Pecoraro.

        * wtf/DebugUtilities.h:
        - Use sleep() from CurrentTime.h as it is more cross-platform.
        - Print a message with the process PID to simplify attaching to sleeping thread.
        - Include source location in case multiple such macros are being used.

2017-12-18  Daniel Bates  <dabates@apple.com>

        Conditionally forward declare NSMapTable SPI
        https://bugs.webkit.org/show_bug.cgi?id=180936
        <rdar://problem/35037796>

        Reviewed by Dan Bernstein.

        * wtf/spi/cocoa/NSMapTableSPI.h:

2017-12-16  Filip Pizlo  <fpizlo@apple.com>

        Vector index masking
        https://bugs.webkit.org/show_bug.cgi?id=180909

        Reviewed by Keith Miller.
        
        Adds index masking to StringImpl and Vector.
        
        Perf:
        
        - 0.4% slower on microbenchmarks.
        - Octane totally even.
        - Kraken may be 0.8% slower.
        - Speedometer is 0.8% slower with p = 0.008.
        - membuster is even:
            - snap2pre: 0.7% bigger w/ p = 0.26,
            - snap2post: 0.3% smaller w/ p = 0.81,
            - snap3pre: 1.2% bigger w/ p = 0.63,
            - snap3post: 0.4% smaller w/ p = 0.76.

        * wtf/MathExtras.h:
        (WTF::roundUpToPowerOfTwo):
        (WTF::maskForSize):
        * wtf/SizeLimits.cpp:
        * wtf/Vector.h:
        (WTF::VectorBufferBase::allocateBuffer):
        (WTF::VectorBufferBase::tryAllocateBuffer):
        (WTF::VectorBufferBase::reallocateBuffer):
        (WTF::VectorBufferBase::deallocateBuffer):
        (WTF::VectorBufferBase::releaseBuffer):
        (WTF::VectorBufferBase::VectorBufferBase):
        (WTF::VectorBufferBase::updateMask):
        (WTF::VectorBuffer::allocateBuffer):
        (WTF::VectorBuffer::tryAllocateBuffer):
        (WTF::VectorBuffer::swap):
        (WTF::VectorBuffer::restoreInlineBufferIfNeeded):
        (WTF::Vector::at):
        (WTF::Vector::at const):
        * wtf/text/StringImpl.h:
        (WTF::StringImpl::maskOffset):
        (WTF::StringImpl::mask const):
        (WTF::StringImplShape::StringImplShape):
        (WTF::StringImpl::at const):
        (WTF::StringImpl::tailOffset):
        * wtf/text/StringView.h:
        (WTF::StringView::StringView):
        (WTF::StringView::operator=):
        (WTF::StringView::initialize):
        (WTF::StringView::clear):
        (WTF::StringView::operator[] const):
        * wtf/text/WTFString.h:
        (WTF::String::mask const):

2017-12-18  Claudio Saavedra  <csaavedra@igalia.com>

        [GTK][Darwin] Do not define mach exceptions for GTK+

        Rubber-stamped by Michael Catanzaro.
        * wtf/Platform.h:

2017-12-17  Yusuke Suzuki  <utatane.tea@gmail.com>

        [FTL] NewArrayBuffer should be sinked if it is only used for spreading
        https://bugs.webkit.org/show_bug.cgi?id=179762

        Reviewed by Saam Barati.

        We add RecursableLambda<>. This can take a lambda and offer a way
        to call this lambda recursively without introducing additional allocations.

        C++ lambda is super useful in particular when we need to capture many
        variables as references. Passing many arguments to a usual function is not
        a good way. But C++ lambda does not allow us to easily call itself recursively.

        Our recursableLambda offers `self` function as a first argument of the
        given lambda. We can call this `self` recursively.

        auto targetFunction = recursableLambda([] (auto self, ...) -> resultType {
            self(...);
        });

        While `std::function<> func = [&func] { ... }` allows recursion, it causes
        heap allocation for std::function<>. `auto func = [&func] { ... }` causes
        a compile error since we need to deduce an actual type when capturing `func`.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/RecursableLambda.h: Added.
        (WTF::RecursableLambda::RecursableLambda):
        (WTF::RecursableLambda::operator() const):
        (WTF::recursableLambda):

2017-12-17  Mark Lam  <mark.lam@apple.com>

        Enhance Ref and RefPtr to be able to work with smart pointers.
        https://bugs.webkit.org/show_bug.cgi?id=180762
        <rdar://problem/36027122>

        Reviewed by JF Bastien and Darin Adler.

        This is so we can use them with ConstExprPoisoned pointers to make PoisonedRef
        and PoisonedRefPtr.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/DumbPtrTraits.h: Added.
        (WTF::DumbPtrTraits::exchange):
        (WTF::DumbPtrTraits::swap):
        (WTF::DumbPtrTraits::unwrap):
        * wtf/Forward.h:
        * wtf/Poisoned.h:
        (WTF::ConstExprPoisonedPtrTraits::exchange):
        (WTF::ConstExprPoisonedPtrTraits::swap):
        (WTF::ConstExprPoisonedPtrTraits::unwrap):
        * wtf/Ref.h:
        (WTF::Ref::~Ref):
        (WTF::Ref::Ref):
        (WTF::Ref::ptrAllowingHashTableEmptyValue const):
        (WTF::Ref::ptrAllowingHashTableEmptyValue):
        (WTF::Ref::operator-> const):
        (WTF::Ref::get const):
        (WTF::Ref::operator T& const):
        (WTF::=):
        (WTF::U>::swap):
        (WTF::swap):
        (WTF::U>::replace):
        (WTF::static_reference_cast):
        (WTF::adoptRef):
        (WTF::is):
        (WTF::Ref<T>::swap): Deleted.
        (WTF::Ref<T>::replace): Deleted.
        (WTF::GetPtrHelper<Ref<T>>::getPtr): Deleted.
        * wtf/RefPtr.cpp: Added.
        * wtf/RefPtr.h:
        (WTF::RefPtr::RefPtr):
        (WTF::RefPtr::~RefPtr):
        (WTF::RefPtr::get const):
        (WTF::RefPtr::operator* const):
        (WTF::RefPtr::operator-> const):
        (WTF::U>::RefPtr):
        (WTF::U>::leakRef):
        (WTF::=):
        (WTF::U>::swap):
        (WTF::swap):
        (WTF::operator==):
        (WTF::operator!=):
        (WTF::static_pointer_cast):
        (WTF::adoptRef):
        (WTF::is):
        (WTF::RefPtr<T>::RefPtr): Deleted.
        (WTF::RefPtr<T>::leakRef): Deleted.
        (WTF::RefPtr<T>::swap): Deleted.

2017-12-16  Yusuke Suzuki  <utatane.tea@gmail.com>

        Remove unnecessary boolean result of start() functions
        https://bugs.webkit.org/show_bug.cgi?id=180856

        Reviewed by Darin Adler.

        CrossThreadTaskHandler's Thread is just released without calling
        either `waitForCompletion` or `detach`. It means that this resource
        of the thread is not released.

        * benchmarks/ConditionSpeedTest.cpp:
        * wtf/CrossThreadTaskHandler.cpp:
        (WTF::CrossThreadTaskHandler::CrossThreadTaskHandler):
        * wtf/CrossThreadTaskHandler.h:

2017-12-14  David Kilzer  <ddkilzer@apple.com>

        Enable -Wstrict-prototypes for WebKit
        <https://webkit.org/b/180757>
        <rdar://problem/36024132>

        Rubber-stamped by Joseph Pecoraro.

        * Configurations/Base.xcconfig:
        (CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.
        * wtf/Assertions.h:
        (WTFReportBacktrace): Add 'void' to C function declaration.
        (WTFCrashHookFunction): Add 'void' to C function pointer declaration.
        (WTFInstallReportBacktraceOnCrashHook): Add 'void' to C function declaration.
        (WTFIsDebuggerAttached): Ditto.
        (WTFCrash): Ditto.
        (WTFCrashWithSecurityImplication): Ditto.

2017-12-14  Yusuke Suzuki  <utatane.tea@gmail.com>

        Drop Thread::tryCreate
        https://bugs.webkit.org/show_bug.cgi?id=180808

        Reviewed by Darin Adler.

        We remove Thread::tryCreate. When thread creation fails, we have no way to keep WebKit working.
        Compared to tryMalloc, Thread::create always consumes fixed size of resource. If it fails,
        this is not due to arbitrary large user request. It is not reasonable that some thread creations
        are handled gracefully while the other thread creations are not.

        If we would like to have the limit of number of users' thread creation (like, calling `new Worker`
        so many times), we should have a soft limit instead of relying on system's hard limit.

        * wtf/ParallelJobsGeneric.cpp:
        (WTF::ParallelEnvironment::ThreadPrivate::tryLockFor):
        * wtf/Threading.cpp:
        (WTF::Thread::create):
        (WTF::Thread::tryCreate): Deleted.
        * wtf/Threading.h:
        (WTF::Thread::create): Deleted.

2017-12-13  Keith Miller  <keith_miller@apple.com>

        JSObjects should have a mask for loading indexed properties
        https://bugs.webkit.org/show_bug.cgi?id=180768

        Reviewed by Mark Lam.

        Add a clz that wraps the builtin clz intrinisics provided by
        various compilers. The clz function by default assumes that
        the input may be zero. On X86 this makes a difference because not
        all CPUs have LZCNT and BSR has undefined behavior on zero. On ARM,
        the zero check gets optimized away, regardless.

        * wtf/StdLibExtras.h:
        (std::clz):

2017-12-12  Yusuke Suzuki  <utatane.tea@gmail.com>

        REGRESSION(r225769): Build errors with constexpr std::tie on older gcc
        https://bugs.webkit.org/show_bug.cgi?id=180692

        Reviewed by Carlos Garcia Campos.

        Due to libstdc++'s bug[1], std::tie is not annotated with constexpr in libstdc++ 5.
        This patch adds WTF::tie for a work around. Since we do not want to
        include <tuple> in StdLibExtras.h, we define this function for all
        the compilers.

        [1]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65978

        * wtf/StdLibExtras.h:

2017-12-13  Mark Lam  <mark.lam@apple.com>

        Fill out some Poisoned APIs, fix some bugs, and add some tests.
        https://bugs.webkit.org/show_bug.cgi?id=180724
        <rdar://problem/36006884>

        Reviewed by JF Bastien.

        Also rename Int32Poisoned to ConstExprPoisoned.  The key it takes is actually a
        uint32_t.  So, Int32 is really a misnomer.  In addition, the key needs to be a
        constexpr.  So, ConstExprPoisoned is a better name for it.

        * wtf/Poisoned.cpp:
        (WTF::makePoison):
        * wtf/Poisoned.h:
        (WTF::PoisonedImplHelper::asReference):
        (WTF::PoisonedImpl::PoisonedImpl):
        (WTF::PoisonedImpl::clear):
        (WTF::PoisonedImpl::operator* const):
        (WTF::PoisonedImpl::operator-> const):
        (WTF::PoisonedImpl::operator== const):
        (WTF::PoisonedImpl::operator!= const):
        (WTF::PoisonedImpl::operator< const):
        (WTF::PoisonedImpl::operator<= const):
        (WTF::PoisonedImpl::operator> const):
        (WTF::PoisonedImpl::operator>= const):
        (WTF::PoisonedImpl::operator=):
        (WTF::PoisonedImpl::swap):
        (WTF::PoisonedImpl::exchange):
        (WTF::swap):
        (WTF::makePoison):
        (WTF::PoisonedImpl::operator==): Deleted.

2017-12-12  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Implement optimized WeakMap and WeakSet
        https://bugs.webkit.org/show_bug.cgi?id=179929

        Reviewed by Saam Barati.

        We introduce JSValueMalloc, which is specialized malloc scheme with Gigacage::JSValue.
        This is used for WeakMapImpl's buffer.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/JSValueMalloc.cpp: Added.
        (WTF::tryJSValueMalloc):
        (WTF::jsValueMalloc):
        (WTF::jsValueRealloc):
        (WTF::jsValueFree):
        * wtf/JSValueMalloc.h: Added.
        (WTF::JSValueMalloc::malloc):
        (WTF::JSValueMalloc::tryMalloc):
        (WTF::JSValueMalloc::realloc):
        (WTF::JSValueMalloc::free):
        * wtf/MallocPtr.h:
        (WTF::MallocPtr::~MallocPtr):
        (WTF::MallocPtr::malloc):
        (WTF::MallocPtr::tryMalloc):
        (WTF::MallocPtr::realloc):
        We extend MallocPtr to adopt malloc scheme as its template parameter.

2017-12-11  Filip Pizlo  <fpizlo@apple.com>

        It should be possible to flag a cell for unconditional finalization
        https://bugs.webkit.org/show_bug.cgi?id=180636

        Reviewed by Saam Barati.
        
        This adds ConcurrentVector, which is like SegmentedVector, but wastes some space to allow
        resizing to proceed concurrently to access. It's not possible to resize concurrently to
        resizing, concurrent read/writes aren't protected from racing if they access the same element,
        and who knows what you'll get if you iterate up to size() while someone else append()s. The
        key insight is to stash all prior copies of the spine, so that nobody crashes trying to access
        a stale spine.
        
        I'm going to want to do the same thing for FastBitVector, by creating a segmented WordOwner
        class. That would require repeating the dance of having a spine that can resize while stashing
        old versions. So, the spine resizing logic is abstracted behind ConcurrentBuffer. You could
        use that as a kind of "concurrent vector" for immutable data. That's how ConcurrentVector uses
        it: it's an immutable array of segment pointers.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/ConcurrentBuffer.h: Added.
        (WTF::ConcurrentBuffer::ConcurrentBuffer):
        (WTF::ConcurrentBuffer::~ConcurrentBuffer):
        (WTF::ConcurrentBuffer::growExact):
        (WTF::ConcurrentBuffer::grow):
        (WTF::ConcurrentBuffer::array const):
        (WTF::ConcurrentBuffer::operator[]):
        (WTF::ConcurrentBuffer::operator[] const):
        (WTF::ConcurrentBuffer::createArray):
        * wtf/ConcurrentVector.h: Added.
        (WTF::ConcurrentVectorIterator::~ConcurrentVectorIterator):
        (WTF::ConcurrentVectorIterator::operator* const):
        (WTF::ConcurrentVectorIterator::operator-> const):
        (WTF::ConcurrentVectorIterator::operator++):
        (WTF::ConcurrentVectorIterator::operator== const):
        (WTF::ConcurrentVectorIterator::operator!= const):
        (WTF::ConcurrentVectorIterator::operator=):
        (WTF::ConcurrentVectorIterator::ConcurrentVectorIterator):
        (WTF::ConcurrentVector::~ConcurrentVector):
        (WTF::ConcurrentVector::size const):
        (WTF::ConcurrentVector::isEmpty const):
        (WTF::ConcurrentVector::at):
        (WTF::ConcurrentVector::at const):
        (WTF::ConcurrentVector::operator[]):
        (WTF::ConcurrentVector::operator[] const):
        (WTF::ConcurrentVector::first):
        (WTF::ConcurrentVector::first const):
        (WTF::ConcurrentVector::last):
        (WTF::ConcurrentVector::last const):
        (WTF::ConcurrentVector::takeLast):
        (WTF::ConcurrentVector::append):
        (WTF::ConcurrentVector::alloc):
        (WTF::ConcurrentVector::removeLast):
        (WTF::ConcurrentVector::grow):
        (WTF::ConcurrentVector::begin):
        (WTF::ConcurrentVector::end):
        (WTF::ConcurrentVector::segmentExistsFor):
        (WTF::ConcurrentVector::segmentFor):
        (WTF::ConcurrentVector::subscriptFor):
        (WTF::ConcurrentVector::ensureSegmentsFor):
        (WTF::ConcurrentVector::ensureSegment):
        (WTF::ConcurrentVector::allocateSegment):

2017-12-12  JF Bastien  <jfbastien@apple.com>

        makeString: support more integral types
        https://bugs.webkit.org/show_bug.cgi?id=180720

        Reviewed by Sam Weinig.

        Only some integral types worked. Add more types by using template
        magic. While we're here, also use the same magic for
        floating-point types in the theoretical future where short float
        or long double matter.

        The core of the magic is a second, defaulted, template
        parameter. It's declared in Forward.h (as void), and then in
        classes where we want to enable_if we use it (in C++ speak we
        create a partial class template specialization), otherwise we
        leave it as void.

        Also clean up some constructors which were being way too verbose
        in stating that they were declarations for this template
        specialization right here, when really we already knew that.

        * wtf/Forward.h:
        * wtf/text/StringConcatenate.h:
        (WTF::StringTypeAdapter<char>::StringTypeAdapter<char>): Deleted.
        (WTF::StringTypeAdapter<char>::length): Deleted.
        (WTF::StringTypeAdapter<char>::is8Bit): Deleted.
        (WTF::StringTypeAdapter<char>::writeTo const): Deleted.
        (WTF::StringTypeAdapter<char>::toString const): Deleted.
        (WTF::StringTypeAdapter<UChar>::StringTypeAdapter<UChar>): Deleted.
        (WTF::StringTypeAdapter<UChar>::length const): Deleted.
        (WTF::StringTypeAdapter<UChar>::is8Bit const): Deleted.
        (WTF::StringTypeAdapter<UChar>::writeTo const): Deleted.
        (WTF::StringTypeAdapter<UChar>::toString const): Deleted.
        (WTF::StringTypeAdapter<char::StringTypeAdapter): Deleted.
        (WTF::StringTypeAdapter<ASCIILiteral>::StringTypeAdapter): Deleted.
        (WTF::StringTypeAdapter<Vector<char>>::StringTypeAdapter): Deleted.
        (WTF::StringTypeAdapter<Vector<char>>::length const): Deleted.
        (WTF::StringTypeAdapter<Vector<char>>::is8Bit const): Deleted.
        (WTF::StringTypeAdapter<Vector<char>>::writeTo const): Deleted.
        (WTF::StringTypeAdapter<Vector<char>>::toString const): Deleted.
        (WTF::StringTypeAdapter<String>::StringTypeAdapter<String>): Deleted.
        (WTF::StringTypeAdapter<String>::length const): Deleted.
        (WTF::StringTypeAdapter<String>::is8Bit const): Deleted.
        (WTF::StringTypeAdapter<String>::writeTo const): Deleted.
        (WTF::StringTypeAdapter<String>::toString const): Deleted.
        (WTF::StringTypeAdapter<AtomicString>::StringTypeAdapter): Deleted.
        * wtf/text/StringConcatenateNumbers.h:
        (WTF::StringTypeAdapter<FormattedNumber>::StringTypeAdapter):
        (WTF::StringTypeAdapter<int>::StringTypeAdapter<int>): Deleted.
        (WTF::StringTypeAdapter<int>::length const): Deleted.
        (WTF::StringTypeAdapter<int>::is8Bit const): Deleted.
        (WTF::StringTypeAdapter<int>::writeTo const): Deleted.
        (WTF::StringTypeAdapter<int>::toString const): Deleted.
        (WTF::StringTypeAdapter<unsigned>::StringTypeAdapter<unsigned>): Deleted.
        (WTF::StringTypeAdapter<unsigned>::length const): Deleted.
        (WTF::StringTypeAdapter<unsigned>::is8Bit const): Deleted.
        (WTF::StringTypeAdapter<unsigned>::writeTo const): Deleted.
        (WTF::StringTypeAdapter<unsigned>::toString const): Deleted.
        (WTF::StringTypeAdapter<double>::StringTypeAdapter<double>): Deleted.
        (WTF::StringTypeAdapter<double>::length const): Deleted.
        (WTF::StringTypeAdapter<double>::is8Bit const): Deleted.
        (WTF::StringTypeAdapter<double>::writeTo const): Deleted.
        (WTF::StringTypeAdapter<double>::toString const): Deleted.
        (WTF::StringTypeAdapter<float>::StringTypeAdapter<float>): Deleted.
        (WTF::StringTypeAdapter<FormattedNumber>::StringTypeAdapter<FormattedNumber>): Deleted.
        * wtf/text/StringView.h:
        (WTF::StringTypeAdapter<StringView>::StringTypeAdapter<StringView>): Deleted.
        (WTF::StringTypeAdapter<StringView>::length): Deleted.
        (WTF::StringTypeAdapter<StringView>::is8Bit): Deleted.
        (WTF::StringTypeAdapter<StringView>::writeTo): Deleted.
        (WTF::StringTypeAdapter<StringView>::toString const): Deleted.

2017-12-12  Caio Lima  <ticaiolima@gmail.com>

        [ESNext][BigInt] Implement BigInt literals and JSBigInt
        https://bugs.webkit.org/show_bug.cgi?id=179000

        Reviewed by Darin Adler and Yusuke Suzuki.

        * wtf/HashFunctions.h:

2017-12-12  Joseph Pecoraro  <pecoraro@apple.com>

        Symbol not found: __ZN3WTF8LockBase10unlockSlowEv
        https://bugs.webkit.org/show_bug.cgi?id=180691

        Reviewed by Yusuke Suzuki.

        * wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
        (WTF::LockBase::lockSlow):
        (WTF::LockBase::unlockSlow):
        Add back LockBase Symbols used by System Safari on 10.13.

2017-12-12  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Thread::create should have Thread::tryCreate
        https://bugs.webkit.org/show_bug.cgi?id=180333

        Reviewed by Darin Adler.

        Many callers of Thread::create assume that it returns non-nullptr Thread.
        But if the number of threads hits the limit in the system, creating Thread
        would fail. In that case, it is really difficult to keep WebKit working.

        We introduce Thread::tryCreate, and change the returned value from Thread::create
        from RefPtr<Thread> to Ref<Thread>. In Thread::create, we ensure thread creation
        succeeds by RELEASE_ASSERT. And we use Thread::create intentionally if the
        caller assumes that thread should be created.

        * wtf/AutomaticThread.cpp:
        (WTF::AutomaticThread::start):
        * wtf/ParallelJobsGeneric.cpp:
        (WTF::ParallelEnvironment::ThreadPrivate::tryLockFor):
        * wtf/Threading.cpp:
        (WTF::Thread::tryCreate):
        (WTF::Thread::create): Deleted.
        * wtf/Threading.h:
        (WTF::Thread::create):
        * wtf/WorkQueue.cpp:
        (WTF::WorkQueue::concurrentApply):

2017-12-11  Eric Carlson  <eric.carlson@apple.com>

        Web Inspector: Optionally log WebKit log parameters as JSON
        https://bugs.webkit.org/show_bug.cgi?id=180529
        <rdar://problem/35909462>

        Reviewed by Joseph Pecoraro.

        * wtf/Logger.h:
        (WTF::Logger::log):
        (WTF::LogArgument<Logger::LogSiteIdentifier>::toString):

        * wtf/MediaTime.cpp:
        (WTF::MediaTime::toJSONString const): Serialize to JSON string.
        * wtf/MediaTime.h:

2017-12-11  Tim Horton  <timothy_horton@apple.com>

        Stop using deprecated target conditional for simulator builds
        https://bugs.webkit.org/show_bug.cgi?id=180662
        <rdar://problem/35136156>

        Reviewed by Simon Fraser.

        * wtf/Platform.h:

2017-12-11  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Add Converter traits to StringHasher instead of function pointer
        https://bugs.webkit.org/show_bug.cgi?id=180656

        Reviewed by JF Bastien.

        In the latest ICU, UChar is char16_t. So defining defaultConverter(UChar)
        and defaultConverter(char16_t) causes duplicate definitions.
        Instead of passing a funtion pointer, we pass a trait class DefaultConveter
        which has `convert` static function. And we make this `convert` function
        generic. This avoids defining convert function for UChar and char16_t.

        * wtf/text/StringHash.h:
        (WTF::ASCIICaseInsensitiveHash::FoldCase::convert):
        (WTF::ASCIICaseInsensitiveHash::hash):
        (WTF::ASCIICaseInsensitiveHash::foldCase): Deleted.
        * wtf/text/StringHasher.h:
        (WTF::StringHasher::DefaultConverter::convert):
        (WTF::StringHasher::addCharactersAssumingAligned):
        (WTF::StringHasher::addCharacters):
        (WTF::StringHasher::computeHashAndMaskTop8Bits):
        (WTF::StringHasher::computeHash):
        (WTF::StringHasher::computeLiteralHash):
        (WTF::StringHasher::computeLiteralHashAndMaskTop8Bits):
        (WTF::StringHasher::computeHashImpl):
        (WTF::StringHasher::Converter): Deleted.
        (WTF::StringHasher::defaultConverter): Deleted.

2017-12-10  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Reduce sizeof(Thread) by adjusting alignment
        https://bugs.webkit.org/show_bug.cgi?id=180630

        Reviewed by Saam Barati.

        Reduce sizeof(Thread) slightly by adjusting alignment.

        * wtf/Threading.h:

2017-12-10  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, follow-up patch after r225726
        https://bugs.webkit.org/show_bug.cgi?id=180622

        Suggested by Darin. We should take care of signed-extension of `char`.

        * wtf/text/StringHasher.h:
        (WTF::StringHasher::defaultConverter):

2017-12-09  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Remove RELAXED_CONSTEXPR
        https://bugs.webkit.org/show_bug.cgi?id=180624

        Reviewed by JF Bastien.

        All of our required compilers support relaxed constexpr in C++14.
        We can drop RELAXED_CONSTEXPR macro in our tree.

        * wtf/Compiler.h:
        * wtf/Expected.h:
        (std::experimental::fundamentals_v3::expected::operator*):
        (std::experimental::fundamentals_v3::expected::value):
        (std::experimental::fundamentals_v3::expected::error):
        * wtf/Unexpected.h:
        (std::experimental::fundamentals_v3::unexpected::value):
        (std::experimental::fundamentals_v3::unexpected::value const):

2017-12-09  Yusuke Suzuki  <utatane.tea@gmail.com>

        Fix WTF::Hasher tuple expansion with variadic args
        https://bugs.webkit.org/show_bug.cgi?id=180623

        Reviewed by JF Bastien.

        We expand a tuple with `...`, and use this in a function's argument list.
        And in this argument list, we call `add()` for each value. This will be
        expanded as follows.

            [] (...) { }((add(hasher, std::get<i>(values)), 0)...);

        will become,

            [] (...) { }((add(hasher, std::get<0>(values)), 0), (add(hasher, std::get<1>(values)), 0), ...);

        However, the evaluation order of the C++ argument is unspecified. Actually,
        in GCC environment, this `add()` is not called in our expected order. As a
        result, currently we have test failures in TestWTF.

        This patch just uses variadic templates to expand tuples, and call add() in
        our expected order. This patch fixes an existing failure of TestWTF in GCC environment.

        * wtf/Hasher.h:
        (WTF::Hasher::computeHash):
        (WTF::addArgs):
        (WTF::addTupleHelper):
        (WTF::add):

2017-12-09  Yusuke Suzuki  <utatane.tea@gmail.com>

        Use relaxed constexpr for StringHasher
        https://bugs.webkit.org/show_bug.cgi?id=180622

        Reviewed by JF Bastien.

        Now VC++ is updated and all the WebKit compilers support C++14 relaxed constexpr.
        This patch uses relaxed constexpr for StringHasher constexpr implementation

        * wtf/text/StringHasher.h:
        (WTF::StringHasher::addCharactersAssumingAligned):
        (WTF::StringHasher::Converter):
        (WTF::StringHasher::computeHashAndMaskTop8Bits):
        (WTF::StringHasher::computeHash):
        (WTF::StringHasher::computeLiteralHash):
        (WTF::StringHasher::computeLiteralHashAndMaskTop8Bits):
        (WTF::StringHasher::defaultConverter):
        (WTF::StringHasher::avalancheBits):
        (WTF::StringHasher::finalize):
        (WTF::StringHasher::finalizeAndMaskTop8Bits):
        (WTF::StringHasher::avoidZero):
        (WTF::StringHasher::calculateWithRemainingLastCharacter):
        (WTF::StringHasher::calculateWithTwoCharacters):
        (WTF::StringHasher::processPendingCharacter const):
        (WTF::StringHasher::StringHasher): Deleted.
        (WTF::StringHasher::avalancheBits3): Deleted.
        (WTF::StringHasher::avalancheBits2): Deleted.
        (WTF::StringHasher::avalancheBits1): Deleted.
        (WTF::StringHasher::avalancheBits0): Deleted.
        (WTF::StringHasher::calculateWithRemainingLastCharacter1): Deleted.
        (WTF::StringHasher::calculateWithRemainingLastCharacter0): Deleted.
        (WTF::StringHasher::calculate1): Deleted.
        (WTF::StringHasher::calculate0): Deleted.
        (WTF::StringHasher::calculate): Deleted.
        (WTF::StringHasher::computeLiteralHashImpl): Deleted.

2017-12-08  Eric Carlson  <eric.carlson@apple.com>

        Move Logger from PAL to WTF so it can be used outside of WebCore
        https://bugs.webkit.org/show_bug.cgi?id=180561

        Reviewed by Alex Christensen.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/Logger.h: Copied from Source/WebCore/PAL/pal/Logger.h.
        (PAL::LogArgument::toString): Deleted.
        (PAL::Logger::create): Deleted.
        (PAL::Logger::logAlways const): Deleted.
        (PAL::Logger::error const): Deleted.
        (PAL::Logger::warning const): Deleted.
        (PAL::Logger::info const): Deleted.
        (PAL::Logger::debug const): Deleted.
        (PAL::Logger::willLog const): Deleted.
        (PAL::Logger::enabled const): Deleted.
        (PAL::Logger::setEnabled): Deleted.
        (PAL::Logger::LogSiteIdentifier::LogSiteIdentifier): Deleted.
        (PAL::Logger::addObserver): Deleted.
        (PAL::Logger::removeObserver): Deleted.
        (PAL::Logger::Logger): Deleted.
        (PAL::Logger::log): Deleted.
        (PAL::Logger::observers): Deleted.
        (PAL::LogArgument<Logger::LogSiteIdentifier>::toString): Deleted.
        * wtf/LoggerHelper.h: Copied from Source/WebCore/PAL/pal/LoggerHelper.h.

2017-12-08  Yusuke Suzuki  <utatane.tea@gmail.com>

        Remove pthread_once in favor of dispatch_once
        https://bugs.webkit.org/show_bug.cgi?id=180591

        Reviewed by Saam Barati.

        Fix the comment.

        * wtf/Threading.h:
        (WTF::Thread::current):

2017-12-08  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF][Linux][GTK] Fix a minor bug in generic/WorkQueue when WorkQueue is immediately destroyed
        https://bugs.webkit.org/show_bug.cgi?id=180586

        Reviewed by Darin Adler.

        If WorkQueue is created and destroyed immediately, RunLoop::stop can be called
        befire calling RunLoop::run(). At that time WorkQueue thread is not stopped.

        This patch dispatches a task stopping its own RunLoop to ensure stop is done.
        We also clean up WorkQueue implementation not to include unnecessary fields,
        lock, condition, and thread.

        * wtf/WorkQueue.h:
        * wtf/generic/WorkQueueGeneric.cpp:
        (WorkQueue::platformInitialize):
        (WorkQueue::platformInvalidate):

2017-12-08  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Remove remaining use of Mutex
        https://bugs.webkit.org/show_bug.cgi?id=180579

        Reviewed by Alex Christensen.

        Mutex should be only used in low-level Locking and Threading.
        Other ones should use WTF::Lock and WTF::Condition instead.
        This patch replaces WTF::Mutex with WTF::Lock in WTF if it
        is not related to threading or locking implementation.

        And we also use WTF::Lock and WTF::Condition in WTF::BinarySemaphore.

        * wtf/RunLoop.cpp:
        (WTF::RunLoop::performWork):
        (WTF::RunLoop::dispatch):
        * wtf/RunLoop.h:
        * wtf/WorkQueue.cpp:
        * wtf/WorkQueue.h:
        * wtf/threads/BinarySemaphore.cpp:
        (WTF::BinarySemaphore::signal):
        (WTF::BinarySemaphore::wait):
        (WTF::BinarySemaphore::BinarySemaphore): Deleted.
        (WTF::BinarySemaphore::~BinarySemaphore): Deleted.
        * wtf/threads/BinarySemaphore.h:
        * wtf/win/WorkQueueWin.cpp:
        (WTF::WorkQueue::registerHandle):
        (WTF::WorkQueue::unregisterAndCloseHandle):
        (WTF::WorkQueue::dispatch):
        (WTF::WorkQueue::timerCallback):
        (WTF::WorkQueue::dispatchAfter):
        (WTF::TimerContext::TimerContext): Deleted.

2017-12-08  Yusuke Suzuki  <utatane.tea@gmail.com>

        Use StaticLock and Lock instead of Mutex in Windows WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=180572

        Reviewed by Mark Lam.

        Remove DEPRECATED_DEFINE_STATIC_LOCAL since it's no longer used.

        * wtf/StdLibExtras.h:

2017-12-07  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Win] [64-bit] Resolve Microsoft warning C4319 on BitVector.cpp
        https://bugs.webkit.org/show_bug.cgi?id=180490

        Reviewed by Alex Christensen.

        bitsInPointer() returns unsigned which is smaller than size_t.
        "~"(negate) operator is applied before extending its size which result filled with zero.
        This may be potentially a bug if numBits is greater than max value of unsigned long
        (which is not practical).

        * wtf/BitVector.cpp:
        (WTF::BitVector::OutOfLineBits::create):

2017-12-07  Yusuke Suzuki  <utatane.tea@gmail.com>

        Use WTF Locking primitives in WebThread and drop pthread_xxx use
        https://bugs.webkit.org/show_bug.cgi?id=180445

        Reviewed by Saam Barati.

        Add initializer form to fill struct with zero if struct does not have any default initializers.

        * wtf/ThreadSpecific.h:
        (WTF::ThreadSpecific::Data::Data):

2017-12-07  Mark Lam  <mark.lam@apple.com>

        Apply poisoning to some native code pointers.
        https://bugs.webkit.org/show_bug.cgi?id=180541
        <rdar://problem/35916875>

        Reviewed by Filip Pizlo.

        Ensure that the resultant poisoned bits still looks like a pointer in that its
        bottom bits are 0, just like the alignment bits of a pointer.  This allows the
        client to use the bottom bits of the poisoned bits as flag bits just like the
        client was previously able to do with pointer values.

        Note: we only ensure that the bottom alignment bits of the generated poison
        value is 0.  We're not masking out the poisoned bits.  This means that the bottom
        bits of the poisoned bits will only be null if the original pointer is aligned.
        Hence, if the client applies the poison to an unaligned pointer, we do not lose
        any information on the low bits.

        Also removed 2 wrong assertions in PoisonedImpl's constructors.  We were
        asserting that Poisoned will never be used with a null value, but that's invalid.
        We do want to allow a null value so that we don't have to constantly do null
        checks in the clients.  This was uncovered by some layout tests.

        * wtf/Poisoned.cpp:
        (WTF::makePoison):
        * wtf/Poisoned.h:
        (WTF::PoisonedImpl::PoisonedImpl):

2017-12-07  Mark Lam  <mark.lam@apple.com>

        [Re-landing r225620] Refactoring: Rename ScrambledPtr to Poisoned.
        https://bugs.webkit.org/show_bug.cgi?id=180514

        Reviewed by Saam Barati and JF Bastien.

        Re-landing r225620 with speculative build fix for GCC 7.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/Poisoned.cpp: Copied from Source/WTF/wtf/ScrambledPtr.cpp.
        (WTF::makePoison):
        (WTF::makeScrambledPtrKey): Deleted.
        * wtf/Poisoned.h: Copied from Source/WTF/wtf/ScrambledPtr.h.
        (WTF::PoisonedImpl::PoisonedImpl):
        (WTF::PoisonedImpl::assertIsPoisoned const):
        (WTF::PoisonedImpl::assertIsNotPoisoned const):
        (WTF::PoisonedImpl::unpoisoned const):
        (WTF::PoisonedImpl::operator-> const):
        (WTF::PoisonedImpl::bits const):
        (WTF::PoisonedImpl::operator! const):
        (WTF::PoisonedImpl::operator bool const):
        (WTF::PoisonedImpl::operator== const):
        (WTF::PoisonedImpl::operator==):
        (WTF::PoisonedImpl::operator=):
        (WTF::PoisonedImpl::poison):
        (WTF::PoisonedImpl::unpoison):
        (WTF::ScrambledPtr::ScrambledPtr): Deleted.
        (WTF::ScrambledPtr::assertIsScrambled const): Deleted.
        (WTF::ScrambledPtr::assertIsNotScrambled const): Deleted.
        (WTF::ScrambledPtr::descrambled const): Deleted.
        (WTF::ScrambledPtr::operator-> const): Deleted.
        (WTF::ScrambledPtr::bits const): Deleted.
        (WTF::ScrambledPtr::operator! const): Deleted.
        (WTF::ScrambledPtr::operator bool const): Deleted.
        (WTF::ScrambledPtr::operator== const): Deleted.
        (WTF::ScrambledPtr::operator==): Deleted.
        (WTF::ScrambledPtr::operator=): Deleted.
        (WTF::ScrambledPtr::scramble): Deleted.
        (WTF::ScrambledPtr::descramble): Deleted.
        * wtf/ScrambledPtr.cpp: Removed.
        * wtf/ScrambledPtr.h: Removed.

2017-12-07  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, rolling out r225620
        https://bugs.webkit.org/show_bug.cgi?id=180514
        <rdar://problem/35901694>

        It broke the build with GCC 7, and I don't know how to fix it.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/Poisoned.h: Removed.
        * wtf/ScrambledPtr.cpp: Renamed from Source/WTF/wtf/Poisoned.cpp.
        (WTF::makeScrambledPtrKey):
        * wtf/ScrambledPtr.h: Added.
        (WTF::ScrambledPtr::ScrambledPtr):
        (WTF::ScrambledPtr::assertIsScrambled const):
        (WTF::ScrambledPtr::assertIsNotScrambled const):
        (WTF::ScrambledPtr::descrambled const):
        (WTF::ScrambledPtr::operator-> const):
        (WTF::ScrambledPtr::bits const):
        (WTF::ScrambledPtr::operator! const):
        (WTF::ScrambledPtr::operator bool const):
        (WTF::ScrambledPtr::operator== const):
        (WTF::ScrambledPtr::operator==):
        (WTF::ScrambledPtr::operator=):
        (WTF::ScrambledPtr::scramble):
        (WTF::ScrambledPtr::descramble):

2017-12-06  Mark Lam  <mark.lam@apple.com>

        Refactoring: Rename ScrambledPtr to Poisoned.
        https://bugs.webkit.org/show_bug.cgi?id=180514

        Reviewed by Saam Barati.

        We're switching our nomenclature to "poisoning" instead of "scrambling" pointers.
        This allows us to use shorter names.

        This patch is almost purely refactoring, except for one change: the PoisonedImpl
        template class (previously ScrambledPtr) has been modified to allow usage of
        a constexpr uint32_t poison value (see Int32Poisoned) in addition to a runtime
        determined uintptr_t poison value (see Poisoned).

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/Poisoned.cpp: Copied from Source/WTF/wtf/ScrambledPtr.cpp.
        (WTF::makePoison):
        (WTF::makeScrambledPtrKey): Deleted.
        * wtf/Poisoned.h: Copied from Source/WTF/wtf/ScrambledPtr.h.
        (WTF::PoisonedImpl::PoisonedImpl):
        (WTF::PoisonedImpl::assertIsPoisoned const):
        (WTF::PoisonedImpl::assertIsNotPoisoned const):
        (WTF::PoisonedImpl::unpoisoned const):
        (WTF::PoisonedImpl::operator-> const):
        (WTF::PoisonedImpl::bits const):
        (WTF::PoisonedImpl::operator! const):
        (WTF::PoisonedImpl::operator bool const):
        (WTF::PoisonedImpl::operator== const):
        (WTF::PoisonedImpl::operator==):
        (WTF::PoisonedImpl::operator=):
        (WTF::PoisonedImpl::poison):
        (WTF::PoisonedImpl::unpoison):
        (WTF::ScrambledPtr::ScrambledPtr): Deleted.
        (WTF::ScrambledPtr::assertIsScrambled const): Deleted.
        (WTF::ScrambledPtr::assertIsNotScrambled const): Deleted.
        (WTF::ScrambledPtr::descrambled const): Deleted.
        (WTF::ScrambledPtr::operator-> const): Deleted.
        (WTF::ScrambledPtr::bits const): Deleted.
        (WTF::ScrambledPtr::operator! const): Deleted.
        (WTF::ScrambledPtr::operator bool const): Deleted.
        (WTF::ScrambledPtr::operator== const): Deleted.
        (WTF::ScrambledPtr::operator==): Deleted.
        (WTF::ScrambledPtr::operator=): Deleted.
        (WTF::ScrambledPtr::scramble): Deleted.
        (WTF::ScrambledPtr::descramble): Deleted.
        * wtf/ScrambledPtr.cpp: Removed.
        * wtf/ScrambledPtr.h: Removed.

2017-12-02  Darin Adler  <darin@apple.com>

        Modernize some aspects of text codecs, eliminate WebKit use of strcasecmp
        https://bugs.webkit.org/show_bug.cgi?id=180009

        Reviewed by Alex Christensen.

        * wtf/Assertions.cpp: Removed include of StringExtras.h.
        (WTFLogChannelByName): Use equalIgnoringASCIICase instead of strcasecmp.
        * wtf/DateMath.cpp: Removed include of StringExtras.h.
        * wtf/MD5.cpp: Ditto. Also removed include of CString.h.
        * wtf/SHA1.cpp: Ditto.

        * wtf/StringExtras.h:
        (strncasecmp): Deleted.
        (strcasecmp): Deleted.

        * wtf/StringPrintStream.cpp: Removed include of StringExtras.h.
        * wtf/text/Base64.cpp: Ditto.

        * wtf/text/LineEnding.cpp:
        (WTF::normalizeLineEndingsToLF): Replaced old more general purpose function with
        this. Changed argument type to vector and used an rvalue reference and return value.
        Also fixed some small logic errors.
        (WTF::normalizeLineEndingsToCRLF): Ditto.
        (WTF::normalizeLineEndingsToNative): Updated for above changes.
        * wtf/text/LineEnding.h: Updated for above changes.

        * wtf/text/StringCommon.h:
        (WTF::equalIgnoringASCIICase): Added overload for const char*.
        (WTF::equalLettersIgnoringASCIICase): Ditto.

        * wtf/text/TextStream.cpp: Removed include of StringExtras.h.
        * wtf/text/WTFString.cpp: Ditto.
        * wtf/unicode/icu/CollatorICU.cpp: Ditto.

2017-12-06  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Remove XXXLockBase since constexpr constructor can initialize static variables without calling global constructors
        https://bugs.webkit.org/show_bug.cgi?id=180495

        Reviewed by Mark Lam.

        Very nice feature of C++11 is that constexpr constructor can initialize static global variables
        without calling global constructors. We do not need to have XXXLockBase with derived XXXLock
        class since StaticXXXLock can have constructors as long as it is constexpr.
        We remove bunch of these classes, and set `XXXLock() = default;` explicitly for readability.
        C++11's default constructor is constexpr as long as its member's default constructor / default
        initializer is constexpr.

        * wtf/Condition.h:
        (WTF::ConditionBase::construct): Deleted.
        (WTF::ConditionBase::waitUntil): Deleted.
        (WTF::ConditionBase::waitFor): Deleted.
        (WTF::ConditionBase::wait): Deleted.
        (WTF::ConditionBase::notifyOne): Deleted.
        (WTF::ConditionBase::notifyAll): Deleted.
        (WTF::Condition::Condition): Deleted.
        * wtf/CountingLock.h:
        (WTF::CountingLock::CountingLock): Deleted.
        (WTF::CountingLock::~CountingLock): Deleted.
        * wtf/Lock.cpp:
        (WTF::Lock::lockSlow):
        (WTF::Lock::unlockSlow):
        (WTF::Lock::unlockFairlySlow):
        (WTF::Lock::safepointSlow):
        (WTF::LockBase::lockSlow): Deleted.
        (WTF::LockBase::unlockSlow): Deleted.
        (WTF::LockBase::unlockFairlySlow): Deleted.
        (WTF::LockBase::safepointSlow): Deleted.
        * wtf/Lock.h:
        (WTF::LockBase::construct): Deleted.
        (WTF::LockBase::lock): Deleted.
        (WTF::LockBase::tryLock): Deleted.
        (WTF::LockBase::try_lock): Deleted.
        (WTF::LockBase::unlock): Deleted.
        (WTF::LockBase::unlockFairly): Deleted.
        (WTF::LockBase::safepoint): Deleted.
        (WTF::LockBase::isHeld const): Deleted.
        (WTF::LockBase::isLocked const): Deleted.
        (WTF::LockBase::isFullyReset const): Deleted.
        (WTF::Lock::Lock): Deleted.
        * wtf/ReadWriteLock.cpp:
        (WTF::ReadWriteLock::readLock):
        (WTF::ReadWriteLock::readUnlock):
        (WTF::ReadWriteLock::writeLock):
        (WTF::ReadWriteLock::writeUnlock):
        (WTF::ReadWriteLockBase::construct): Deleted.
        (WTF::ReadWriteLockBase::readLock): Deleted.
        (WTF::ReadWriteLockBase::readUnlock): Deleted.
        (WTF::ReadWriteLockBase::writeLock): Deleted.
        (WTF::ReadWriteLockBase::writeUnlock): Deleted.
        * wtf/ReadWriteLock.h:
        (WTF::ReadWriteLock::read):
        (WTF::ReadWriteLock::write):
        (WTF::ReadWriteLockBase::ReadLock::tryLock): Deleted.
        (WTF::ReadWriteLockBase::ReadLock::lock): Deleted.
        (WTF::ReadWriteLockBase::ReadLock::unlock): Deleted.
        (WTF::ReadWriteLockBase::WriteLock::tryLock): Deleted.
        (WTF::ReadWriteLockBase::WriteLock::lock): Deleted.
        (WTF::ReadWriteLockBase::WriteLock::unlock): Deleted.
        (WTF::ReadWriteLockBase::read): Deleted.
        (WTF::ReadWriteLockBase::write): Deleted.
        (WTF::ReadWriteLock::ReadWriteLock): Deleted.
        * wtf/RecursiveLockAdapter.h:
        (WTF::RecursiveLockAdapter::RecursiveLockAdapter): Deleted.
        * wtf/WordLock.cpp:
        (WTF::WordLock::lockSlow):
        (WTF::WordLock::unlockSlow):
        (WTF::WordLockBase::lockSlow): Deleted.
        (WTF::WordLockBase::unlockSlow): Deleted.
        * wtf/WordLock.h:
        (WTF::WordLockBase::lock): Deleted.
        (WTF::WordLockBase::unlock): Deleted.
        (WTF::WordLockBase::isHeld const): Deleted.
        (WTF::WordLockBase::isLocked const): Deleted.
        (WTF::WordLockBase::isFullyReset const): Deleted.
        (WTF::WordLock::WordLock): Deleted.
        * wtf/WorkQueue.cpp:

2017-12-05  Stephan Szabo  <stephan.szabo@sony.com>

        Switch windows build to Visual Studio 2017
        https://bugs.webkit.org/show_bug.cgi?id=172412

        Reviewed by Per Arne Vollan.

        * WTF.vcxproj/WTF.proj:
        * wtf/Compiler.h:

2017-12-05  Andy Estes  <aestes@apple.com>

        [Darwin] Simplify use of TargetConditionals
        https://bugs.webkit.org/show_bug.cgi?id=180455
        <rdar://problem/35142971>

        Reviewed by Tim Horton.

        There's no need to check if TARGET_* macros are defined on Darwin platforms, since
        TargetConditionals.h always defines them. Also, we can simplify
        (TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR) to TARGET_OS_IPHONE.

        * wtf/Platform.h:

2017-12-05  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r225430.

        This caused an API failure on release.

        Reverted changeset:

        "Move DateComponents into WTF"
        https://bugs.webkit.org/show_bug.cgi?id=180211
        https://trac.webkit.org/changeset/225430

2017-12-05  Michael Saboff  <msaboff@apple.com>

        Make WebKit build for ARM64_32
        https://bugs.webkit.org/show_bug.cgi?id=180447

        Reviewed by Mark Lam.

        Add the 'w' (32bit) pointer qualifier for ARM64_32 pointers in inline assembly.

        * wtf/darwin/WeakLinking.h:
        (WTF::isNullFunctionPointer):

2017-12-05  Filip Pizlo  <fpizlo@apple.com>

        bmalloc IsoHeap needs to allow a thread to deallocate some size for the first time
        https://bugs.webkit.org/show_bug.cgi?id=180443

        Reviewed by Saam Barati.
        
        With this change it's possible to reenable isoheaps on iOS.

        * wtf/IsoMalloc.h:
        * wtf/IsoMallocInlines.h:

2017-12-05  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Remove m_atomicStringTableDestructor in Thread by querying the condition at thread destruction
        https://bugs.webkit.org/show_bug.cgi?id=180429

        Reviewed by Alex Christensen.

        We now have a pointer to the AtomicStringTable::destroy in Thread.
        This pointer becomes nullptr only when the thread is the web thread not to destroy AtomicStringTable
        twice in the UI thread and the web thread.

        Instead of having a pointer in each Thread, we query whether the current thread is the web thread at
        Thread destruction. And use this information to call AtomicStringTable::destroy. Then, we can drop
        m_atomicStringTableDestructor field in Thread.

        * wtf/Threading.cpp:
        (WTF::Thread::didExit):
        * wtf/Threading.h:
        * wtf/mac/MainThreadMac.mm:
        * wtf/text/AtomicStringTable.cpp:
        (WTF::AtomicStringTable::create):
        (WTF::AtomicStringTable::destroy):
        * wtf/text/AtomicStringTable.h:

2017-12-01  Filip Pizlo  <fpizlo@apple.com>

        GC constraint solving should be parallel
        https://bugs.webkit.org/show_bug.cgi?id=179934

        Reviewed by JF Bastien.
        
        This does some changes to make it easier to do parallel constraint solving:
        
        - I finally removed dependencyWith. This was a silly construct whose only purpose is to confuse
          people about what it means to have a dependency chain. I took that as an opportunity to grealy
          simplify the GC's use of dependency chaining.
        
        - Added more logic to Deque<>, since I use it for part of the load balancer.
        
        - Made it possible to profile lock contention. See
          https://bugs.webkit.org/show_bug.cgi?id=180250#c0 for some preliminary measurements.
        
        - Introduced holdLockIf, which makes it easy to perform predicated lock acquisition. We use that
          to pick a lock in WebCore.
        
        - Introduced CountingLock. It's like WTF::Lock except it also enables optimistic read transactions
          sorta like Java's StampedLock.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/Atomics.h:
        (WTF::dependency):
        (WTF::DependencyWith::DependencyWith): Deleted.
        (WTF::dependencyWith): Deleted.
        * wtf/BitVector.h:
        (WTF::BitVector::iterator::operator++):
        * wtf/CMakeLists.txt:
        * wtf/ConcurrentPtrHashSet.cpp: Added.
        (WTF::ConcurrentPtrHashSet::ConcurrentPtrHashSet):
        (WTF::ConcurrentPtrHashSet::~ConcurrentPtrHashSet):
        (WTF::ConcurrentPtrHashSet::deleteOldTables):
        (WTF::ConcurrentPtrHashSet::clear):
        (WTF::ConcurrentPtrHashSet::initialize):
        (WTF::ConcurrentPtrHashSet::addSlow):
        (WTF::ConcurrentPtrHashSet::resizeIfNecessary):
        (WTF::ConcurrentPtrHashSet::resizeAndAdd):
        (WTF::ConcurrentPtrHashSet::Table::create):
        * wtf/ConcurrentPtrHashSet.h: Added.
        (WTF::ConcurrentPtrHashSet::contains):
        (WTF::ConcurrentPtrHashSet::add):
        (WTF::ConcurrentPtrHashSet::size const):
        (WTF::ConcurrentPtrHashSet::Table::maxLoad const):
        (WTF::ConcurrentPtrHashSet::hash):
        (WTF::ConcurrentPtrHashSet::cast):
        (WTF::ConcurrentPtrHashSet::containsImpl const):
        (WTF::ConcurrentPtrHashSet::addImpl):
        * wtf/Deque.h:
        (WTF::inlineCapacity>::takeFirst):
        * wtf/FastMalloc.h:
        * wtf/Lock.cpp:
        (WTF::LockBase::lockSlow):
        * wtf/Locker.h:
        (WTF::holdLockIf):
        * wtf/ScopedLambda.h:
        * wtf/SharedTask.h:
        (WTF::SharedTask<PassedResultType):
        (WTF::SharedTask<ResultType): Deleted.
        * wtf/StackShot.h: Added.
        (WTF::StackShot::StackShot):
        (WTF::StackShot::operator=):
        (WTF::StackShot::array const):
        (WTF::StackShot::size const):
        (WTF::StackShot::operator bool const):
        (WTF::StackShot::operator== const):
        (WTF::StackShot::hash const):
        (WTF::StackShot::isHashTableDeletedValue const):
        (WTF::StackShot::operator> const):
        (WTF::StackShot::deletedValueArray):
        (WTF::StackShotHash::hash):
        (WTF::StackShotHash::equal):
        * wtf/StackShotProfiler.h: Added.
        (WTF::StackShotProfiler::StackShotProfiler):
        (WTF::StackShotProfiler::profile):
        (WTF::StackShotProfiler::run):

2017-12-05  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Use m_suspendCount instead of m_suspended flag in Thread
        https://bugs.webkit.org/show_bug.cgi?id=180427

        Reviewed by Carlos Garcia Campos.

        When resuming the thread, signal handler is reinvoked once before `sigsuspend` is resumed.
        But this handler should not do anything since it is just a signal for `sigsuspend`.
        Previously, we use m_suspenedd flag to distinguish between suspending and resuming signal
        handler invocations.

        But this additional m_suspended flag is not necessary since we can use m_suspendCount instead.
        This patch drops m_suspended and use m_suspendCount. Since semaphore operations emit full memory
        barrier, m_suspendCount is loaded and stored as we expect.

        * wtf/Threading.h:
        * wtf/ThreadingPthreads.cpp:
        (WTF::Thread::signalHandlerSuspendResume):
        (WTF::Thread::suspend):
        (WTF::Thread::resume):

2017-12-04  Simon Fraser  <simon.fraser@apple.com>

        Minor DisplayRefreshMonitor-related cleanup
        https://bugs.webkit.org/show_bug.cgi?id=179802

        Reviewed by Sam Weinig.

        New trace point for when the CVDisplayLink fires on its own thread.

        * wtf/SystemTracing.h:

2017-12-04  JF Bastien  <jfbastien@apple.com>

        Update std::expected to match libc++ coding style
        https://bugs.webkit.org/show_bug.cgi?id=180264

        Reviewed by Alex Christensen.

        As of https://wg21.link/p0323r4 std::expected is on its way to the
        Library Fundamentals v3 TS (LEWG and EWG voted for this, but LWG
        hasn't done wording review yet, hence "on its way"). The API is
        therefore pretty close to what will be in the TS, and I've gotten
        requests for an easily usable implementation of std::expected. I
        talked to our clang team and they'll help me migrate our
        implementation to libc++, but our implementation has to look more
        like libc++ than it does now. Once in libc++ I'll maintain changes
        on both sides to make sure neither is out-of-date for too long.

        - Fork std::unexpected into its own header.
        - Add mild support for an exception-based implementation, but
          don't do noexcept yet.
        - Rename everything to follow STL style, and keep a global using
          or variable alias where possible to reduce WebKit code churn.
        - Minor API updates to remove things that aren't in the proposal
          anymore.

        * wtf/Expected.h:
        (std::experimental::fundamentals_v3::bad_expected_access<void>::bad_expected_access):
        (std::experimental::fundamentals_v3::bad_expected_access::bad_expected_access):
        (std::experimental::fundamentals_v3::bad_expected_access::error):
        (std::experimental::fundamentals_v3::bad_expected_access::error const):
        (std::experimental::fundamentals_v3::__expected_detail::constexpr_base::constexpr_base):
        (std::experimental::fundamentals_v3::__expected_detail::base::base):
        (std::experimental::fundamentals_v3::__expected_detail::base::~base):
        (std::experimental::fundamentals_v3::expected::expected):
        (std::experimental::fundamentals_v3::expected::operator=):
        (std::experimental::fundamentals_v3::expected::swap):
        (std::experimental::fundamentals_v3::expected::operator-> const):
        (std::experimental::fundamentals_v3::expected::operator->):
        (std::experimental::fundamentals_v3::expected::operator* const):
        (std::experimental::fundamentals_v3::expected::operator*):
        (std::experimental::fundamentals_v3::expected::has_value const):
        (std::experimental::fundamentals_v3::expected::value const):
        (std::experimental::fundamentals_v3::expected::value):
        (std::experimental::fundamentals_v3::expected::error const):
        (std::experimental::fundamentals_v3::expected::error):
        (std::experimental::fundamentals_v3::expected::value_or const):
        (std::experimental::fundamentals_v3::expected::value_or):
        (std::experimental::fundamentals_v3::operator==):
        (std::experimental::fundamentals_v3::operator!=):
        (std::experimental::fundamentals_v3::swap):
        (WTF::Unexpected::Unexpected): Deleted.
        (WTF::Unexpected::value const): Deleted.
        (WTF::Unexpected::value): Deleted.
        (WTF::operator==): Deleted.
        (WTF::operator!=): Deleted.
        (WTF::makeUnexpected): Deleted.
        (WTF::ExpectedDetail::Throw): Deleted.
        (WTF::ExpectedDetail::destroy): Deleted.
        (WTF::ExpectedDetail::std::is_trivially_destructible<T>::value): Deleted.
        (WTF::ExpectedDetail::ConstexprBase::ConstexprBase): Deleted.
        (WTF::ExpectedDetail::Base::Base): Deleted.
        (WTF::ExpectedDetail::Base::~Base): Deleted.
        (WTF::Expected::Expected): Deleted.
        (WTF::Expected::operator=): Deleted.
        (WTF::Expected::swap): Deleted.
        (WTF::Expected::operator-> const): Deleted.
        (WTF::Expected::operator->): Deleted.
        (WTF::Expected::operator* const): Deleted.
        (WTF::Expected::operator*): Deleted.
        (WTF::Expected::operator bool const): Deleted.
        (WTF::Expected::hasValue const): Deleted.
        (WTF::Expected::value const): Deleted.
        (WTF::Expected::value): Deleted.
        (WTF::Expected::error const): Deleted.
        (WTF::Expected::error): Deleted.
        (WTF::Expected::getUnexpected const): Deleted.
        (WTF::Expected::valueOr const): Deleted.
        (WTF::Expected::valueOr): Deleted.
        (WTF::swap): Deleted.
        (WTF::makeExpected): Deleted.
        (WTF::makeExpectedFromError): Deleted.
        * wtf/Forward.h:
        * wtf/Optional.h:
        * wtf/StdLibExtras.h:
        * wtf/Unexpected.h: Added.
        (std::experimental::fundamentals_v3::unexpected::unexpected):
        (std::experimental::fundamentals_v3::unexpected::value const):
        (std::experimental::fundamentals_v3::unexpected::value):
        (std::experimental::fundamentals_v3::operator==):
        (std::experimental::fundamentals_v3::operator!=):
        (makeUnexpected):

2017-12-03  Tomas Popela  <tpopela@redhat.com>

        Build fails on x86_64 and arm64 with BMalloc disabled
        https://bugs.webkit.org/show_bug.cgi?id=180188

        Reviewed by Carlos Garcia Campos.

        Add missing methods in WTF's Gigacage.h and fix g_gigacageBasePtr
        definition.

        * wtf/Gigacage.cpp:
        * wtf/Gigacage.h:
        (Gigacage::basePtr):
        (Gigacage::isEnabled):

2017-12-03  Yusuke Suzuki  <utatane.tea@gmail.com>

        WTF shouldn't have both Thread and ThreadIdentifier
        https://bugs.webkit.org/show_bug.cgi?id=180308

        Reviewed by Darin Adler.

        We should use a pointer of WTF::Thread instead of ThreadIdentifier.

        One problem is that Windows support library uses WTF::createThread,
        which returns ThreadIdentifier. So we cannot drop ThreadIdentifier
        in Windows environment. This patch keeps ThreadIdentifier in Windows.

        * wtf/MainThread.cpp:
        (WTF::initializeMainThread):
        (WTF::isMainThread):
        (WTF::canAccessThreadLocalDataForThread):
        * wtf/MainThread.h:
        * wtf/ParkingLot.cpp:
        (WTF::ParkingLot::parkConditionallyImpl):
        (WTF::ParkingLot::unparkOne):
        (WTF::ParkingLot::unparkOneImpl):
        (WTF::ParkingLot::unparkCount):
        * wtf/RecursiveLockAdapter.h:
        (WTF::RecursiveLockAdapter::lock):
        (WTF::RecursiveLockAdapter::unlock):
        (WTF::RecursiveLockAdapter::tryLock):
        * wtf/Threading.cpp:
        (WTF::Thread::dump const):
        * wtf/Threading.h:
        (WTF::Thread::id const):
        (WTF::Thread::operator==): Deleted.
        (WTF::Thread::operator!=): Deleted.
        (WTF::currentThread): Deleted.
        * wtf/ThreadingPrimitives.h:
        * wtf/ThreadingPthreads.cpp:
        (WTF::Thread::waitForCompletion):
        (WTF::Thread::detach):
        (WTF::Thread::initializeCurrentTLS):
        (WTF::Thread::suspend):
        (WTF::Thread::establishPlatformSpecificHandle):
        (WTF::Thread::currentID): Deleted.
        * wtf/ThreadingWin.cpp:
        (WTF::Thread::waitForCompletion):
        (WTF::Thread::suspend):
        (WTF::Thread::currentDying):
        * wtf/mac/MainThreadMac.mm:
        (WTF::initializeApplicationUIThread):
        (WTF::initializeWebThreadPlatform):
        (WTF::canAccessThreadLocalDataForThread):
        (WTF::initializeApplicationUIThreadIdentifier): Deleted.
        (WTF::initializeWebThreadIdentifier): Deleted.

2017-12-03  Darin Adler  <darin@apple.com>

        Add WTF::Hasher, an easier to use replacement for WTF::IntegerHasher
        https://bugs.webkit.org/show_bug.cgi?id=180318

        Reviewed by JF Bastien.

        * WTF.xcodeproj/project.pbxproj: Added Hasher.h.
        * wtf/CMakeLists.txt: Ditto.

        * wtf/Forward.h: Added Hasher and TextStream.

        * wtf/Hasher.h: Moved StringHasher into a separate header. Added Hasher.
        Marked IntegerHasher deprecated.

        * wtf/text/CString.cpp: Include StringHasher.h instead of Hasher.h.
        * wtf/text/StringHash.h: Ditto.

        * wtf/text/StringHasher.h: Added. Moved StringHasher here from Hasher.h.

        * wtf/text/StringImpl.h: Include StringHasher.h instead of Hasher.h.

        * wtf/text/WTFString.h: Added a hash function. This was useful in some
        adoption I was doing in WebCore, not included in this patch.

        * wtf/unicode/UTF8.cpp: Include StringHasher.h instead of Hasher.h.

2017-12-02  Brady Eidson  <beidson@apple.com>

        Factor out the "databaseTaskQueue" parts of IDBServer into something reusable.
        https://bugs.webkit.org/show_bug.cgi?id=180298

        Reviewed by Chris Dumez.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:

        * wtf/CrossThreadTaskHandler.cpp: Added.
        (WTF::CrossThreadTaskHandler::CrossThreadTaskHandler):
        (WTF::CrossThreadTaskHandler::~CrossThreadTaskHandler):
        (WTF::CrossThreadTaskHandler::postTask):
        (WTF::CrossThreadTaskHandler::postTaskReply):
        (WTF::CrossThreadTaskHandler::taskRunLoop):
        (WTF::CrossThreadTaskHandler::handleTaskRepliesOnMainThread):
        * wtf/CrossThreadTaskHandler.h: Added.

2017-12-01  Mark Lam  <mark.lam@apple.com>

        Let's scramble ClassInfo pointers in cells.
        https://bugs.webkit.org/show_bug.cgi?id=180291
        <rdar://problem/35807620>

        Reviewed by JF Bastien.

        * wtf/ScrambledPtr.h:
        (WTF::ScrambledPtr::descrambled const):
        (WTF::ScrambledPtr::bits const):
        (WTF::ScrambledPtr::operator==):
        (WTF::ScrambledPtr::operator=):
        (WTF::ScrambledPtr::scramble):
        (WTF::ScrambledPtr::descramble):
        (WTF::ScrambledPtr:: const): Deleted.
        (WTF::ScrambledPtr::scrambledBits const): Deleted.

2017-12-01  Christopher Reid  <chris.reid@sony.com>

        Move DateComponents into WTF
        https://bugs.webkit.org/show_bug.cgi?id=180211

        Reviewed by Myles C. Maxfield.

        Moved DateComponents from WebCore/platform into WTF.
        Removed isLeapYear from DateComponents as DateMath already has that function.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/DateComponents.cpp: Renamed from Source\WebCore\platform\DateComponents.cpp.
        * wtf/DateComponents.h: Renamed from Source\WebCore\platform\DateComponents.h.

2017-12-01  Youenn Fablet  <youenn@apple.com>

        Implement https://w3c.github.io/ServiceWorker/#clients-get
        https://bugs.webkit.org/show_bug.cgi?id=180167

        Reviewed by Chris Dumez.

        * wtf/text/StringView.h:
        (WTF::StringView::toUInt64Strict const):
        * wtf/text/WTFString.h:

2017-12-01  Brian Burg  <bburg@apple.com>

        Web Inspector: move Inspector::Protocol::Array<T> to JSON namespace
        https://bugs.webkit.org/show_bug.cgi?id=173662

        Reviewed by Joseph Pecoraro.

        Move Inspector::Protocol::Array<T> to JSON::ArrayOf<T>.

        * wtf/JSONValues.h:
        (WTF::JSONImpl::ArrayOf::ArrayOf):
        (WTF::JSONImpl::ArrayOf::openAccessors):
        (WTF::JSONImpl::ArrayOf::addItem):
        (WTF::JSONImpl::ArrayOf::create):

2017-12-01  Brady Eidson  <beidson@apple.com>

        Add Internals.terminateServiceWorker, and the ability to restart service workers for postMessage.
        https://bugs.webkit.org/show_bug.cgi?id=180170

        Reviewed by Chris Dumez.

        * wtf/CompletionHandler.h:
        (WTF::CompletionHandler<Out):

2017-11-30  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Remove easy toRemove & map.remove() use in OAS phase
        https://bugs.webkit.org/show_bug.cgi?id=180208

        Reviewed by Mark Lam.

        * wtf/HashMap.h:
        (WTF::X>::removeIf):
        * wtf/HashSet.h:
        (WTF::V>::removeIf):
        * wtf/HashTable.h:
        (WTF::KeyTraits>::removeIf):

2017-11-30  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r225362.
        https://bugs.webkit.org/show_bug.cgi?id=180225

        removeIf predicate function can touch remove target set
        (Requested by yusukesuzuki on #webkit).

        Reverted changeset:

        "[JSC] Remove easy toRemove & map.remove() use"
        https://bugs.webkit.org/show_bug.cgi?id=180208
        https://trac.webkit.org/changeset/225362

2017-11-30  Mark Lam  <mark.lam@apple.com>

        Let's scramble MacroAssemblerCodePtr values.
        https://bugs.webkit.org/show_bug.cgi?id=180169
        <rdar://problem/35758340>

        Reviewed by Filip Pizlo, Saam Barati, and JF Bastien.

        Introduce a ScrambledPtr class to facilitate scrambling.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/ScrambledPtr.cpp: Added.
        (WTF::makeScrambledPtrKey):
        * wtf/ScrambledPtr.h: Added.
        (WTF::ScrambledPtr::ScrambledPtr):
        (WTF::ScrambledPtr::paranoidAssertIsScrambled const):
        (WTF::ScrambledPtr::paranoidAssertIsNotScrambled const):
        (WTF::ScrambledPtr:: const):
        (WTF::ScrambledPtr::operator-> const):
        (WTF::ScrambledPtr::scrambledBits const):
        (WTF::ScrambledPtr::operator! const):
        (WTF::ScrambledPtr::operator bool const):
        (WTF::ScrambledPtr::operator== const):
        (WTF::ScrambledPtr::operator==):
        (WTF::ScrambledPtr::scramble):
        (WTF::ScrambledPtr::descramble):

2017-11-30  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Remove easy toRemove & map.remove() use
        https://bugs.webkit.org/show_bug.cgi?id=180208

        Reviewed by Mark Lam.

        Return bool from removeIf. It is true if removeIf removes at least one entry.
        This interface is similar to existing HashSet::remove, which returns true
        if it actually removes entry.

        * wtf/HashMap.h:
        (WTF::X>::removeIf):
        * wtf/HashSet.h:
        (WTF::V>::removeIf):
        * wtf/HashTable.h:
        (WTF::KeyTraits>::removeIf):

2017-11-30  Chris Dumez  <cdumez@apple.com>

        Populate self.registration.installing/waiting/active inside service workers
        https://bugs.webkit.org/show_bug.cgi?id=180168

        Reviewed by Brady Eidson.

        Add CrossThreadCopier support for std::optional<>.

        * wtf/CrossThreadCopier.h:

2017-11-29  JF Bastien  <jfbastien@apple.com>

        WTF / bmalloc: don't write to 0xbbadbeef when ASAN is looking
        https://bugs.webkit.org/show_bug.cgi?id=180175

        Reviewed by Mark Lam.

        ASAN knows that 0xbbadbeef is a bbad aaddress, and tells us so
        when we write to it, say in an assert. That creates bbad error
        reports where ASAN thinks we write to an invalid address, instead
        of thinking that we hit an assertion. In some cases, tooling that
        use fuzzers aggregate similar issues, and think that we just have
        the one bug and not a bunch of different asserts.

        * wtf/Assertions.cpp:
        * wtf/Assertions.h:

2017-11-29  Filip Pizlo  <fpizlo@apple.com>

        GC should support isoheaps
        https://bugs.webkit.org/show_bug.cgi?id=179288

        Reviewed by Saam Barati.
        
        One of my favorite data structures in the GC is a singly-linked list that knows its tail, so that
        things get added to it at the end rather that at the beginning. In this patch, I use this to put
        the same node on multiple lists, which our existing linked list templates also don't support.
        
        This adds a new linked list that does those things:
        
        - It supports append(). It could also support prepend(), but currently there is no need for it.
        
        - It supports nodes that are on multiple lists. The GC uses std::mem_fn() to create a lambda that the
          list uses to set next.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/SinglyLinkedListWithTail.h: Added.
        (WTF::SinglyLinkedListWithTail::isEmpty const):
        (WTF::SinglyLinkedListWithTail::append):
        (WTF::SinglyLinkedListWithTail::first const):
        (WTF::SinglyLinkedListWithTail::last const):

2017-11-29  Stanislav Ocovaj  <stanislav.ocovaj@rt-rk.com>

        [DFG][MIPS] Enable DFG JIT on MIPS.
        https://bugs.webkit.org/show_bug.cgi?id=175447

        Reviewed by Carlos Alberto Lopez Perez.

        * wtf/Platform.h:

2017-11-29  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r225286.

        The source files within this patch have been marked as
        executable.

        Reverted changeset:

        "[MIPS][JSC] Implement MacroAssembler::probe support on MIPS"
        https://bugs.webkit.org/show_bug.cgi?id=175447
        https://trac.webkit.org/changeset/225286

2017-11-29  Stanislav Ocovaj  <stanislav.ocovaj@rt-rk.com>

        [DFG][MIPS] Enable DFG JIT on MIPS.
        https://bugs.webkit.org/show_bug.cgi?id=175447

        Reviewed by Carlos Alberto Lopez Perez.

        * wtf/Platform.h:

2017-11-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        Move JSONValues to WTF and convert uses of InspectorValues.h to JSONValues.h
        https://bugs.webkit.org/show_bug.cgi?id=173793

        Reviewed by Joseph Pecoraro.

        Based on patch by Brian Burg.

        Move the implementation into WTF. Put the actual implementation inside
        namespace WTF::JSONImpl so that the symbols in libwtf start with the WTF prefix.
        Also provide a top-level JSON namespace so that clients can write JSON::Value.
        This is essentially a typedef for the entire WTF::JSONImpl namespace.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/JSONValues.cpp: Renamed from Source/JavaScriptCore/inspector/InspectorValues.cpp.
        (JSON::Value::null):
        (JSON::Value::create):
        (JSON::Value::asValue):
        (JSON::Value::asObject):
        (JSON::Value::asArray):
        (JSON::Value::parseJSON):
        (JSON::Value::toJSONString const):
        (JSON::Value::asBoolean const):
        (JSON::Value::asDouble const):
        (JSON::Value::asInteger const):
        (JSON::Value::asString const):
        (JSON::Value::writeJSON const):
        (JSON::Value::memoryCost const):
        (JSON::ObjectBase::~ObjectBase):
        (JSON::ObjectBase::asObject):
        (JSON::ObjectBase::openAccessors):
        (JSON::ObjectBase::memoryCost const):
        (JSON::ObjectBase::getBoolean const):
        (JSON::ObjectBase::getString const):
        (JSON::ObjectBase::getObject const):
        (JSON::ObjectBase::getArray const):
        (JSON::ObjectBase::getValue const):
        (JSON::ObjectBase::remove):
        (JSON::ObjectBase::writeJSON const):
        (JSON::ObjectBase::ObjectBase):
        (JSON::ArrayBase::~ArrayBase):
        (JSON::ArrayBase::asArray):
        (JSON::ArrayBase::writeJSON const):
        (JSON::ArrayBase::ArrayBase):
        (JSON::ArrayBase::get const):
        (JSON::Object::create):
        (JSON::Array::create):
        (JSON::ArrayBase::memoryCost const):
        * wtf/JSONValues.h: Renamed from Source/JavaScriptCore/inspector/InspectorValues.h.
        (JSON::ObjectBase::find):
        (JSON::ObjectBase::find const):
        (JSON::ObjectBase::setBoolean):
        (JSON::ObjectBase::setInteger):
        (JSON::ObjectBase::setDouble):
        (JSON::ObjectBase::setString):
        (JSON::ObjectBase::setValue):
        (JSON::ObjectBase::setObject):
        (JSON::ObjectBase::setArray):
        (JSON::ArrayBase::pushBoolean):
        (JSON::ArrayBase::pushInteger):
        (JSON::ArrayBase::pushDouble):
        (JSON::ArrayBase::pushString):
        (JSON::ArrayBase::pushValue):
        (JSON::ArrayBase::pushObject):
        (JSON::ArrayBase::pushArray):

2017-11-28  Simon Fraser  <simon.fraser@apple.com>

        Modernize GraphicsLayer dumping
        https://bugs.webkit.org/show_bug.cgi?id=180067

        Reviewed by Sam Weinig.
        
        Expose the current indent.

        * wtf/text/TextStream.h:
        (WTF::TextStream::indent const):

2017-11-27  Chris Dumez  <cdumez@apple.com>

        Move callOnMainThreadAndWait() from SocketStreamHandleImplCFNet.cpp to MainThread.h
        https://bugs.webkit.org/show_bug.cgi?id=180060

        Reviewed by Alex Christensen.

        Move callOnMainThreadAndWait() from SocketStreamHandleImplCFNet.cpp to MainThread.h so that it can be reused.

        * wtf/MainThread.cpp:
        (WTF::callOnMainThreadAndWait):
        * wtf/MainThread.h:

2017-11-27  Simon Fraser  <simon.fraser@apple.com>

        Use TextStream's indent tracking, rather than passing indent to all the externalRepresentation() functions
        https://bugs.webkit.org/show_bug.cgi?id=180027

        Reviewed by Jon Lee.

        Remove all the indent arguments, and make use of TextStream::IndentScope to control
        output indentation.

        Add an indent stream manipulator so you can say
          ts << indent << "text"
        to write the indent.

        * wtf/text/TextStream.h:
        (WTF::TextStream::IndentScope::IndentScope):
        (WTF::TextStream::IndentScope::~IndentScope):

2016-08-05  Darin Adler  <darin@apple.com>

        Fix some minor problems in the StringImpl header
        https://bugs.webkit.org/show_bug.cgi?id=160630

        Reviewed by Brent Fulgham.

        * wtf/text/AtomicString.h: Update since CharacterMatchFunctionPtr is now
        CodeUnitMatchFunction.

        * wtf/text/StringCommon.h: Added CodeUnitMatchFunction, which replaces
        CharacterMatchFunctionPtr.

        * wtf/text/StringImpl.cpp:
        (WTF::StringImpl::stripMatchedCharacters): Changed template argument name
        to CodeUnitPredicate to help make it clear this works on code units, not
        code points.
        (WTF::UCharPredicate): Deleted.
        (WTF::SpaceOrNewlinePredicate): Deleted.
        (WTF::StringImpl::stripWhiteSpace): Removed unneeded use of predicate class to
        turn a function into a functor; functions already work fine as functors without
        a class wrapping them.
        (WTF::StringImpl::stripLeadingAndTrailingCharacters): Ditto. Also renamed
        from stripWhiteSpace, since it strips arbitrary characters.
        (WTF::StringImpl::removeCharacters): Fixed various minor style issues and
        updated to new type name.
        (WTF::StringImpl::simplifyMatchedCharactersToSpace): Ditto.
        (WTF::StringImpl::simplifyWhiteSpace): More of the same.
        (WTF::StringImpl::find): Ditto.

        * wtf/text/StringImpl.h: Removed unneeded include of uchar.h, since it's
        included by StringCommon.h. Removed =CharacterMatchFunctionPtr and
        IsWhiteSpaceFunctionPtr, both replaced by CodeUnitMatchFunction. Fixed
        a mistake recently introduced in isSpaceOrNewline, which was unnecessarily,
        inefficiently using ICU for non-ASCII Latin-1 characters.

        * wtf/text/StringView.h: Use CodeUnitMatchFunction instead of CharacterMatchFunction.

        * wtf/text/WTFString.cpp:
        (WTF::String::stripLeadingAndTrailingCharacters): Updated function name and type.
        (WTF::String::simplifyWhiteSpace): Updated type.
        (WTF::String::removeCharacters): Updated type.
        * wtf/text/WTFString.h: Ditto.

2017-11-23  Darin Adler  <darin@apple.com>

        Fix dictionary leak in lookup, convert FindOptions to OptionSet, tweak code style nearby
        https://bugs.webkit.org/show_bug.cgi?id=179981

        Reviewed by Sam Weinig.

        * wtf/OptionSet.h: Added some operators so it's easier to use | and - with individual
        options from the set.

2017-11-23  Darin Adler  <darin@apple.com>

        Reduce WTF::String operations that do unnecessary Unicode operations instead of ASCII
        https://bugs.webkit.org/show_bug.cgi?id=179907

        Reviewed by Sam Weinig.

        * wtf/text/ASCIIFastPath.h: Moved the using for charactersAreAllASCII here since
        the function is defined here.

        * wtf/text/AtomicString.h: Removed overloads of contains, find, startsWith, and
        endsWith that take a boolean indicating whether they should be "case sensitive".
        When false, this was doing Unicode case folding, and no callers needed that.
        Also tweaked formatting and argument names.

        * wtf/text/IntegerToStringConversion.h: Added an include of LChar.h since this file
        uses that. Also tweaked formatting a bit.

        * wtf/text/StringImpl.cpp:
        (WTF::StringImpl::containsOnlyWhitespace): Deleted. Despite its name sounding like
        it used the full Unicode whitespace definition, this actually checked isASCIISpace.
        Callers now all use isAllSpecialCharacters instead with the whitespace definition
        that is appropriate to each call site.
        (WTF::latin1CaseFoldTable): Deleted.
        (WTF::equalCompatibilityCaseless): Deleted.
        (WTF::StringImpl::findIgnoringCase): Deleted.
        (WTF::findIgnoringCaseInner): Deleted.
        (WTF::reverseFindIgnoringCaseInner): Deleted.
        (WTF::StringImpl::reverseFindIgnoringCase): Deleted.
        (WTF::equalInner): Removed boolean caseSensitive argument.
        (WTF::StringImpl::startsWith): Ditto.
        (WTF::StringImpl::endsWith): Ditto.

        * wtf/text/StringImpl.h: Moved TextCaseSensitivity out into a different header.
        Moved ASCIIFastPath.h include here from WTFString.h. Moved isAllSpecialCharacters
        free function here from WTFString.h. Moved lots of function bodies out of class
        definitions to make the class definitions easier to read. Sorted things a bit.
        Tweaked formatting. Marked constructor that takes one argument explicit. Added
        an isEmpty function like the one in String. Renamed copyChars to copyCharacters.
        Added isAllASCII, isAllLatin1 and isAllSpecialCharacters functions. Removed
        boolean caseSensitive arguments from various functions. Removed findIgnoringCase
        and reverseFindIgnoringCase. Added a FIXME to codePointCompare about the way it
        treats null and empty strings as equal. Changed length argument in remove to
        unsigned to match other lengths.

        * wtf/text/WTFString.cpp:
        (WTF::String::removeInternal): Changed length argument to be unsigned.
        (WTF::createWithFormatAndArguments): Use emptyString.
        (WTF::String::isSafeToSendToAnotherThread const): Rewrote to be easier to read.

        * wtf/text/WTFString.h: Moved ASCIIFastPath.h to StringImpl.h. Moved lots of
        function bodies out of class definitions to make the class definitions easier
        to read, made others one-liners. Removed the String::at function but kept the
        String::characterAt function; the two were identical. Removed boolean
        caseSensitive arguments from various functions. Removed findIgnoringCase and
        reverseFindIgnoringCase. Renamed containsOnlyASCII to isAllASCII and
        containsOnlyLatin1 to isAllLatin1 to match the naming of isAllSpecialCharacters.
        Moved the inline implementations of functions that are defined above further
        down, after things like the ASCIILiteral class and various functions.

        * wtf/text/icu/UTextProviderLatin1.cpp: Updated name of copyChars.

2017-11-22  Stephan Szabo  <stephan.szabo@sony.com>

        tuple related items are used in WTF without including tuple
        https://bugs.webkit.org/show_bug.cgi?id=179926

        Reviewed by Darin Adler.

        * wtf/HashFunctions.h:
        * wtf/PrintStream.h:
        * wtf/threads/Signals.h:

2017-11-21  Zan Dobersek  <zdobersek@igalia.com>

        Drop ENABLE_IMAGE_DECODER_DOWN_SAMPLING code
        https://bugs.webkit.org/show_bug.cgi?id=179921

        Reviewed by Carlos Garcia Campos.

        * wtf/FeatureDefines.h: Remove the ENABLE_IMAGE_DECODER_DOWN_SAMPLING
        definition.

2017-11-19  Tim Horton  <timothy_horton@apple.com>

        Remove unused TOUCH_ICON_LOADING feature flag
        https://bugs.webkit.org/show_bug.cgi?id=179873

        Reviewed by Simon Fraser.

        * wtf/FeatureDefines.h:

2017-11-19  Yusuke Suzuki  <utatane.tea@gmail.com>

        Add CPU(UNKNOWN) to cover all the unknown CPU types
        https://bugs.webkit.org/show_bug.cgi?id=179243

        Reviewed by JF Bastien.

        This patch adds a new CPU type, `CPU(UNKNOWN)` to cover all the unknown CPUs.
        This CPU architecture tells conservative assumption to make JSC work on all
        the unknown generic CPUs. And we make several CPUs (ALPHA, SH4, S390, S390X, IA64, IA64_32)
        UNKNOWN.

        We also make InlineASM available only for !CPU(UNKNOWN). In an unknown CPU, inline asm is not useful.

        And we also introduce a generic way to detect 64bit pointer environment by using
        __SIZEOF_POINTER__ predefined macro, or `UINTPTR_MAX > UINT32_MAX`.

        * wtf/InlineASM.h:
        * wtf/Platform.h:
        * wtf/dtoa/utils.h:

2017-11-19  Tim Horton  <timothy_horton@apple.com>

        Remove unused LEGACY_VENDOR_PREFIXES feature flag
        https://bugs.webkit.org/show_bug.cgi?id=179872

        Reviewed by Darin Adler.

        * wtf/FeatureDefines.h:

2017-11-19  Chris Dumez  <cdumez@apple.com>

        Fix potential thread safety issue in ThreadSafeIdentified
        https://bugs.webkit.org/show_bug.cgi?id=179879

        Reviewed by Darin Adler.

        Fix potential thread safety issue in ThreadSafeIdentified. Protect static std::atomic
        initialization with an std::call_once() given that we build with
        --fno-threadsafe-statics.

        * wtf/Identified.h:
        (WTF::Identified::Identified):
        (WTF::Identified::generateIdentifier):
        (WTF::ThreadSafeIdentified::ThreadSafeIdentified):
        (WTF::ThreadSafeIdentified::generateIdentifier):

2017-11-18  Darin Adler  <darin@apple.com>

        Eliminate some cases of double hashing, other related refactoring
        https://bugs.webkit.org/show_bug.cgi?id=179867

        Reviewed by Sam Weinig.

        * wtf/text/StringImpl.cpp:
        (WTF::StringImpl::containsOnlyWhitespace): Added FIXME.

2017-11-19  Chris Dumez  <cdumez@apple.com>

        Fix potential thread safety issue in generateThreadSafeObjectIdentifier()
        https://bugs.webkit.org/show_bug.cgi?id=179877

        Reviewed by Sam Weinig.

        Fix potential thread safety issue in generateThreadSafeObjectIdentifier().
        Protect std::atomic initialization with an std::call_once() given that we
        build with --fno-threadsafe-statics.

        * wtf/ObjectIdentifier.h:
        (WTF::generateThreadSafeObjectIdentifier):

2017-11-18  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Use system endianess information instead of relying CPU information
        https://bugs.webkit.org/show_bug.cgi?id=179861

        Reviewed by JF Bastien.

        Currently, we use known CPU information to determine endianess of the current
        architecture. But this means that unknown CPU does not work well in WebKit
        withou modifying code. Instead, we use compiler or system's macro to determine
        endianess. This paves the way to dropping many CPUs in Platform.h by replacing
        them with CPU(UNKNOWN)[1].

        [1]: https://bugs.webkit.org/show_bug.cgi?id=179243

        * wtf/Platform.h:

2017-11-18  Chris Dumez  <cdumez@apple.com>

        ASSERTION FAILED: registration in WebCore::SWServerJobQueue::scriptContextStarted(ServiceWorkerIdentifier)
        https://bugs.webkit.org/show_bug.cgi?id=179846

        Reviewed by Darin Adler.

        Add a generateThreadSafeObjectIdentifier() for generating an ObjectIdentifier
        in a thread-safe manner, using std::atomic.

        * wtf/ObjectIdentifier.h:
        (WTF::generateObjectIdentifier):
        (WTF::generateThreadSafeObjectIdentifier):

2017-11-18  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Remove CPU(HPPA) in StackBounds by using runtime stack direction test
        https://bugs.webkit.org/show_bug.cgi?id=179859

        Reviewed by JF Bastien.

        Currently, we know that CPU(HPPA)'s stack direction is upward! But listing
        CPU architectures here is not a scalable way.

        Instead, we use runtime stack direction test. By doing so, we can handle
        such a strange architecture without listing the CPU to Platform.h. This paves
        the way to dropping many CPUs in Platform.h by replacing them with CPU(UNKNOWN)[1].

        We also fix StackBounds::isGrowingDownward().

        [1]: https://bugs.webkit.org/show_bug.cgi?id=179243

        * wtf/StackBounds.cpp:
        (WTF::StackBounds::stackDirection):
        (WTF::testStackDirection2):
        (WTF::testStackDirection):
        (WTF::StackBounds::newThreadStackBounds):
        (WTF::StackBounds::currentThreadStackBoundsInternal):
        * wtf/StackBounds.h:
        (WTF::StackBounds::isGrowingDownward const):

2017-11-17  Chris Dumez  <cdumez@apple.com>

        Use a strongly typed identifier for SWServer::Connection
        https://bugs.webkit.org/show_bug.cgi?id=179848

        Reviewed by Brady Eidson.

        Make ObjectIdentifier a little more flexible to support more use cases.

        * wtf/ObjectIdentifier.h:
        (WTF::ObjectIdentifier::toUInt64 const):
        (WTF::makeObjectIdentifier):

2017-11-17  Simon Fraser  <simon.fraser@apple.com>

        Add a TimingScope class for microbenchmarking sections of code
        https://bugs.webkit.org/show_bug.cgi?id=179825

        Reviewed by Zalan Bujtas.
        
        Add a class, similar to B3TimingScope, which makes it easy to microbenchmark
        sections of code. Use looks like:
        
        TimingScope scope("some label", 100);
        
        where this will print mean scope duration every 100 calls. Sample output:
        
            FETurbulence::platformApplySoftware: 100 calls, mean duration: 3.073181ms
            FETurbulence::platformApplySoftware: 200 calls, mean duration: 3.074612ms
            FETurbulence::platformApplySoftware: 300 calls, mean duration: 3.065722ms
        
        Because TimingScope needs to store state beween invocations, and there may be
        multiple TimingScopes in use at the same time, data is stored in a global
        hash map with atomic access.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/TimingScope.cpp: Added.
        (WTF::TimingScope::scopeDidEnd):
        * wtf/TimingScope.h: Added.
        (WTF::TimingScope::TimingScope):
        (WTF::TimingScope::~TimingScope):

2017-11-17  Alex Christensen  <achristensen@webkit.org>

        Clean up after r224952
        https://bugs.webkit.org/show_bug.cgi?id=179809

        Reviewed by Brady Eidson.

        * wtf/MainThread.cpp:
        (WTF::dispatchFunctionsFromMainThread):
        (WTF::callOnMainThread):
        * wtf/MainThread.h:
        * wtf/generic/MainThreadGeneric.cpp:
        (WTF::scheduleDispatchFunctionsOnMainThread):
        (WTF::currentRunLoopInCommonMode): Deleted.
        * wtf/mac/MainThreadMac.mm:
        (WTF::scheduleDispatchFunctionsOnMainThread):
        (WTF::currentRunLoopInCommonMode): Deleted.
        * wtf/win/MainThreadWin.cpp:
        (WTF::scheduleDispatchFunctionsOnMainThread):
        (WTF::currentRunLoopInCommonMode): Deleted.

2017-11-15  Alex Christensen  <achristensen@webkit.org>

        Fix fast/events/message-port-postMessage-recursive.html after r224896
        https://bugs.webkit.org/show_bug.cgi?id=179749

        Reviewed by Jer Noble.

        * wtf/mac/MainThreadMac.mm:
        (WTF::currentRunLoopInCommonMode):
        We sometimes run the runloop in kCFRunLoopDefaultMode, which should also have the responsiveness optimization.
        This allows the runloop to continue to iterate when we are doing lots of things on the main thread.
        CFRunLoop.h has a special definition of these two constants.

2017-11-15  Alex Christensen  <achristensen@webkit.org>

        WebViews scheduled in custom run loop modes should be able to do more than 50ms of work at a time
        https://bugs.webkit.org/show_bug.cgi?id=179742
        <rdar://problem/35519421>

        Reviewed by Jer Noble.
        
        In r224687 I fixed loading from scheduled WebViews with custom run loop modes, but in 
        dispatchFunctionsFromMainThread we have an optimization to yield the run loop if we have already
        done more than 50ms of work on the main thread in this run loop iteration.  When this happens
        and we are running in a custom run loop mode, we disable this responsiveness optimization.
        We are calling CFRunLoopRunInMode or [NSRunLoop acceptInputForMode:beforeDate:] in a while loop anyways,
        so we would not benefit from a responsiveness optimization.  We definitely don't want to reschedule
        on the main thread in the common run loop mode in this case.

        * wtf/MainThread.cpp:
        (WTF::dispatchFunctionsFromMainThread):
        * wtf/MainThread.h:
        * wtf/generic/MainThreadGeneric.cpp:
        (WTF::currentRunLoopInCommonMode):
        * wtf/mac/MainThreadMac.mm:
        (WTF::currentRunLoopInCommonMode):
        * wtf/win/MainThreadWin.cpp:
        (WTF::currentRunLoopInCommonMode):

2017-11-15  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r224863.

        Introduced LayoutTest crashes on iOS Simulator.

        Reverted changeset:

        "Move JSONValues to WTF and convert uses of InspectorValues.h
        to JSONValues.h"
        https://bugs.webkit.org/show_bug.cgi?id=173793
        https://trac.webkit.org/changeset/224863

2017-11-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        Move JSONValues to WTF and convert uses of InspectorValues.h to JSONValues.h
        https://bugs.webkit.org/show_bug.cgi?id=173793

        Reviewed by Brian Burg.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/JSONValues.cpp: Renamed from Source/JavaScriptCore/inspector/InspectorValues.cpp.
        (JSON::Value::null):
        (JSON::Value::create):
        (JSON::Value::asValue):
        (JSON::Value::asObject):
        (JSON::Value::asArray):
        (JSON::Value::parseJSON):
        (JSON::Value::toJSONString const):
        (JSON::Value::asBoolean const):
        (JSON::Value::asDouble const):
        (JSON::Value::asInteger const):
        (JSON::Value::asString const):
        (JSON::Value::writeJSON const):
        (JSON::Value::memoryCost const):
        (JSON::ObjectBase::~ObjectBase):
        (JSON::ObjectBase::asObject):
        (JSON::ObjectBase::openAccessors):
        (JSON::ObjectBase::memoryCost const):
        (JSON::ObjectBase::getBoolean const):
        (JSON::ObjectBase::getString const):
        (JSON::ObjectBase::getObject const):
        (JSON::ObjectBase::getArray const):
        (JSON::ObjectBase::getValue const):
        (JSON::ObjectBase::remove):
        (JSON::ObjectBase::writeJSON const):
        (JSON::ObjectBase::ObjectBase):
        (JSON::ArrayBase::~ArrayBase):
        (JSON::ArrayBase::asArray):
        (JSON::ArrayBase::writeJSON const):
        (JSON::ArrayBase::ArrayBase):
        (JSON::ArrayBase::get const):
        (JSON::Object::create):
        (JSON::Array::create):
        (JSON::ArrayBase::memoryCost const):
        * wtf/JSONValues.h: Renamed from Source/JavaScriptCore/inspector/InspectorValues.h.
        (JSON::ObjectBase::find):
        (JSON::ObjectBase::find const):
        (JSON::ObjectBase::setBoolean):
        (JSON::ObjectBase::setInteger):
        (JSON::ObjectBase::setDouble):
        (JSON::ObjectBase::setString):
        (JSON::ObjectBase::setValue):
        (JSON::ObjectBase::setObject):
        (JSON::ObjectBase::setArray):
        (JSON::ArrayBase::pushBoolean):
        (JSON::ArrayBase::pushInteger):
        (JSON::ArrayBase::pushDouble):
        (JSON::ArrayBase::pushString):
        (JSON::ArrayBase::pushValue):
        (JSON::ArrayBase::pushObject):
        (JSON::ArrayBase::pushArray):

2017-11-14  Alex Christensen  <achristensen@webkit.org>

        Remove Cocoa CFURLConnection loading code
        https://bugs.webkit.org/show_bug.cgi?id=179688

        Reviewed by Antti Koivisto.

        * wtf/SchedulePair.h:
        * wtf/SchedulePairMac.mm:

2017-11-13  Brady Eidson  <beidson@apple.com>

        Massive "Server-process-to-context-process" connection overhaul.
        https://bugs.webkit.org/show_bug.cgi?id=179554

        Reviewed by Chris Dumez.

        * wtf/ObjectIdentifier.h:
        (WTF::generateObjectIdentifier):
        (WTF::makeObjectIdentifier): Deleted.

2017-11-13  JF Bastien  <jfbastien@apple.com>

        std::expected: fix and test move
        https://bugs.webkit.org/show_bug.cgi?id=179617

        Reviewed by Alex Christensen.

        Non-copyable move types should be able to be in an expected
        properly.

        * wtf/Expected.h:
        (WTF::Expected::value const):
        (WTF::Expected::error):
        (WTF::Expected::error const):

2017-11-10  Jer Noble  <jer.noble@apple.com>

        Add a FairPlay Streaming based CDM for Modern EME
        https://bugs.webkit.org/show_bug.cgi?id=179499
        <rdar://problem/35445033>

        Reviewed by Eric Carlson.

        * wtf/Platform.h:

2017-11-10  Alex Christensen  <achristensen@webkit.org>

        REGRESSION(r224267): WebViews scheduled with custom run loop modes don't load
        https://bugs.webkit.org/show_bug.cgi?id=179515
        <rdar://problem/35445245>

        Reviewed by Andy Estes.

        * wtf/MainThread.cpp:
        (WTF::callOnMainThread):
        * wtf/MainThread.h:
        (WTF::callOnMainThread):
        (WTF::scheduleDispatchFunctionsOnMainThread):
        * wtf/generic/MainThreadGeneric.cpp:
        (WTF::scheduleDispatchFunctionsOnMainThread):
        * wtf/mac/MainThreadMac.mm:
        (WTF::scheduleDispatchFunctionsOnMainThread):
        * wtf/win/MainThreadWin.cpp:
        (WTF::scheduleDispatchFunctionsOnMainThread):
        Add an optional parameter which is an array of run loop mode names to pass to performSelectorOnMainThread.

2017-11-10  Ms2ger  <Ms2ger@igalia.com>

        Export tryFastZeroedMalloc.
        https://bugs.webkit.org/show_bug.cgi?id=179051

        Reviewed by Michael Catanzaro.

        The other functions were exported in bug 72855. There does not seem to be a
        reason not to export this one.

        * wtf/FastMalloc.h:

2017-11-09  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r224661.

        Broke build on several internal Mac/iOS bots

        Reverted changeset:

        "Ignore HSTS for partitioned, cross-origin subresource
        requests"
        https://bugs.webkit.org/show_bug.cgi?id=178993
        https://trac.webkit.org/changeset/224661

2017-11-09  John Wilander  <wilander@apple.com>

        Ignore HSTS for partitioned, cross-origin subresource requests
        https://bugs.webkit.org/show_bug.cgi?id=178993
        <rdar://problem/34962462>

        Reviewed by Brent Fulgham.

        * wtf/Platform.h:
            Added HAVE_CFNETWORK_IGNORE_HSTS.

2017-11-08  Tim Horton  <timothy_horton@apple.com>

        [ios-simulator] API test WebKit.BundleParameters is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=178363
        <rdar://problem/35043144>

        Reviewed by Brent Fulgham.

        * wtf/RefCounter.h:
        (WTF::RefCounter<T>::Count::deref):
        (WTF::RefCounter<T>::Count::refCounterWasDeleted):
        (WTF::RefCounter<T>::~RefCounter):
        If a RefCounter::Count is deref()'d and drops its RefCounter's value to
        zero, and the RefCounter is deleted in that valueDidChangeCallback, it
        will delete the Counter that is in the middle of deref(). Keep track
        of whether we're inside the callback and defer the deletion until
        the end of deref().

2017-11-07  Maciej Stachowiak  <mjs@apple.com>

        Get rid of unsightly hex numbers from unified build object files
        https://bugs.webkit.org/show_bug.cgi?id=179410

        Reviewed by Saam Barati.

        * Scripts/generate-unified-source-bundles.rb: For extensions other than "cpp", also include 
        the extension in the base name of the file, to avoid ugly Xcode-generated object file names.

2017-11-07  Filip Pizlo  <fpizlo@apple.com>

        Disable isoheaps on iOS

        Reviewed by Ryosuke Niwa.

        * wtf/IsoMalloc.h:

2017-11-07  Brady Eidson  <beidson@apple.com>

        Implement "UpdateWorkerState" and use it
        https://bugs.webkit.org/show_bug.cgi?id=179318

        Reviewed by Chris Dumez.

        * wtf/ObjectIdentifier.h:
        (WTF::ObjectIdentifier::loggingString const):

2017-11-07  Michael Saboff  <msaboff@apple.com>

        Add SPI function pointers qualifiers for CPU(ARM64E)
        https://bugs.webkit.org/show_bug.cgi?id=179383

        Reviewed by Mark Lam.

        For ARM64E, use the appropriate SPI qualifiers for helper function pointers.

        * wtf/BlockPtr.h:
        (WTF::BlockPtr<R):

2017-10-31  Filip Pizlo  <fpizlo@apple.com>

        bmalloc should support strictly type-segregated isolated heaps
        https://bugs.webkit.org/show_bug.cgi?id=178108

        Reviewed by Saam Barati, Simon Fraser, and Ryosuke Niwa.
        
        This just adds an easy way of using the bmalloc IsoHeap API in WebKit. If bmalloc is not
        enabled, these macros will just make the object FastMalloced.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/FastTLS.h:
        * wtf/IsoMalloc.h: Added.
        * wtf/IsoMallocInlines.h: Added.

2017-11-06  Christopher Reid  <chris.reid@sony.com>

        Use enum classes within FileSystem
        https://bugs.webkit.org/show_bug.cgi?id=175172

        Reviewed by Myles C. Maxfield.

        Adding a helper function for converting enum classes to their underlying type when necessary.

        * wtf/EnumTraits.h:

2017-11-06  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE][GTK] Always use SET_AND_EXPOSE_TO_BUILD to set build variables
        https://bugs.webkit.org/show_bug.cgi?id=179038

        Reviewed by Žan Doberšek.

        * wtf/Platform.h:

2017-11-03  Chris Dumez  <cdumez@apple.com>

        Use a single identifier type to identify Service Workers
        https://bugs.webkit.org/show_bug.cgi?id=179192

        Reviewed by Brady Eidson.

        Introduce class for strongly typed identifiers. This avoids mixing up
        different types of identifiers.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/ObjectIdentifier.h: Added.
        (WTF::ObjectIdentifier::encode const):
        (WTF::ObjectIdentifier::decode):
        (WTF::ObjectIdentifier::operator== const):
        (WTF::ObjectIdentifier::operator!= const):
        (WTF::ObjectIdentifier::ObjectIdentifier):
        (WTF::makeObjectIdentifier):
        (WTF::ObjectIdentifierHash::hash):
        (WTF::ObjectIdentifierHash::equal):
        (WTF::HashTraits<ObjectIdentifier<T>>::emptyValue):
        (WTF::HashTraits<ObjectIdentifier<T>>::constructDeletedValue):
        (WTF::HashTraits<ObjectIdentifier<T>>::isDeletedValue):

2017-11-02  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r224353.

        Breaks internal builds.

        Reverted changeset:

        "Ignore HSTS for partitioned, cross-origin subresource
        requests"
        https://bugs.webkit.org/show_bug.cgi?id=178993
        https://trac.webkit.org/changeset/224353

2017-11-02  John Wilander  <wilander@apple.com>

        Ignore HSTS for partitioned, cross-origin subresource requests
        https://bugs.webkit.org/show_bug.cgi?id=178993
        <rdar://problem/34962462>

        Reviewed by Brent Fulgham and Alex Christensen.

        * wtf/Platform.h:
            Added HAVE_CFNETWORK_IGNORE_HSTS.

2017-11-02  Frederic Wang  <fwang@igalia.com>

        Add references to bug 179167 in FIXME comments
        https://bugs.webkit.org/show_bug.cgi?id=179168

        Reviewed by Daniel Bates.

        * wtf/FeatureDefines.h:

2017-11-01  Jiewen Tan  <jiewen_tan@apple.com>

        Let is<T>() accept RefPtrs
        https://bugs.webkit.org/show_bug.cgi?id=178612
        <rdar://problem/35102004>

        Reviewed by Ryosuke Niwa.

        Add support for is<T>() for RefPtrs.

        * wtf/RefPtr.h:
        (WTF::is):

2017-11-01  Simon Fraser  <simon.fraser@apple.com>

        Misc display list and other cleanup
        https://bugs.webkit.org/show_bug.cgi?id=179150

        Reviewed by Tim Horton.

        Add system trace points for display list recording.

        * wtf/SystemTracing.h:

2017-11-01  Fujii Hironori  <Hironori.Fujii@sony.com>

        Use LazyNeverDestroyed instead of DEFINE_GLOBAL
        https://bugs.webkit.org/show_bug.cgi?id=174979

        Reviewed by Yusuke Suzuki.

        DEFINE_GLOBAL is not used anymore. Remove it.

        * WTF.xcodeproj/project.pbxproj: Removed StaticConstructors.h
        * config.h: Removed definitions of SKIP_STATIC_CONSTRUCTORS_ON_MSVC and SKIP_STATIC_CONSTRUCTORS_ON_GCC.
        * wtf/CMakeLists.txt: Removed StaticConstructors.h
        * wtf/StaticConstructors.h: Removed.

2017-10-30  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE] Fix build warnings
        https://bugs.webkit.org/show_bug.cgi?id=178899

        Reviewed by Carlos Alberto Lopez Perez.

        * wtf/PlatformWPE.cmake:

2017-10-27  Yousuke Kimoto  <yousuke.kimoto@sony.com>

        [WinCairo] Add WTF files for wincairo webkit
        https://bugs.webkit.org/show_bug.cgi?id=176894

        Reviewed by Alex Christensen.

        * wtf/PlatformWin.cmake:
        * wtf/WorkQueue.cpp:
        * wtf/WorkQueue.h:
        * wtf/win/Win32Handle.h:
        * wtf/win/WorkItemContext.cpp: Added.
        (WTF::WorkItemContext::WorkItemContext):
        (WTF::WorkItemContext::create):
        (WTF::WorkItemContext::~WorkItemContext):
        * wtf/win/WorkItemContext.h: Added.
        (WTF::WorkItemContext::handle):
        (WTF::WorkItemContext::waitHandle):
        (WTF::WorkItemContext::Function<void):
        (WTF::WorkItemContext::queue const):
        * wtf/win/WorkQueueWin.cpp:
        (WTF::WorkQueue::handleCallback):
        (WTF::WorkQueue::registerHandle):
        (WTF::WorkQueue::unregisterAndCloseHandle):
        (WTF::WorkQueue::unregisterWaitAndDestroyItemSoon):
        (WTF::WorkQueue::unregisterWaitAndDestroyItemCallback):

2017-10-27  Keith Miller  <keith_miller@apple.com>

        Add unified source list files and build scripts to Xcode project navigator
        https://bugs.webkit.org/show_bug.cgi?id=178959

        Reviewed by Andy Estes.

        * WTF.xcodeproj/project.pbxproj:

2017-10-26  Mark Lam  <mark.lam@apple.com>

        JSRopeString::RopeBuilder::append() should check for overflows.
        https://bugs.webkit.org/show_bug.cgi?id=178385
        <rdar://problem/35027468>

        Reviewed by Saam Barati.

        * wtf/CheckedArithmetic.h:

2017-10-25  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r222945.
        https://bugs.webkit.org/show_bug.cgi?id=178818

        "It made WasmBench crash" (Requested by saamyjoon on #webkit).

        Reverted changeset:

        "bmalloc mutex should be adaptive"
        https://bugs.webkit.org/show_bug.cgi?id=177839
        https://trac.webkit.org/changeset/222945

2017-10-25  Zan Dobersek  <zdobersek@igalia.com>

        Make SERVICE_WORKER feature buildable on GTK, WPE
        https://bugs.webkit.org/show_bug.cgi?id=178574

        Reviewed by Carlos Garcia Campos.

        * wtf/Identified.h: Explicitly include the <atomic> header since
        std::atomic<> is used in the ThreadSafeIdentified definition.

2017-10-24  Michael Saboff  <msaboff@apple.com>

        WTF: Eliminated PLATFORM checks for HAVE_MACH_EXCEPTIONS
        https://bugs.webkit.org/show_bug.cgi?id=178747

        Reviewed by Saam Barati.

        Removed unnecessary PLATFORM checks as they can cause build failures
        when the include file is present.

        * wtf/Platform.h:

2017-10-23  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Use fastJoin in Array#toString
        https://bugs.webkit.org/show_bug.cgi?id=178062

        Reviewed by Darin Adler.

        A bit cleaning up to use StringImpl::copyChars instead of
        using for-loop directly.

        * wtf/text/StringView.h:
        (WTF::StringView::getCharactersWithUpconvert const):

2017-10-20  Antoine Quint  <graouts@apple.com>

        [Web Animations] Provide basic timeline and animation interfaces
        https://bugs.webkit.org/show_bug.cgi?id=178526

        Reviewed by Dean Jackson.

        Remove the WEB_ANIMATIONS compile-time flag.

        * wtf/FeatureDefines.h:

2017-10-19  Keith Miller  <keith_miller@apple.com>

        REGRESSION (r223476): WebCore exports symbols with names belonging to other frameworks
        https://bugs.webkit.org/show_bug.cgi?id=178424

        Reviewed by David Kilzer.

        This patch moves the wrapper function sharing the name of the externed function
        to the source file and marks it as always inline. Marking it as inline prevents
        the framework from exporting it.

        * wtf/cocoa/SoftLinking.h:

2017-10-18  Keith Miller  <keith_miller@apple.com>

        Setup WebCore build to start using unified sources.
        https://bugs.webkit.org/show_bug.cgi?id=178362

        Reviewed by Tim Horton.

        There are a number of changes to the bundler script. First, it is
        now possible to enable or disable building files based on if the
        associated feature flag is enabled or not. The syntax for this is
        similar to how we do #ifs in C++ code. e.g.

        #if ENABLE_APPLE_PAY
            myApplePayFile.cpp
        #endif

        would enable myApplePayFile.cpp if and only if the APPLE_PAY
        feature define is set.

        I also changed comments from # to // to make it less likely they
        would be confused with a #if.

        Finally, this patch enables bundling files in the same relative
        directory across source list files. Previously, if
        SourcesCocoa.txt had platform/cf/foo.cpp and SourcesMac.txt had
        platform/cf/bar.cpp those files would not be put in the same
        unified source bundle. Now, those files will be put into the same
        bundle but bar.cpp will always follow foo.cpp. The idea is that by
        putting more specific files after more general files we can avoid
        random build failures.

        * Scripts/generate-unified-source-bundles.rb:

2017-10-18  Konstantin Tokarev  <annulen@yandex.ru>

        REGRESSION(r217771): nullTerminatedWCharToString loses last character of input string
        https://bugs.webkit.org/show_bug.cgi?id=178444

        Reviewed by Per Arne Vollan.

        * wtf/text/win/WCharStringExtras.h:
        (WTF::nullTerminatedWCharToString):

2017-10-17  Keith Miller  <keith_miller@apple.com>

        Change WebCore sources to work with unified source builds
        https://bugs.webkit.org/show_bug.cgi?id=178229

        Rubber stamped by Tim Horton.

        * wtf/Platform.h:
        * wtf/cocoa/SoftLinking.h:

2017-10-16  David Kilzer  <ddkilzer@apple.com>

        Add RELEASE_ASSERT_WITH_SECURITY_IMPLICATION() macro
        <https://webkit.org/b/178269>

        Reviewed by Alex Christensen.

        * wtf/Assertions.h:
        (RELEASE_ASSERT_WITH_SECURITY_IMPLICATION): Add macro.

2017-10-14  Sam Weinig  <sam@webkit.org>

        Remove HashCountedSet's copyToVector functions
        https://bugs.webkit.org/show_bug.cgi?id=178215

        Reviewed by Daniel Bates.

        * wtf/HashCountedSet.h:
        (WTF::copyToVector): Deleted.
        
            They are replaced by either copyToVector(hashCountedSet) or copyToVector(hashCountedSet.values())

2017-10-13  Sam Weinig  <sam@webkit.org>

        Adopt type trait template aliases everywhere in WTF
        https://bugs.webkit.org/show_bug.cgi?id=178299

        Reviewed by Yusuke Suzuki.

        Adopt type trait template aliases (e.g. replace 'typename std::make_unsigned<Source>::type'
        with 'std::make_unsigned_t<Source>'). Also adopt using over typedef consistently.

        * wtf/Atomics.h:
        * wtf/CagedUniquePtr.h:
        * wtf/CheckedArithmetic.h:
        * wtf/CompletionHandler.h:
        * wtf/Function.h:
        * wtf/HashCountedSet.h:
        * wtf/HashFunctions.h:
        * wtf/HashMap.h:
        * wtf/HashSet.h:
        * wtf/HashTable.h:
        * wtf/HashTraits.h:
        * wtf/IndexedContainerIterator.h:
        * wtf/IteratorAdaptors.h:
        * wtf/KeyValuePair.h:
        * wtf/LEBDecoder.h:
        * wtf/ListHashSet.h:
        * wtf/MathExtras.h:
        * wtf/NeverDestroyed.h:
        * wtf/OptionSet.h:
        * wtf/RetainPtr.h:
        * wtf/SizeLimits.cpp:
        * wtf/StdLibExtras.h:
        * wtf/SystemFree.h:
        * wtf/ThreadSpecific.h:
        * wtf/TypeCasts.h:
        * wtf/Vector.h:
        * wtf/text/IntegerToStringConversion.h:

2017-10-13  Jer Noble  <jer.noble@apple.com>

        Performance: Skip texture upload if source image and destination texture haven't changed
        https://bugs.webkit.org/show_bug.cgi?id=178254
        <rdar://problem/34968181>

        Reviewed by Dean Jackson.

        Add a new class, UnsafePointer, for safely holding pointers to objects with uncontrolled lifetimes.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/UnsafePointer.h: Added.
        (WTF::UnsafePointer::UnsafePointer):
        (WTF::UnsafePointer::operator== const):
        (WTF::UnsafePointer::operator!= const):
        (WTF::UnsafePointer::operator bool const):
        (WTF::operator==):
        (WTF::operator!=):

2017-10-13  Per Arne Vollan  <pvollan@apple.com>

        [Win] When built with VS2017, MiniBrowser crashes on startup.
        https://bugs.webkit.org/show_bug.cgi?id=175209

        Reviewed by Daniel Bates.

        Add AtomicString(const StaticStringImpl*) constructor. This is needed since
        this patch adds constexpr to the static, global StaticStringImpl objects
        generated in WebCore/bindings/scripts/StaticString.pm.

        * wtf/text/AtomicString.h:
        (WTF::AtomicString::AtomicString):
        * wtf/text/AtomicStringImpl.cpp:
        (WTF::addStatic):
        (WTF::AtomicStringImpl::add):
        * wtf/text/AtomicStringImpl.h:
        * wtf/text/StringImpl.h:
        (WTF::StringImpl::assertHashIsCorrect const):
        (WTF::StringImpl::assertHashIsCorrect): Deleted.

2017-10-12  Alex Christensen  <achristensen@webkit.org>

        Add Expected, HashMap, HashSet, and SHA1 to wtf/Forward.h
        https://bugs.webkit.org/show_bug.cgi?id=178243

        Reviewed by Tim Horton.

        * wtf/Forward.h:
        * wtf/HashMap.h:
        Move default parameters to Forward.h like we did with Vector.
        * wtf/HashSet.h:
        Also fix indentation.

2017-10-12  Alex Christensen  <achristensen@webkit.org>

        Add CompletionHandler and HashCountedSet to wtf/Forward.h
        https://bugs.webkit.org/show_bug.cgi?id=178231

        Reviewed by Tim Horton.

        * wtf/Forward.h:
        * wtf/HashCountedSet.h:

2017-10-11  Sam Weinig  <sam@webkit.org>

        Remove out-parameter variants of copyToVector
        https://bugs.webkit.org/show_bug.cgi?id=178155

        Reviewed by Tim Horton.

        * wtf/HashMap.h:
        (WTF::copyToVector): Deleted.
        * wtf/HashSet.h:
        (WTF::copyToVector): Deleted.
        
            Remove copyToVector.
        
        * wtf/Vector.h:
        (WTF::copyToVectorSpecialization):
        
            Add another version of copyToVector, called copyToVectorSpecialization, that allows
            you to specify the entire specialization for the Vector you want to copy to. This
            can be useful if you want your resulting Vector to have an inline capacity. 

2017-10-12  Sam Weinig  <sam@webkit.org>

        It should be possible to iterate just the values (and not the counts) of a HashCountedSet
        https://bugs.webkit.org/show_bug.cgi?id=178169

        Reviewed by Daniel Bates.

        Cleanup (fix indentation, simplify type names, adopt using), and add a values() range to
        HashCountedSet. This will allow getting a Vector of all the values (and not the counts)
        using the new copyToVector. 

        * wtf/HashCountedSet.h:

2017-10-11  Michael Saboff  <msaboff@apple.com>

        [JSC] Add ability to build with ARMV8 ILP32 ABI
        https://bugs.webkit.org/show_bug.cgi?id=178194

        Reviewed by Saam Barati.

        For ARMV8 32 bit ABI, use JSVALUE32_64 and the CLOOP.

        * wtf/Platform.h:

2017-10-11  Youenn Fablet  <youenn@apple.com>

        Add API to clean CacheStorage data
        https://bugs.webkit.org/show_bug.cgi?id=178034

        Reviewed by Chris Dumez.

        Moving CallbackAggregator pattern into its own class for easier reuse.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CallbackAggregator.h: Added.
        (WTF::CallbackAggregator::create):
        (WTF::CallbackAggregator::~CallbackAggregator):
        (WTF::CallbackAggregator::CallbackAggregator):

2017-10-10  Sam Weinig  <sam@webkit.org>

        Replace copyKeysToVector/copyValuesToVector with copyToVector(map.keys())/copyToVector(map.values())
        https://bugs.webkit.org/show_bug.cgi?id=178102

        Reviewed by Tim Horton.

        * wtf/HashMap.h:
        (WTF::copyKeysToVector): Deleted.
        (WTF::copyValuesToVector): Deleted.
        
            Remove copyKeysToVector and copyValuesToVector which are no longer used.

2017-10-09  Youenn Fablet  <youenn@apple.com>

        Vector should be able to easily create from a list of movable only items
        https://bugs.webkit.org/show_bug.cgi?id=176432

        Reviewed by Darin Adler.

        Adding static from method to construct a Vector from movable-only items.
        This may also be used instead of initializer list constructor for types that would benefit of being moved.

        * wtf/Vector.h:
        (WTF::Vector::Vector):
        (WTF::Vector::from):
        (WTF::Vector::uncheckedInitialize): Introduced as an optimization to set the vector size once.
        (WTF::Malloc>::reserveInitialCapacity):

2017-10-09  Tim Horton  <timothy_horton@apple.com>

        Disable INPUT_TYPE_COLOR in FeatureDefines.h
        https://bugs.webkit.org/show_bug.cgi?id=178103
        <rdar://problem/34872127>

        Reviewed by Simon Fraser.

        * wtf/FeatureDefines.h:
        Because FeatureDefines.h overrides features that are not enabled in
        FeatureDefines.xcconfig, you currently have to turn INPUT_TYPE_COLOR
        off in two places. Since we only ever want it on for Mac, it's OK
        to depend on the xcconfig defining it.

2017-10-09  Sam Weinig  <sam@webkit.org>

        Make HashMap::keys() and HashMap::values() work with WTF::map/WTF::copyToVector
        https://bugs.webkit.org/show_bug.cgi?id=178072

        Reviewed by Darin Adler.

        Introduce SizedIteratorRange, a variant of IteratorRange that includes
        a reference to a backing container in order to get the size of container.
        This is useful for algorithms like WTF::map and WTF::copyToVector, that
        can use the size to efficiently allocate things of the correct size.

        The main beneficiary are HashMap's keys() and values() functions which
        used to return IteratorRanges and now return SizedIteratorRange. This
        allows us to remove (in a future change) copyKeysToVector() and
        copyValuesToVector() by replacing them with copyToVector(map.keys()) and
        copyToVector(map.values()) respectively.

        * wtf/HashMap.h:
        * wtf/IteratorRange.h:
        (WTF::SizedIteratorRange::SizedIteratorRange):
        (WTF::SizedIteratorRange::size const):
        (WTF::SizedIteratorRange::begin const):
        (WTF::SizedIteratorRange::end const):
        (WTF::makeSizedIteratorRange):

2017-10-08  Sam Weinig  <sam@webkit.org>

        It should be possible to create a ListHashSet with a std::initializer_list.
        https://bugs.webkit.org/show_bug.cgi?id=178070

        Reviewed by Darin Adler.

        * wtf/ListHashSet.h:
        (WTF::U>::ListHashSet):
        Add a constructor that takes a std::initializer_list.

2017-10-08  Sam Weinig  <sam@webkit.org>

        Address additional feedback from Darin for r223039 and sort the using declarations.

        * wtf/Vector.h:

2017-10-08  Sam Weinig  <sam@webkit.org>

        There should be a version of copyToVector that returns a Vector, rather than using an out parameter
        https://bugs.webkit.org/show_bug.cgi?id=177732

        Reviewed by Saam Barati.

        Add two new helper functions, copyToVector and copyToVectorOf, which will be able to
        replace the existing out parameter taking copyToVector. Like it's ancestral namesake,
        copyToVector takes an object that is both iterable (supports begin() and end()) and
        has a size, and returns a Vector with a copy of all the items iterated. The copyToVectorOf
        variant allow the user to specify a type to convert to, so if you have a HashSet<int>
        but want those as floats in a Vector, you can do:
        
            auto floatVector = copyToVectorOf<float>(intSet);

        * wtf/Vector.h:
        (WTF::copyToVector):
        (WTF::copyToVectorOf):

2017-10-08  Darin Adler  <darin@apple.com>

        Fix bugs related to setting reflected floating point DOM attributes
        https://bugs.webkit.org/show_bug.cgi?id=178061

        Reviewed by Sam Weinig.

        * wtf/dtoa.cpp:
        (WTF::formatStringTruncatingTrailingZerosIfNeeded): Fix a bug where
        this function would remove trailing zeroes from the exponent if
        present instead of from the mantissa. This meant that it would
        format 1e10 as "1.00000e+1" instead of "1e+10". Added regression
        tests for this to TestWebKitAPI.

        * wtf/dtoa/utils.h:
        (WTF::double_conversion::StringBuilder::RemoveCharacters): Added.
        Used by the fix above.

        * wtf/text/AtomicString.cpp:
        (WTF::AtomicString::number): Note: This function is used by code
        that sets the values of reflected floating point DOM attributes.
        Changed the function to use the rules from numberToString rather
        ones from numberToFixedPrecisionString. This is analogous to
        String::numberToStringECMAScript, and in the future we should change
        String and StringBuilder so this "ECMAScript" semantic is the default
        way to convert a floating point number to a string, and rename the fixed
        precision version that is currently called String::number. I audited
        the small number of sites calling AtomicString::number, by temporarily
        renaming it, and discovered that this is the correct behavior for all;
        none needed fixed precision. Also, fixed a mistake where this explicitly
        converted to String. That was defeating the purpose of having these
        functions in AtomicString: It would allocate a new String and then
        destroy it in the case where an equal string was already in the
        AtomicString table.

2017-10-06  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r222791 and r222873.
        https://bugs.webkit.org/show_bug.cgi?id=178031

        Caused crashes with workers/wasm LayoutTests (Requested by
        ryanhaddad on #webkit).

        Reverted changesets:

        "WebAssembly: no VM / JS version of everything but Instance"
        https://bugs.webkit.org/show_bug.cgi?id=177473
        http://trac.webkit.org/changeset/222791

        "WebAssembly: address no VM / JS follow-ups"
        https://bugs.webkit.org/show_bug.cgi?id=177887
        http://trac.webkit.org/changeset/222873

2017-10-06  Antti Koivisto  <antti@apple.com>

        Minor WeakPtr improvements
        https://bugs.webkit.org/show_bug.cgi?id=177958

        Reviewed by Sam Weinig.

        * wtf/WeakPtr.h:
        (WTF::WeakPtr::operator bool const):

            Make explicit.

        (WTF::WeakPtrFactory::createWeakPtr const):
        (WTF::makeWeakPtr):

            Remove templating from createWeakPtr, makeWeakPtr() is now the
            canonical way to make derived-type WeakPtrs.

2017-10-04  Filip Pizlo  <fpizlo@apple.com>

        bmalloc mutex should be adaptive
        https://bugs.webkit.org/show_bug.cgi?id=177839

        Reviewed by Michael Saboff.
        
        Add some comments that I thought of while copy-pasting this code.

        Reland after fixing ancient WordLock bug: the notify_one has to happen with the lock held
        to ensure it doesn't run after that thread has died.

        * wtf/LockAlgorithmInlines.h:
        * wtf/WordLock.cpp:

2017-10-05  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        Generate a compile error if release is built without compiler optimizations
        https://bugs.webkit.org/show_bug.cgi?id=177665

        Reviewed by Brian Burg.

        For GCC and Clang, generate an error at build time that will alert
        the developer that she is trying to build Release without any compiler
        optimization. A build time error is much better than an unexpected
        "oh, WebKit is really slow ..."  situation later.

        If this was intended, then we tell the developer that she can continue
        by just setting -DRELEASE_WITHOUT_OPTIMIZATIONS in the list of build
        flags.

        The intention of this patch is to ensure that nobody builds Release
        without enabling compiler optimization by mistake.

        * wtf/Compiler.h:

2017-10-05  David Kilzer  <ddkilzer@apple.com>

        Bug 177893: Disable -Wcast-qual for new clang compiler in Apple ports
        <https://webkit.org/b/177893>
        <rdar://problem/33667497>

        Reviewed by Tim Horton.

        * wtf/RetainPtr.h:
        (WTF::RetainPtr::fromStorageType const): Disable warnings for
        -Wcast-qual until we can provide a safe cast function that lets
        us re-enable the warning.

2017-10-05  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r222893.

        This caused multiple API failures.

        Reverted changeset:

        "bmalloc mutex should be adaptive"
        https://bugs.webkit.org/show_bug.cgi?id=177839
        http://trac.webkit.org/changeset/222893

2017-10-04  Filip Pizlo  <fpizlo@apple.com>

        bmalloc mutex should be adaptive
        https://bugs.webkit.org/show_bug.cgi?id=177839

        Reviewed by Michael Saboff.
        
        Add some comments that I thought of while copy-pasting this code.

        * wtf/LockAlgorithmInlines.h:
        * wtf/WordLock.cpp:

2017-10-04  JF Bastien  <jfbastien@apple.com>

        WTF: Update std::expected to match current proposal
        https://bugs.webkit.org/show_bug.cgi?id=177881

        Reviewed by Mark Lam.

        The proposal is likely to be in C++20 and I've been asked to help co-champion
        it. I'm therefore updating our implementation to more closely match the current
        proposal, and to make sure it'll work for us if standardized.

         - Rename UnexpectedType to Unexpected to match the proposal.
         - Remove relational operators, only equality / inequality remains.
         - Fix minor type signatures.
         - Add UnexpectedType typedef.
         - Uncomment rebind implementation.
         - Add in-place construction tag, as well as explicit error construction tag.
         - Add template unexpected constructor.
         - Note that make_unexpected isn't in the proposal anymore, but we keep it because we don't have C++17 deduction guides.
         - Remove hashing, which isn't in the proposal anymore.

        * wtf/Expected.h:
        (WTF::Unexpected::Unexpected):
        (WTF::Unexpected::value const):
        (WTF::operator==):
        (WTF::operator!=):
        (WTF::makeUnexpected):
        (WTF::Expected::Expected):
        (WTF::Expected::operator=):
        (WTF::Expected::getUnexpected const):

2017-10-04  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r222840.

        This change breaks internal builds.

        Reverted changeset:

        "Generate a compile error if release is built without compiler
        optimizations"
        https://bugs.webkit.org/show_bug.cgi?id=177665
        http://trac.webkit.org/changeset/222840

2017-10-04  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        Generate a compile error if release is built without compiler optimizations
        https://bugs.webkit.org/show_bug.cgi?id=177665

        Reviewed by Michael Catanzaro.

        For GCC and Clang, generate an error at build time that will alert
        the developer that she is trying to build Release without any compiler
        optimization. A build time error is much better than an unexpected
        "oh, WebKit is really slow ..."  situation later.

        If this was intended, then we tell the developer that she can continue
        by just setting -DRELEASE_WITHOUT_OPTIMIZATIONS in the list of build
        flags.

        The intention of this patch is to ensure that nobody builds Release
        without enabling compiler optimization by mistake.

        * wtf/Compiler.h:

2017-10-04  Tomas Popela  <tpopela@redhat.com>

        Allow building without WOFF enabled

        Reviewed by Michael Catanzaro.

        Don't force the WOFF to be turned on, but follow what is set in cmake.

        * wtf/Platform.h:

2017-10-03  Saam Barati  <sbarati@apple.com>

        Implement polymorphic prototypes
        https://bugs.webkit.org/show_bug.cgi?id=176391

        Reviewed by Filip Pizlo.

        * wtf/Box.h:
        (WTF::Box::operator bool const):
        (WTF::Box::operator bool): Deleted.
        Make Box movable. Also ensure its operator bool doesn't do an atomic increment.
        * wtf/RefPtr.h:
        (WTF::RefPtr::operator bool const):
        Add `explicit operator bool()` for RefPtr.

2017-10-03  Antti Koivisto  <antti@apple.com>

        Allow assigning WeakPtr<Derived> to WeakPtr<Base>
        https://bugs.webkit.org/show_bug.cgi?id=177817

        Reviewed by Geoff Garen.

        Add templated copy/move constructors/assignment operators, similar to RefPtr.

        * wtf/WeakPtr.h:
        (WTF::WeakPtrFactory::createWeakPtr const):
        (WTF::weak_reference_upcast):
        (WTF::weak_reference_downcast):
        (WTF::WeakPtr<T>::WeakPtr):
        (WTF::=):
        (WTF::makeWeakPtr):

2017-10-03  JF Bastien  <jfbastien@apple.com>

        WebAssembly: no VM / JS version of everything but Instance
        https://bugs.webkit.org/show_bug.cgi?id=177473

        Reviewed by Filip Pizlo.

        * wtf/StdLibExtras.h:
        (WTF::default_construct_at): this makes code in WasmTable much
        more readable, and is generally useful for generic code

2017-10-02  Myles C. Maxfield  <mmaxfield@apple.com>

        Move LineEnding.{h,cpp} from WebCore/platform/text to wtf/text
        https://bugs.webkit.org/show_bug.cgi?id=176575

        Reviewed by Alex Christensen.

        As part of the PAL effort, we're trying to move everything out of WebCore/platform, one-by-one.
        These LineEnding files belong in WTF.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/text/LineEnding.cpp: Renamed from Source/WebCore/platform/text/LineEnding.cpp.
        (WTF::normalizeLineEndingsToCRLF):
        * wtf/text/LineEnding.h: Renamed from Source/WebCore/platform/text/LineEnding.h.

2017-10-02  Geoffrey Garen  <ggaren@apple.com>

        WeakPtr should have a move constructor
        https://bugs.webkit.org/show_bug.cgi?id=177789

        Reviewed by Chris Dumez.

        * wtf/WeakPtr.h: Now that we just have a RefPtr data member,
        the default operators are sufficient.

2017-10-02  Geoffrey Garen  <ggaren@apple.com>

        NULL WeakPtr should not malloc!
        https://bugs.webkit.org/show_bug.cgi?id=177773

        Reviewed by Antti Koivisto.

        Translating NULL into malloc is... inefficient.

        * wtf/WeakPtr.h:
        (WTF::WeakPtr::WeakPtr):
        (WTF::WeakPtr::operator=):
        (WTF::WeakPtr::clear): Make m_ref lazy so that a NULL m_ref can represent
        a NULL pointer. Normal dereference is no slower because we can rely on
        the fact that dereference of NULL should crash. operator bool() and get()
        incur an extra branch. That's probably worth it to avoid malloc
        for NULL.

2017-10-02  Antti Koivisto  <antti@apple.com>

        Add makeWeakPtr variant that takes pointer
        https://bugs.webkit.org/show_bug.cgi?id=177767

        Reviewed by Zalan Bujtas.

        * wtf/WeakPtr.h:
        (WTF::makeWeakPtr):

        This version deals with the nullptr.

2017-09-30  Antti Koivisto  <antti@apple.com>

        Add makeWeakPtr for easier WeakPtr construction
        https://bugs.webkit.org/show_bug.cgi?id=177706

        Reviewed by Sam Weinig.

        Standalone makeWeakPtr() returns a WeakPtr of the same type as the argument.

        For this to work the argument type needs to expose a (possibly base type) WeakPtrFactory
        as a public weakPtrFactory() member function.

        * wtf/WeakPtr.h:
        (WTF::WeakPtr::operator-> const):
        (WTF::WeakPtr::operator* const): Also add operator*.
        (WTF::makeWeakPtr):

2017-09-28  Jiewen Tan  <jiewen_tan@apple.com>

        WeakPtrFactory should allow downcasting
        https://bugs.webkit.org/show_bug.cgi?id=177389
        <rdar://problem/34604174>

        Reviewed by Geoffrey Garen.

        In this patch, WeakPtrFactory is enhanced with the ability to create WeakPtrs
        of its owner's sub classes and have them point to the same WeakReference.

        * wtf/WeakPtr.h:
        (WTF::WeakPtr::WeakPtr):
        We cannot determine the base class of type T, thus no friends. It is made public
        such that WeakPtrFactory with a base class type U can create a derived type T
        WeakPtr.
        (WTF::WeakPtrFactory::createWeakPtr const):

2017-09-28  Don Olmstead  <don.olmstead@sony.com>

        Sync SYSTEM_MALLOC implementation of Gigacage
        https://bugs.webkit.org/show_bug.cgi?id=177569

        Reviewed by Mark Lam.

        * wtf/Gigacage.h:
        (Gigacage::basePtr):
        (Gigacage::basePtrs):

2017-09-27  Per Arne Vollan  <pvollan@apple.com>

        [Win64] Compile error, 'BasePtrs' is undefined.
        https://bugs.webkit.org/show_bug.cgi?id=177565

        Reviewed by Mark Lam.

        Copy definition of 'BasePtrs' from bmalloc/GigaCage.h.

        * wtf/Gigacage.h:

2017-09-26  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Followup (r222427): SynchronizedFixedQueue should not have a public constructor
        https://bugs.webkit.org/show_bug.cgi?id=177458

        Reviewed by Tim Horton.

        Since SynchronizedFixedQueue is now derived from ThreadSafeRefCounted<SynchronizedFixedQueue>,
        the standard way to have an instance of it is to call SynchronizedFixedQueue::create()
        which returns a Ref<SynchronizedFixedQueue>. Now it does not make sense to still
        have the constructor public.

        * wtf/SynchronizedFixedQueue.h:
        (WTF::SynchronizedFixedQueue::SynchronizedFixedQueue):

2017-09-24  Keith Miller  <keith_miller@apple.com>

        JSC build should use unified sources for derived sources
        https://bugs.webkit.org/show_bug.cgi?id=177421

        Reviewed by JF Bastien.

        The script now needs to determine if a file is from a derived
        source. This is only relevant for the CMake build since the
        script needs to provide a list of the bundled source files. If the
        script does not provide the full path for derived sources then
        CMake will be unable to find them and the build will fail.

        Additionally, I move the error message for the Xcode build outside
        the main loop. This means that the error message will contain all
        the files you need to add to Xcode and all those files will now be
        written in DerivedSources so they should be easier to add.

        * Scripts/generate-unified-source-bundles.rb:

2017-09-26  Zan Dobersek  <zdobersek@igalia.com>

        Support building JavaScriptCore with the Bionic C library
        https://bugs.webkit.org/show_bug.cgi?id=177427

        Reviewed by Michael Catanzaro.

        * wtf/Platform.h: Define HAVE_MACHINE_CONTEXT when __BIONIC__
        is defined, i.e. when building with the Bionic C library.

2017-09-23  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Images may render partial frames even after loading all the encoded data
        https://bugs.webkit.org/show_bug.cgi?id=177406

        Reviewed by Simon Fraser.

        Make it possible to create a RefPtr<SynchronizedFixedQueue>.

        * wtf/SynchronizedFixedQueue.h:
        (WTF::SynchronizedFixedQueue::create):
        (WTF::SynchronizedFixedQueue::enqueue):
        (WTF::SynchronizedFixedQueue::dequeue):

2017-09-22  Zalan Bujtas  <zalan@apple.com>

        WeakPtrFactory should populate m_ref lazily.
        https://bugs.webkit.org/show_bug.cgi?id=177375

        Reviewed by Geoffrey Garen.

        This helps us with the overhead of initializing WeakPtrFactory for
        objects that rarely end up creating the weak reference.
        -This is in preparation for introducing WeakPtr to RenderObject.

        All credit to Geoffrey Garen.

        * wtf/WeakPtr.h:
        (WTF::WeakReference::get const):
        (WTF::WeakReference::clear):
        (WTF::WeakReference::WeakReference):
        (WTF::WeakPtrFactory::~WeakPtrFactory):
        (WTF::WeakPtrFactory::createWeakPtr const):
        (WTF::WeakPtrFactory::revokeAll):
        (WTF::WeakPtrFactory::WeakPtrFactory): Deleted.

2017-09-21  Alex Christensen  <achristensen@webkit.org>

        Make StringBuilder movable
        https://bugs.webkit.org/show_bug.cgi?id=177311

        Reviewed by Chris Dumez.

        * wtf/text/StringBuilder.h:
        (WTF::StringBuilder::StringBuilder):

2017-09-20  Keith Miller  <keith_miller@apple.com>

        JSC should use unified sources for platform specific files.
        https://bugs.webkit.org/show_bug.cgi?id=177290

        Reviewed by Michael Saboff.

        The unified source bundler script can now handle more than one
        list of sources. Sources will not be bundled across source file
        lists. We want to ensure that changing one platform's sources
        doesn't break another platform's build, as much as
        possible. Additionally, it means that there won't be weird
        performance changes when files are added to an unrelated platform.

        Remove stale reference to generate-unified-source-bundles.rb script
        from Xcode.

        * Scripts/generate-unified-source-bundles.rb:
        * WTF.xcodeproj/project.pbxproj:

2017-09-20  Stephan Szabo  <stephan.szabo@sony.com>

        [Win] WTF: Add alias for process id to use in place of direct uses of pid_t
        https://bugs.webkit.org/show_bug.cgi?id=177017

        Reviewed by Alex Christensen.

        * wtf/ProcessID.h:
        (WTF::getCurrentProcessID):

2017-09-20  Keith Miller  <keith_miller@apple.com>

        JSC Xcode build should use unified sources for platform independent files
        https://bugs.webkit.org/show_bug.cgi?id=177190

        Reviewed by Saam Barati.

        Add a new directory for build scripts that are forwarded to subsequent framework builds.

        * Scripts/generate-unified-source-bundles.rb: Renamed from Source/WTF/generate-unified-source-bundles.rb.
        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:

2017-09-20  Per Arne Vollan  <pvollan@apple.com>

        [Win] Cannot find script to generate unified sources.
        https://bugs.webkit.org/show_bug.cgi?id=177014

        Reviewed by Keith Miller.

        Copy the ruby script to WTF/Scripts in the forwarding headers folder.

        * wtf/CMakeLists.txt:

2017-09-20  Alberto Garcia  <berto@igalia.com>

        Fix HPPA and Alpha builds
        https://bugs.webkit.org/show_bug.cgi?id=177224

        Reviewed by Alex Christensen.

        * wtf/Platform.h:

2017-09-19  Youenn Fablet  <youenn@apple.com>

        Allow WTF::map to use any class that is iterable and has a size getter
        https://bugs.webkit.org/show_bug.cgi?id=177026

        Reviewed by Darin Adler.

        Computing the Item type given to the lambda using the iterator instead of ValueType which is specific to Vector.
        Adding the possibility to pass a non const container reference and a lambda taking non const references as well. 

        * wtf/Vector.h:
        (WTF::MapFunctionInspector::acceptsReference):
        (WTF::Mapper::map):
        (WTF::map):

2017-09-19  Jer Noble  <jer.noble@apple.com>

        [Cocoa] Add an ImageDecoder subclass backed by AVFoundation
        https://bugs.webkit.org/show_bug.cgi?id=176825

        Reviewed by Eric Carlson.

        * wtf/Platform.h:

2017-09-18  Andy Estes  <aestes@apple.com>

        [Cocoa] Upstream sandbox-related WebKitSystemInterface functions
        https://bugs.webkit.org/show_bug.cgi?id=177047

        Reviewed by Daniel Bates.

        * wtf/spi/darwin/SandboxSPI.h:

2017-09-18  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r222170.

        The API test added with this change is failing.

        Reverted changeset:

        "Allow WTF::map to use any class that is iterable and has a
        size getter"
        https://bugs.webkit.org/show_bug.cgi?id=177026
        http://trac.webkit.org/changeset/222170

2017-09-18  Youenn Fablet  <youenn@apple.com>

        Allow WTF::map to use any class that is iterable and has a size getter
        https://bugs.webkit.org/show_bug.cgi?id=177026

        Reviewed by Darin Adler.

        Computing the Item type given to the lambda using the iterator instead of ValueType which is specific to Vector.
        Adding the possibility to pass a non const container reference and a lambda taking non const references as well. 

        * wtf/Vector.h:
        (WTF::MapFunctionInspector::acceptsReference):
        (WTF::Mapper::map):
        (WTF::map):

2017-09-15  JF Bastien  <jfbastien@apple.com>

        WTF: use Forward.h when appropriate instead of Vector.h
        https://bugs.webkit.org/show_bug.cgi?id=176984

        Reviewed by Saam Barati.

        There's no need to include Vector.h when Forward.h will suffice. All we need is to move the template default parameters from Vector, and then the forward declaration can be used in so many new places: if a header only takes Vector by reference, rvalue reference, pointer, returns any of these, or has them as members then the header doesn't need to see the definition because the declaration will suffice.

        * wtf/Forward.h:
        * wtf/Vector.h:
        * wtf/text/StringVector.h:

2017-09-15  Keith Miller  <keith_miller@apple.com>

        generate-unified-source-bundles.rb shouldn't write a file that isn't going to change
        https://bugs.webkit.org/show_bug.cgi?id=177021

        Reviewed by Tim Horton.

        * generate-unified-source-bundles.rb:

2017-09-14  Saam Barati  <sbarati@apple.com>

        We should have a way of preventing a caller from making a tail call and we should use it for ProxyObject instead of using build flags
        https://bugs.webkit.org/show_bug.cgi?id=176863

        Reviewed by Keith Miller.

        This patch adds a way for a particular function to mark
        that none of its calls should be tail calls.
        
        It's useful in the following example if you don't want foo
        to do a tail call to bar or baz:
        
        int foo(bool b)
        {
            NO_TAIL_CALLS();
            if (b)
                return baz();
            return bar();
        }
        
        Note that we're not saying that bar/baz should not be tail callable. bar/baz
        may have other callers that are allowed to tail call it. This macro just says
        that foo itself will not perform any tail calls.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/NoTailCalls.h: Added.
        (WTF::NoTailCalls::~NoTailCalls):

2017-09-14  Mark Lam  <mark.lam@apple.com>

        AddressSanitizer: stack-buffer-underflow in JSC::Probe::Page::Page
        https://bugs.webkit.org/show_bug.cgi?id=176874
        <rdar://problem/34436415>

        Reviewed by Saam Barati.

        Added a convenience version of roundUpToMultipleOf() so that it can be applied to
        pointers without the client having to cast explicitly.

        * wtf/StdLibExtras.h:
        (WTF::roundUpToMultipleOf):

2017-09-14  Youenn Fablet  <youenn@apple.com>

        Allow WTF::map to take function as parameter
        https://bugs.webkit.org/show_bug.cgi?id=176909

        Reviewed by Jer Noble.

        * wtf/Vector.h:
        (WTF::map):

2017-09-13  Youenn Fablet  <youenn@apple.com>

        Add a lambda-based map for Vectors
        https://bugs.webkit.org/show_bug.cgi?id=176487

        Reviewed by Darin Adler.

        This helper routine allows refactoring the reserveInitialCapacity/uncheckedAppend pattern, the mapper between source and destination item being a lambda.

        * wtf/Vector.h:
        (WTF::Mapper::transform):
        (WTF::Mapper::map):
        (WTF::map):

2017-09-12  Yusuke Suzuki  <utatane.tea@gmail.com>

        [DFG] Optimize WeakMap::get by adding intrinsic and fixup
        https://bugs.webkit.org/show_bug.cgi?id=176010

        Reviewed by Filip Pizlo.

        Add inlineGet method with HashTranslator.

        * wtf/HashMap.h:
        (WTF::X>::inlineGet const):
        (WTF::MappedTraits>::inlineGet const):
        (WTF::MappedTraits>::fastGet const): Deleted.
        * wtf/LoggingHashMap.h:

2017-09-12  Keith Miller  <keith_miller@apple.com>

        Do unified source builds for JSC
        https://bugs.webkit.org/show_bug.cgi?id=176076

        Reviewed by Geoffrey Garen.

        This patch adds a script that will automatically bundle source
        files, which is currently only used by the CMake build. It's
        important that we use the same script to generate the bundles
        for the CMake build as the Xcode build. If we didn't do this then
        it's likely that there would be build errors that occur in only
        one build system. On the same note, we also need to be careful to
        not bundle platform specific source files with platform
        independent ones. There are a couple of things the script does not
        currently handle but are not essential for the CMake build. First,
        it does not handle the max bundle size restrictions that the Xcode
        build will require. It also does not handle C files.

        The unified source generator script works by collecting groups of
        up to 8 files from the same directory. We don't bundle files from
        across directories since I didn't see a speedup from doing
        so. Additionally, splitting at the directory boundary means that
        it is less likely that adding a new file will force a "clean"
        build. This would happen because the new file will shift every
        subsequent file into the next unified source bundle.

        Using unified sources appears to be a roughly 3.5x build time
        speed up for clean builds on my MBP and appears to have a
        negligible effect in incremental builds.

        * generate-unified-source-bundles.rb: Added.
        * wtf/Assertions.h:

2017-09-12  Joseph Pecoraro  <pecoraro@apple.com>

        QualifiedName::init should assume AtomicStrings::init was already called
        https://bugs.webkit.org/show_bug.cgi?id=176639

        Reviewed by Sam Weinig.

        * wtf/NeverDestroyed.h:
        (WTF::LazyNeverDestroyed::isConstructed const):

2017-09-12  Brent Fulgham  <bfulgham@apple.com>

        Show punycode to user if a URL mixes Armenian Seh or Vo with other scripts
        https://bugs.webkit.org/show_bug.cgi?id=176578
        <rdar://problem/33906231>

        Reviewed by Alex Christensen.

        * wtf/ASCIICType.h:
        (WTF::isASCIIDigitOrPunctuation): Added helper function to recognize ASCII digits
        and punctuation characters.

2017-09-12  Sam Weinig  <sam@webkit.org>

        [Cleanup] Follow up cleanup for DOMFormData implementation
        https://bugs.webkit.org/show_bug.cgi?id=176740

        Reviewed by Alex Christensen.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/HashTraits.h:
        (WTF::KeyValuePair::KeyValuePair): Deleted.
        * wtf/KeyValuePair.h: Added.
        (WTF::KeyValuePair::KeyValuePair):
        (WTF::makeKeyValuePair):

            Move KeyValuePair to its own header and add a makeKeyValuePair helper.

2017-09-11  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r221854.

        The test added with this change fails on 32-bit JSC bots.

        Reverted changeset:

        "[DFG] Optimize WeakMap::get by adding intrinsic and fixup"
        https://bugs.webkit.org/show_bug.cgi?id=176010
        http://trac.webkit.org/changeset/221854

2017-09-03  Yusuke Suzuki  <utatane.tea@gmail.com>

        [DFG] Optimize WeakMap::get by adding intrinsic and fixup
        https://bugs.webkit.org/show_bug.cgi?id=176010

        Reviewed by Filip Pizlo.

        Add inlineGet method with HashTranslator.

        * wtf/HashMap.h:
        (WTF::X>::inlineGet const):
        (WTF::MappedTraits>::inlineGet const):
        (WTF::MappedTraits>::fastGet const): Deleted.
        * wtf/LoggingHashMap.h:

2017-09-07  Myles C. Maxfield  <mmaxfield@apple.com>

        [PAL] Unify PlatformUserPreferredLanguages.h with Language.h
        https://bugs.webkit.org/show_bug.cgi?id=176561

        Reviewed by Brent Fulgham.

        WebCore/platform/Language was the only* user of PlatformUserPreferredLanguages (with 1 exception).
        That exception is that JavaScriptCore needed the functionality of WebCore/platform/Language, but it
        couldn't get it because of the layering violation, so instead it erroneously called into
        PlatformUserPreferredLanguages instead. This patch merges these two files into WTF so JSC gets the
        right function and the PAL effort has one less file to move from WebCore/platform into PAL.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/Language.cpp: Renamed from Source/WebCore/platform/Language.cpp.
        (WTF::addLanguageChangeObserver):
        (WTF::userPreferredLanguages):
        * wtf/Language.h: Renamed from Source/WebCore/platform/Language.h.
        * wtf/PlatformGTK.cmake:
        * wtf/PlatformJSCOnly.cmake:
        * wtf/PlatformMac.cmake:
        * wtf/PlatformUserPreferredLanguages.h: Removed.
        * wtf/PlatformWPE.cmake:
        * wtf/PlatformWin.cmake:
        * wtf/cf/LanguageCF.cpp: Renamed from Source/WTF/wtf/PlatformUserPreferredLanguagesMac.mm.
        (WTF::httpStyleLanguageCode):
        (WTF::languagePreferencesDidChange):
        (WTF::platformUserPreferredLanguages):
        * wtf/unix/LanguageUnix.cpp: Renamed from Source/WTF/wtf/PlatformUserPreferredLanguagesUnix.cpp.
        * wtf/win/LanguageWin.cpp: Renamed from Source/WTF/wtf/PlatformUserPreferredLanguagesWin.cpp.

2017-09-06  Eric Carlson  <eric.carlson@apple.com>

        Require LoggingHelper overrides to provide identifier
        https://bugs.webkit.org/show_bug.cgi?id=176477

        Reviewed by Jer Noble.

        * wtf/Assertions.cpp: No more WTFLogLevelNotice.
        * wtf/Assertions.h: Ditto.

2017-09-06  Per Arne Vollan  <pvollan@apple.com>

        [Win] WebCore failed to build, InbandTextTrackPrivateAVF: base class undefined.
        https://bugs.webkit.org/show_bug.cgi?id=176431

        Reviewed by Alex Christensen.

        AVFoundation header detection should be done in WebCore because of build dependencies. 

        * AVFoundationSupport.py: Removed.
        * wtf/Platform.h:
        * wtf/PlatformWin.cmake:

2017-09-05  Yoshiaki Jitsukawa  <Yoshiaki.Jitsukawa@sony.com>

        [Win] Fix the wincairo build after r221558 and r221583
        https://bugs.webkit.org/show_bug.cgi?id=176353

        Reviewed by Yusuke Suzuki.

        * wtf/Assertions.cpp:

2017-09-04  Eric Carlson  <eric.carlson@apple.com>

        Switch HTMLMediaElement to release logging
        https://bugs.webkit.org/show_bug.cgi?id=176065

        Reviewed by Jer Noble.

        * wtf/MediaTime.cpp:
        (WTF::MediaTime::dump const): Use toString.
        (WTF::MediaTime::toString const): New.

2017-09-04  Yusuke Suzuki  <utatane.tea@gmail.com>

        Remove OS(SOLARIS) support
        https://bugs.webkit.org/show_bug.cgi?id=176341

        Reviewed by Sam Weinig.

        WebKit project does not have stake holders supporting Solaris right now.
        And Solaris + SPARC in 64bit environment does not work well since its
        address space includes non-48bit area. It breaks our JSVALUE64 in JSC.
        In addition, Solaris a bit complicates our threading implementation
        because of its special threading stack.

        This patch removes OS(SOLARIS) and COMPILER(SUNCC) support from WebKit.

        * wtf/Compiler.h:
        * wtf/InlineASM.h:
        * wtf/MathExtras.h:
        (std::isfinite): Deleted.
        (std::signbit): Deleted.
        (std::isinf): Deleted.
        * wtf/NumberOfCores.cpp:
        (WTF::numberOfProcessorCores):
        * wtf/Platform.h:
        * wtf/StackBounds.cpp:
        * wtf/ThreadingPthreads.cpp:

2017-09-04  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r221494 and r221500.
        https://bugs.webkit.org/show_bug.cgi?id=176258

        This caused the windows build to fail. (Requested by mlewis13
        on #webkit).

        Reverted changesets:

        "Switch HTMLMediaElement to release logging"
        https://bugs.webkit.org/show_bug.cgi?id=176065
        http://trac.webkit.org/changeset/221494

        "Switch HTMLMediaElement to release logging"
        https://bugs.webkit.org/show_bug.cgi?id=176065
        http://trac.webkit.org/changeset/221500

2017-09-03  Yusuke Suzuki  <utatane.tea@gmail.com>

        Remove "malloc" and "free" use
        https://bugs.webkit.org/show_bug.cgi?id=176310

        Reviewed by Darin Adler.

        Use Vector instead.

        * wtf/Assertions.cpp:

2017-09-04  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, support libstdc++ use with clang
        https://bugs.webkit.org/show_bug.cgi?id=176301

        * wtf/FastMalloc.h:

2017-09-03  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Add C++03 allocator interface for GCC < 6
        https://bugs.webkit.org/show_bug.cgi?id=176301

        Reviewed by Darin Adler.

        Unfortunately, std::list in GCC < 6 does not support C++11 allocator interface.
        This patch adds C++03 allocator interface to FastAllocator to make it usable
        for std::list. It also allows us to use FastAllocator for data structures that
        only support C++03 interface.

        * wtf/FastMalloc.h:
        (WTF::FastAllocator::allocate):
        (WTF::FastAllocator::construct):
        (WTF::FastAllocator::destroy):
        (WTF::FastAllocator::max_size const):
        (WTF::FastAllocator::select_on_container_copy_construction const):

2017-09-03  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r221552.

        Broke the build

        Reverted changeset:

        "[WTF] Add C++03 allocator interface for GCC < 6"
        https://bugs.webkit.org/show_bug.cgi?id=176301
        http://trac.webkit.org/changeset/221552

2017-09-03  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Add C++03 allocator interface for GCC < 6
        https://bugs.webkit.org/show_bug.cgi?id=176301

        Reviewed by Darin Adler.

        Unfortunately, std::list in GCC < 6 does not support C++11 allocator interface.
        This patch adds C++03 allocator interface to FastAllocator to make it usable
        for std::list. It also allows us to use FastAllocator for data structures that
        only support C++03 interface.

        * wtf/FastMalloc.h:
        (WTF::FastAllocator::allocate):
        (WTF::FastAllocator::construct):
        (WTF::FastAllocator::destroy):
        (WTF::FastAllocator::max_size const):
        (WTF::FastAllocator::select_on_container_copy_construction const):

2017-09-03  Sam Weinig  <sam@webkit.org>

        Remove CanvasProxy
        https://bugs.webkit.org/show_bug.cgi?id=176288

        Reviewed by Yusuke Suzuki.

        CanvasProxy does not appear to be in any current HTML spec
        and was disabled and unimplemented in our tree. Time to 
        get rid of it.

        * wtf/FeatureDefines.h:

2017-09-01  Eric Carlson  <eric.carlson@apple.com>

        Switch HTMLMediaElement to release logging
        https://bugs.webkit.org/show_bug.cgi?id=176065

        Reviewed by Jer Noble.

        * wtf/MediaTime.cpp:
        (WTF::MediaTime::dump const): Use toString.
        (WTF::MediaTime::toString const): New.
        * wtf/MediaTime.h:
        (PAL::LogArgument<WTF::MediaTime>::toString): Logger template.

2017-08-31  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Make USE_CF conditional within Windows
        https://bugs.webkit.org/show_bug.cgi?id=176173

        Reviewed by Alex Christensen.

        * wtf/Platform.h:
        * wtf/PlatformWin.cmake:

2017-08-31  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r221445.

        This change broke Sierra Release builds.

        Reverted changeset:

        "Switch HTMLMediaElement to release logging"
        https://bugs.webkit.org/show_bug.cgi?id=176065
        http://trac.webkit.org/changeset/221445

2017-08-31  Eric Carlson  <eric.carlson@apple.com>

        Switch HTMLMediaElement to release logging
        https://bugs.webkit.org/show_bug.cgi?id=176065

        Reviewed by Jer Noble.

        * wtf/MediaTime.cpp:
        (WTF::MediaTime::dump const): Use toString.
        (WTF::MediaTime::toString const): New.
        * wtf/MediaTime.h:
        (PAL::LogArgument<WTF::MediaTime>::toString): Logger template.

2017-08-31  Filip Pizlo  <fpizlo@apple.com>

        All of the different ArrayBuffer::data's should be CagedPtr<>
        https://bugs.webkit.org/show_bug.cgi?id=175515

        Reviewed by Michael Saboff.
        
        Added a specialization so that CagedPtr<void> is valid.

        * wtf/CagedPtr.h:

2017-08-31  Per Arne Vollan  <pvollan@apple.com>

        [Win] Crash under WorkQueue::performWorkOnRegisteredWorkThread in layout tests.
        https://bugs.webkit.org/show_bug.cgi?id=176163

        Reviewed by Alex Christensen.

        My previous attempt at fixing this crash in <http://trac.webkit.org/changeset/221323>
        was incorrect, since it is still crashing on the bot(s). The current theory of why this
        is failing is that the WorkQueue object deletes itself in the middle of the
        performWorkOnRegisteredWorkThread method when calling deref(). There is no need to
        increase the reference count of the work queue for each function we want to call on the
        work thread. It is sufficient to increase it for every work thread we start, and then
        dereference it when the thread ends. We should also not attempt to access members after
        the deref() call, which can potentially be unsafe.
 
        * wtf/win/WorkQueueWin.cpp:
        (WTF::WorkQueue::workThreadCallback):
        (WTF::WorkQueue::performWorkOnRegisteredWorkThread):
        (WTF::WorkQueue::dispatch):

2017-08-22  Filip Pizlo  <fpizlo@apple.com>

        Strings need to be in some kind of gigacage
        https://bugs.webkit.org/show_bug.cgi?id=174924

        Reviewed by Oliver Hunt.
        
        This makes all strings allocations come from the string gigacage. Because we expect string allocation
        to be a hot path, I created specialized allocation paths for the string gigacage. These paths are
        accessible via <wtf/text/StringMalloc.h>. However, those paths are equivalent to saying
        Gigacage::malloc and friends with the Gigacage::String kind.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/Deque.h:
        * wtf/FastMalloc.cpp:
        (WTF::fastFree):
        * wtf/FastMalloc.h:
        (WTF::FastMalloc::malloc):
        (WTF::FastMalloc::tryMalloc):
        (WTF::FastMalloc::realloc):
        (WTF::FastMalloc::free):
        * wtf/Forward.h:
        * wtf/Gigacage.cpp:
        (Gigacage::tryMalloc):
        * wtf/Gigacage.h:
        (Gigacage::name):
        * wtf/Vector.h:
        (WTF::VectorBufferBase::allocateBuffer):
        (WTF::VectorBufferBase::tryAllocateBuffer):
        (WTF::VectorBufferBase::reallocateBuffer):
        (WTF::VectorBufferBase::deallocateBuffer):
        (WTF::Malloc>::Vector):
        (WTF::=):
        (WTF::Malloc>::contains const):
        (WTF::Malloc>::findMatching const):
        (WTF::Malloc>::find const):
        (WTF::Malloc>::reverseFind const):
        (WTF::Malloc>::appendIfNotContains):
        (WTF::Malloc>::fill):
        (WTF::Malloc>::appendRange):
        (WTF::Malloc>::expandCapacity):
        (WTF::Malloc>::tryExpandCapacity):
        (WTF::Malloc>::resize):
        (WTF::Malloc>::resizeToFit):
        (WTF::Malloc>::shrink):
        (WTF::Malloc>::grow):
        (WTF::Malloc>::asanSetInitialBufferSizeTo):
        (WTF::Malloc>::asanSetBufferSizeToFullCapacity):
        (WTF::Malloc>::asanBufferSizeWillChangeTo):
        (WTF::Malloc>::reserveCapacity):
        (WTF::Malloc>::tryReserveCapacity):
        (WTF::Malloc>::reserveInitialCapacity):
        (WTF::Malloc>::shrinkCapacity):
        (WTF::Malloc>::append):
        (WTF::Malloc>::tryAppend):
        (WTF::Malloc>::constructAndAppend):
        (WTF::Malloc>::tryConstructAndAppend):
        (WTF::Malloc>::appendSlowCase):
        (WTF::Malloc>::constructAndAppendSlowCase):
        (WTF::Malloc>::tryConstructAndAppendSlowCase):
        (WTF::Malloc>::uncheckedAppend):
        (WTF::Malloc>::appendVector):
        (WTF::Malloc>::insert):
        (WTF::Malloc>::insertVector):
        (WTF::Malloc>::remove):
        (WTF::Malloc>::removeFirst):
        (WTF::Malloc>::removeFirstMatching):
        (WTF::Malloc>::removeAll):
        (WTF::Malloc>::removeAllMatching):
        (WTF::Malloc>::reverse):
        (WTF::Malloc>::map const):
        (WTF::Malloc>::releaseBuffer):
        (WTF::Malloc>::checkConsistency):
        (WTF::swap):
        (WTF::operator==):
        (WTF::operator!=):
        (WTF::removeRepeatedElements):
        (WTF::minCapacity>::Vector): Deleted.
        (WTF::minCapacity>::contains const): Deleted.
        (WTF::minCapacity>::findMatching const): Deleted.
        (WTF::minCapacity>::find const): Deleted.
        (WTF::minCapacity>::reverseFind const): Deleted.
        (WTF::minCapacity>::appendIfNotContains): Deleted.
        (WTF::minCapacity>::fill): Deleted.
        (WTF::minCapacity>::appendRange): Deleted.
        (WTF::minCapacity>::expandCapacity): Deleted.
        (WTF::minCapacity>::tryExpandCapacity): Deleted.
        (WTF::minCapacity>::resize): Deleted.
        (WTF::minCapacity>::resizeToFit): Deleted.
        (WTF::minCapacity>::shrink): Deleted.
        (WTF::minCapacity>::grow): Deleted.
        (WTF::minCapacity>::asanSetInitialBufferSizeTo): Deleted.
        (WTF::minCapacity>::asanSetBufferSizeToFullCapacity): Deleted.
        (WTF::minCapacity>::asanBufferSizeWillChangeTo): Deleted.
        (WTF::minCapacity>::reserveCapacity): Deleted.
        (WTF::minCapacity>::tryReserveCapacity): Deleted.
        (WTF::minCapacity>::reserveInitialCapacity): Deleted.
        (WTF::minCapacity>::shrinkCapacity): Deleted.
        (WTF::minCapacity>::append): Deleted.
        (WTF::minCapacity>::tryAppend): Deleted.
        (WTF::minCapacity>::constructAndAppend): Deleted.
        (WTF::minCapacity>::tryConstructAndAppend): Deleted.
        (WTF::minCapacity>::appendSlowCase): Deleted.
        (WTF::minCapacity>::constructAndAppendSlowCase): Deleted.
        (WTF::minCapacity>::tryConstructAndAppendSlowCase): Deleted.
        (WTF::minCapacity>::uncheckedAppend): Deleted.
        (WTF::minCapacity>::appendVector): Deleted.
        (WTF::minCapacity>::insert): Deleted.
        (WTF::minCapacity>::insertVector): Deleted.
        (WTF::minCapacity>::remove): Deleted.
        (WTF::minCapacity>::removeFirst): Deleted.
        (WTF::minCapacity>::removeFirstMatching): Deleted.
        (WTF::minCapacity>::removeAll): Deleted.
        (WTF::minCapacity>::removeAllMatching): Deleted.
        (WTF::minCapacity>::reverse): Deleted.
        (WTF::minCapacity>::map const): Deleted.
        (WTF::minCapacity>::releaseBuffer): Deleted.
        (WTF::minCapacity>::checkConsistency): Deleted.
        * wtf/text/AtomicStringImpl.h:
        * wtf/text/CString.cpp:
        (WTF::CStringBuffer::createUninitialized):
        * wtf/text/CString.h:
        * wtf/text/StringBuffer.h:
        (WTF::StringBuffer::StringBuffer):
        (WTF::StringBuffer::~StringBuffer):
        (WTF::StringBuffer::resize):
        * wtf/text/StringImpl.cpp:
        (WTF::StringImpl::~StringImpl):
        (WTF::StringImpl::destroy):
        (WTF::StringImpl::createUninitializedInternalNonEmpty):
        (WTF::StringImpl::reallocateInternal):
        (WTF::StringImpl::releaseAssertCaged const):
        * wtf/text/StringImpl.h:
        (WTF::StringImpl::createSubstringSharingImpl):
        (WTF::StringImpl::tryCreateUninitialized):
        (WTF::StringImpl::adopt):
        (WTF::StringImpl::bufferOwnership const):
        (WTF::StringImpl::assertCaged const):
        * wtf/text/StringMalloc.cpp: Added.
        (WTF::tryStringMalloc):
        (WTF::stringMalloc):
        (WTF::stringRealloc):
        (WTF::stringFree):
        * wtf/text/StringMalloc.h: Added.
        (WTF::StringMalloc::malloc):
        (WTF::StringMalloc::tryMalloc):
        (WTF::StringMalloc::realloc):
        (WTF::StringMalloc::free):
        * wtf/text/StringVector.h: Added.
        * wtf/text/SymbolImpl.h:
        * wtf/text/UniquedStringImpl.h:
        * wtf/text/WTFString.h:
        (WTF::String::adopt):
        (WTF::String::assertCaged const):
        (WTF::String::releaseAssertCaged const):

2017-08-30  Chris Dumez  <cdumez@apple.com>

        Implement FileSystemDirectoryReader.readEntries()
        https://bugs.webkit.org/show_bug.cgi?id=176091
        <rdar://problem/34168015>

        Reviewed by Andreas Kling.

        * wtf/CrossThreadCopier.h:
        (WTF::crossThreadCopy):
        * wtf/CrossThreadTask.h:
        Move crossThreadCopy() from CrossThreadTask.h to CrossThreadCopier.h and
        add "using WTF::crossThreadCopy" statement to make it more easily usable
        from WebCore.

2017-08-30  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r221384.

        This patch caused multiple 32-bit JSC test failures.

        Reverted changeset:

        "Strings need to be in some kind of gigacage"
        https://bugs.webkit.org/show_bug.cgi?id=174924
        http://trac.webkit.org/changeset/221384

2017-08-30  Brady Eidson  <beidson@apple.com>

        Add "Identified" base class to replace a whole bunch of custom identifier generators.
        https://bugs.webkit.org/show_bug.cgi?id=176120

        Reviewed by Alex Christensen.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/Identified.h: Added.
        (WTF::IdentifiedBase::identifier const):
        (WTF::IdentifiedBase::IdentifiedBase):
        (WTF::Identified::Identified):
        (WTF::ThreadSafeIdentified::ThreadSafeIdentified):

2017-08-22  Filip Pizlo  <fpizlo@apple.com>

        Strings need to be in some kind of gigacage
        https://bugs.webkit.org/show_bug.cgi?id=174924

        Reviewed by Oliver Hunt.
        
        This makes all strings allocations come from the string gigacage. Because we expect string allocation
        to be a hot path, I created specialized allocation paths for the string gigacage. These paths are
        accessible via <wtf/text/StringMalloc.h>. However, those paths are equivalent to saying
        Gigacage::malloc and friends with the Gigacage::String kind.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/Deque.h:
        * wtf/FastMalloc.cpp:
        (WTF::fastFree):
        * wtf/FastMalloc.h:
        (WTF::FastMalloc::malloc):
        (WTF::FastMalloc::tryMalloc):
        (WTF::FastMalloc::realloc):
        (WTF::FastMalloc::free):
        * wtf/Forward.h:
        * wtf/Gigacage.cpp:
        (Gigacage::tryMalloc):
        * wtf/Gigacage.h:
        (Gigacage::name):
        * wtf/Vector.h:
        (WTF::VectorBufferBase::allocateBuffer):
        (WTF::VectorBufferBase::tryAllocateBuffer):
        (WTF::VectorBufferBase::reallocateBuffer):
        (WTF::VectorBufferBase::deallocateBuffer):
        (WTF::Malloc>::Vector):
        (WTF::=):
        (WTF::Malloc>::contains const):
        (WTF::Malloc>::findMatching const):
        (WTF::Malloc>::find const):
        (WTF::Malloc>::reverseFind const):
        (WTF::Malloc>::appendIfNotContains):
        (WTF::Malloc>::fill):
        (WTF::Malloc>::appendRange):
        (WTF::Malloc>::expandCapacity):
        (WTF::Malloc>::tryExpandCapacity):
        (WTF::Malloc>::resize):
        (WTF::Malloc>::resizeToFit):
        (WTF::Malloc>::shrink):
        (WTF::Malloc>::grow):
        (WTF::Malloc>::asanSetInitialBufferSizeTo):
        (WTF::Malloc>::asanSetBufferSizeToFullCapacity):
        (WTF::Malloc>::asanBufferSizeWillChangeTo):
        (WTF::Malloc>::reserveCapacity):
        (WTF::Malloc>::tryReserveCapacity):
        (WTF::Malloc>::reserveInitialCapacity):
        (WTF::Malloc>::shrinkCapacity):
        (WTF::Malloc>::append):
        (WTF::Malloc>::tryAppend):
        (WTF::Malloc>::constructAndAppend):
        (WTF::Malloc>::tryConstructAndAppend):
        (WTF::Malloc>::appendSlowCase):
        (WTF::Malloc>::constructAndAppendSlowCase):
        (WTF::Malloc>::tryConstructAndAppendSlowCase):
        (WTF::Malloc>::uncheckedAppend):
        (WTF::Malloc>::appendVector):
        (WTF::Malloc>::insert):
        (WTF::Malloc>::insertVector):
        (WTF::Malloc>::remove):
        (WTF::Malloc>::removeFirst):
        (WTF::Malloc>::removeFirstMatching):
        (WTF::Malloc>::removeAll):
        (WTF::Malloc>::removeAllMatching):
        (WTF::Malloc>::reverse):
        (WTF::Malloc>::map const):
        (WTF::Malloc>::releaseBuffer):
        (WTF::Malloc>::checkConsistency):
        (WTF::swap):
        (WTF::operator==):
        (WTF::operator!=):
        (WTF::removeRepeatedElements):
        (WTF::minCapacity>::Vector): Deleted.
        (WTF::minCapacity>::contains const): Deleted.
        (WTF::minCapacity>::findMatching const): Deleted.
        (WTF::minCapacity>::find const): Deleted.
        (WTF::minCapacity>::reverseFind const): Deleted.
        (WTF::minCapacity>::appendIfNotContains): Deleted.
        (WTF::minCapacity>::fill): Deleted.
        (WTF::minCapacity>::appendRange): Deleted.
        (WTF::minCapacity>::expandCapacity): Deleted.
        (WTF::minCapacity>::tryExpandCapacity): Deleted.
        (WTF::minCapacity>::resize): Deleted.
        (WTF::minCapacity>::resizeToFit): Deleted.
        (WTF::minCapacity>::shrink): Deleted.
        (WTF::minCapacity>::grow): Deleted.
        (WTF::minCapacity>::asanSetInitialBufferSizeTo): Deleted.
        (WTF::minCapacity>::asanSetBufferSizeToFullCapacity): Deleted.
        (WTF::minCapacity>::asanBufferSizeWillChangeTo): Deleted.
        (WTF::minCapacity>::reserveCapacity): Deleted.
        (WTF::minCapacity>::tryReserveCapacity): Deleted.
        (WTF::minCapacity>::reserveInitialCapacity): Deleted.
        (WTF::minCapacity>::shrinkCapacity): Deleted.
        (WTF::minCapacity>::append): Deleted.
        (WTF::minCapacity>::tryAppend): Deleted.
        (WTF::minCapacity>::constructAndAppend): Deleted.
        (WTF::minCapacity>::tryConstructAndAppend): Deleted.
        (WTF::minCapacity>::appendSlowCase): Deleted.
        (WTF::minCapacity>::constructAndAppendSlowCase): Deleted.
        (WTF::minCapacity>::tryConstructAndAppendSlowCase): Deleted.
        (WTF::minCapacity>::uncheckedAppend): Deleted.
        (WTF::minCapacity>::appendVector): Deleted.
        (WTF::minCapacity>::insert): Deleted.
        (WTF::minCapacity>::insertVector): Deleted.
        (WTF::minCapacity>::remove): Deleted.
        (WTF::minCapacity>::removeFirst): Deleted.
        (WTF::minCapacity>::removeFirstMatching): Deleted.
        (WTF::minCapacity>::removeAll): Deleted.
        (WTF::minCapacity>::removeAllMatching): Deleted.
        (WTF::minCapacity>::reverse): Deleted.
        (WTF::minCapacity>::map const): Deleted.
        (WTF::minCapacity>::releaseBuffer): Deleted.
        (WTF::minCapacity>::checkConsistency): Deleted.
        * wtf/text/AtomicStringImpl.h:
        * wtf/text/CString.cpp:
        (WTF::CStringBuffer::createUninitialized):
        * wtf/text/CString.h:
        * wtf/text/StringBuffer.h:
        (WTF::StringBuffer::StringBuffer):
        (WTF::StringBuffer::~StringBuffer):
        (WTF::StringBuffer::resize):
        * wtf/text/StringImpl.cpp:
        (WTF::StringImpl::~StringImpl):
        (WTF::StringImpl::destroy):
        (WTF::StringImpl::createUninitializedInternalNonEmpty):
        (WTF::StringImpl::reallocateInternal):
        (WTF::StringImpl::releaseAssertCaged const):
        * wtf/text/StringImpl.h:
        (WTF::StringImpl::createSubstringSharingImpl):
        (WTF::StringImpl::tryCreateUninitialized):
        (WTF::StringImpl::adopt):
        (WTF::StringImpl::bufferOwnership const):
        (WTF::StringImpl::assertCaged const):
        * wtf/text/StringMalloc.cpp: Added.
        (WTF::tryStringMalloc):
        (WTF::stringMalloc):
        (WTF::stringRealloc):
        (WTF::stringFree):
        * wtf/text/StringMalloc.h: Added.
        (WTF::StringMalloc::malloc):
        (WTF::StringMalloc::tryMalloc):
        (WTF::StringMalloc::realloc):
        (WTF::StringMalloc::free):
        * wtf/text/StringVector.h: Added.
        * wtf/text/SymbolImpl.h:
        * wtf/text/UniquedStringImpl.h:
        * wtf/text/WTFString.h:
        (WTF::String::adopt):
        (WTF::String::assertCaged const):
        (WTF::String::releaseAssertCaged const):

2017-08-28  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Use table based approach for JSON.stringify's Quote
        https://bugs.webkit.org/show_bug.cgi?id=176044

        Reviewed by Darin Adler.

        We change escape operation of JSON Quote from branch-based to table-based.
        This patch partially adopts SpiderMonkey's change to StringBuilderJSON.cpp
        to optimize this escaping operation. We separate changes from StringBuilder.cpp
        to apply MPL to StringBuilderJSON.cpp file. Since WebKit already adopts MPL in
        some files (like, DateMath.h), it is acceptable.

        Kraken json-stringify-tinderbox shows 7.2% improvement.

                                           baseline                  patched

        json-stringify-tinderbox        40.429+-0.771      ^      37.693+-0.862         ^ definitely 1.0726x faster

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/text/StringBuilder.cpp:
        (WTF::appendQuotedJSONStringInternalSlow): Deleted.
        (WTF::appendQuotedJSONStringInternal): Deleted.
        (WTF::StringBuilder::appendQuotedJSONString): Deleted.
        * wtf/text/StringBuilderJSON.cpp: Added.
        (WTF::appendQuotedJSONStringInternal):
        (WTF::StringBuilder::appendQuotedJSONString):

2017-08-29  Per Arne Vollan  <pvollan@apple.com>

        [Win] Crash under WorkQueue::performWorkOnRegisteredWorkThread in layout tests.
        https://bugs.webkit.org/show_bug.cgi?id=176064

        Reviewed by Saam Barati.

        The crash log indicates that the function pointer is null in this case.

        * wtf/win/WorkQueueWin.cpp:
        (WTF::WorkQueue::dispatch):

2017-08-28  Andy Estes  <aestes@apple.com>

        [Cocoa] Upstream WKGetWebDefaultCFStringEncoding()
        https://bugs.webkit.org/show_bug.cgi?id=176039

        Reviewed by Alex Christensen.

        * wtf/spi/cf/CFStringSPI.h:

2017-08-26  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, suppress warnings in GTK port

        Add printf format attribute.

        * wtf/text/WTFString.cpp:

2017-08-25  Eric Carlson  <eric.carlson@apple.com>

        Add Logger::logAlways
        https://bugs.webkit.org/show_bug.cgi?id=175996

        Reviewed by Jer Noble.

        * wtf/Assertions.cpp:
        * wtf/Assertions.h:

2017-08-25  Daniel Bates  <dabates@apple.com>

        Demarcate code added due to lack of NSDMI for aggregates
        https://bugs.webkit.org/show_bug.cgi?id=175990

        Reviewed by Andy Estes.

        * wtf/Compiler.h:

2017-08-25  Don Olmstead  <don.olmstead@sony.com>

        Define *_GIGACAGE_MASK when Gigacage is not supported
        https://bugs.webkit.org/show_bug.cgi?id=175994

        Reviewed by Mark Lam.

        * wtf/Gigacage.h:

2017-08-25  Eric Carlson  <eric.carlson@apple.com>

        Add String::format variant that takes va_args
        https://bugs.webkit.org/show_bug.cgi?id=175988

        Reviewed by Jer Noble.

        * wtf/text/WTFString.cpp:
        (WTF::createWithFormatAndArguments): Created with the guts of String::format.
        (WTF::String::formatWithArguments): New, call createWithFormatAndArguments.
        (WTF::String::format): Move logic to createWithFormatAndArguments, use it.
        * wtf/text/WTFString.h:

2017-08-25  Saam Barati  <sbarati@apple.com>

        Support compiling catch in the DFG
        https://bugs.webkit.org/show_bug.cgi?id=174590
        <rdar://problem/34047845>

        Reviewed by Filip Pizlo.

        This patch generalizes the BackwardsGraph fake root into a more generalizable
        class called SingleRootGraph. SingleRootGraph exposes the general graph interface
        used in Dominators and NaturalLoops. SingleRootGraph takes as input a graph with
        the normal graph interface, but also allows the input graph to contain more than
        one root. SingleRootGraph then exposes a single root, which it creates, that has
        an outgoing edge to all the roots in the original graph.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/BackwardsGraph.h:
        (WTF::BackwardsGraph::dump const):
        (WTF::BackwardsGraph::rootName): Deleted.
        (WTF::BackwardsGraph::Node::Node): Deleted.
        (WTF::BackwardsGraph::Node::root): Deleted.
        (WTF::BackwardsGraph::Node::operator== const): Deleted.
        (WTF::BackwardsGraph::Node::operator!= const): Deleted.
        (WTF::BackwardsGraph::Node::operator bool const): Deleted.
        (WTF::BackwardsGraph::Node::isRoot const): Deleted.
        (WTF::BackwardsGraph::Node::node const): Deleted.
        (): Deleted.
        (WTF::BackwardsGraph::Set::Set): Deleted.
        (WTF::BackwardsGraph::Set::add): Deleted.
        (WTF::BackwardsGraph::Set::remove): Deleted.
        (WTF::BackwardsGraph::Set::contains): Deleted.
        (WTF::BackwardsGraph::Set::dump const): Deleted.
        (WTF::BackwardsGraph::Map::Map): Deleted.
        (WTF::BackwardsGraph::Map::clear): Deleted.
        (WTF::BackwardsGraph::Map::size const): Deleted.
        (WTF::BackwardsGraph::Map::operator[]): Deleted.
        (WTF::BackwardsGraph::Map::operator[] const): Deleted.
        * wtf/Dominators.h:
        (WTF::Dominators::Dominators):
        (WTF::Dominators::forAllBlocksInIteratedDominanceFrontierOf):
        (WTF::Dominators::forAllBlocksInPrunedIteratedDominanceFrontierOf):
        (WTF::Dominators::iteratedDominanceFrontierOf const):
        (WTF::Dominators::forAllBlocksInIteratedDominanceFrontierOfImpl const):
        * wtf/SingleRootGraph.h: Added.
        (WTF::SingleRootGraphNode::rootName):
        (WTF::SingleRootGraphNode::SingleRootGraphNode):
        (WTF::SingleRootGraphNode::root):
        (WTF::SingleRootGraphNode::operator== const):
        (WTF::SingleRootGraphNode::operator!= const):
        (WTF::SingleRootGraphNode::operator bool const):
        (WTF::SingleRootGraphNode::isRoot const):
        (WTF::SingleRootGraphNode::node const):
        (WTF::SingleRootGraphSet::add):
        (WTF::SingleRootGraphSet::remove):
        (WTF::SingleRootGraphSet::contains):
        (WTF::SingleRootGraphSet::dump const):
        (WTF::SingleRootMap::SingleRootMap):
        (WTF::SingleRootMap::clear):
        (WTF::SingleRootMap::size const):
        (WTF::SingleRootMap::operator[]):
        (WTF::SingleRootMap::operator[] const):
        (WTF::SingleRootGraph::SingleRootGraph):
        (WTF::SingleRootGraph::root const):
        (WTF::SingleRootGraph::newMap):
        (WTF::SingleRootGraph::successors const):
        (WTF::SingleRootGraph::predecessors const):
        (WTF::SingleRootGraph::index const):
        (WTF::SingleRootGraph::node const):
        (WTF::SingleRootGraph::numNodes const):
        (WTF::SingleRootGraph::dump const):
        (WTF::SingleRootGraph::assertIsConsistent const):

2017-08-24  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r221119, r221124, and r221143.
        https://bugs.webkit.org/show_bug.cgi?id=175973

        "I think it regressed JSBench by 20%" (Requested by saamyjoon
        on #webkit).

        Reverted changesets:

        "Support compiling catch in the DFG"
        https://bugs.webkit.org/show_bug.cgi?id=174590
        http://trac.webkit.org/changeset/221119

        "Unreviewed, build fix in GTK port"
        https://bugs.webkit.org/show_bug.cgi?id=174590
        http://trac.webkit.org/changeset/221124

        "DFG::JITCode::osrEntry should get sorted since we perform a
        binary search on it"
        https://bugs.webkit.org/show_bug.cgi?id=175893
        http://trac.webkit.org/changeset/221143

2017-08-23  Filip Pizlo  <fpizlo@apple.com>

        Reduce Gigacage sizes
        https://bugs.webkit.org/show_bug.cgi?id=175920

        Reviewed by Mark Lam.

        Provide filler API for the no-bmalloc/no-Gigacage case.

        * wtf/Gigacage.h:
        (Gigacage::mask):

2017-08-23  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, build fix in GTK port
        https://bugs.webkit.org/show_bug.cgi?id=174590

        * wtf/SingleRootGraph.h:
        (WTF::SingleRootGraph::successors const):
        (WTF::SingleRootGraph::predecessors const):

2017-08-23  Saam Barati  <sbarati@apple.com>

        Support compiling catch in the DFG
        https://bugs.webkit.org/show_bug.cgi?id=174590

        Reviewed by Filip Pizlo.

        This patch generalizes the BackwardsGraph fake root into a more generalizable
        class called SingleRootGraph. SingleRootGraph exposes the general graph interface
        used in Dominators and NaturalLoops. SingleRootGraph takes as input a graph with
        the normal graph interface, but also allows the input graph to contain more than
        one root. SingleRootGraph then exposes a single root, which it creates, that has
        an outgoing edge to all the roots in the original graph.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/BackwardsGraph.h:
        (WTF::BackwardsGraph::dump const):
        (WTF::BackwardsGraph::rootName): Deleted.
        (WTF::BackwardsGraph::Node::Node): Deleted.
        (WTF::BackwardsGraph::Node::root): Deleted.
        (WTF::BackwardsGraph::Node::operator== const): Deleted.
        (WTF::BackwardsGraph::Node::operator!= const): Deleted.
        (WTF::BackwardsGraph::Node::operator bool const): Deleted.
        (WTF::BackwardsGraph::Node::isRoot const): Deleted.
        (WTF::BackwardsGraph::Node::node const): Deleted.
        (): Deleted.
        (WTF::BackwardsGraph::Set::Set): Deleted.
        (WTF::BackwardsGraph::Set::add): Deleted.
        (WTF::BackwardsGraph::Set::remove): Deleted.
        (WTF::BackwardsGraph::Set::contains): Deleted.
        (WTF::BackwardsGraph::Set::dump const): Deleted.
        (WTF::BackwardsGraph::Map::Map): Deleted.
        (WTF::BackwardsGraph::Map::clear): Deleted.
        (WTF::BackwardsGraph::Map::size const): Deleted.
        (WTF::BackwardsGraph::Map::operator[]): Deleted.
        (WTF::BackwardsGraph::Map::operator[] const): Deleted.
        * wtf/Dominators.h:
        (WTF::Dominators::Dominators):
        (WTF::Dominators::forAllBlocksInIteratedDominanceFrontierOf):
        (WTF::Dominators::forAllBlocksInPrunedIteratedDominanceFrontierOf):
        (WTF::Dominators::iteratedDominanceFrontierOf const):
        (WTF::Dominators::forAllBlocksInIteratedDominanceFrontierOfImpl const):
        * wtf/SingleRootGraph.h: Added.
        (WTF::SingleRootGraphNode::rootName):
        (WTF::SingleRootGraphNode::SingleRootGraphNode):
        (WTF::SingleRootGraphNode::root):
        (WTF::SingleRootGraphNode::operator== const):
        (WTF::SingleRootGraphNode::operator!= const):
        (WTF::SingleRootGraphNode::operator bool const):
        (WTF::SingleRootGraphNode::isRoot const):
        (WTF::SingleRootGraphNode::node const):
        (WTF::SingleRootGraphSet::add):
        (WTF::SingleRootGraphSet::remove):
        (WTF::SingleRootGraphSet::contains):
        (WTF::SingleRootGraphSet::dump const):
        (WTF::SingleRootMap::SingleRootMap):
        (WTF::SingleRootMap::clear):
        (WTF::SingleRootMap::size const):
        (WTF::SingleRootMap::operator[]):
        (WTF::SingleRootMap::operator[] const):
        (WTF::SingleRootGraph::SingleRootGraph):
        (WTF::SingleRootGraph::root const):
        (WTF::SingleRootGraph::newMap):
        (WTF::SingleRootGraph::successors const):
        (WTF::SingleRootGraph::predecessors const):
        (WTF::SingleRootGraph::index const):
        (WTF::SingleRootGraph::node const):
        (WTF::SingleRootGraph::numNodes const):
        (WTF::SingleRootGraph::dump const):
        (WTF::SingleRootGraph::assertIsConsistent const):

2017-08-23  Youenn Fablet  <youenn@apple.com>

        [Cache API] Enable persistent coder to encode FetchOptions
        https://bugs.webkit.org/show_bug.cgi?id=175883

        Reviewed by Alex Christensen.

        Enabling encoding/decoding of enums with EnumTraits.
        This code is similar to the one of IPC encoder/decoder.

        * wtf/persistence/PersistentDecoder.h:
        (WTF::Persistence::Decoder::decode):
        * wtf/persistence/PersistentEncoder.h:
        (WTF::Persistence::Encoder::encode):

2017-08-23  Per Arne Vollan  <pvollan@apple.com>

        [Win] Compile error, include file <wtf/AVFoundationHeaderDetection.h> is not found.
        https://bugs.webkit.org/show_bug.cgi?id=175853

        Reviewed by Brent Fulgham.

        Copy generated WTF header files to the same place as we copy forwarding headers.
 
        * WTF.vcxproj/WTF.proj:

2017-08-22  Chris Dumez  <cdumez@apple.com>

        Introduce a new CompletionHandler type and use it for NetworkDataTaskClient's completion handlers to help catch bugs
        https://bugs.webkit.org/show_bug.cgi?id=175832

        Reviewed by Alex Christensen.

        Introduce a new CompletionHandler type which wraps a WTF::Function and ensures via assertions
        that the function is always called once and only once.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CompletionHandler.h: Added.
        (WTF::CompletionHandler<Out):

2017-08-22  Alex Christensen  <achristensen@webkit.org>

        Fix Windows build after r221017.
        https://bugs.webkit.org/show_bug.cgi?id=157053

        * wtf/PlatformWin.cmake:

2017-08-22  Per Arne Vollan  <pvollan@apple.com>

        Implement 64-bit MacroAssembler::probe support for Windows.
        https://bugs.webkit.org/show_bug.cgi?id=175724

        Reviewed by Mark Lam.

        Enable masm probe and DFG.

        * wtf/Platform.h:

2017-08-21  Mark Lam  <mark.lam@apple.com>

        [Follow up]: Add back the ability to disable MASM_PROBE from the build.
        https://bugs.webkit.org/show_bug.cgi?id=175656
        <rdar://problem/33933720>

        Not reviewed.

        Fixed a typo: should be "OS(WINDOWS)", not "OS(WINDOW)".

        * wtf/Platform.h:

2017-08-21  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [GTK] ARMv7 build fails to build MacroAssemblerARMv7.cpp.
        https://bugs.webkit.org/show_bug.cgi?id=175514

        Reviewed by Keith Miller.

        * wtf/Platform.h: Enable DFG and MASM_PROBE back for GTK ARM_THUMB2.

2017-08-20  Sam Weinig  <sam@webkit.org>

        StringView could use a function to strip leading/trailing characters without allocation
        https://bugs.webkit.org/show_bug.cgi?id=175757

        Reviewed by Darin Adler.

        There are many places in WebCore/WebKit that we call functions like, 
        WebCore::stripLeadingAndTrailingHTMLSpaces,  or String::stripWhiteSpace() only to use 
        the allocated String as a temporary for either another transformation or a comparison.
        Now that we have StringView, we can avoid that extra allocation, by having returning a
        StringView  substring in these scenarios.

        For instance, the check (from ScriptElement.cpp:287):

        if (!stripLeadingAndTrailingHTMLSpaces(sourceURL).isEmpty()) {
            ...
        }

        currently allocates a string just to make this check. With a new 
        stripLeadingAndTrailingHTMLSpaces such as:

        StringView stripLeadingAndTrailingHTMLSpaces(StringView stringView)
        {
            return stringView.stripLeadingAndTrailingMatchedCharacters([] (auto c) {
                return isHTMLSpace(c);
            });
        }

        We could instead have exact same code from ScriptElement.cpp now avoid an allocation.

        * wtf/text/StringView.h:
        (WTF::StringView::stripLeadingAndTrailingMatchedCharacters):

2017-08-21  Eric Carlson  <eric.carlson@apple.com>

        Add WTFLogChannel level to allow runtime log filtering
        https://bugs.webkit.org/show_bug.cgi?id=175731
        <rdar://problem/33967234>

        Reviewed by Jer Noble.
        
        Add WTFLog*, LOG, and RELEASE_LOG variants that take a "log level" parameter so code
        can include logging statements that are only conditionally emitted.

        * wtf/Assertions.cpp:
        * wtf/Assertions.h:
        * wtf/MemoryPressureHandler.cpp:
        * wtf/RefCountedLeakCounter.cpp:

2017-08-20  Mark Lam  <mark.lam@apple.com>

        Gardening: fix CLoop build.
        https://bugs.webkit.org/show_bug.cgi?id=175688
        <rdar://problem/33436870>

        Not reviewed.

        Disable MASM_PROBE if !ENABLE(JIT).

        * wtf/Platform.h:

2017-08-18  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r220938.

        The API tests added with this change are failing.

        Reverted changeset:

        "Add WTFLogChannel level to allow runtime log filtering"
        https://bugs.webkit.org/show_bug.cgi?id=175731
        http://trac.webkit.org/changeset/220938

2017-08-18  Eric Carlson  <eric.carlson@apple.com>

        Add WTFLogChannel level to allow runtime log filtering
        https://bugs.webkit.org/show_bug.cgi?id=175731
        <rdar://problem/33967234>

        Reviewed by Jer Noble.
        
        Add WTFLog*, LOG, and RELEASE_LOG variants that take a "log level" parameter so code
        can include logging statements that are only conditionally emitted.

        * wtf/Assertions.cpp:
        * wtf/Assertions.h:
        * wtf/MemoryPressureHandler.cpp:
        * wtf/RefCountedLeakCounter.cpp:

2017-08-18  Per Arne Vollan  <pvollan@apple.com>

        Implement 32-bit MacroAssembler::probe support for Windows.
        https://bugs.webkit.org/show_bug.cgi?id=175449

        Reviewed by Mark Lam.

        Enable the DFG on Win32. 

        * wtf/Platform.h:

2017-08-17  Mark Lam  <mark.lam@apple.com>

        Only use 16 VFP registers if !CPU(ARM_NEON).
        https://bugs.webkit.org/show_bug.cgi?id=175514

        Reviewed by JF Bastien.

        If CPU(ARM_NEON) is not enabled, we'll conservatively assume only VFP2 support is
        available. Hence, we'll only the first 16 FPDoubleRegisterIDs are available.

        For reference, see:
        NEON registers: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0473c/CJACABEJ.html
        VFP2 and VFP3 registers: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0473c/CIHDIBDG.html
        NEON to VFP register mapping: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0473c/CJAIJHFC.html

        This is mostly for GTK toolchains which may target older ARM CPUs which only have
        VFP2 support.

        * wtf/Platform.h:

2017-08-16  Mark Lam  <mark.lam@apple.com>

        Add back the ability to disable MASM_PROBE from the build.
        https://bugs.webkit.org/show_bug.cgi?id=175656
        <rdar://problem/33933720>

        Reviewed by Yusuke Suzuki.

        * wtf/Platform.h:

2017-08-16  Mark Lam  <mark.lam@apple.com>

        Gardening: fix GTK ARM_THUMB2 build.
        https://bugs.webkit.org/show_bug.cgi?id=175446

        Not reviewed.

        Disable the use of the DFG for GTK ARM_THUMB2 builds until
        https://bugs.webkit.org/show_bug.cgi?id=175514 is fixed.

        * wtf/Platform.h:

2017-08-16  Andy Estes  <aestes@apple.com>

        [Payment Request] Add an ENABLE flag and an experimental feature preference
        https://bugs.webkit.org/show_bug.cgi?id=175622

        Reviewed by Tim Horton.

        * wtf/FeatureDefines.h:

2017-08-14  Simon Fraser  <simon.fraser@apple.com>

        Remove Proximity Events and related code
        https://bugs.webkit.org/show_bug.cgi?id=175545

        Reviewed by Daniel Bates.

        No platform enables Proximity Events, so remove code inside ENABLE(PROXIMITY_EVENTS)
        and other related code.

        * wtf/FeatureDefines.h:

2017-08-14  Simon Fraser  <simon.fraser@apple.com>

        Remove ENABLE(REQUEST_AUTOCOMPLETE) code, which was disabled everywhere
        https://bugs.webkit.org/show_bug.cgi?id=175504

        Reviewed by Sam Weinig.

        * wtf/FeatureDefines.h:

2017-08-14  Simon Fraser  <simon.fraser@apple.com>

        Remove ENABLE_VIEW_MODE_CSS_MEDIA and related code
        https://bugs.webkit.org/show_bug.cgi?id=175557

        Reviewed by Jon Lee.

        No port cares about the ENABLE(VIEW_MODE_CSS_MEDIA) feature, so remove it.

        * wtf/FeatureDefines.h:

2017-08-12  Filip Pizlo  <fpizlo@apple.com>

        Put the ScopedArgumentsTable's ScopeOffset array in some gigacage
        https://bugs.webkit.org/show_bug.cgi?id=174921

        Reviewed by Mark Lam.
        
        If you want to std::unique_ptr a class that knows that it should be in the Gigacage, then we
        would create the Gigacage equivalent of WTF_MAKE_FAST_ALLOCATED and it would just work.
        
        But this does not work if we want to std::unique_ptr a primitive type. So, this patch adds a
        solution for this problem: CagedUniquePtr<>. This will handle allocation
        (CagedUniquePtr<>::create()) and deallocation (in the style of std::unique_ptr). It has three
        variants:
        
        - Non-array types.
        - Arrays that don't have destructors.
        - Arrays that have destructors.
        
        Just like std::unique_ptr, the array case is triggered by saying "[]" at the end of the type.
        
        Unlike std::unique_ptr and most other smart pointers, the whole point of this smart pointer is
        to dictate where the thing you're pointing at is allocated. For this reason, it has to know how
        to do things like the array destructor protocol. So it creates its own: the CagedUniquePtr for
        arrays with destructors is a fat pointer that remembers the length of the array.
        
        CagedUniquePtr<> makes it impossible to leak/release the pointer. This is stricter than what
        std::unique_ptr does, and is probably appropriate for all of the places where we would use this
        type.
        
        So far, we only use it for ScopedArgumentsTable::m_arguments, but I suspect that it will be
        useful in other places.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/CagedUniquePtr.h: Added.
        (WTF::CagedUniquePtr::CagedUniquePtr):
        (WTF::CagedUniquePtr::create):
        (WTF::CagedUniquePtr::operator=):
        (WTF::CagedUniquePtr::~CagedUniquePtr):
        (WTF::CagedUniquePtr::get const):
        (WTF::CagedUniquePtr::getMayBeNull const):
        (WTF::CagedUniquePtr::operator== const):
        (WTF::CagedUniquePtr::operator!= const):
        (WTF::CagedUniquePtr::operator bool const):
        (WTF::CagedUniquePtr::operator* const):
        (WTF::CagedUniquePtr::operator-> const):
        (WTF::CagedUniquePtr::operator[] const):
        (WTF::CagedUniquePtr::destroy):
        * wtf/Gigacage.cpp:
        (Gigacage::tryMallocArray):
        (Gigacage::malloc):
        (Gigacage::mallocArray):
        * wtf/Gigacage.h:

2017-08-11  Ryosuke Niwa  <rniwa@webkit.org>

        Replace DATA_TRANSFER_ITEMS by a runtime flag and add a stub implementation
        https://bugs.webkit.org/show_bug.cgi?id=175474

        Reviewed by Wenson Hsieh.

        * wtf/FeatureDefines.h:

2017-08-11  Don Olmstead  <don.olmstead@sony.com>

        [WTF] Move ValueToString into WTF
        https://bugs.webkit.org/show_bug.cgi?id=175469

        Reviewed by Sam Weinig.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/text/ValueToString.h: Renamed from Source/WebCore/platform/ValueToString.h.

2017-08-11  Tim Horton  <timothy_horton@apple.com>

        Fix the build with modern Clang's -Wexpansion-to-defined
        https://bugs.webkit.org/show_bug.cgi?id=175467
        <rdar://problem/33667497>

        Reviewed by Simon Fraser.

        * wtf/FeatureDefines.h:
        * wtf/Platform.h:
        Avoid object-like macros that expand to include defined(), because this
        behaves inconsistently between different compilers (though in ways
        that don't matter for these particular defines, which aren't used on MSVC),
        and Clang has added a warning for it.

        Move ENABLE_WEBASSEMBLY to Platform.h since it depends on things that
        are defined there and can't be evaluated at time-of-use because of the
        aforementioned new rules. Previously, there was a cycle between
        ENABLE_WEBASSEMBLY and ENABLE_B3_JIT -- break that so that it just
        goes FTL_JIT->B3_JIT->WASM instead.

2017-08-10  Sam Weinig  <sam@webkit.org>

        WTF::Function does not allow for reference / non-default constructible return types
        https://bugs.webkit.org/show_bug.cgi?id=175244

        Reviewed by Chris Dumez.

        When Function, then NoncopyableFunction, was templatized to allow non-void return values
        in r201493, it maintained the behavior of being callable even if the Function was null.
        To accomplish this, when null, the default construction of the return parameter was used.
        This means Function can't be used with return types that are not default constructible,
        such as reference types and Ref.

        This behavior of returning something when null is surprising, as this is not how normal
        functions behave, and not very useful. Instead, we now assert that the function is not
        null when being called.

        * wtf/Function.h:
        (WTF::Function operator(...)):
        Instead of allowing a null callable wrapper by returning the default construction of
        the return type, assert that the wrapper is there when calling a Function.

2017-08-10  Mark Lam  <mark.lam@apple.com>

        Make the MASM_PROBE mechanism mandatory for DFG and FTL builds.
        https://bugs.webkit.org/show_bug.cgi?id=175446
        <rdar://problem/33836545>

        Reviewed by Saam Barati.

        This is needed in order to support https://bugs.webkit.org/show_bug.cgi?id=174645.
        One consequence of this is that the DFG will now be disabled for the MIPS and
        Windows ports. See:
            https://bugs.webkit.org/show_bug.cgi?id=175447
            https://bugs.webkit.org/show_bug.cgi?id=175449

        Also, we should only ENABLE_SIGNAL_BASED_VM_TRAPS if the DFG is enabled.  It was
        never meaningful to use SIGNAL_BASED_VM_TRAPS with the baseline JIT anyway.  This
        is a mis-configuration error that is now fixed.

        * wtf/Platform.h:

2017-08-10  Brady Eidson  <beidson@apple.com>

        Rename the source files for the WTF persistent coders.
        https://bugs.webkit.org/show_bug.cgi?id=175441

        Reviewed by Tim Horton.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:

        * wtf/persistence/PersistentCoder.h: Renamed from Source/WTF/wtf/persistence/Coder.h.
        * wtf/persistence/PersistentCoders.cpp: Renamed from Source/WTF/wtf/persistence/Coders.cpp.
        * wtf/persistence/PersistentCoders.h: Renamed from Source/WTF/wtf/persistence/Coders.h.
        * wtf/persistence/PersistentDecoder.cpp: Renamed from Source/WTF/wtf/persistence/Decoder.cpp.
        * wtf/persistence/PersistentDecoder.h: Renamed from Source/WTF/wtf/persistence/Decoder.h.
        * wtf/persistence/PersistentEncoder.cpp: Renamed from Source/WTF/wtf/persistence/Encoder.cpp.
        * wtf/persistence/PersistentEncoder.h: Renamed from Source/WTF/wtf/persistence/Encoder.h.

2017-08-10  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, attempt to fix build failure with VC2017

        * wtf/PriorityQueue.h:

2017-08-10  Yusuke Suzuki  <utatane.tea@gmail.com>

        Run more WTF tests
        https://bugs.webkit.org/show_bug.cgi?id=174970

        Reviewed by Michael Catanzaro.

        CHAR_BIT is not defined.

        * wtf/LEBDecoder.h:

2017-08-09  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] ThreadSpecific should not introduce additional indirection
        https://bugs.webkit.org/show_bug.cgi?id=175187

        Reviewed by Mark Lam.

        ThreadSpecific sets Data* to the TLS. And Data holds T*, which
        is fast allocated actual data. But ideally, we should store T
        instance directly in Data instead of introducing an additional
        indirection.

        This patch adds storage in Data in order to embed the instance of T. The constructor
        for Data will invoke the constructor for T on the embedded storage. We also drop
        ThreadSpecific::replace which is only used by the web thread to set its thread specific
        ThreadGlobalData to the one shared from the main thread. The existing implementation
        relies on the main thread and the web thread never exiting in order for the shared
        ThreadGlobalData to stay alive. We can achieve the same semantics by using a
        ThreadSpecific<std::unique_ptr<T>> to hold the ThreadGlobalData instance instead.

        * wtf/ThreadSpecific.h:
        (WTF::ThreadSpecific::Data::construct):
        (WTF::ThreadSpecific::Data::Data):
        We make it fast allocated since we previously allocated ThreadSpecific T data by fastMalloc.

        (WTF::ThreadSpecific::Data::~Data):
        (WTF::ThreadSpecific::Data::storagePointer const):
        (WTF::canBeGCThread>::get):
        We also drop RELEASE_ASSERT from ::get(). We already inserted this assert to setAndConstruct(),
        so when creating the member to this TLS, we execute this release assert. So it is
        not necessary to execute this assertion every time we get data from this TLS.

        (WTF::canBeGCThread>::set):
        (WTF::canBeGCThread>::destroy):
        (WTF::canBeGCThread>::setAndConstruct):
        (WTF::T):
        (WTF::canBeGCThread>::replace): Deleted.

2017-08-10  Tim Horton  <timothy_horton@apple.com>

        Fix a silly typo in Compiler.h

        * wtf/Compiler.h:
        Heature, indeed.

2017-08-10  Michael Catanzaro  <mcatanzaro@igalia.com>

        Remove ENABLE_GAMEPAD_DEPRECATED
        https://bugs.webkit.org/show_bug.cgi?id=175361

        Reviewed by Carlos Garcia Campos.

        * wtf/FeatureDefines.h:

2017-08-09  Don Olmstead  <don.olmstead@sony.com>

        [WTF] Move TextStream into WTF
        https://bugs.webkit.org/show_bug.cgi?id=175211

        Reviewed by Myles C. Maxfield.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/text/TextStream.cpp: Renamed from Source/WebCore/platform/text/TextStream.cpp.
        (WTF::TextStream::writeIndent):
        * wtf/text/TextStream.h: Renamed from Source/WebCore/platform/text/TextStream.h.
        (WTF::TextStream::FormatNumberRespectingIntegers::FormatNumberRespectingIntegers):

2017-08-09  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r220466, r220477, and r220487.
        https://bugs.webkit.org/show_bug.cgi?id=175411

        This change broke existing API tests and follow up fixes did
        not resolve all the issues. (Requested by ryanhaddad on
        #webkit).

        Reverted changesets:

        https://bugs.webkit.org/show_bug.cgi?id=175244
        http://trac.webkit.org/changeset/220466

        "WTF::Function does not allow for reference / non-default
        constructible return types"
        https://bugs.webkit.org/show_bug.cgi?id=175244
        http://trac.webkit.org/changeset/220477

        https://bugs.webkit.org/show_bug.cgi?id=175244
        http://trac.webkit.org/changeset/220487

2017-08-09  Sam Weinig  <sam@webkit.org>

        WTF::Function does not allow for reference / non-default constructible return types
        https://bugs.webkit.org/show_bug.cgi?id=175244

        Reviewed by Chris Dumez.

        When Function, then NoncopyableFunction, was templatized to allow non-void return values
        in r201493, it maintained the behavior of being callable even if the Function was null.
        To accomplish this, when null, the default construction of the return parameter was used.
        This means Function can't be used with return types that are not default constructible,
        such as reference types and Ref.

        This behavior of returning something when null is surprising, as this is not how normal
        functions behave, and not very useful. Instead, we now assert that the function is not
        null when being called.

        * wtf/Function.h:
        (WTF::Function operator(...)):
        Instead of allowing a null callable wrapper by returning the default construction of
        the return type, assert that the wrapper is there when calling a Function.

2017-08-09  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r220457.

        This change introduced API test failures.

        Reverted changeset:

        "WTF::Function does not allow for reference / non-default
        constructible return types"
        https://bugs.webkit.org/show_bug.cgi?id=175244
        http://trac.webkit.org/changeset/220457

2017-08-09  Sam Weinig  <sam@webkit.org>

        WTF::Function does not allow for reference / non-default constructible return types
        https://bugs.webkit.org/show_bug.cgi?id=175244

        Reviewed by Chris Dumez.

        When Function, then NoncopyableFunction, was templatized to allow non-void return values
        in r201493, it maintained the behavior of being callable even if the Function was null.
        To accomplish this, when null, the default construction of the return parameter was used.
        This means Function can't be used with return types that are not default constructible,
        such as reference types and Ref.

        This behavior of returning something when null is surprising, as this is not how normal
        functions behave, and not very useful. Instead, we now assert that the function is not
        null when being called.

        * wtf/Function.h:
        (WTF::Function operator(...)):
        Instead of allowing a null callable wrapper by returning the default construction of
        the return type, assert that the wrapper is there when calling a Function.

2017-08-08  Filip Pizlo  <fpizlo@apple.com>

        Baseline JIT should do caging
        https://bugs.webkit.org/show_bug.cgi?id=175037

        Reviewed by Mark Lam.

        * wtf/Gigacage.h:
        (Gigacage::disableDisablingPrimitiveGigacageIfShouldBeEnabled):
        (Gigacage::isDisablingPrimitiveGigacageDisabled):
        (Gigacage::isPrimitiveGigacagePermanentlyEnabled):
        (Gigacage::canPrimitiveGigacageBeDisabled):
        (Gigacage::basePtr):

2017-08-08  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r220368.

        This change caused WK1 tests to exit early with crashes.

        Reverted changeset:

        "Baseline JIT should do caging"
        https://bugs.webkit.org/show_bug.cgi?id=175037
        http://trac.webkit.org/changeset/220368

2017-08-08  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Properly test if compiler supports compiler flags
        https://bugs.webkit.org/show_bug.cgi?id=174490

        Reviewed by Konstantin Tokarev.

        * wtf/Compiler.h:

2017-08-07  Filip Pizlo  <fpizlo@apple.com>

        Baseline JIT should do caging
        https://bugs.webkit.org/show_bug.cgi?id=175037

        Reviewed by Mark Lam.

        * wtf/Gigacage.h:
        (Gigacage::disableDisablingPrimitiveGigacageIfShouldBeEnabled):
        (Gigacage::isDisablingPrimitiveGigacageDisabled):
        (Gigacage::isPrimitiveGigacagePermanentlyEnabled):
        (Gigacage::canPrimitiveGigacageBeDisabled):

2017-08-07  Filip Pizlo  <fpizlo@apple.com>

        Unreviewed, try to fix Windows build.

        * wtf/Gigacage.cpp:
        * wtf/Gigacage.h:

2017-08-06  Filip Pizlo  <fpizlo@apple.com>

        Primitive auxiliaries and JSValue auxiliaries should have separate gigacages
        https://bugs.webkit.org/show_bug.cgi?id=174919

        Reviewed by Keith Miller.
        
        This mirrors the changes from bmalloc/Gigacage.h.
        
        Also it teaches CagedPtr how to reason about multiple gigacages.

        * wtf/CagedPtr.h:
        (WTF::CagedPtr::get const):
        (WTF::CagedPtr::operator[] const):
        * wtf/Gigacage.cpp:
        (Gigacage::tryMalloc):
        (Gigacage::tryAllocateVirtualPages):
        (Gigacage::freeVirtualPages):
        (Gigacage::tryAlignedMalloc):
        (Gigacage::alignedFree):
        (Gigacage::free):
        * wtf/Gigacage.h:
        (Gigacage::disablePrimitiveGigacage):
        (Gigacage::addPrimitiveDisableCallback):
        (Gigacage::removePrimitiveDisableCallback):
        (Gigacage::name):
        (Gigacage::basePtr):
        (Gigacage::caged):
        (Gigacage::isCaged):
        (Gigacage::tryAlignedMalloc):
        (Gigacage::alignedFree):
        (Gigacage::free):
        (Gigacage::disableGigacage): Deleted.
        (Gigacage::addDisableCallback): Deleted.
        (Gigacage::removeDisableCallback): Deleted.

2017-08-07  Brian Burg  <bburg@apple.com>

        Remove CANVAS_PATH compilation guard
        https://bugs.webkit.org/show_bug.cgi?id=175207

        Reviewed by Sam Weinig.

        * wtf/FeatureDefines.h:

2017-08-05  Filip Pizlo  <fpizlo@apple.com>

        REGRESSION (r219895-219897): Number of leaks on Open Source went from 9240 to 235983 and is now at 302372
        https://bugs.webkit.org/show_bug.cgi?id=175083

        Reviewed by Oliver Hunt.
        
        Adds a classic ReadWriteLock class. I wrote my own because I can never remember if the pthread one is
        guaranted to bias in favor of writers or not.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/Condition.h:
        (WTF::ConditionBase::construct):
        (WTF::Condition::Condition):
        * wtf/Lock.h:
        (WTF::LockBase::construct):
        (WTF::Lock::Lock):
        * wtf/ReadWriteLock.cpp: Added.
        (WTF::ReadWriteLockBase::construct):
        (WTF::ReadWriteLockBase::readLock):
        (WTF::ReadWriteLockBase::readUnlock):
        (WTF::ReadWriteLockBase::writeLock):
        (WTF::ReadWriteLockBase::writeUnlock):
        * wtf/ReadWriteLock.h: Added.
        (WTF::ReadWriteLockBase::ReadLock::tryLock):
        (WTF::ReadWriteLockBase::ReadLock::lock):
        (WTF::ReadWriteLockBase::ReadLock::unlock):
        (WTF::ReadWriteLockBase::WriteLock::tryLock):
        (WTF::ReadWriteLockBase::WriteLock::lock):
        (WTF::ReadWriteLockBase::WriteLock::unlock):
        (WTF::ReadWriteLockBase::read):
        (WTF::ReadWriteLockBase::write):
        (WTF::ReadWriteLock::ReadWriteLock):

2017-08-04  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r220271.

        Rolling out due to Layout Test failing on iOS Simulator.

        Reverted changeset:

        "Remove STREAMS_API compilation guard"
        https://bugs.webkit.org/show_bug.cgi?id=175165
        http://trac.webkit.org/changeset/220271

2017-08-04  Youenn Fablet  <youenn@apple.com>

        Remove STREAMS_API compilation guard
        https://bugs.webkit.org/show_bug.cgi?id=175165

        Reviewed by Darin Adler.

        * wtf/FeatureDefines.h:

2017-08-03  Brian Burg  <bburg@apple.com>

        Remove ENABLE(WEB_SOCKET) guards
        https://bugs.webkit.org/show_bug.cgi?id=167044

        Reviewed by Joseph Pecoraro.

        * wtf/FeatureDefines.h:

2017-08-03  Youenn Fablet  <youenn@apple.com>

        Remove FETCH_API compilation guard
        https://bugs.webkit.org/show_bug.cgi?id=175154

        Reviewed by Chris Dumez.

        * wtf/FeatureDefines.h:

2017-08-03  Brady Eidson  <beidson@apple.com>

        Add SW IDLs and stub out basic functionality.
        https://bugs.webkit.org/show_bug.cgi?id=175115

        Reviewed by Chris Dumez.

        * wtf/FeatureDefines.h:

2017-08-03  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, build fix for Windows port
        https://bugs.webkit.org/show_bug.cgi?id=175013

        * wtf/Threading.h:

2017-08-03  Yusuke Suzuki  <utatane.tea@gmail.com>

        Merge ThreadHolder to WTF::Thread itself
        https://bugs.webkit.org/show_bug.cgi?id=175013

        Reviewed by Mark Lam.

        Currently, we store ThreadHolder* to the TLS, and ThreadHolder* holds Ref<Thread>.
        When we get Thread& from the current thread TLS, we need to dereference the ThreadHolder*.
        However, ideally, we can store Thread* directly to the current thread TLS.
        While the ThreadHolder design is beautiful, it's worth optimizing by storing Thread* directly
        since Thread::current() is so frequently executed.

        This patch merges ThreadHolder to Thread. And we now store Thread* directly in the TLS.
        When storing it to TLS, we call leakRef() to keep Thread ref count incremented by the TLS.
        And when destroying the TLS, we call `deref()` to ensure that Thread* is dereferenced from
        the TLS.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/ThreadHolder.cpp: Removed.
        * wtf/ThreadHolder.h: Removed.
        * wtf/ThreadHolderPthreads.cpp: Removed.
        * wtf/ThreadHolderWin.cpp: Removed.
        * wtf/Threading.cpp:
        (WTF::Thread::entryPoint):
        (WTF::initializeThreading):
        * wtf/Threading.h:
        (WTF::Thread::currentMayBeNull):
        (WTF::Thread::current):
        * wtf/ThreadingPthreads.cpp:
        (WTF::Thread::waitForCompletion):
        (WTF::Thread::initializeCurrentTLS):
        (WTF::Thread::initializeTLSKey):
        (WTF::Thread::initializeTLS):
        (WTF::Thread::destructTLS):
        (WTF::Thread::createCurrentThread): Deleted.
        * wtf/ThreadingWin.cpp:
        (WTF::Thread::initializeCurrentTLS):
        (WTF::threadMapMutex):
        (WTF::Thread::initializeTLSKey):
        (WTF::Thread::currentDying):
        (WTF::Thread::get):
        (WTF::Thread::initializeTLS):
        (WTF::Thread::destructTLS):
        (WTF::waitForThreadCompletion):
        (WTF::Thread::createCurrentThread): Deleted.

2017-08-03  Yusuke Suzuki  <utatane.tea@gmail.com>

        [Linux][WTF] Use one global semaphore to notify thread suspend and resume completion
        https://bugs.webkit.org/show_bug.cgi?id=175124

        Reviewed by Carlos Garcia Campos.

        POSIX sem_t is used to notify thread suspend and resume completion in Linux ports
        since sem_post is async-signal-safe function. Since we guard suspend() and resume()
        with one global lock, this semaphore is also guarded by this lock. So we do not need
        to have semaphore per WTF::Thread.

        This patch introduces one global Semaphore. And drop per thread semaphore.

        * wtf/Threading.h:
        * wtf/ThreadingPthreads.cpp:
        (WTF::Thread::~Thread):
        (WTF::Semaphore::Semaphore):
        (WTF::Semaphore::~Semaphore):
        (WTF::Semaphore::wait):
        (WTF::Semaphore::post):
        (WTF::Thread::signalHandlerSuspendResume):
        (WTF::Thread::initializePlatformThreading):
        (WTF::Thread::suspend):
        (WTF::Thread::resume):
        (WTF::Thread::Thread): Deleted.
        * wtf/ThreadingWin.cpp:
        (WTF::Thread::Thread): Deleted.

2017-08-03  Yusuke Suzuki  <utatane.tea@gmail.com>

        [Linux][WTF] Reduce sizeof(WTF::Thread) by using a pointer to PlatformRegisters
        https://bugs.webkit.org/show_bug.cgi?id=175119

        Reviewed by Carlos Garcia Campos.

        sizeof(PlatformRegisters) is so large. In my Linux box, it is 256. It enlarges the sizeof(WTF::Thread).
        However, it is not necessary to hold it in WTF::Thread member. Thread's ucontext data and its stack is
        effective while suspending the thread. So, we can just use the pointer to the PlatformRegister instead
        of copying it to the member of the WTF::Thread.

        * wtf/Threading.h:
        * wtf/ThreadingPthreads.cpp:
        (WTF::Thread::signalHandlerSuspendResume):
        (WTF::Thread::getRegisters):

2017-08-02  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, build fix for Windows port
        https://bugs.webkit.org/show_bug.cgi?id=174716

        This ugliness will be fixed in https://bugs.webkit.org/show_bug.cgi?id=175013.

        * wtf/ThreadHolder.h:
        * wtf/Threading.h:

2017-08-02  Yusuke Suzuki  <utatane.tea@gmail.com>

        Merge WTFThreadData to Thread::current
        https://bugs.webkit.org/show_bug.cgi?id=174716

        Reviewed by Mark Lam.

        We placed thread specific data in WTFThreadData previously. But now, we have a new good place
        to put thread specific data: WTF::Thread. Before this patch, WTFThreadData and WTF::Thread
        sometimes have the completely same fields (m_stack etc.) due to initialization order limitations.
        This patch merges WTFThreadData to WTF::Thread. We apply WTFThreadData's initialization style
        to WTF::Thread. So, WTF::Thread's holder now uses fast TLS for darwin environment. Thus,
        Thread::current() access is now accelerated. And WTF::Thread::current() can be accessed even
        before calling WTF::initializeThreading.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/LockAlgorithm.h:
        * wtf/LockAlgorithmInlines.h:
        * wtf/MainThread.h:
        * wtf/ParkingLot.cpp:
        * wtf/StackStats.cpp:
        (WTF::StackStats::PerThreadStats::PerThreadStats):
        (WTF::StackStats::CheckPoint::CheckPoint):
        (WTF::StackStats::CheckPoint::~CheckPoint):
        (WTF::StackStats::probe):
        (WTF::StackStats::LayoutCheckPoint::LayoutCheckPoint):
        * wtf/ThreadHolder.cpp:
        (WTF::ThreadHolder::initializeCurrent):
        * wtf/ThreadHolder.h:
        (WTF::ThreadHolder::ThreadHolder):
        (WTF::ThreadHolder::currentMayBeNull):
        (WTF::ThreadHolder::current):
        * wtf/ThreadHolderPthreads.cpp:
        (WTF::ThreadHolder::initializeKey):
        (WTF::ThreadHolder::initialize):
        (WTF::ThreadHolder::destruct):
        (WTF::ThreadHolder::initializeOnce): Deleted.
        (WTF::ThreadHolder::current): Deleted.
        * wtf/ThreadHolderWin.cpp:
        (WTF::ThreadHolder::initializeKey):
        (WTF::ThreadHolder::currentDying):
        (WTF::ThreadHolder::initialize):
        (WTF::ThreadHolder::initializeOnce): Deleted.
        (WTF::ThreadHolder::current): Deleted.
        * wtf/Threading.cpp:
        (WTF::Thread::initializeInThread):
        (WTF::Thread::entryPoint):
        (WTF::Thread::create):
        (WTF::Thread::didExit):
        (WTF::initializeThreading):
        (WTF::Thread::currentMayBeNull): Deleted.
        * wtf/Threading.h:
        (WTF::Thread::current):
        (WTF::Thread::atomicStringTable):
        (WTF::Thread::setCurrentAtomicStringTable):
        (WTF::Thread::stackStats):
        (WTF::Thread::savedStackPointerAtVMEntry):
        (WTF::Thread::setSavedStackPointerAtVMEntry):
        (WTF::Thread::savedLastStackTop):
        (WTF::Thread::setSavedLastStackTop):
        * wtf/ThreadingPrimitives.h:
        * wtf/ThreadingPthreads.cpp:
        (WTF::Thread::createCurrentThread):
        (WTF::Thread::current): Deleted.
        * wtf/ThreadingWin.cpp:
        (WTF::Thread::createCurrentThread):
        (WTF::Thread::current): Deleted.
        * wtf/WTFThreadData.cpp: Removed.
        * wtf/WTFThreadData.h: Removed.
        * wtf/text/AtomicString.cpp:
        * wtf/text/AtomicStringImpl.cpp:
        (WTF::stringTable):
        * wtf/text/AtomicStringTable.cpp:
        (WTF::AtomicStringTable::create):
        * wtf/text/AtomicStringTable.h:

2017-08-02  Joseph Pecoraro  <pecoraro@apple.com>

        NeverDestroyed related leaks seen on bots
        https://bugs.webkit.org/show_bug.cgi?id=175113

        Reviewed by Yusuke Suzuki.

        * wtf/NeverDestroyed.h:
        (WTF::NeverDestroyed::NeverDestroyed):
        Previously the result of makeNeverDestroyed was not always moving into
        the `static NeverDestroyed` static local variable. In some cases it would
        re-invoke the constructor, creating a new NeverDestroyed object. In the
        case of a Vector it was causing leaks.

        Adding a move constructor convinces the compiler to move the result
        of makeNeverDestroyed into the NeverDestroyed static. It doesn't actually
        invoke the move constructor here, which I believe means it is deciding
        to perform optional copy elision optimization.
        'http://en.cppreference.com/w/cpp/language/copy_elision

2017-08-02  Filip Pizlo  <fpizlo@apple.com>

        All C++ accesses to JSObject::m_butterfly should do caging
        https://bugs.webkit.org/show_bug.cgi?id=175039

        Reviewed by Keith Miller.
        
        Adds a smart pointer class that does various kinds of caging for you.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/CagedPtr.h: Added.
        (WTF::CagedPtr::CagedPtr):
        (WTF::CagedPtr::get const):
        (WTF::CagedPtr::getMayBeNull const):
        (WTF::CagedPtr::operator== const):
        (WTF::CagedPtr::operator!= const):
        (WTF::CagedPtr::operator bool const):
        (WTF::CagedPtr::operator* const):
        (WTF::CagedPtr::operator-> const):

2017-08-02  Filip Pizlo  <fpizlo@apple.com>

        We should be OK with the gigacage being disabled on gmalloc
        https://bugs.webkit.org/show_bug.cgi?id=175082

        Reviewed by Michael Saboff.

        * wtf/Gigacage.h:
        (Gigacage::shouldBeEnabled):

2017-08-01  Filip Pizlo  <fpizlo@apple.com>

        Bmalloc and GC should put auxiliaries (butterflies, typed array backing stores) in a gigacage (separate multi-GB VM region)
        https://bugs.webkit.org/show_bug.cgi?id=174727

        Reviewed by Mark Lam.
        
        For the Gigacage project to have minimal impact, we need to have some abstraction that allows code to
        avoid having to guard itself with #if's. This adds a Gigacage abstraction that overlays the Gigacage
        namespace from bmalloc, which always lets you call things like Gigacage::caged and Gigacage::tryMalloc.
        
        Because of how many places need to possibly allocate in a gigacage, or possibly perform caged accesses,
        it's better to hide the question of whether or not it's enabled inside this API.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/FastMalloc.cpp:
        * wtf/Gigacage.cpp: Added.
        (Gigacage::tryMalloc):
        (Gigacage::tryAllocateVirtualPages):
        (Gigacage::freeVirtualPages):
        (Gigacage::tryAlignedMalloc):
        (Gigacage::alignedFree):
        (Gigacage::free):
        * wtf/Gigacage.h: Added.
        (Gigacage::ensureGigacage):
        (Gigacage::disableGigacage):
        (Gigacage::addDisableCallback):
        (Gigacage::removeDisableCallback):
        (Gigacage::caged):
        (Gigacage::isCaged):
        (Gigacage::tryAlignedMalloc):
        (Gigacage::alignedFree):
        (Gigacage::free):

2017-07-31  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r220060.

        This broke our internal builds. Contact reviewer of patch for
        more information.

        Reverted changeset:

        "Merge WTFThreadData to Thread::current"
        https://bugs.webkit.org/show_bug.cgi?id=174716
        http://trac.webkit.org/changeset/220060

2017-07-31  Yusuke Suzuki  <utatane.tea@gmail.com>

        Merge WTFThreadData to Thread::current
        https://bugs.webkit.org/show_bug.cgi?id=174716

        Reviewed by Sam Weinig.

        We placed thread specific data in WTFThreadData previously. But now, we have a new good place
        to put thread specific data: WTF::Thread. Before this patch, WTFThreadData and WTF::Thread
        sometimes have the completely same fields (m_stack etc.) due to initialization order limitations.
        This patch merges WTFThreadData to WTF::Thread. We apply WTFThreadData's initialization style
        to WTF::Thread. So, WTF::Thread's holder now uses fast TLS for darwin environment. Thus,
        Thread::current() access is now accelerated. And WTF::Thread::current() can be accessed even
        before calling WTF::initializeThreading.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/LockAlgorithm.h:
        * wtf/LockAlgorithmInlines.h:
        * wtf/MainThread.h:
        * wtf/ParkingLot.cpp:
        * wtf/StackStats.cpp:
        (WTF::StackStats::PerThreadStats::PerThreadStats):
        (WTF::StackStats::CheckPoint::CheckPoint):
        (WTF::StackStats::CheckPoint::~CheckPoint):
        (WTF::StackStats::probe):
        (WTF::StackStats::LayoutCheckPoint::LayoutCheckPoint):
        * wtf/ThreadHolder.cpp:
        (WTF::ThreadHolder::initializeCurrent):
        * wtf/ThreadHolder.h:
        (WTF::ThreadHolder::ThreadHolder):
        (WTF::ThreadHolder::currentMayBeNull):
        (WTF::ThreadHolder::current):
        * wtf/ThreadHolderPthreads.cpp:
        (WTF::ThreadHolder::initialize):
        (WTF::ThreadHolder::destruct):
        (WTF::ThreadHolder::current): Deleted.
        * wtf/ThreadHolderWin.cpp:
        (WTF::ThreadHolder::currentDying):
        (WTF::ThreadHolder::initialize):
        (WTF::ThreadHolder::current): Deleted.
        * wtf/Threading.cpp:
        (WTF::Thread::initializeInThread):
        (WTF::Thread::entryPoint):
        (WTF::Thread::didExit):
        (WTF::initializeThreading):
        (WTF::Thread::currentMayBeNull): Deleted.
        * wtf/Threading.h:
        (WTF::Thread::atomicStringTable):
        (WTF::Thread::setCurrentAtomicStringTable):
        (WTF::Thread::stackStats):
        (WTF::Thread::savedStackPointerAtVMEntry):
        (WTF::Thread::setSavedStackPointerAtVMEntry):
        (WTF::Thread::savedLastStackTop):
        (WTF::Thread::setSavedLastStackTop):
        (WTF::Thread::current):
        * wtf/ThreadingPrimitives.h:
        * wtf/ThreadingPthreads.cpp:
        (WTF::Thread::createCurrentThread):
        (WTF::Thread::current): Deleted.
        * wtf/ThreadingWin.cpp:
        (WTF::Thread::createCurrentThread):
        (WTF::Thread::current): Deleted.
        * wtf/WTFThreadData.cpp: Removed.
        * wtf/WTFThreadData.h: Removed.
        * wtf/text/AtomicString.cpp:
        * wtf/text/AtomicStringImpl.cpp:
        (WTF::stringTable):
        * wtf/text/AtomicStringTable.cpp:
        (WTF::AtomicStringTable::create):
        * wtf/text/AtomicStringTable.h:

2017-07-31  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        Created a bool pretty printer at WTF for debugging purposes
        https://bugs.webkit.org/show_bug.cgi?id=174893

        Reviewed by Darin Adler.

        * wtf/PrintStream.cpp:
        (WTF::printInternal): The overload taking bool uses boolForPrinting
        * wtf/PrintStream.h:
        (WTF::boolForPrinting): Converts a bool in "true" or "false".

2017-07-30  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Introduce Private Symbols
        https://bugs.webkit.org/show_bug.cgi?id=174935

        Reviewed by Darin Adler.

        Upcoming proposal of class fields[1] requires private fields.
        The simple way to implement it is adding a property with a private symbol.
        Currently, we have private symbols for internal properties. They are usual
        Symbols managed by the hash table. So basically private symbols are statically
        created in BuiltinNames. However this new proposal encourages users to create
        such private symbols more and more.

        So, this patch introduces notion of "Private" into WTF SymbolImpl. This patch
        adds PrivateSymbolImpl. This is SymbolImpl with "Private" flag. We do not need
        to look up the symbol from the hash table to check whether the given symbol
        is a private one.

        [1]: https://github.com/tc39/proposal-class-fields

        * wtf/text/StringImpl.h:
        * wtf/text/SymbolImpl.cpp:
        (WTF::PrivateSymbolImpl::create):
        (WTF::PrivateSymbolImpl::createNullSymbol):
        * wtf/text/SymbolImpl.h:
        (WTF::SymbolImpl::isPrivate):
        (WTF::SymbolImpl::StaticSymbolImpl::StaticSymbolImpl):
        (WTF::SymbolImpl::SymbolImpl):
        (WTF::PrivateSymbolImpl::PrivateSymbolImpl):

2017-07-30  Brady Eidson  <beidson@apple.com>

        Add URLSchemeHandler API tests that verify the lack of URLSchemeTask object leaks.
        https://bugs.webkit.org/show_bug.cgi?id=174958

        Reviewed by Darin Adler.

        This patch adds a new template class "InstanceCounted<T>".
        
        For each specialization, "InstanceCounted" will keep track of the total number of
        instances in existence.
        
        This makes explicate leak checking in API tests possible.
        
        Since this adds some runtime and storage overhead the code that actually does anything
        is only compiled in debug builds.
        
        * WTF.xcodeproj/project.pbxproj:
        * wtf/InstanceCounted.h: Added.
        (WTF::InstanceCounted::InstanceCounted):
        (WTF::InstanceCounted::instanceCount):
        (WTF::InstanceCounted::~InstanceCounted):

2017-07-27  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Drop Thread initialization wait in some platforms by introducing StackBounds::newThreadStackBounds(PlatformThreadHandle&)
        https://bugs.webkit.org/show_bug.cgi?id=174303

        Reviewed by Mark Lam.

        Currently, the caller thread of Thread::create() need to wait for completion of the initialization of the target thread.
        This is because we need to initialize Thread::m_stack in the target thread. Before this patch, a target thread's
        StackBounds can only be retrieved by the target thread itself. However, this potentially causes context-switching between
        the caller and the target threads and hurts efficiency of creating threads.

        Fortunately, in some platforms (including major platforms except for Windows), we can get StackBounds of a target
        thread from a caller thread. This allows us to avoid waiting for completion of thread initialization.

        In this patch, we introduce HAVE_STACK_BOUNDS_FOR_NEW_THREAD and StackBounds::newThreadStackBounds. When creating
        a new thread, we will use StackBounds::newThreadStackBounds to get StackBounds if possible. As a result, we
        do not need to wait for completion of thread initialization to ensure m_stack field of Thread is initialized.

        While some documents claim that it is possible on Windows to get the StackBounds of another thread[1], the method relies on
        undocumented Windows NT APIs (NtQueryInformationThread, NtReadVirtualMemory etc.). So in this patch, we just
        use the conservative approach simply waiting for completion of thread initialization.

        [1]: https://stackoverflow.com/questions/3918375/how-to-get-thread-stack-information-on-windows

        * wtf/Platform.h:
        * wtf/StackBounds.cpp:
        (WTF::StackBounds::newThreadStackBounds):
        (WTF::StackBounds::currentThreadStackBoundsInternal):
        (WTF::StackBounds::initialize): Deleted.
        * wtf/StackBounds.h:
        (WTF::StackBounds::currentThreadStackBounds):
        (WTF::StackBounds::StackBounds):
        * wtf/Threading.cpp:
        (WTF::Thread::NewThreadContext::NewThreadContext):
        (WTF::Thread::entryPoint):
        (WTF::Thread::create):
        (WTF::Thread::initialize): Deleted.
        * wtf/Threading.h:
        * wtf/ThreadingPrimitives.h:
        * wtf/ThreadingPthreads.cpp:
        (WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
        (WTF::wtfThreadEntryPoint):
        (WTF::Thread::establishHandle):
        (WTF::Thread::initializeCurrentThreadInternal):
        (WTF::Thread::current):
        * wtf/ThreadingWin.cpp:
        (WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
        (WTF::Thread::initializeCurrentThreadInternal):
        (WTF::Thread::current):
        * wtf/win/MainThreadWin.cpp:
        (WTF::initializeMainThreadPlatform):

2017-07-27  JF Bastien  <jfbastien@apple.com>

        Update lock benchmarks
        https://bugs.webkit.org/show_bug.cgi?id=174907

        Reviewed by Filip Pizlo.

        * benchmarks/ConditionSpeedTest.cpp:
        (main):
        * benchmarks/LockFairnessTest.cpp:
        * benchmarks/LockSpeedTest.cpp:
        * benchmarks/ToyLocks.h:

2017-07-26  Brian Burg  <bburg@apple.com>

        Remove WEB_TIMING feature flag
        https://bugs.webkit.org/show_bug.cgi?id=174795

        Reviewed by Alex Christensen.

        * wtf/FeatureDefines.h:

2017-07-26  Claudio Saavedra  <csaavedra@igalia.com>

        [WPE] Enable KeyboardEvent key and code attributes
        https://bugs.webkit.org/show_bug.cgi?id=174822

        Reviewed by Žan Doberšek.

        There is no reason for this to be disabled from what I see.

        * wtf/FeatureDefines.h: Enable KeyboardEvent key and code attributes.

2017-07-23  Filip Pizlo  <fpizlo@apple.com>

        B3 should do LICM
        https://bugs.webkit.org/show_bug.cgi?id=174750

        Reviewed by Keith Miller and Saam Barati.
        
        Moved DFG::NaturalLoops to WTF. The new templatized NaturalLoops<> uses the same Graph abstraction as
        Dominators<>. This allows us to add a B3::NaturalLoops for free.
        
        Also made small tweaks to RangeSet, which the LICM uses.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/Dominators.h:
        * wtf/NaturalLoops.h: Added.
        (WTF::NaturalLoop::NaturalLoop):
        (WTF::NaturalLoop::graph):
        (WTF::NaturalLoop::header):
        (WTF::NaturalLoop::size):
        (WTF::NaturalLoop::at):
        (WTF::NaturalLoop::operator[]):
        (WTF::NaturalLoop::contains):
        (WTF::NaturalLoop::index):
        (WTF::NaturalLoop::isOuterMostLoop):
        (WTF::NaturalLoop::dump):
        (WTF::NaturalLoop::addBlock):
        (WTF::NaturalLoops::NaturalLoops):
        (WTF::NaturalLoops::graph):
        (WTF::NaturalLoops::numLoops):
        (WTF::NaturalLoops::loop):
        (WTF::NaturalLoops::headerOf):
        (WTF::NaturalLoops::innerMostLoopOf):
        (WTF::NaturalLoops::innerMostOuterLoop):
        (WTF::NaturalLoops::belongsTo):
        (WTF::NaturalLoops::loopDepth):
        (WTF::NaturalLoops::loopsOf):
        (WTF::NaturalLoops::dump):
        * wtf/RangeSet.h:
        (WTF::RangeSet::begin):
        (WTF::RangeSet::end):
        (WTF::RangeSet::addAll):

2017-07-23  Michael Catanzaro  <mcatanzaro@igalia.com>

        Implement FALLTHROUGH attribute for C with GCC
        https://bugs.webkit.org/show_bug.cgi?id=174555

        Reviewed by Darin Adler.

        My previous attempt to silence the JSC -Wimplicit-fallthrough warnings failed because they
        are coming from a C file, and our FALLTHROUGH macro is only implemented for C++. So
        implement it for C as well, using C attribute syntax.
 
        Note this is only possible to do for GCC, because Clang only supports this attribute using
        the [[C++ attribute syntax]].

        * wtf/Compiler.h:

2017-07-14  Filip Pizlo  <fpizlo@apple.com>

        It should be easy to decide how WebKit yields
        https://bugs.webkit.org/show_bug.cgi?id=174298

        Reviewed by Saam Barati.
        
        Created a Thread::yield() abstraction for sched_yield(), and made WTF use it everywhere that it
        had previously used std::this_thread::yield().
        
        To make it less annoying to experiment with changes to the lock algorithm in the future, this also
        moves the meat of the algorithm into LockAlgorithmInlines.h. Only two files include that header.
        Since LockAlgorithm.h no longer includes ParkingLot.h, a bunch of files in WK now need to include
        timing headers (Seconds, MonotonicTime, etc) manually.

        * WTF.xcodeproj/project.pbxproj:
        * benchmarks/ToyLocks.h:
        * wtf/CMakeLists.txt:
        * wtf/Lock.cpp:
        * wtf/LockAlgorithm.h:
        (WTF::LockAlgorithm::lockSlow): Deleted.
        (WTF::LockAlgorithm::unlockSlow): Deleted.
        * wtf/LockAlgorithmInlines.h: Added.
        (WTF::hasParkedBit>::lockSlow):
        (WTF::hasParkedBit>::unlockSlow):
        * wtf/MainThread.cpp:
        * wtf/RunLoopTimer.h:
        * wtf/Threading.cpp:
        * wtf/Threading.h:
        * wtf/ThreadingPthreads.cpp:
        (WTF::Thread::yield):
        * wtf/ThreadingWin.cpp:
        (WTF::Thread::yield):
        * wtf/WordLock.cpp:
        (WTF::WordLockBase::lockSlow):
        (WTF::WordLockBase::unlockSlow):

2017-07-22  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Extend ThreadGroup::add results from bool to ThreadGroupAddResult
        https://bugs.webkit.org/show_bug.cgi?id=174705

        Reviewed by Mark Lam.

        After starting using ThreadGroup to bookkeep active threads for Signals,
        we would like to know tristate of ThreadGroup::add result, NewlyAdded, AlreadyAdded, NotAdded.
        This patch extends the result of ThreadGroup::add from bool to ThreadGroupAddResult tristate.
        Note that NotAdded is returned if the target thread is dying.

        * wtf/ThreadGroup.cpp:
        (WTF::ThreadGroup::add):
        (WTF::ThreadGroup::addCurrentThread):
        * wtf/ThreadGroup.h:
        * wtf/Threading.cpp:
        (WTF::Thread::addToThreadGroup):
        * wtf/Threading.h:
        * wtf/threads/Signals.cpp:
        (WTF::registerThreadForMachExceptionHandling):

2017-07-21  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r219732.
        https://bugs.webkit.org/show_bug.cgi?id=174748

        static is not threadsafe in WebKit tree (Requested by
        yusukesuzuki on #webkit).

        Reverted changeset:

        "[WTF] Drop initializeDate"
        https://bugs.webkit.org/show_bug.cgi?id=174714
        http://trac.webkit.org/changeset/219732

2017-07-21  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Drop initializeDate
        https://bugs.webkit.org/show_bug.cgi?id=174714

        Reviewed by Darin Adler.

        minYear static variable will be initialized in an exclusive manner, which is ensured by C++ "static" semantics.
        Thus, we do not need to call initializeDate() explicitly.

        * wtf/DateMath.cpp:
        (WTF::equivalentYearForDST):
        (WTF::initializeDates): Deleted.
        * wtf/Threading.cpp:
        (WTF::initializeThreading):

2017-07-21  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Introduce static symbols
        https://bugs.webkit.org/show_bug.cgi?id=158863

        Reviewed by Darin Adler.

        We add a new class StaticSymbolImpl. StaticSymbolImpl can offer
        the way to create static SymbolImpl. It can be shared between
        multiple VMs and multiple threads.

        * wtf/text/SymbolImpl.h:
        (WTF::SymbolImpl::StaticSymbolImpl::StaticSymbolImpl):
        (WTF::SymbolImpl::StaticSymbolImpl::operator SymbolImpl&):
        For StaticSymbolImpl's hashForSymbol, we use usual string hash value.
        Since all the SymbolImpls are unique, basically, any value is OK here.
        Non-confilicting to the other SymbolImpls is ideal.

2017-07-21  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Newly added AtomicStringImpl should use BufferInternal static string if StringImpl is static
        https://bugs.webkit.org/show_bug.cgi?id=174501

        Reviewed by Darin Adler.

        When creating AtomicStringImpl from static StringImpl, we can just use createWithoutCopying
        to create a BufferInternal AtomicStringImpl which m_data{8,16} is static string's one.

        * wtf/text/AtomicStringImpl.cpp:
        (WTF::CStringTranslator::hash):
        (WTF::CStringTranslator::equal):
        (WTF::CStringTranslator::translate):
        (WTF::AtomicStringImpl::add):
        (WTF::HashTranslatorCharBuffer::HashTranslatorCharBuffer):
        (WTF::UCharBufferTranslator::hash):
        (WTF::UCharBufferTranslator::equal):
        (WTF::UCharBufferTranslator::translate):
        (WTF::LCharBufferTranslator::hash):
        (WTF::LCharBufferTranslator::equal):
        (WTF::LCharBufferTranslator::translate):
        (WTF::BufferFromStaticDataTranslator::hash):
        (WTF::BufferFromStaticDataTranslator::equal):
        (WTF::BufferFromStaticDataTranslator::translate):
        (WTF::AtomicStringImpl::addLiteral):
        (WTF::addSymbol):
        (WTF::addStatic):
        (WTF::AtomicStringImpl::addSlowCase):
        (WTF::AtomicStringImpl::lookUp):
        (WTF::CharBufferFromLiteralDataTranslator::hash): Deleted.
        (WTF::CharBufferFromLiteralDataTranslator::equal): Deleted.
        (WTF::CharBufferFromLiteralDataTranslator::translate): Deleted.
        (WTF::addSubstring): Deleted.
        * wtf/text/StringImpl.h:

2017-07-21  Konstantin Tokarev  <annulen@yandex.ru>

       [cmake] Unreviewed, add definitions necessary to use ICU shipped with macOS

       macOS system ICU libraries are built with U_DISABLE_RENAMING=1 and
       U_SHOW_CPLUSPLUS_API=0. After r219155 we have to pass this definitons
       explicitly, because ICU headers in the tree are not modified anymore.

        * wtf/PlatformMac.cmake: Rely on ICU_LIBRARIES instead of passing ICU
        library name explicitly in WTF_LIBRARIES.

2017-07-20  Chris Dumez  <cdumez@apple.com>

        Replace calls to Vector::resize() with calls to more efficient shrink() / grow() when applicable
        https://bugs.webkit.org/show_bug.cgi?id=174660

        Reviewed by Geoffrey Garen.

        Replace calls to Vector::resize() with calls to more efficient shrink() / grow() when applicable.
        This essentially replaces a branch to figure out if the new size is less or greater than the
        current size by an assertion.

        * wtf/IndexSparseSet.h:
        (WTF::OverflowHandler>::IndexSparseSet):
        (WTF::OverflowHandler>::clear):
        * wtf/Insertion.h:
        (WTF::executeInsertions):
        * wtf/RangeSet.h:
        (WTF::RangeSet::compact):
        * wtf/Vector.h:
        (WTF::removeRepeatedElements):
        * wtf/persistence/Coders.h:

2017-07-20  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Use ThreadGroup to bookkeep active threads for Mach exception
        https://bugs.webkit.org/show_bug.cgi?id=174678

        Reviewed by Mark Lam.

        We can use ThreadGroup to bookkeep active threads for Mach exceptions.
        When the thread dies, it is automatically removed from the thread groups.
        So we do not need to call unregisterThreadForMachExceptionHandling.

        * wtf/ThreadGroup.cpp:
        (WTF::ThreadGroup::~ThreadGroup):
        (WTF::ThreadGroup::add):
        * wtf/ThreadGroup.h:
        * wtf/ThreadHolder.cpp:
        (WTF::ThreadHolder::~ThreadHolder):
        * wtf/Threading.cpp:
        (WTF::Thread::addToThreadGroup):
        (WTF::Thread::removeFromThreadGroup):
        * wtf/Threading.h:
        * wtf/threads/Signals.cpp:
        (WTF::setExceptionPorts):
        (WTF::activeThreads):
        (WTF::registerThreadForMachExceptionHandling):
        (WTF::installSignalHandler):
        (WTF::unregisterThreadForMachExceptionHandling): Deleted.
        * wtf/threads/Signals.h:

2017-07-19  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Remove unnecessary indirection of WTF::Thread entry point
        https://bugs.webkit.org/show_bug.cgi?id=174291

        Reviewed by Mark Lam.

        Now wtfThreadEntryPoint is almost the same. Only the difference is function signature due to platform APIs.
        We remove ThreadFunctionInvocation indirection in ThreadingPthread.cpp and ThreadingWin.cpp.

        Also, ThreadFunctionInvocation keeps a RefPtr to the Thread object. This was previously needed to keep the
        Thread object alive until the thread itself could install the ThreadHolder into its thread local storage.
        The ThreadHolder has a Ref that keeps the Thread object alive for the lifetime of the thread. Since
        Thread::create() now waits for the thread to be initialized before returning and Thread::create() hold a Ref
        to the Thread object, we are guaranteed that the Thread object will be alive long enough for it to be installed
        in the thread's ThreadHolder, and we no longer need ThreadFunctionInvocation.

        And we also simplify ThreadHolder::initialize a bit. Now Thread::create waits for the completion of Thread
        initialization. So, after establishing thread handle, we can call ThreadHolder::initialize before completing
        Thread initialization.

        Also we drop errno.h ifdefs in ThreadingWin.cpp. This is introduced to support WinCE. But now WinCE port is removed.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/ThreadFunctionInvocation.h: Removed.
        * wtf/ThreadHolder.h:
        * wtf/ThreadHolderWin.cpp:
        (WTF::ThreadHolder::initialize):
        * wtf/Threading.cpp:
        (WTF::Thread::entryPoint):
        (WTF::Thread::create):
        (WTF::threadEntryPoint): Deleted.
        * wtf/Threading.h:
        * wtf/ThreadingPthreads.cpp:
        (WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
        (WTF::wtfThreadEntryPoint):
        (WTF::Thread::establishHandle):
        (WTF::Thread::initializeCurrentThreadInternal):
        (WTF::Thread::current):
        (WTF::Thread::establishPlatformSpecificHandle):
        (WTF::Thread::createInternal): Deleted.
        (WTF::Thread::establish): Deleted.
        * wtf/ThreadingWin.cpp:
        (WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
        (WTF::Thread::initializeCurrentThreadInternal):
        (WTF::wtfThreadEntryPoint):
        (WTF::Thread::establishHandle):
        (WTF::Thread::current):
        (WTF::Thread::establishPlatformSpecificHandle):
        (WTF::Thread::createInternal): Deleted.
        (WTF::Thread::establish): Deleted.
        * wtf/win/MainThreadWin.cpp:
        (WTF::initializeMainThreadPlatform):

2017-07-19  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Implement WTF::ThreadGroup
        https://bugs.webkit.org/show_bug.cgi?id=174081

        Reviewed by Mark Lam.

        This patch implements WTF::ThreadGroup. It implements core of JSC::MachineThreads with more reliable way.
        JSC::MachineThreads was complicated because of managing dead threads. Each JSC::MachineThreads has its
        own TLS with a registered destructor. And everytime a thread dies, the registered TLS destructor is called.
        And this destructor will remove the current dying thread from JSC::MachineThreads.

        However the above implementation is tricky. And each JSC::MachineThreads requires own TLS space, which is
        not considered in WTF's Windows ThreadSpecific implementation. Current design works well since we only
        have small number of MachineThreads right now.

        Instead, we use more reliable way. After introducing WTF::Thread, WTF::Thread has WTF::Thread::didExit,
        which is called when associated TLS (with WTF::Thread) is destroyed. We leverage this mechanism to remove
        WTF::Thread from MachineThreads.

        This patch introduces WTF::ThreadGroup. It is tightly integrated with WTF::Thread: WTF::Thread knows
        ThreadGroups which includes this thread. And WTF::ThreadGroup of course knows WTF::Threads added to it.
        WTF::Thread::didExit carefully remove itself from WTF::ThreadGroups.

        The most important part of this patch is locking. WTF::Thread can die. And WTF::ThreadGroup can die.
        If we take a design using two fine grain locks in WTF::Thread and WTF::ThreadGroup, we easily encounter
        dead lock. Consider the following case.

        1. When adding WTF::Thread (TH) to WTF::ThreadGroup (THG), we first hold a lock of THG, and hold a lock of TH (locking order is THG -> TH).
        2. When TH dies, TH need to hold a lock of TH to iterate THGs. And we hold a lock of THG to unregister TH from it (locking order is TH -> THG).
        3. When suspending and resuming THs in THG, we first hold a lock of THG. And then, we hold a lock of TH to suspend and resume it (locking order is THG -> TH).
        4. When destroying THG, we need to hold a lock of TH to unregister THG from TH. We can hold a lock of THG before that (locking order is THG -> TH).

        Then, it easily causes dead lock. We cannot swap the locking order of (2) since iterating THG requires a lock of TH.
        To solve this problem, we use std::shared_ptr and std::weak_ptr.

        1. When adding WTF::Thread (TH) to WTF::ThreadGroup (THG), we first hold THG, and hold a lock of TH. (THG -> TH)
        2. When TH dies, TH first hold lock of TH. And we use std::weak_ptr<>::lock() to retain non-destructed ThreadGroups.
        If some of ThreadGroups are dying, we just ignore them. It is ok because such a ThreadGroup will be destructed. So we do not need to unregister this thread from
        such a ThreadGroup. Then, we have Vector<std::shared_ptr<ThreadGroup>>. So we unlock a lock of TH. To unregister a thread from thread group, we first hold a
        lock of THG and then hold a lock of TH. Both lifetime is ensured: THG is retained by std::shared_ptr. And TH is itself. (TH), (THG -> TH).
        3. When suspending and resuming THs in THG, we first hold a lock of THG. And then, we hold a lock of TH to suspend and resume it (THG -> TH).
        4. When destroying THG, we hold a lock of THG. And hold a lock of TH. During holding THG's lock, registered thread never dies because (2) holds THG lock. (THG -> TH).

        We also fix suspend and resume locking mechanism to avoid dead lock. We should hold the global lock when suspending and resuming.
        If we use per-thread lock, the suspended thread can hold the lock of the other threads. It causes dead lock.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/AutomaticThread.cpp:
        * wtf/CMakeLists.txt:
        * wtf/CrossThreadCopier.h:
        * wtf/ParkingLot.h:
        * wtf/ThreadGroup.cpp: Copied from Source/JavaScriptCore/wasm/WasmMachineThreads.cpp.
        (WTF::ThreadGroup::~ThreadGroup):
        (WTF::ThreadGroup::add):
        (WTF::ThreadGroup::addCurrentThread):
        * wtf/ThreadGroup.h: Copied from Source/JavaScriptCore/wasm/WasmMachineThreads.cpp.
        (WTF::ThreadGroup::create):
        (WTF::ThreadGroup::threads):
        (WTF::ThreadGroup::getLock):
        (WTF::ThreadGroup::weakFromThis):
        * wtf/Threading.cpp:
        (WTF::shouldRemoveThreadFromThreadGroup):
        (WTF::Thread::didExit):
        (WTF::Thread::addToThreadGroup):
        (WTF::Thread::removeFromThreadGroup):
        * wtf/Threading.h:
        * wtf/ThreadingPthreads.cpp:
        (WTF::Thread::resume):
        (WTF::Thread::getRegisters):
        * wtf/ThreadingWin.cpp:
        (WTF::Thread::resume):
        (WTF::Thread::getRegisters):

2017-07-18  Andy Estes  <aestes@apple.com>

        [Xcode] Enable CLANG_WARN_RANGE_LOOP_ANALYSIS
        https://bugs.webkit.org/show_bug.cgi?id=174631

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig:

2017-07-18  Yusuke Suzuki  <utatane.tea@gmail.com>

        WTF::Thread should have the threads stack bounds.
        https://bugs.webkit.org/show_bug.cgi?id=173975

        Reviewed by Mark Lam.

        We move StackBounds from WTFThreadData to WTF::Thread.
        One important thing is that we should make valid StackBounds
        visible to Thread::create() caller. When the caller get
        WTF::Thread from Thread::create(), this WTF::Thread should
        have a valid StackBounds. But StackBounds information can be
        retrived only in the WTF::Thread's thread itself.

        We also clean up WTF::initializeThreading. StringImpl::empty()
        is now statically initialized by using constexpr constructor.
        Thus we do not need to call StringImpl::empty() explicitly here.
        And WTF::initializeThreading() does not have any main thread
        affinity right now in all the platforms. So we fix the comment
        in Threading.h. Then, now, WTF::initializeThreading() is called
        in UI thread when using Web thread in iOS.

        * wtf/StackBounds.h:
        (WTF::StackBounds::emptyBounds):
        (WTF::StackBounds::StackBounds):
        * wtf/Threading.cpp:
        (WTF::threadEntryPoint):
        (WTF::Thread::create):
        (WTF::Thread::currentMayBeNull):
        (WTF::Thread::initialize):
        (WTF::initializeThreading):
        * wtf/Threading.h:
        (WTF::Thread::stack):
        * wtf/ThreadingPthreads.cpp:
        (WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
        (WTF::Thread::current):
        (WTF::initializeCurrentThreadEvenIfNonWTFCreated): Deleted.
        (WTF::Thread::currentMayBeNull): Deleted.
        * wtf/ThreadingWin.cpp:
        (WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
        (WTF::Thread::initializeCurrentThreadInternal):
        (WTF::Thread::current):
        * wtf/WTFThreadData.cpp:
        (WTF::WTFThreadData::WTFThreadData):
        * wtf/WTFThreadData.h:
        (WTF::WTFThreadData::stack):

2017-07-18  Andy Estes  <aestes@apple.com>

        [Xcode] Enable CLANG_WARN_OBJC_LITERAL_CONVERSION
        https://bugs.webkit.org/show_bug.cgi?id=174631

        Reviewed by Sam Weinig.

        * Configurations/Base.xcconfig:

2017-07-18  Andy Estes  <aestes@apple.com>

        [Xcode] Enable CLANG_WARN_NON_LITERAL_NULL_CONVERSION
        https://bugs.webkit.org/show_bug.cgi?id=174631

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:

2017-07-18  Andy Estes  <aestes@apple.com>

        [Xcode] Enable CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING
        https://bugs.webkit.org/show_bug.cgi?id=174631

        Reviewed by Darin Adler.

        * Configurations/Base.xcconfig:

2017-07-17  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Set library types before their targets are created
        https://bugs.webkit.org/show_bug.cgi?id=174600

        Reviewed by Michael Catanzaro.

        Since r219560 library targets are created before PlatformXXX.cmake
        files are processed, however library type must be passed in
        add_library() call and cannot be changed afterwards. Set these
        variables in OptionsXXX.cmake.

        * wtf/PlatformGTK.cmake:
        * wtf/PlatformMac.cmake:

2017-07-17  Yoshiaki Jitsukawa  <Yoshiaki.Jitsukawa@sony.com>

        Move USE_AVFOUNDATION definition on Windows to wtf/Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=174356

        Reviewed by Brent Fulgham.

        Move the definition of USE_AVFOUNDATION on Windows to wtf/platform.h

        Add a custom command to generate AVFoundationHeaderDetection.h, which
        is renamed from WebCoreHeaderDetection.h

        * AVFoundationSupport.py: Moved from Source/WebCore/AVFoundationSupport.py.
        * wtf/Platform.h:
        * wtf/PlatformWin.cmake:

2017-07-17  Darin Adler  <darin@apple.com>

        Improve use of NeverDestroyed
        https://bugs.webkit.org/show_bug.cgi?id=174348

        Reviewed by Sam Weinig.

        * wtf/HashSet.h: Added an overload of HashSet::add that takes an initializer list of
        const references. This is handy to add a bunch of values all at once. Later we can
        consider optimizing to grow the hash table only once instead of deciding whether to
        grow repeatedly as we add each value.
        (WTF::copyToVector): Changed to use std::copy, removing 4 of the 6 lines of code here.

        * wtf/MemoryPressureHandler.cpp: Include NeverDestroyed.h here ...
        * wtf/MemoryPressureHandler.h: ... not here.

        * wtf/NeverDestroyed.h: Added the ability to have a const NeverDestroyed.
        Added a makeNeverDestroyed function that deduces the type from the argument.
        With auto, this can be used to avoid writing out a long type twice.

        * wtf/ThreadingPthreads.cpp: Removed unneeded include of NeverDestroyed.h.
        * wtf/text/AtomicString.cpp: Ditto.

2017-07-17  Konstantin Tokarev  <annulen@yandex.ru>

        [CMake] Create targets before WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS is called
        https://bugs.webkit.org/show_bug.cgi?id=174557

        Reviewed by Michael Catanzaro.

        * wtf/CMakeLists.txt:

2017-07-14  Jonathan Bedard  <jbedard@apple.com>

        Add iOS 11 SPI
        https://bugs.webkit.org/show_bug.cgi?id=174430
        <rdar://problem/33269288>

        Reviewed by Tim Horton.

        * Configurations/WTF.xcconfig: Exclude MachExceptions.def when building iOS 11 for
        the iOS simulator.

2017-07-14  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r219510.
        https://bugs.webkit.org/show_bug.cgi?id=174525

        Need to revert length() == 0 check for null string (Requested
        by yusukesuzuki on #webkit).

        Reverted changeset:

        "[WTF] Newly added AtomicStringImpl should use BufferInternal
        static string if StringImpl is static"
        https://bugs.webkit.org/show_bug.cgi?id=174501
        http://trac.webkit.org/changeset/219510

2017-07-14  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Newly added AtomicStringImpl should use BufferInternal static string if StringImpl is static
        https://bugs.webkit.org/show_bug.cgi?id=174501

        Reviewed by Darin Adler.

        When creating AtomicStringImpl from static StringImpl, we can just use createWithoutCopying
        to create a BufferInternal AtomicStringImpl which m_data{8,16} is static string's one.

        * wtf/text/AtomicStringImpl.cpp:
        (WTF::CStringTranslator::hash):
        (WTF::CStringTranslator::equal):
        (WTF::CStringTranslator::translate):
        (WTF::AtomicStringImpl::add):
        (WTF::HashTranslatorCharBuffer::HashTranslatorCharBuffer):
        (WTF::UCharBufferTranslator::hash):
        (WTF::UCharBufferTranslator::equal):
        (WTF::UCharBufferTranslator::translate):
        (WTF::LCharBufferTranslator::hash):
        (WTF::LCharBufferTranslator::equal):
        (WTF::LCharBufferTranslator::translate):
        (WTF::BufferFromStaticDataTranslator::hash):
        (WTF::BufferFromStaticDataTranslator::equal):
        (WTF::BufferFromStaticDataTranslator::translate):
        (WTF::AtomicStringImpl::addLiteral):
        (WTF::addSymbol):
        (WTF::addStatic):
        (WTF::AtomicStringImpl::addSlowCase):
        (WTF::AtomicStringImpl::lookUp):
        (WTF::CharBufferFromLiteralDataTranslator::hash): Deleted.
        (WTF::CharBufferFromLiteralDataTranslator::equal): Deleted.
        (WTF::CharBufferFromLiteralDataTranslator::translate): Deleted.
        (WTF::addSubstring): Deleted.
        * wtf/text/StringImpl.h:

2017-07-14  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Use std::unique_ptr for StackTrace
        https://bugs.webkit.org/show_bug.cgi?id=174495

        Reviewed by Alex Christensen.

        Instead of returning pointer to heap allocated StackTrace,
        we should return std::unique_ptr<StackTrace>.
        And we also move WTFGetBackTrace from Assertions.cpp to
        StackTrace.cpp to consolidate stack trace related operations
        into StackTrace.cpp.

        * wtf/Assertions.cpp:
        * wtf/StackTrace.cpp:
        (WTFGetBacktrace):
        (WTF::StackTrace::captureStackTrace):
        * wtf/StackTrace.h:

2017-07-13  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, annotate inline for operator==/!= for FastAllocator
        https://bugs.webkit.org/show_bug.cgi?id=174366

        * wtf/FastMalloc.h:
        (WTF::operator==):
        (WTF::operator!=):

2017-07-12  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r219176.
        https://bugs.webkit.org/show_bug.cgi?id=174436

        "Can cause infinite recursion on iOS" (Requested by mlam on
        #webkit).

        Reverted changeset:

        "WTF::Thread should have the threads stack bounds."
        https://bugs.webkit.org/show_bug.cgi?id=173975
        http://trac.webkit.org/changeset/219176

2017-07-12  Adrian Perez de Castro  <aperez@igalia.com>

        [WTF] Failure to build when the compiler specifically targets ARMv8-A / defines __ARM_ARCH_8A__
        https://bugs.webkit.org/show_bug.cgi?id=174425

        Reviewed by Michael Catanzaro.

        * wtf/Platform.h: Also check for __ARCH_ARM_8A__ to detect ARMv8.

2017-07-12  Michael Saboff  <msaboff@apple.com>

        Unreviewed build fix when both DATA_LOG_TO_FILE and DATA_LOG_FILENAME are defined.

        * wtf/DataLog.cpp:
        (WTF::initializeLogFileOnce): Changed declaration of logBasename from
        char* logBasename to const char* logBasename.

2017-07-12  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r219401.

        This revision rolled out the previous patch, but after talking
        with reviewer, a rebaseline is what was needed.Rolling back in
        before rebaseline.

        Reverted changeset:

        "Unreviewed, rolling out r219379."
        https://bugs.webkit.org/show_bug.cgi?id=174400
        http://trac.webkit.org/changeset/219401

2017-07-12  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r219379.

        This revision caused a consistent failure in the test
        fast/dom/Window/property-access-on-cached-window-after-frame-
        removed.html.

        Reverted changeset:

        "Remove NAVIGATOR_HWCONCURRENCY"
        https://bugs.webkit.org/show_bug.cgi?id=174400
        http://trac.webkit.org/changeset/219379

2017-07-12  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, attempt to fix Windows build
        https://bugs.webkit.org/show_bug.cgi?id=174366

        * wtf/FastMalloc.h:
        (WTF::operator==):
        (WTF::operator!=):
        (WTF::FastAllocator::operator==): Deleted.
        (WTF::FastAllocator::operator!=): Deleted.

2017-07-11  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Enable FILE_LOCK and implement lockFile and unlockFile
        https://bugs.webkit.org/show_bug.cgi?id=174357

        Reviewed by Michael Catanzaro.

        * wtf/Platform.h: Enable FILE_LOCK in GTK and WPE ports.

2017-07-11  Dean Jackson  <dino@apple.com>

        Remove NAVIGATOR_HWCONCURRENCY
        https://bugs.webkit.org/show_bug.cgi?id=174400

        Reviewed by Sam Weinig.

        * wtf/FeatureDefines.h:

2017-07-11  Dean Jackson  <dino@apple.com>

        Rolling out r219372.

        * wtf/FeatureDefines.h:

2017-07-11  Dean Jackson  <dino@apple.com>

        Remove NAVIGATOR_HWCONCURRENCY
        https://bugs.webkit.org/show_bug.cgi?id=174400

        Reviewed by Sam Weinig.

        * wtf/FeatureDefines.h:

2017-07-11  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Drop unnecessary AtomicString constructor since we have constexpr hash function
        https://bugs.webkit.org/show_bug.cgi?id=174347

        Reviewed by Alex Christensen.

        Previously, we calculate hash value in perl script and generate source code with that value.
        This AtomicString constructor takes this pre-calculated hash value to efficiently construct
        itself. But now, we have constexpr hash function, then we do not need to specify hash value
        directly in this way. Thus we drop this functionality.

        * wtf/text/AtomicString.h:
        * wtf/text/AtomicStringImpl.cpp:
        (WTF::HashAndCharactersTranslator::hash): Deleted.
        (WTF::HashAndCharactersTranslator::equal): Deleted.
        (WTF::HashAndCharactersTranslator::translate): Deleted.
        * wtf/text/AtomicStringImpl.h:
        (WTF::AtomicStringImpl::add):

2017-07-10  Per Arne Vollan  <pvollan@apple.com>

        [Win] Link error when building WTF from WTF.proj project file.
        https://bugs.webkit.org/show_bug.cgi?id=174316
        <rdar://problem/33178200>

        Reviewed by Brent Fulgham.

        WTF_CPU_X86 cmake variable needs to be set for link libraries directories to be correct.

        * WTF.vcxproj/WTF.proj:

2017-07-03  Brian Burg  <bburg@apple.com>

        Web Replay: remove some unused code
        https://bugs.webkit.org/show_bug.cgi?id=173903

        Rubber-stamped by Joseph Pecoraro.

        * wtf/FeatureDefines.h:

2017-07-10  Brady Eidson  <beidson@apple.com>

        Cleanup lifetime issues of UniqueIDBDatabase and IDBBackingStore.
        <rdar://problem/32908525> and https://bugs.webkit.org/show_bug.cgi?id=174244

        Reviewed by David Kilzer and Alex Christensen. 

        Add proper "kill" support to CrossThreadQueue, as well as isEmpty() support.

        * wtf/CrossThreadQueue.h:
        (WTF::CrossThreadQueue<DataType>::append):
        (WTF::CrossThreadQueue<DataType>::kill):
        (WTF::CrossThreadQueue<DataType>::isKilled):
        (WTF::CrossThreadQueue<DataType>::isEmpty):
        (WTF::CrossThreadQueue::isKilled): Deleted.

2017-07-09  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Use fastMalloc / fastFree for STL containers
        https://bugs.webkit.org/show_bug.cgi?id=174297

        Reviewed by Sam Weinig.

        * wtf/FastMalloc.h:
        (WTF::FastAllocator::FastAllocator):
        (WTF::FastAllocator::allocate):
        (WTF::FastAllocator::deallocate):
        (WTF::FastAllocator::operator==):
        (WTF::FastAllocator::operator!=):

2017-07-07  Brent Fulgham  <bfulgham@apple.com>

        [WK2] Use a rolling 30-day uptime for processing statistics
        https://bugs.webkit.org/show_bug.cgi?id=174235
        <rdar://problem/33164381>

        Reviewed by Chris Dumez.

        Modify Deque to allow it to be used in a template specialization in KeyedDecoder.

        * wtf/Deque.h:

2017-07-07  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r219238, r219239, and r219241.
        https://bugs.webkit.org/show_bug.cgi?id=174265

        "fast/workers/dedicated-worker-lifecycle.html is flaky"
        (Requested by yusukesuzuki on #webkit).

        Reverted changesets:

        "[WTF] Implement WTF::ThreadGroup"
        https://bugs.webkit.org/show_bug.cgi?id=174081
        http://trac.webkit.org/changeset/219238

        "Unreviewed, build fix after r219238"
        https://bugs.webkit.org/show_bug.cgi?id=174081
        http://trac.webkit.org/changeset/219239

        "Unreviewed, CLoop build fix after r219238"
        https://bugs.webkit.org/show_bug.cgi?id=174081
        http://trac.webkit.org/changeset/219241

2017-07-07  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, Windows build fix after r219233 part 4
        https://bugs.webkit.org/show_bug.cgi?id=174231

        * wtf/Assertions.h:

2017-07-06  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, Windows build fix after r219233 part 3
        https://bugs.webkit.org/show_bug.cgi?id=174231

        * wtf/Assertions.h:
        (compilerFenceForCrash):

2017-07-06  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, Windows build fix after r219233 part 2
        https://bugs.webkit.org/show_bug.cgi?id=174231

        * wtf/Assertions.h:

2017-07-06  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, Windows build fix after r219233
        https://bugs.webkit.org/show_bug.cgi?id=174231

        * wtf/Compiler.h:

2017-07-06  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, build fix after r219238
        https://bugs.webkit.org/show_bug.cgi?id=174081

        * wtf/Threading.cpp:
        (WTF::Thread::addToThreadGroup):

2017-07-05  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Implement WTF::ThreadGroup
        https://bugs.webkit.org/show_bug.cgi?id=174081

        Reviewed by Mark Lam.

        This patch implements WTF::ThreadGroup. It implements core of JSC::MachineThreads with more reliable way.
        JSC::MachineThreads was complicated because of managing dead threads. Each JSC::MachineThreads has its
        own TLS with a registered destructor. And everytime a thread dies, the registered TLS destructor is called.
        And this destructor will remove the current dying thread from JSC::MachineThreads.

        However the above implementation is tricky. And each JSC::MachineThreads requires own TLS space, which is
        not considered in WTF's Windows ThreadSpecific implementation. Current design works well since we only
        have small number of MachineThreads right now.

        Instead, we use more reliable way. After introducing WTF::Thread, WTF::Thread has WTF::Thread::didExit,
        which is called when associated TLS (with WTF::Thread) is destroyed. We leverage this mechanism to remove
        WTF::Thread from MachineThreads.

        This patch introduces WTF::ThreadGroup. It is tightly integrated with WTF::Thread: WTF::Thread knows
        ThreadGroups which includes this thread. And WTF::ThreadGroup of course knows WTF::Threads added to it.
        WTF::Thread::didExit carefully remove itself from WTF::ThreadGroups.

        The most important part of this patch is locking. WTF::Thread can die. And WTF::ThreadGroup can die.
        If we take a design using two fine grain locks in WTF::Thread and WTF::ThreadGroup, we easily encounter
        dead lock. Consider the following case.

        1. When adding WTF::Thread (TH) to WTF::ThreadGroup (THG), we first hold a lock of THG, and hold a lock of TH (locking order is THG -> TH).
        2. When TH dies, TH need to hold a lock of TH to iterate THGs. And we hold a lock of THG to unregister TH from it (locking order is TH -> THG).
        3. When suspending and resuming THs in THG, we first hold a lock of THG. And then, we hold a lock of TH to suspend and resume it (locking order is THG -> TH).
        4. When destroying THG, we need to hold a lock of TH to unregister THG from TH. We can hold a lock of THG before that (locking order is THG -> TH).

        Then, it easily causes dead lock. We cannot swap the locking order of (2) since iterating THG requires a lock of TH.
        To solve this problem, we introduce one global lock ThreadGroup::destructionMutex (GL).

        1. When adding WTF::Thread (TH) to WTF::ThreadGroup (THG), we first hold GL, and hold a lock of THG. Do not hold a
        lock of TH. TH's thread groups information is guarded by GL instead of a lock of TH (locking order is GL -> THG).
        2. When TH dies, TH need to hold GL to iterate THGs. And we hold a lock of THG to unregister TH from it (locking order is GL -> THG).
        3. When suspending and resuming THs in THG, we first hold a lock of THG. And then, we hold a lock of TH to suspend and resume it (locking order is THG -> TH).
        4. When destroying THG, we need to hold GL to unregister THG from TH. We can hold a lock of THG after that (locking order is GL -> THG).

        We still have a lock of THG. By separating GL and THG's lock, we can hold a lock of THG while completely unrelated TH is destructed which takes a lock of GL and unrelated THG.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/AutomaticThread.cpp:
        * wtf/CMakeLists.txt:
        * wtf/CrossThreadCopier.h:
        * wtf/ParkingLot.h:
        * wtf/ThreadGroup.cpp: Copied from Source/JavaScriptCore/wasm/WasmMachineThreads.cpp.
        (WTF::ThreadGroup::destructionMutex):
        (WTF::ThreadGroup::~ThreadGroup):
        (WTF::ThreadGroup::add):
        (WTF::ThreadGroup::addCurrentThread):
        (WTF::ThreadGroup::removeCurrentThread):
        * wtf/ThreadGroup.h: Copied from Source/JavaScriptCore/wasm/WasmMachineThreads.cpp.
        (WTF::ThreadGroup::create):
        (WTF::ThreadGroup::threads):
        (WTF::ThreadGroup::getLock):
        * wtf/Threading.cpp:
        (WTF::Thread::didExit):
        (WTF::Thread::addToThreadGroup):
        (WTF::Thread::removeFromThreadGroup):
        * wtf/Threading.h:
        (WTF::Thread::canAddToThreadGroup):

2017-07-06  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Clean up StringStatics.cpp by using LazyNeverDestroyed<> for Atoms
        https://bugs.webkit.org/show_bug.cgi?id=174150

        Reviewed by Mark Lam.

        This patch cleans up StringStatics.cpp and remove it from the tree.

        1. Move StringImpl methods to appropriate place, "StringImpl.cpp".

        StringImpl::hashSlowCase() and StringImpl::concurrentHash() are defined in
        StringStatics.cpp. But they should be defined in StringImpl.cpp.
        This patch just moves them to StringImpl.cpp.

        2. Use LazyNeverDestroyed to initialize AtomicString atoms like emptyAtom.

        Previously, we initialized AtomicString atoms like emptyAtom in a hacky way.
        We first define them as extern global variables. However, AtomicString has
        a non-trivial constructor. Thus, we cannot do this because it requires global
        constructor calls. This is why we have StringStatics.cpp. In this file, we
        include "StaticConstructors.h". After including this file, all the global
        constructor call disabled in Windows. And in GCC environment, we allocate
        void* storage for that variable. And we use placement new in AtomicString::init()
        to initialize these storage.
        However, we already have better way for that: LazyNeverDestroyed. It just allocates
        storage like the above. And it does not have any global constructors. Thus
        we can just declare it as a global variable. And we initialize them lazily in
        AtomicString::init(). This way effectively avoids "StaticConstructors.h" hacky way.
        And it makes "StringStatics.cpp" unnecessary.
        Then, we just move these variables and AtomicString::init() to AtomicString.cpp.

        And we also change emptyAtom to emptyAtom() to get the value from LazyNeverDestroyed<>.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/text/AtomicString.cpp:
        (WTF::AtomicString::convertASCIICase):
        (WTF::AtomicString::fromUTF8Internal):
        (WTF::AtomicString::init):
        * wtf/text/AtomicString.h:
        (WTF::nullAtom):
        (WTF::emptyAtom):
        (WTF::starAtom):
        (WTF::xmlAtom):
        (WTF::xmlnsAtom):
        (WTF::AtomicString::fromUTF8):
        * wtf/text/StringBuilder.h:
        (WTF::StringBuilder::toAtomicString):
        * wtf/text/StringImpl.cpp:
        (WTF::StringImpl::hashSlowCase):
        (WTF::StringImpl::concurrentHash):
        * wtf/text/StringStatics.cpp: Removed.

2017-07-06  Keith Miller  <keith_miller@apple.com>

        Add extra insurance to prevent clang from making crash traces sad
        https://bugs.webkit.org/show_bug.cgi?id=174231

        Reviewed by Saam Barati.

        This patch makes it slightly harder for Clang to coalesce our crash calls.
        Additionally, it also makes Clang never tail call the WTFCrashWithInfo so
        our stack trace should always be "reasonable".

        * wtf/Assertions.h:
        * wtf/Compiler.h:

2017-07-06  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r219178.

        This caused a consistent failure with the API test
        StringBuilderTest.ToAtomicStringOnEmpty on all Debug testers.

        Reverted changeset:

        "[WTF] Clean up StringStatics.cpp by using
        LazyNeverDestroyed<> for Atoms"
        https://bugs.webkit.org/show_bug.cgi?id=174150
        http://trac.webkit.org/changeset/219178

2017-07-05  Don Olmstead  <don.olmstead@sony.com>

        [WTF] Move SoftLinking.h into WTF
        https://bugs.webkit.org/show_bug.cgi?id=174000

        Reviewed by Alex Christensen.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/SoftLinking.h: Copied from Source/WebCore/platform/ios/QuickLookSoftLink.mm.
        * wtf/cocoa/SoftLinking.h: Renamed from Source/WebCore/platform/cocoa/SoftLinking.h.
        * wtf/win/SoftLinking.h: Renamed from Source/WebCore/platform/win/SoftLinking.h.

2017-07-05  Yusuke Suzuki  <utatane.tea@gmail.com>

        Upgrade GCC baseline
        https://bugs.webkit.org/show_bug.cgi?id=174155

        Reviewed by Michael Catanzaro.

        * wtf/Compiler.h:

2017-07-05  Yusuke Suzuki  <utatane.tea@gmail.com>

        WTF::StringImpl::copyChars segfaults when built with GCC 7
        https://bugs.webkit.org/show_bug.cgi?id=173407

        Reviewed by Andreas Kling.

        With GCC 7, StringImpl::copyChars() behaves as unexpected.
        This function violates strict aliasing rule.

        This optimization is originally introduced to improve performance
        in SunSpider's string tests in 2008. When running it in my Linux
        box, it no longer causes any observable difference. So, we just
        remove this optimization.

                                        baseline                  patched

        string-base64                7.7544+-0.1761            7.6138+-0.2071          might be 1.0185x faster
        string-fasta                10.5429+-0.2746     ?     10.7500+-0.2669        ? might be 1.0196x slower
        string-tagcloud             14.8588+-0.2828           14.8039+-0.3039
        string-unpack-code          36.1769+-0.4251           35.3397+-0.5398          might be 1.0237x faster
        string-validate-input        8.5182+-0.2206            8.3514+-0.2179          might be 1.0200x faster

        * wtf/text/StringImpl.h:
        (WTF::StringImpl::copyChars):

2017-07-05  Yusuke Suzuki  <utatane.tea@gmail.com>

        Use std::lock_guard instead of std::unique_lock if move semantics and try_lock is not necessary
        https://bugs.webkit.org/show_bug.cgi?id=174148

        Reviewed by Mark Lam.

        It is not necessary to use std::unique_lock if we do not use additional features compared to std::lock_guard.

        (WTF::ThreadHolder::get):
        (WTF::ThreadHolder::initialize):
        (WTF::ThreadHolder::destruct):
        * wtf/Threading.cpp:
        (WTF::Thread::didExit):
        * wtf/ThreadingPthreads.cpp:
        (WTF::Thread::changePriority):
        (WTF::Thread::waitForCompletion):
        (WTF::Thread::detach):
        (WTF::Thread::signal):
        (WTF::Thread::resume):
        (WTF::Thread::getRegisters):
        (WTF::Thread::establish):
        * wtf/ThreadingWin.cpp:
        (WTF::Thread::changePriority):
        (WTF::Thread::waitForCompletion):
        (WTF::Thread::detach):
        (WTF::Thread::resume):
        (WTF::Thread::getRegisters):
        (WTF::Thread::establish):
        * wtf/WordLock.cpp:
        (WTF::WordLockBase::unlockSlow):

2017-07-05  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Clean up StringStatics.cpp by using LazyNeverDestroyed<> for Atoms
        https://bugs.webkit.org/show_bug.cgi?id=174150

        Reviewed by Mark Lam.

        This patch cleans up StringStatics.cpp and remove it from the tree.

        1. Move StringImpl methods to appropriate place, "StringImpl.cpp".

        StringImpl::hashSlowCase() and StringImpl::concurrentHash() are defined in
        StringStatics.cpp. But they should be defined in StringImpl.cpp.
        This patch just moves them to StringImpl.cpp.

        2. Use LazyNeverDestroyed to initialize AtomicString atoms like emptyAtom.

        Previously, we initialized AtomicString atoms like emptyAtom in a hacky way.
        We first define them as extern global variables. However, AtomicString has
        a non-trivial constructor. Thus, we cannot do this because it requires global
        constructor calls. This is why we have StringStatics.cpp. In this file, we
        include "StaticConstructors.h". After including this file, all the global
        constructor call disabled in Windows. And in GCC environment, we allocate
        void* storage for that variable. And we use placement new in AtomicString::init()
        to initialize these storage.
        However, we already have better way for that: LazyNeverDestroyed. It just allocates
        storage like the above. And it does not have any global constructors. Thus
        we can just declare it as a global variable. And we initialize them lazily in
        AtomicString::init(). This way effectively avoids "StaticConstructors.h" hacky way.
        And it makes "StringStatics.cpp" unnecessary.
        Then, we just move these variables and AtomicString::init() to AtomicString.cpp.

        And we also change emptyAtom to emptyAtom() to get the value from LazyNeverDestroyed<>.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/text/AtomicString.cpp:
        (WTF::AtomicString::convertASCIICase):
        (WTF::AtomicString::fromUTF8Internal):
        (WTF::AtomicString::init):
        * wtf/text/AtomicString.h:
        (WTF::nullAtom):
        (WTF::emptyAtom):
        (WTF::starAtom):
        (WTF::xmlAtom):
        (WTF::xmlnsAtom):
        (WTF::AtomicString::fromUTF8):
        * wtf/text/StringBuilder.h:
        (WTF::StringBuilder::toAtomicString):
        * wtf/text/StringImpl.cpp:
        (WTF::StringImpl::hashSlowCase):
        (WTF::StringImpl::concurrentHash):
        * wtf/text/StringStatics.cpp: Removed.

2017-07-05  Yusuke Suzuki  <utatane.tea@gmail.com>

        WTF::Thread should have the threads stack bounds.
        https://bugs.webkit.org/show_bug.cgi?id=173975

        Reviewed by Keith Miller.

        We move StackBounds from WTFThreadData to WTF::Thread.
        One important thing is that we should make valid StackBounds
        visible to Thread::create() caller. When the caller get
        WTF::Thread from Thread::create(), this WTF::Thread should
        have a valid StackBounds. But StackBounds information can be
        retrived only in the WTF::Thread's thread itself.

        We also clean up WTF::initializeThreading. StringImpl::empty()
        is now statically initialized by using constexpr constructor.
        Thus we do not need to call StringImpl::empty() explicitly here.
        And WTF::initializeThreading() does not have any main thread
        affinity right now in all the platforms. So we fix the comment
        in Threading.h. Then, now, WTF::initializeThreading() is called
        in UI thread when using Web thread in iOS.

        * wtf/StackBounds.h:
        (WTF::StackBounds::emptyBounds):
        (WTF::StackBounds::StackBounds):
        * wtf/StackStats.cpp:
        (WTF::StackStats::PerThreadStats::PerThreadStats):
        * wtf/Threading.cpp:
        (WTF::threadEntryPoint):
        (WTF::Thread::create):
        (WTF::Thread::currentMayBeNull):
        (WTF::Thread::initialize):
        (WTF::initializeThreading):
        * wtf/Threading.h:
        (WTF::Thread::stack):
        * wtf/ThreadingPthreads.cpp:
        (WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
        (WTF::Thread::current):
        (WTF::initializeCurrentThreadEvenIfNonWTFCreated): Deleted.
        (WTF::Thread::currentMayBeNull): Deleted.
        * wtf/ThreadingWin.cpp:
        (WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
        (WTF::Thread::initializeCurrentThreadInternal):
        (WTF::Thread::current):
        * wtf/WTFThreadData.cpp:
        (WTF::WTFThreadData::WTFThreadData):
        * wtf/WTFThreadData.h:
        (WTF::WTFThreadData::stack): Deleted.

2017-07-05  Keith Miller  <keith_miller@apple.com>

        Crashing with information should have an abort reason
        https://bugs.webkit.org/show_bug.cgi?id=174185

        Reviewed by Saam Barati.

        Fix an ifdef to actually work with X86_64. It turns out X64_64 is
        not an architecture... Whoops.

        * wtf/Assertions.cpp:

2017-07-03  Myles C. Maxfield  <mmaxfield@apple.com>

        Remove copy of ICU headers from WebKit
        https://bugs.webkit.org/show_bug.cgi?id=116407

        Reviewed by Alex Christensen.

        Add an extra rsync command to CopyWTFHeaders which copies the ICU headers
        to DSTROOT/usr/local/include/. These headers already live inside a
        "unicode" folder, so an example path of a header is
        DSTROOT/usr/local/include/unicode/uchar.h. This is already in the search
        path of the other WebKit projects, so those other projects can remove
        their explicit listing of the old place these headers lived.

        Also add the remaining ICU 55.1 headers which the other projects (like
        WebCore) need. Revert any local changes to these headers in favor of
        using the GCC_PREPROCESSOR_DEFINITIONS build setting. This is so we can
        compile the same way against unmodified headers.

        * Configurations/Base.xcconfig:
        * Configurations/CopyWTFHeaders.xcconfig:
        * WTF.xcodeproj/project.pbxproj:
        * icu/unicode/alphaindex.h: Added.
        * icu/unicode/appendable.h: Added.
        * icu/unicode/basictz.h: Added.
        * icu/unicode/brkiter.h: Added.
        (BreakIterator::isBufferClone):
        * icu/unicode/bytestrie.h: Added.
        * icu/unicode/bytestriebuilder.h: Added.
        * icu/unicode/calendar.h: Added.
        (Calendar::createInstance):
        (Calendar::roll):
        (Calendar::internalSet):
        (Calendar::weekNumber):
        * icu/unicode/caniter.h: Added.
        * icu/unicode/chariter.h: Renamed from Source/WebCore/icu/unicode/chariter.h.
        * icu/unicode/choicfmt.h: Added.
        * icu/unicode/coleitr.h: Added.
        (CollationElementIterator::primaryOrder):
        (CollationElementIterator::secondaryOrder):
        (CollationElementIterator::tertiaryOrder):
        (CollationElementIterator::isIgnorable):
        * icu/unicode/coll.h: Added.
        * icu/unicode/compactdecimalformat.h: Added.
        * icu/unicode/curramt.h: Added.
        (CurrencyAmount::getCurrency):
        (CurrencyAmount::getISOCurrency):
        * icu/unicode/currpinf.h: Added.
        (CurrencyPluralInfo::operator!=):
        * icu/unicode/currunit.h: Added.
        (CurrencyUnit::getISOCurrency):
        * icu/unicode/datefmt.h: Added.
        * icu/unicode/dbbi.h: Added.
        * icu/unicode/dcfmtsym.h: Added.
        (DecimalFormatSymbols::getSymbol):
        (DecimalFormatSymbols::getConstSymbol):
        (DecimalFormatSymbols::setSymbol):
        (DecimalFormatSymbols::getLocale):
        (DecimalFormatSymbols::getCurrencyPattern):
        * icu/unicode/decimfmt.h: Added.
        (DecimalFormat::getConstSymbol):
        * icu/unicode/docmain.h: Added.
        * icu/unicode/dtfmtsym.h: Added.
        * icu/unicode/dtintrv.h: Added.
        (DateInterval::getFromDate):
        (DateInterval::getToDate):
        (DateInterval::operator!=):
        * icu/unicode/dtitvfmt.h: Added.
        (DateIntervalFormat::operator!=):
        * icu/unicode/dtitvinf.h: Added.
        (DateIntervalInfo::operator!=):
        * icu/unicode/dtptngen.h: Added.
        * icu/unicode/dtrule.h: Added.
        * icu/unicode/enumset.h: Added.
        (EnumSet::EnumSet):
        (EnumSet::~EnumSet):
        (EnumSet::clear):
        (EnumSet::add):
        (EnumSet::remove):
        (EnumSet::contains):
        (EnumSet::set):
        (EnumSet::get):
        (EnumSet::isValidEnum):
        (EnumSet::isValidValue):
        (EnumSet::operator=):
        (EnumSet::getAll):
        (EnumSet::flag):
        * icu/unicode/errorcode.h: Added.
        * icu/unicode/fieldpos.h: Added.
        (FieldPosition::operator=):
        (FieldPosition::operator==):
        (FieldPosition::operator!=):
        * icu/unicode/filteredbrk.h: Added.
        * icu/unicode/fmtable.h: Added.
        (Formattable::getDate):
        (Formattable::getString):
        (Formattable::getLong):
        (Formattable::toUFormattable):
        (Formattable::fromUFormattable):
        * icu/unicode/format.h: Added.
        * icu/unicode/fpositer.h: Added.
        * icu/unicode/gender.h: Added.
        * icu/unicode/gregocal.h: Added.
        * icu/unicode/icudataver.h: Added.
        * icu/unicode/icuplug.h: Added.
        * icu/unicode/idna.h: Added.
        * icu/unicode/listformatter.h: Added.
        (ListFormatData::ListFormatData):
        * icu/unicode/locdspnm.h: Added.
        (LocaleDisplayNames::createInstance):
        * icu/unicode/locid.h: Added.
        (Locale::operator!=):
        (Locale::getCountry):
        (Locale::getLanguage):
        (Locale::getScript):
        (Locale::getVariant):
        (Locale::getName):
        (Locale::isBogus):
        * icu/unicode/measfmt.h: Added.
        * icu/unicode/measunit.h: Added.
        * icu/unicode/measure.h: Added.
        (Measure::getNumber):
        (Measure::getUnit):
        * icu/unicode/messagepattern.h: Added.
        * icu/unicode/msgfmt.h: Added.
        * icu/unicode/normalizer2.h: Added.
        * icu/unicode/normlzr.h: Added.
        (Normalizer::operator!= ):
        (Normalizer::quickCheck):
        (Normalizer::isNormalized):
        (Normalizer::compare):
        * icu/unicode/numfmt.h: Added.
        (NumberFormat::isParseIntegerOnly):
        (NumberFormat::isLenient):
        * icu/unicode/numsys.h: Added.
        * icu/unicode/parsepos.h: Added.
        (ParsePosition::operator=):
        (ParsePosition::operator==):
        (ParsePosition::operator!=):
        (ParsePosition::getIndex):
        (ParsePosition::setIndex):
        (ParsePosition::getErrorIndex):
        (ParsePosition::setErrorIndex):
        * icu/unicode/plurfmt.h: Added.
        * icu/unicode/plurrule.h: Added.
        * icu/unicode/rbbi.h: Added.
        (RuleBasedBreakIterator::operator!=):
        * icu/unicode/rbnf.h: Added.
        (RuleBasedNumberFormat::isLenient):
        (RuleBasedNumberFormat::getDefaultRuleSet):
        * icu/unicode/rbtz.h: Added.
        * icu/unicode/regex.h: Added.
        * icu/unicode/region.h: Added.
        * icu/unicode/reldatefmt.h: Added.
        * icu/unicode/resbund.h: Added.
        * icu/unicode/schriter.h: Added.
        * icu/unicode/scientificnumberformatter.h: Added.
        * icu/unicode/search.h: Added.
        (SearchIterator::operator!=):
        * icu/unicode/selfmt.h: Added.
        * icu/unicode/simpletz.h: Added.
        (SimpleTimeZone::setStartRule):
        (SimpleTimeZone::setEndRule):
        (SimpleTimeZone::getOffset):
        * icu/unicode/smpdtfmt.h: Added.
        (SimpleDateFormat::get2DigitYearStart):
        * icu/unicode/sortkey.h: Added.
        (CollationKey::operator!=):
        (CollationKey::isBogus):
        (CollationKey::getByteArray):
        * icu/unicode/stringtriebuilder.h: Added.
        * icu/unicode/stsearch.h: Added.
        * icu/unicode/symtable.h: Added.
        * icu/unicode/tblcoll.h: Added.
        * icu/unicode/timezone.h: Added.
        (TimeZone::getID):
        (TimeZone::setID):
        * icu/unicode/tmunit.h: Added.
        * icu/unicode/tmutamt.h: Added.
        (TimeUnitAmount::operator!=):
        * icu/unicode/tmutfmt.h: Added.
        (TimeUnitFormat::operator!=):
        * icu/unicode/translit.h: Added.
        (Transliterator::getMaximumContextLength):
        (Transliterator::setID):
        (Transliterator::integerToken):
        (Transliterator::pointerToken):
        * icu/unicode/tzfmt.h: Added.
        * icu/unicode/tznames.h: Added.
        * icu/unicode/tzrule.h: Added.
        * icu/unicode/tztrans.h: Added.
        * icu/unicode/ubidi.h: Added.
        * icu/unicode/ucal.h: Renamed from Source/JavaScriptCore/icu/unicode/ucal.h.
        * icu/unicode/ucasemap.h: Added.
        * icu/unicode/ucat.h: Added.
        * icu/unicode/ucharstrie.h: Added.
        * icu/unicode/ucharstriebuilder.h: Added.
        * icu/unicode/uchriter.h: Added.
        * icu/unicode/uclean.h: Added.
        * icu/unicode/ucnv_cb.h: Renamed from Source/WebCore/icu/unicode/ucnv_cb.h.
        * icu/unicode/ucnvsel.h: Added.
        * icu/unicode/ucoleitr.h: Renamed from Source/WebCore/icu/unicode/ucoleitr.h.
        * icu/unicode/uconfig.h:
        * icu/unicode/ucsdet.h: Renamed from Source/WebCore/icu/unicode/ucsdet.h.
        * icu/unicode/udat.h: Renamed from Source/JavaScriptCore/icu/unicode/udat.h.
        * icu/unicode/udata.h: Added.
        * icu/unicode/udateintervalformat.h: Added.
        * icu/unicode/udatpg.h: Renamed from Source/JavaScriptCore/icu/unicode/udatpg.h.
        * icu/unicode/udisplaycontext.h: Renamed from Source/JavaScriptCore/icu/unicode/udisplaycontext.h.
        * icu/unicode/ufieldpositer.h: Renamed from Source/JavaScriptCore/icu/unicode/ufieldpositer.h.
        * icu/unicode/uformattable.h: Renamed from Source/JavaScriptCore/icu/unicode/uformattable.h.
        * icu/unicode/ugender.h: Added.
        * icu/unicode/uidna.h: Renamed from Source/WebCore/icu/unicode/uidna.h.
        * icu/unicode/uldnames.h: Added.
        * icu/unicode/ulistformatter.h: Added.
        * icu/unicode/ulocdata.h: Added.
        * icu/unicode/umisc.h: Renamed from Source/JavaScriptCore/icu/unicode/umisc.h.
        * icu/unicode/umsg.h: Added.
        * icu/unicode/unifilt.h: Added.
        * icu/unicode/unifunct.h: Added.
        * icu/unicode/unimatch.h: Added.
        * icu/unicode/unirepl.h: Added.
        * icu/unicode/uniset.h: Added.
        (UnicodeSet::operator!=):
        (UnicodeSet::isFrozen):
        (UnicodeSet::containsSome):
        (UnicodeSet::isBogus):
        (UnicodeSet::fromUSet):
        (UnicodeSet::toUSet):
        (UnicodeSet::span):
        (UnicodeSet::spanBack):
        * icu/unicode/unum.h: Renamed from Source/JavaScriptCore/icu/unicode/unum.h.
        * icu/unicode/unumsys.h: Renamed from Source/JavaScriptCore/icu/unicode/unumsys.h.
        * icu/unicode/upluralrules.h: Added.
        * icu/unicode/uregex.h: Added.
        * icu/unicode/uregion.h: Added.
        * icu/unicode/urep.h: Added.
        * icu/unicode/ures.h: Added.
        (ures_getUnicodeString):
        (ures_getNextUnicodeString):
        (ures_getUnicodeStringByIndex):
        (ures_getUnicodeStringByKey):
        * icu/unicode/usearch.h: Renamed from Source/WebCore/icu/unicode/usearch.h.
        * icu/unicode/usetiter.h: Added.
        (UnicodeSetIterator::isString):
        (UnicodeSetIterator::getCodepoint):
        (UnicodeSetIterator::getCodepointEnd):
        * icu/unicode/ushape.h: Renamed from Source/WebCore/icu/unicode/ushape.h.
        * icu/unicode/uspoof.h: Added.
        * icu/unicode/usprep.h: Added.
        * icu/unicode/ustdio.h: Added.
        * icu/unicode/ustream.h: Added.
        * icu/unicode/ustringtrie.h: Added.
        * icu/unicode/utf32.h: Added.
        * icu/unicode/utmscale.h: Added.
        * icu/unicode/utrace.h: Added.
        * icu/unicode/utrans.h: Added.
        * icu/unicode/utypes.h:
        * icu/unicode/vtzone.h: Added.

2017-07-04  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Make double-conversion's cache data constant and drop double_conversion::initialize()
        https://bugs.webkit.org/show_bug.cgi?id=174124

        Reviewed by Saam Barati.

        We annotate double-conversion's cache data as const and constexpr. And move it out of function.
        Since they are not involving global constructors, they are compiled as rodata and initialized
        without calling double_conversion::initialize().

        And we drop double_conversion::initialize() function since it is no longer necessary.

        * wtf/Threading.cpp:
        (WTF::initializeThreading):
        * wtf/dtoa/cached-powers.cc:
        * wtf/dtoa/cached-powers.h:

2017-07-04  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Initialize srandom and srand with cryptographically random number
        https://bugs.webkit.org/show_bug.cgi?id=174123

        Reviewed by Mark Lam.

        Use cryptographically random number instead of current time as a seed.

        * wtf/RandomNumberSeed.h:
        (WTF::initializeRandomNumberGenerator):

2017-07-04  Joseph Pecoraro  <pecoraro@apple.com>

        Xcode duplicate UUID for DisallowCType.h and DispatchPtr.h
        https://bugs.webkit.org/show_bug.cgi?id=174117

        Reviewed by Alexey Proskuryakov.

        * WTF.xcodeproj/project.pbxproj:
        Give DisallowCType.h and DispatchPtr.h different UUIDs.

2017-07-03  Saam Barati  <sbarati@apple.com>

        LayoutTest workers/bomb.html is a Crash
        https://bugs.webkit.org/show_bug.cgi?id=167757
        <rdar://problem/33086462>

        Reviewed by Keith Miller.

        * wtf/AutomaticThread.cpp:
        (WTF::AutomaticThreadCondition::waitFor):
        * wtf/AutomaticThread.h:

2017-07-03  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r219060.
        https://bugs.webkit.org/show_bug.cgi?id=174108

        crashing constantly when initializing UIWebView (Requested by
        thorton on #webkit).

        Reverted changeset:

        "WTF::Thread should have the threads stack bounds."
        https://bugs.webkit.org/show_bug.cgi?id=173975
        http://trac.webkit.org/changeset/219060

2017-07-03  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r219103.

        Caused multiple build failures.

        Reverted changeset:

        "Remove copy of ICU headers from WebKit"
        https://bugs.webkit.org/show_bug.cgi?id=116407
        http://trac.webkit.org/changeset/219103

2017-07-03  Myles C. Maxfield  <mmaxfield@apple.com>

        Remove copy of ICU headers from WebKit
        https://bugs.webkit.org/show_bug.cgi?id=116407

        Reviewed by Alex Christensen.

        Add an extra rsync command to CopyWTFHeaders which copies the ICU headers
        to DSTROOT/usr/local/include/. These headers already live inside a
        "unicode" folder, so an example path of a header is
        DSTROOT/usr/local/include/unicode/uchar.h. This is already in the search
        path of the other WebKit projects, so those other projects can remove
        their explicit listing of the old place these headers lived.

        Also add the remaining ICU 55.1 headers which the other projects (like
        WebCore) need. Revert any local changes to these headers in favor of
        using the GCC_PREPROCESSOR_DEFINITIONS build setting. This is so we can
        compile the same way against unmodified headers.

        * Configurations/Base.xcconfig:
        * Configurations/CopyWTFHeaders.xcconfig:
        * WTF.xcodeproj/project.pbxproj:
        * icu/unicode/alphaindex.h: Added.
        * icu/unicode/appendable.h: Added.
        * icu/unicode/basictz.h: Added.
        * icu/unicode/brkiter.h: Added.
        (BreakIterator::isBufferClone):
        * icu/unicode/bytestrie.h: Added.
        * icu/unicode/bytestriebuilder.h: Added.
        * icu/unicode/calendar.h: Added.
        (Calendar::createInstance):
        (Calendar::roll):
        (Calendar::internalSet):
        (Calendar::weekNumber):
        * icu/unicode/caniter.h: Added.
        * icu/unicode/chariter.h: Renamed from Source/WebCore/icu/unicode/chariter.h.
        * icu/unicode/choicfmt.h: Added.
        * icu/unicode/coleitr.h: Added.
        (CollationElementIterator::primaryOrder):
        (CollationElementIterator::secondaryOrder):
        (CollationElementIterator::tertiaryOrder):
        (CollationElementIterator::isIgnorable):
        * icu/unicode/coll.h: Added.
        * icu/unicode/compactdecimalformat.h: Added.
        * icu/unicode/curramt.h: Added.
        (CurrencyAmount::getCurrency):
        (CurrencyAmount::getISOCurrency):
        * icu/unicode/currpinf.h: Added.
        (CurrencyPluralInfo::operator!=):
        * icu/unicode/currunit.h: Added.
        (CurrencyUnit::getISOCurrency):
        * icu/unicode/datefmt.h: Added.
        * icu/unicode/dbbi.h: Added.
        * icu/unicode/dcfmtsym.h: Added.
        (DecimalFormatSymbols::getSymbol):
        (DecimalFormatSymbols::getConstSymbol):
        (DecimalFormatSymbols::setSymbol):
        (DecimalFormatSymbols::getLocale):
        (DecimalFormatSymbols::getCurrencyPattern):
        * icu/unicode/decimfmt.h: Added.
        (DecimalFormat::getConstSymbol):
        * icu/unicode/docmain.h: Added.
        * icu/unicode/dtfmtsym.h: Added.
        * icu/unicode/dtintrv.h: Added.
        (DateInterval::getFromDate):
        (DateInterval::getToDate):
        (DateInterval::operator!=):
        * icu/unicode/dtitvfmt.h: Added.
        (DateIntervalFormat::operator!=):
        * icu/unicode/dtitvinf.h: Added.
        (DateIntervalInfo::operator!=):
        * icu/unicode/dtptngen.h: Added.
        * icu/unicode/dtrule.h: Added.
        * icu/unicode/enumset.h: Added.
        (EnumSet::EnumSet):
        (EnumSet::~EnumSet):
        (EnumSet::clear):
        (EnumSet::add):
        (EnumSet::remove):
        (EnumSet::contains):
        (EnumSet::set):
        (EnumSet::get):
        (EnumSet::isValidEnum):
        (EnumSet::isValidValue):
        (EnumSet::operator=):
        (EnumSet::getAll):
        (EnumSet::flag):
        * icu/unicode/errorcode.h: Added.
        * icu/unicode/fieldpos.h: Added.
        (FieldPosition::operator=):
        (FieldPosition::operator==):
        (FieldPosition::operator!=):
        * icu/unicode/filteredbrk.h: Added.
        * icu/unicode/fmtable.h: Added.
        (Formattable::getDate):
        (Formattable::getString):
        (Formattable::getLong):
        (Formattable::toUFormattable):
        (Formattable::fromUFormattable):
        * icu/unicode/format.h: Added.
        * icu/unicode/fpositer.h: Added.
        * icu/unicode/gender.h: Added.
        * icu/unicode/gregocal.h: Added.
        * icu/unicode/icudataver.h: Added.
        * icu/unicode/icuplug.h: Added.
        * icu/unicode/idna.h: Added.
        * icu/unicode/listformatter.h: Added.
        (ListFormatData::ListFormatData):
        * icu/unicode/locdspnm.h: Added.
        (LocaleDisplayNames::createInstance):
        * icu/unicode/locid.h: Added.
        (Locale::operator!=):
        (Locale::getCountry):
        (Locale::getLanguage):
        (Locale::getScript):
        (Locale::getVariant):
        (Locale::getName):
        (Locale::isBogus):
        * icu/unicode/measfmt.h: Added.
        * icu/unicode/measunit.h: Added.
        * icu/unicode/measure.h: Added.
        (Measure::getNumber):
        (Measure::getUnit):
        * icu/unicode/messagepattern.h: Added.
        * icu/unicode/msgfmt.h: Added.
        * icu/unicode/normalizer2.h: Added.
        * icu/unicode/normlzr.h: Added.
        (Normalizer::operator!= ):
        (Normalizer::quickCheck):
        (Normalizer::isNormalized):
        (Normalizer::compare):
        * icu/unicode/numfmt.h: Added.
        (NumberFormat::isParseIntegerOnly):
        (NumberFormat::isLenient):
        * icu/unicode/numsys.h: Added.
        * icu/unicode/parsepos.h: Added.
        (ParsePosition::operator=):
        (ParsePosition::operator==):
        (ParsePosition::operator!=):
        (ParsePosition::getIndex):
        (ParsePosition::setIndex):
        (ParsePosition::getErrorIndex):
        (ParsePosition::setErrorIndex):
        * icu/unicode/plurfmt.h: Added.
        * icu/unicode/plurrule.h: Added.
        * icu/unicode/rbbi.h: Added.
        (RuleBasedBreakIterator::operator!=):
        * icu/unicode/rbnf.h: Added.
        (RuleBasedNumberFormat::isLenient):
        (RuleBasedNumberFormat::getDefaultRuleSet):
        * icu/unicode/rbtz.h: Added.
        * icu/unicode/regex.h: Added.
        * icu/unicode/region.h: Added.
        * icu/unicode/reldatefmt.h: Added.
        * icu/unicode/resbund.h: Added.
        * icu/unicode/schriter.h: Added.
        * icu/unicode/scientificnumberformatter.h: Added.
        * icu/unicode/search.h: Added.
        (SearchIterator::operator!=):
        * icu/unicode/selfmt.h: Added.
        * icu/unicode/simpletz.h: Added.
        (SimpleTimeZone::setStartRule):
        (SimpleTimeZone::setEndRule):
        (SimpleTimeZone::getOffset):
        * icu/unicode/smpdtfmt.h: Added.
        (SimpleDateFormat::get2DigitYearStart):
        * icu/unicode/sortkey.h: Added.
        (CollationKey::operator!=):
        (CollationKey::isBogus):
        (CollationKey::getByteArray):
        * icu/unicode/stringtriebuilder.h: Added.
        * icu/unicode/stsearch.h: Added.
        * icu/unicode/symtable.h: Added.
        * icu/unicode/tblcoll.h: Added.
        * icu/unicode/timezone.h: Added.
        (TimeZone::getID):
        (TimeZone::setID):
        * icu/unicode/tmunit.h: Added.
        * icu/unicode/tmutamt.h: Added.
        (TimeUnitAmount::operator!=):
        * icu/unicode/tmutfmt.h: Added.
        (TimeUnitFormat::operator!=):
        * icu/unicode/translit.h: Added.
        (Transliterator::getMaximumContextLength):
        (Transliterator::setID):
        (Transliterator::integerToken):
        (Transliterator::pointerToken):
        * icu/unicode/tzfmt.h: Added.
        * icu/unicode/tznames.h: Added.
        * icu/unicode/tzrule.h: Added.
        * icu/unicode/tztrans.h: Added.
        * icu/unicode/ubidi.h: Added.
        * icu/unicode/ucal.h: Renamed from Source/JavaScriptCore/icu/unicode/ucal.h.
        * icu/unicode/ucasemap.h: Added.
        * icu/unicode/ucat.h: Added.
        * icu/unicode/ucharstrie.h: Added.
        * icu/unicode/ucharstriebuilder.h: Added.
        * icu/unicode/uchriter.h: Added.
        * icu/unicode/uclean.h: Added.
        * icu/unicode/ucnv_cb.h: Renamed from Source/WebCore/icu/unicode/ucnv_cb.h.
        * icu/unicode/ucnvsel.h: Added.
        * icu/unicode/ucoleitr.h: Renamed from Source/WebCore/icu/unicode/ucoleitr.h.
        * icu/unicode/uconfig.h:
        * icu/unicode/ucsdet.h: Renamed from Source/WebCore/icu/unicode/ucsdet.h.
        * icu/unicode/udat.h: Renamed from Source/JavaScriptCore/icu/unicode/udat.h.
        * icu/unicode/udata.h: Added.
        * icu/unicode/udateintervalformat.h: Added.
        * icu/unicode/udatpg.h: Renamed from Source/JavaScriptCore/icu/unicode/udatpg.h.
        * icu/unicode/udisplaycontext.h: Renamed from Source/JavaScriptCore/icu/unicode/udisplaycontext.h.
        * icu/unicode/ufieldpositer.h: Renamed from Source/JavaScriptCore/icu/unicode/ufieldpositer.h.
        * icu/unicode/uformattable.h: Renamed from Source/JavaScriptCore/icu/unicode/uformattable.h.
        * icu/unicode/ugender.h: Added.
        * icu/unicode/uidna.h: Renamed from Source/WebCore/icu/unicode/uidna.h.
        * icu/unicode/uldnames.h: Added.
        * icu/unicode/ulistformatter.h: Added.
        * icu/unicode/ulocdata.h: Added.
        * icu/unicode/umisc.h: Renamed from Source/JavaScriptCore/icu/unicode/umisc.h.
        * icu/unicode/umsg.h: Added.
        * icu/unicode/unifilt.h: Added.
        * icu/unicode/unifunct.h: Added.
        * icu/unicode/unimatch.h: Added.
        * icu/unicode/unirepl.h: Added.
        * icu/unicode/uniset.h: Added.
        (UnicodeSet::operator!=):
        (UnicodeSet::isFrozen):
        (UnicodeSet::containsSome):
        (UnicodeSet::isBogus):
        (UnicodeSet::fromUSet):
        (UnicodeSet::toUSet):
        (UnicodeSet::span):
        (UnicodeSet::spanBack):
        * icu/unicode/unum.h: Renamed from Source/JavaScriptCore/icu/unicode/unum.h.
        * icu/unicode/unumsys.h: Renamed from Source/JavaScriptCore/icu/unicode/unumsys.h.
        * icu/unicode/upluralrules.h: Added.
        * icu/unicode/uregex.h: Added.
        * icu/unicode/uregion.h: Added.
        * icu/unicode/urep.h: Added.
        * icu/unicode/ures.h: Added.
        (ures_getUnicodeString):
        (ures_getNextUnicodeString):
        (ures_getUnicodeStringByIndex):
        (ures_getUnicodeStringByKey):
        * icu/unicode/usearch.h: Renamed from Source/WebCore/icu/unicode/usearch.h.
        * icu/unicode/usetiter.h: Added.
        (UnicodeSetIterator::isString):
        (UnicodeSetIterator::getCodepoint):
        (UnicodeSetIterator::getCodepointEnd):
        * icu/unicode/ushape.h: Renamed from Source/WebCore/icu/unicode/ushape.h.
        * icu/unicode/usprep.h: Added.
        * icu/unicode/ustdio.h: Added.
        * icu/unicode/ustream.h: Added.
        * icu/unicode/ustringtrie.h: Added.
        * icu/unicode/utf32.h: Added.
        * icu/unicode/utmscale.h: Added.
        * icu/unicode/utrace.h: Added.
        * icu/unicode/utrans.h: Added.
        * icu/unicode/utypes.h:
        * icu/unicode/vtzone.h: Added.

2017-07-03  Keith Miller  <keith_miller@apple.com>

        Fix ifndef in Assertions.h
        https://bugs.webkit.org/show_bug.cgi?id=174104

        Reviewed by Saam Barati.

        The ifndef should have been checking for
        CRASH_WITH_SECURITY_IMPLICATION_AND_INFO since that is what the
        ifndef defines.

        * wtf/Assertions.h:

2017-07-03  Andy Estes  <aestes@apple.com>

        [Xcode] Add an experimental setting to build with ccache
        https://bugs.webkit.org/show_bug.cgi?id=173875

        Reviewed by Tim Horton.

        * Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.

2017-07-03  Daewoong Jang  <daewoong.jang@navercorp.com>

        Remove an unused function export
        https://bugs.webkit.org/show_bug.cgi?id=174084

        Reviewed by Yusuke Suzuki.

        * wtf/Threading.h:

2017-07-02  Yusuke Suzuki  <utatane.tea@gmail.com>

        WTF::Thread should have the threads stack bounds.
        https://bugs.webkit.org/show_bug.cgi?id=173975

        Reviewed by Mark Lam.

        We move StackBounds from WTFThreadData to WTF::Thread.
        One important thing is that we should make valid StackBounds
        visible to Thread::create() caller. When the caller get
        WTF::Thread from Thread::create(), this WTF::Thread should
        have a valid StackBounds. But StackBounds information can be
        retrived only in the WTF::Thread's thread itself.

        * wtf/StackBounds.h:
        (WTF::StackBounds::emptyBounds):
        (WTF::StackBounds::StackBounds):
        * wtf/StackStats.cpp:
        (WTF::StackStats::PerThreadStats::PerThreadStats):
        * wtf/Threading.cpp:
        (WTF::threadEntryPoint):
        (WTF::Thread::create):
        (WTF::Thread::currentMayBeNull):
        (WTF::Thread::initialize):
        * wtf/Threading.h:
        (WTF::Thread::stack):
        * wtf/ThreadingPthreads.cpp:
        (WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
        (WTF::Thread::current):
        (WTF::initializeCurrentThreadEvenIfNonWTFCreated): Deleted.
        (WTF::Thread::currentMayBeNull): Deleted.
        * wtf/ThreadingWin.cpp:
        (WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
        (WTF::Thread::initializeCurrentThreadInternal):
        (WTF::Thread::current):
        * wtf/WTFThreadData.cpp:
        (WTF::WTFThreadData::WTFThreadData):
        * wtf/WTFThreadData.h:
        (WTF::WTFThreadData::stack): Deleted.

2017-07-01  Dan Bernstein  <mitz@apple.com>

        [iOS] Remove code only needed when building for iOS 9.x
        https://bugs.webkit.org/show_bug.cgi?id=174068

        Reviewed by Tim Horton.

        * wtf/Platform.h:
        * wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
        * wtf/spi/darwin/dyldSPI.h:

2017-07-01  Caio Lima  <ticaiolima@gmail.com>

        [JSC] WTFGetBacktrace can return numberOfFrames == 0 in some architectures
        https://bugs.webkit.org/show_bug.cgi?id=172768

        Reviewed by Mark Lam.

        In some architectures, like ARMv6 running on a Raspberry pi, the
        backtrace function from "execinfo.h" is returning 0. In
        that case, the RELEASE_ASSERT in StackTrace::captureStackTrace
        fails causing a runtime crash.
        This patch is adding a guard for the case described above to
        avoid a runtime crash in such case.

        * wtf/StackTrace.cpp:
        (WTF::StackTrace::captureStackTrace):

2017-07-01  Dan Bernstein  <mitz@apple.com>

        [macOS] Remove code only needed when building for OS X Yosemite
        https://bugs.webkit.org/show_bug.cgi?id=174067

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:
        * wtf/Platform.h:
        * wtf/mac/AppKitCompatibilityDeclarations.h:
        * wtf/spi/cocoa/SecuritySPI.h:
        * wtf/text/TextBreakIterator.cpp:

2017-07-01  Joseph Pecoraro  <pecoraro@apple.com>

        Add a warning if WEBGL2 is enabled without WEBGL
        https://bugs.webkit.org/show_bug.cgi?id=174054

        Reviewed by Sam Weinig.

        * wtf/FeatureDefines.h:

2017-06-30  Keith Miller  <keith_miller@apple.com>

        Force crashWithInfo to be out of line.
        https://bugs.webkit.org/show_bug.cgi?id=174028

        Reviewed by Filip Pizlo.

        The first pass at making crashes hold information about why they
        were crashing had the problem that it would inline the assertion.
        This meant that clang could coalesce DFG_ASSERTS with other
        assertion failures in the same function. This patch moves it out
        of line to help fix that issue.

        * wtf/Assertions.cpp:
        (WTFCrashWithInfo):
        * wtf/Assertions.h:
        (WTF::isIntegralType):

2017-06-30  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Drop SymbolRegistry::keyForSymbol
        https://bugs.webkit.org/show_bug.cgi?id=174052

        Reviewed by Sam Weinig.

        Since we can know whether a given symbol is registered by checking RegisteredSymbolImpl,
        we do not need to query key string for a given symbol by using SymbolRegistry::keyForSymbol.

        * wtf/text/SymbolImpl.h:
        (WTF::SymbolImpl::extractFoldedString): Deleted.
        * wtf/text/SymbolRegistry.cpp:
        (WTF::SymbolRegistry::keyForSymbol): Deleted.
        * wtf/text/SymbolRegistry.h:

2017-06-29  Jer Noble  <jer.noble@apple.com>

        Make Legacy EME API controlled by RuntimeEnabled setting.
        https://bugs.webkit.org/show_bug.cgi?id=173994

        Reviewed by Sam Weinig.

        * wtf/FeatureDefines.h:

2017-06-30  Ryosuke Niwa  <rniwa@webkit.org>

        Ran sort-Xcode-project-file.

        * WTF.xcodeproj/project.pbxproj:

2017-06-30  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r218992.

        The patch broke the iOS device builds.

        Reverted changeset:

        "DFG_ASSERT should allow stuffing registers before trapping."
        https://bugs.webkit.org/show_bug.cgi?id=174005
        http://trac.webkit.org/changeset/218992

2017-06-30  Keith Miller  <keith_miller@apple.com>

        DFG_ASSERT should allow stuffing registers before trapping.
        https://bugs.webkit.org/show_bug.cgi?id=174005

        Reviewed by Mark Lam.

        Add new template functions that enable stuffing up to five values
        into registers before crashing.

        * wtf/Assertions.h:
        (CRASH_WITH_INFO):

2017-06-28  Brent Fulgham  <bfulgham@apple.com>

        Teach ResourceLoadStatistics to recognize changes in the file system
        https://bugs.webkit.org/show_bug.cgi?id=173800
        <rdar://problem/32937842>

        Reviewed by Chris Dumez.

        * wtf/DispatchPtr.h: Added (moved from WebKit2)
        * wtf/Platform.h: Make sure USE_FILE_LOCK is enabled.

2017-06-28  David Kilzer  <ddkilzer@apple.com>

        Fix typo in comment: WordResult => WorkResult

        * wtf/AutomaticThread.h:

2017-06-27  Caio Lima  <ticaiolima@gmail.com>

        [ESnext] Implement Object Rest - Implementing Object Rest Destructuring
        https://bugs.webkit.org/show_bug.cgi?id=167962

        Reviewed by Saam Barati.

        * wtf/HashSet.h:
        (WTF::=):

2017-06-26  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Drop Thread::create(obsolete things) API since we can use lambda
        https://bugs.webkit.org/show_bug.cgi?id=173825

        Reviewed by Saam Barati.

        Thread::create(ThreadFunction, void* data, const char* name) is a bit old API.
        Since we have C++ lambda, the above API is simply unnecessary. And C++ lambda
        based one is better since the above API needs casting data to and from void*.

        * wtf/Function.h:
        Avoid ambiguity.
        * wtf/ParallelJobsGeneric.cpp:
        (WTF::ParallelEnvironment::ThreadPrivate::tryLockFor):
        (WTF::ParallelEnvironment::ThreadPrivate::workerThread): Deleted.
        * wtf/ParallelJobsGeneric.h:
        * wtf/Threading.cpp:
        * wtf/ThreadingWin.cpp:
        (WTF::createThread):

2017-06-25  Yusuke Suzuki  <utatane.tea@gmail.com>

        initializeThreading() [first] causes WTFCrash due to maxSingleAllocationSize not being initialized
        https://bugs.webkit.org/show_bug.cgi?id=173720

        Reviewed by Mark Lam.

        When using std::numeric_limits<size_t>::max() for global variable's initialization,
        it seems that it invokes static constructor to initialize this in VC++.
        We avoid this edge case by introducing a workaround using SIZE_MAX here.

        When I perform git-grep, there is only one site (this) using std::numeric_limits<>::xxx()
        to initialize global variable.

        * wtf/FastMalloc.cpp:

2017-06-25  Konstantin Tokarev  <annulen@yandex.ru>

        Remove excessive headers from JavaScriptCore
        https://bugs.webkit.org/show_bug.cgi?id=173812

        Reviewed by Darin Adler.

        * wtf/Bag.h:

2017-06-23  Keith Miller  <keith_miller@apple.com>

        Switch VMTraps to use halt instructions rather than breakpoint instructions
        https://bugs.webkit.org/show_bug.cgi?id=173677
        <rdar://problem/32178892>

        Reviewed by JF Bastien.

        Remove the Trap signal handler code since it plays badly with lldb and combine
        SIGBUS with SIGSEGV since distiguishing them is generally non-portable.

        Also, update the platform code to only use signaling VMTraps
        on where we have an appropriate instruction (x86 and ARM64).

        * wtf/Platform.h:
        * wtf/threads/Signals.cpp:
        (WTF::fromMachException):
        (WTF::toMachMask):
        (WTF::installSignalHandler):
        (WTF::jscSignalHandler):
        * wtf/threads/Signals.h:
        (WTF::toSystemSignal):
        (WTF::fromSystemSignal):

2017-06-23  Antti Koivisto  <antti@apple.com>

        Add notifyutil registrations for going in and out of simulated low memory state
        https://bugs.webkit.org/show_bug.cgi?id=173797

        Reviewed by Andreas Kling.

        Add

        notifyutil -p org.WebKit.lowMemory.begin
        notifyutil -p org.WebKit.lowMemory.end

        for debugging.

        * wtf/cocoa/MemoryPressureHandlerCocoa.mm:
        (WTF::MemoryPressureHandler::install):

2017-06-23  Konstantin Tokarev  <annulen@yandex.ru>

        Remove more unused headers from WTF
        https://bugs.webkit.org/show_bug.cgi?id=173761

        Reviewed by Yusuke Suzuki.

        * wtf/Liveness.h:
        * wtf/PageAllocation.h:
        * wtf/ParallelJobs.h:

2017-06-22  Andreas Kling  <akling@apple.com>

        Rename MemoryPressureHandler::setTabCount to setPageCount
        https://bugs.webkit.org/show_bug.cgi?id=173750

        Reviewed by Daniel Bates.

        This function is counting WebCore::Page objects (excluding utility Pages used
        by SVG-as-image and the web inspector) so let's name it appropriately.
        Not all WebKit clients have tabs.

        * wtf/MemoryPressureHandler.cpp:
        (WTF::MemoryPressureHandler::setPageCount):
        (WTF::MemoryPressureHandler::thresholdForMemoryKill):
        (WTF::MemoryPressureHandler::measurementTimerFired):
        (WTF::MemoryPressureHandler::setTabCount): Deleted.
        * wtf/MemoryPressureHandler.h:

2017-06-21  Andreas Kling  <akling@apple.com>

        Increase memory kill limits for WebContent processes that manage multiple tabs.
        https://bugs.webkit.org/show_bug.cgi?id=173674

        Reviewed by Geoffrey Garen.

        When opening <a target=_blank> links, we currently have to use the same WebContent
        process for the new tab, to support scripting the window.opener object.
        This means that some WebContent processes end up hosting multiple tabs, making it
        more likely that those processes will hit the memory limits.

        Address this by adding some additional allowance for multi-tab processes:

            For each additional tab, up to 4 tabs, add 1GB to the memory kill limit.

        * wtf/MemoryPressureHandler.cpp:
        (WTF::thresholdForMemoryKillWithProcessState):
        (WTF::MemoryPressureHandler::setTabCount):
        (WTF::MemoryPressureHandler::thresholdForMemoryKill):
        (WTF::MemoryPressureHandler::measurementTimerFired):
        * wtf/MemoryPressureHandler.h:

2017-06-21  Chris Dumez  <cdumez@apple.com>

        Allow constructing a WTF:Function from a function pointer
        https://bugs.webkit.org/show_bug.cgi?id=173660

        Reviewed by Alex Christensen.

        Allow constructing a WTF:Function from a function pointer and
        assigning a function pointer to a WTF:Function.

        * wtf/Function.h:

2017-06-20  Simon Fraser  <simon.fraser@apple.com>

        Remove WILL_REVEAL_EDGE_EVENTS code
        https://bugs.webkit.org/show_bug.cgi?id=173632

        Reviewed by Sam Weinig, Beth Dakin.

        Remove will-reveal-edge events, which never took off.

        * wtf/FeatureDefines.h:

2017-06-20  Konstantin Tokarev  <annulen@yandex.ru>

        Remove excessive include directives from WTF
        https://bugs.webkit.org/show_bug.cgi?id=173553

        Reviewed by Saam Barati.

        * wtf/AutomaticThread.h:
        * wtf/BagToHashMap.h:
        * wtf/CrossThreadCopier.h:
        * wtf/CrossThreadQueue.h:
        * wtf/DateMath.h:
        * wtf/Expected.h:
        * wtf/HashMap.h:
        * wtf/Indenter.h:
        * wtf/MessageQueue.h:
        * wtf/MetaAllocator.h:
        * wtf/MetaAllocatorHandle.h:
        * wtf/RandomNumberSeed.h:
        * wtf/Ref.h:
        * wtf/RefPtr.h:
        * wtf/RunLoop.h:
        * wtf/SchedulePair.h:
        * wtf/StackStats.h:
        * wtf/SynchronizedFixedQueue.h:
        * wtf/ThreadMessage.h:
        * wtf/Threading.cpp:
        * wtf/Threading.h:
        * wtf/ThreadingPthreads.cpp:
        * wtf/ThreadingWin.cpp:
        * wtf/WTFThreadData.h:
        * wtf/WorkQueue.h:
        * wtf/glib/GRefPtr.h:
        * wtf/text/AtomicStringTable.h:
        * wtf/text/LineBreakIteratorPoolICU.h:

2017-06-20  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Enable WTF::Signals only when HAVE(MACHINE_CONTEXT) is true
        https://bugs.webkit.org/show_bug.cgi?id=173590

        Reviewed by Carlos Garcia Campos.

        WTF::Signals require a feature rewriting a value of a machine context.
        This is only available under HAVE(MACHINE_CONTEXT).
        This patch disables WTF::Signals on !HAVE(MACHINE_CONTEXT) environments.

        * wtf/threads/Signals.cpp:
        * wtf/threads/Signals.h:

2017-06-20  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Rebaseline std::optional
        https://bugs.webkit.org/show_bug.cgi?id=173582

        Reviewed by JF Bastien.

        Update the copy of our std::optional to the latest version.
        It adds std::optional::has_value() and std::optional::reset().

        * wtf/Optional.h:

2017-06-18  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Include execinfo.h and dlfcn.h based on platform defines
        https://bugs.webkit.org/show_bug.cgi?id=173531

        Reviewed by Alex Christensen.

        execinfo.h and dlfcn.h can be missing in some libc libraries.
        When including it, we should honor platform defines like HAVE(DLADDR).

        * wtf/StackTrace.cpp:

2017-06-18  Darin Adler  <darin@apple.com>

        Fix Ref to deref before assignment, add tests for this to RefPtr, Ref, Function
        https://bugs.webkit.org/show_bug.cgi?id=173526

        Reviewed by Sam Weinig.

        * wtf/Ref.h: Changed operator= to not be defined inside the class definition.
        Added swap functions. Changed operator= implementations to use swap in the
        conventional manner, the same way that RefPtr does.

2017-06-18  Chris Dumez  <cdumez@apple.com>

        Use WTF::Function instead of std::function in WTF/
        https://bugs.webkit.org/show_bug.cgi?id=173519

        Reviewed by Sam Weinig.

        Use WTF::Function instead of std::function in WTF/ to avoid
        copying.

        * wtf/Brigand.h:
        * wtf/Condition.h:
        * wtf/Expected.h:
        * wtf/FunctionDispatcher.h:
        * wtf/MainThread.h:
        * wtf/MemoryPressureHandler.h:
        (WTF::MemoryPressureHandler::setMemoryKillCallback):
        (WTF::MemoryPressureHandler::setMemoryPressureStatusChangedCallback):
        (WTF::MemoryPressureHandler::setDidExceedInactiveLimitWhileActiveCallback):
        * wtf/Optional.h:
        * wtf/ParkingLot.h:
        * wtf/RefCounter.h:
        (WTF::RefCounter<T>::RefCounter):
        * wtf/WorkQueue.h:
        * wtf/linux/MemoryPressureHandlerLinux.cpp:
        (WTF::MemoryPressureHandler::EventFDPoller::EventFDPoller):
        * wtf/text/WTFString.cpp:
        (WTF::String::split):
        * wtf/text/WTFString.h:

2017-06-16  Alex Christensen  <achristensen@webkit.org>

        Fix Mac CMake build.

        * wtf/PlatformMac.cmake:
        Generate MachExceptionsServer.h

2017-06-16  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] Upstream iOS drag and drop implementation into OpenSource WebKit
        https://bugs.webkit.org/show_bug.cgi?id=173366
        <rdar://problem/32767014>

        Reviewed by Tim Horton.

        Define ENABLE_DRAG_SUPPORT as 1 by default and 0 for iOS, and define ENABLE_DATA_INTERACTION as 0 by default.
        These are overridden to both be 1 for iOS 11+ in the FeatureDefines.xcconfig within each individual project.

        * wtf/Platform.h:

2017-06-15  Chris Dumez  <cdumez@apple.com>

        Fix typo in XPCSPI.h
        https://bugs.webkit.org/show_bug.cgi?id=173426

        Reviewed by Alex Christensen.

        We should check if xpc_release is defined before defining it,
        not xpc_retain.

        * wtf/spi/darwin/XPCSPI.h:

2017-06-15  Konstantin Tokarev  <annulen@yandex.ru>

        Implement FALLTHROUGH macro for compilers other than Clang
        https://bugs.webkit.org/show_bug.cgi?id=173385

        Reviewed by Alex Christensen.

        FALLTHROUGH should be able to use [[gnu::fallthrough]] attribute of
        GCC, and [[fallthrough]] from C++17, whichever is available.

        * wtf/Compiler.h:

2017-06-14  Nael Ouedraogo  <nael.ouedraogo@crf.canon.fr>

        MediaSource duration attribute should not be equal to Infinity when set to a value greater than 2^64
        https://bugs.webkit.org/show_bug.cgi?id=171668

        Reviewed by Jer Noble.

        MediaSource duration attribute is a double represented in MediaSource by a MediaTime instance created with
        MediaTime::CreateWithDouble(). This method implements an overflow control mechanism which sets MediaTime to
        Infinity when the double value passed as argument is greater than 2^64.

        This patch removes the overflow control mechanism when time value is represented as a double. This patch also
        modifies the behavior of mathematical operations between a double MediaTime and rational MediaTime: the rational
        MediaTime is converted to a double before applying the operation. Double MediaTime precision is the same as for
        double. Overflow mechanisms still apply to the conversion of a double MediaTime to rational with setTimescale()
        method. No behavior change for rational MediaTime.

        * wtf/MediaTime.cpp:
        (WTF::MediaTime::createWithFloat):
        (WTF::MediaTime::createWithDouble):
        (WTF::MediaTime::operator+):
        (WTF::MediaTime::operator-):

2017-06-13  Zan Dobersek  <zdobersek@igalia.com>

        [GTK][WPE] Use CMAKE_THREAD_LIBS_INIT in WTF platform CMake files
        https://bugs.webkit.org/show_bug.cgi?id=173310

        Reviewed by Xabier Rodriguez-Calvar.

        In the WTF platform CMake files for the GTK+ and WPE ports, use the
        CMAKE_THREAD_LIBS_INIT variable to specify the threading library we
        should be linking against. On some platforms this variable will be
        empty because the given compiler will automatically handle the -pthread
        compiler flag and sort out linking on its own.

        The same approach is already used for the JSCOnly configuration.

        * wtf/PlatformGTK.cmake:
        * wtf/PlatformWPE.cmake:

2017-06-13  Youenn Fablet  <youenn@apple.com>

        Filter SDP from ICE candidates in case of local ICE candidate filtering
        https://bugs.webkit.org/show_bug.cgi?id=173120

        Reviewed by Eric Carlson.

        Adding split helper routine with functor parameter.

        * wtf/text/WTFString.cpp:
        (WTF::String::split):
        * wtf/text/WTFString.h:
        (WTF::String::contains):

2017-06-13  Don Olmstead  <don.olmstead@sony.com>

        [WTF] Remove redundant includes in config.h
        https://bugs.webkit.org/show_bug.cgi?id=173292

        Reviewed by Alex Christensen.

        * config.h:
        * wtf/ExportMacros.h:

2017-06-12  Jer Noble  <jer.noble@apple.com>

        Screen sleeps while doing WebRTC video
        https://bugs.webkit.org/show_bug.cgi?id=173278

        Reviewed by Eric Carlson.

        Drive-by fix: add some generic methods for iterating over collections.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/Algorithms.h: Added.
        (WTF::forEach):
        (WTF::anyOf):
        (WTF::allOf):

2017-06-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Move WebKit GType macros to WTF
        https://bugs.webkit.org/show_bug.cgi?id=173249

        Reviewed by Žan Doberšek.

        They can be used by glib-based ports and eventually by JavaScriptCore glib bindings too.

        * wtf/glib/WTFGType.h: Copied from Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h.

2017-06-11  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Make ThreadMessage portable
        https://bugs.webkit.org/show_bug.cgi?id=172073

        Reviewed by Keith Miller.

        Recently, we change ThreadMessage semantics: message handler
        can be executed in the sender thread.
        This allows ThreadMessage to be implemented in a portable way.

        This patch implements ThreadMessage for all the platforms.
        We use platform-independent Thread APIs, suspend(), resume(),
        and getRegisters().

        * wtf/PlatformRegisters.h:
        (WTF::registersFromUContext):
        * wtf/ThreadMessage.cpp:
        (WTF::sendMessageScoped):
        (WTF::ThreadMessageData::ThreadMessageData): Deleted.
        (): Deleted.
        (WTF::initializeThreadMessages): Deleted.
        (WTF::sendMessageUsingSignal): Deleted.
        (WTF::sendMessageUsingMach): Deleted.
        (WTF::deliverMessagesUsingMach): Deleted.
        * wtf/ThreadMessage.h:
        * wtf/Threading.cpp:
        (WTF::initializeThreading):
        * wtf/Threading.h:
        (WTF::Thread::threadMessages): Deleted.
        * wtf/ThreadingPthreads.cpp:
        (WTF::Thread::signalHandlerSuspendResume):
        (WTF::threadStateMetadata):
        (WTF::Thread::getRegisters):
        * wtf/threads/Signals.cpp:
        (WTF::handleSignalsWithMach):

2017-06-11  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Drop unnecessary includes in Threading.h
        https://bugs.webkit.org/show_bug.cgi?id=173167

        Reviewed by Darin Adler.

        Threading.h includes bunch of headers. But some of them are not necessary.
        This patch cleans up it a bit.

        * wtf/Assertions.cpp:
        * wtf/LocklessBag.h:
        * wtf/Threading.h:
        * wtf/ThreadingPrimitives.h:

2017-06-10  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Add RegisteredSymbolImpl
        https://bugs.webkit.org/show_bug.cgi?id=173230

        Reviewed by Mark Lam.

        Most symbols are not registered in SymbolRegistry. However, we currently always
        allocate a pointer member to point to a SymbolRegistry, and this pointer is always null.
        SymbolImpl is immutable, and it will never be registered with a SymbolRegistry
        after it is created. Hence, this member is wasteful.

        Instead, we add a new derived class RegisteredSymbolImpl, which will set a flag in
        SymbolImpl to indicate that it is registered with a SymbolRegistry. The only way to
        create a RegisteredSymbolImpl is via a factory method provided by the SymbolRegistry.
        The factory method will pass the SymbolRegistry this pointer to the RegisteredSymbolImpl's
        constructor for initializing the RegisteredSymbolImpl's m_symbolRegistry field.
        By doing so,

        1. We do not need to set m_symbolRegistry after creating a Symbol. It is clean.
        2. We reduce the size of SymbolImpls that do not need to be registered.

        * wtf/text/StringImpl.cpp:
        (WTF::StringImpl::~StringImpl):
        * wtf/text/StringImpl.h:
        * wtf/text/SymbolImpl.cpp:
        (WTF::SymbolImpl::create):
        (WTF::RegisteredSymbolImpl::create):
        * wtf/text/SymbolImpl.h:
        (WTF::SymbolImpl::hashForSymbol):
        (WTF::SymbolImpl::isRegistered):
        (WTF::SymbolImpl::SymbolImpl):
        (WTF::RegisteredSymbolImpl::symbolRegistry):
        (WTF::RegisteredSymbolImpl::clearSymbolRegistry):
        (WTF::RegisteredSymbolImpl::RegisteredSymbolImpl):
        (WTF::SymbolImpl::symbolRegistry):
        * wtf/text/SymbolRegistry.cpp:
        (WTF::SymbolRegistry::~SymbolRegistry):
        (WTF::SymbolRegistry::symbolForKey):
        (WTF::SymbolRegistry::keyForSymbol):
        (WTF::SymbolRegistry::remove):
        * wtf/text/SymbolRegistry.h:

2017-06-10  Dan Bernstein  <mitz@apple.com>

        Reverted r218056 because it made the IDE reindex constantly.

        * Configurations/DebugRelease.xcconfig:

2017-06-10  Dan Bernstein  <mitz@apple.com>

        [Xcode] With Xcode 9 developer beta, everything rebuilds when switching between command-line and IDE
        https://bugs.webkit.org/show_bug.cgi?id=173223

        Reviewed by Sam Weinig.

        The rebuilds were happening due to a difference in the compiler options that the IDE and
        xcodebuild were specifying. Only the IDE was passing the -index-store-path option. To make
        xcodebuild pass that option, too, set CLANG_INDEX_STORE_ENABLE to YES if it is unset, and
        specify an appropriate path in CLANG_INDEX_STORE_PATH.

        * Configurations/DebugRelease.xcconfig:

2017-06-09  Chris Dumez  <cdumez@apple.com>

        Update Thread::create() to take in a WTF::Function instead of a std::function
        https://bugs.webkit.org/show_bug.cgi?id=173175

        Reviewed by Mark Lam.

        Update Thread::create() to take in a WTF::Function instead of a std::function. Unlike
        std::function, WTF:Function is not copyable and does not make implicit copies of captured
        variables. Doing captures such as [string = string.isolatedCopy()] when passing an
        std::function to another thread has lead to bugs in the past due to implicit copying of
        the captured string.

        * wtf/Threading.cpp:
        (WTF::Thread::create):
        * wtf/Threading.h:

2017-06-09  Chris Dumez  <cdumez@apple.com>

        Update WorkQueue::concurrentApply() to take a WTF::Function instead of an std::function
        https://bugs.webkit.org/show_bug.cgi?id=173165

        Reviewed by Saam Barati.

        Update WorkQueue::concurrentApply() to take a WTF::Function instead of an std::function
        as std::function has issues with regards to thread safety.

        * wtf/WorkQueue.h:
        * wtf/cocoa/WorkQueueCocoa.cpp:
        (WTF::WorkQueue::concurrentApply):

2017-06-08  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        MediaTime class has rounding issues in different platforms
        https://bugs.webkit.org/show_bug.cgi?id=172640

        Reviewed by Jer Noble.

        The way a timescale is set when creating a MediaTime from a double
        can create rounding issues in different platforms because in some
        rounding is made and in others, it truncates. This way we ensure a
        common behavior.

        Dumping MediaTimes is also confusing and by the output you don't
        know if it's containing a double or a fraction. Now, if it
        contains a double, it only prints the double because printing the
        fraction is misleading (it currently prints the double read as an
        integer) and if it contains a fraction it shows the fraction and
        its double representation separated by an = instead of a ,.

        * wtf/MediaTime.cpp:
        (WTF::MediaTime::createWithDouble): When creating MediaTime from
        double, we round instead of leaving it to the cast operation.
        (WTF::MediaTime::dump):

2017-06-07  Jer Noble  <jer.noble@apple.com>

        Refactoring: MediaEngineSupportParameters should take a ContentType rather than separate type & codecs strings
        https://bugs.webkit.org/show_bug.cgi?id=173038

        Reviewed by Eric Carlson.

        Drive by fix: add a version of split that takes a UChar and returns a Vector<String>.

        * wtf/text/WTFString.h:
        (WTF::String::split):

2017-06-07  Zan Dobersek  <zdobersek@igalia.com>

        [GCrypt] RSA-PSS support
        https://bugs.webkit.org/show_bug.cgi?id=172856

        Reviewed by Jiewen Tan.

        * wtf/Platform.h: Define HAVE_RSA_PSS to 1 for USE(GCRYPT). Support for RSA-PSS
        is provided by default through the libgcrypt library.

2017-06-06  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r214974.

        Causes some tabs to start using a huge amount of CPU after 8
        minutes in the background

        Reverted changeset:

        "Make inactive web processes behave as though under memory
        pressure."
        https://bugs.webkit.org/show_bug.cgi?id=170042
        http://trac.webkit.org/changeset/214974

2017-06-06  Don Olmstead  <don.olmstead@am.sony.com>

        [WebCore] Enable REQUEST_ANIMATION_FRAME_TIMER for all ports
        https://bugs.webkit.org/show_bug.cgi?id=172780

        Reviewed by Alex Christensen.

        * wtf/Platform.h:

2017-06-06  Darin Adler  <darin@apple.com>

        Cut down use of WTF_ARRAY_LENGTH
        https://bugs.webkit.org/show_bug.cgi?id=172997

        Reviewed by Chris Dumez.

        * wtf/DateMath.cpp:
        (WTF::equalLettersIgnoringASCIICase): Added helper function template.
        (WTF::parseDateFromNullTerminatedCharacters): Use a modern for loop instead of
        WTF_ARRAY_LENGTH. Use startsWithLettersIgnoringASCIICase and
        equalLettersIgnoringASCIICase instead of strncasecmp.

        * wtf/text/IntegerToStringConversion.h:
        (WTF::numberToStringImpl): Use std::end instead of WTF_ARRAY_LENGTH.
        (WTF::writeNumberToBufferImpl): Ditto.

2017-06-06  Filip Pizlo  <fpizlo@apple.com>

        index out of bound in bytecodebasicblock
        https://bugs.webkit.org/show_bug.cgi?id=172963

        Reviewed by Saam Barati and Mark Lam.

        * wtf/Assertions.h:
        (UNREACHABLE_FOR_PLATFORM):

2017-06-05  Jer Noble  <jer.noble@apple.com>

        Allow clients to specify a list of codecs which should require hardware decode support.
        https://bugs.webkit.org/show_bug.cgi?id=172787

        Reviewed by Alex Christensen.

        Add a couple of convenience methods:
        - a String::split() that returns a vector (rather than taking an out-reference to a vector).
        - A Vector::map() template which takes a Callable and returns a Vector of a different type.

        * wtf/Vector.h:
        (WTF::Vector::map):
        * wtf/text/WTFString.h:
        (WTF::String::split):

2017-06-04  Konstantin Tokarev  <annulen@yandex.ru>

        Fix build of Windows-specific code with ICU 59.1
        https://bugs.webkit.org/show_bug.cgi?id=172729

        Reviewed by Darin Adler.

        * wtf/text/win/WCharStringExtras.h: Added new header file wuth helper
        functions for conversion between WTF::String and wchart_t*.
        (WTF::stringToNullTerminatedWChar):
        (WTF::wcharToString):
        (WTF::nullTerminatedWCharToString):

2017-06-02  Stephan Szabo  <stephan.szabo@am.sony.com>

        [JSCOnly] Build static jsc.exe on Windows
        https://bugs.webkit.org/show_bug.cgi?id=172833

        Reviewed by Konstantin Tokarev.

        * wtf/PlatformJSCOnly.cmake:

2017-06-02  Simon Fraser  <simon.fraser@apple.com>

        Get <chrono> out of StdLibExtras.h
        https://bugs.webkit.org/show_bug.cgi?id=172744

        Reviewed by Zalan Bujtas.

        We hates std::chrono. Don't include it everywhere to discourage use.

        * wtf/StdLibExtras.h:

2017-06-02  Filip Pizlo  <fpizlo@apple.com>

        Atomics.load and Atomics.store need to be fully fenced
        https://bugs.webkit.org/show_bug.cgi?id=172844

        Reviewed by Keith Miller.
        
        Add loadFullyFenced and storeFullyFenced to Atomic<>.

        * wtf/Atomics.h:
        (WTF::Atomic::loadFullyFenced):
        (WTF::Atomic::storeRelaxed):
        (WTF::Atomic::storeFullyFenced):
        (WTF::atomicLoadFullyFenced):
        (WTF::atomicStoreFullyFenced):

2017-06-01  Keith Miller  <keith_miller@apple.com>

        Undo rollout in r217638 with bug fix
        https://bugs.webkit.org/show_bug.cgi?id=172824

        Unreviewed, reland patch with unused set_state code removed.

        * Configurations/WTF.xcconfig:
        * WTF.xcodeproj/project.pbxproj:
        * wtf/Platform.h:
        * wtf/PlatformRegisters.h:
        (WTF::registersFromUContext):
        * wtf/StackBounds.h:
        (WTF::StackBounds::StackBounds):
        * wtf/ThreadHolder.cpp:
        (WTF::ThreadHolder::~ThreadHolder):
        * wtf/ThreadMessage.cpp:
        (WTF::sendMessageUsingSignal):
        (WTF::sendMessageUsingMach):
        (WTF::deliverMessagesUsingMach):
        (WTF::sendMessageScoped):
        * wtf/ThreadMessage.h:
        (WTF::sendMessage):
        * wtf/Threading.h:
        (WTF::Thread::machThread):
        * wtf/mac/MachExceptions.defs: Copied from Source/WTF/wtf/ThreadMessage.h.
        * wtf/threads/Signals.cpp:
        (WTF::startMachExceptionHandlerThread):
        (WTF::fromMachException):
        (WTF::toMachMask):
        (WTF::handleSignalsWithMach):
        (WTF::setExceptionPorts):
        (WTF::activeThreads):
        (WTF::registerThreadForMachExceptionHandling):
        (WTF::unregisterThreadForMachExceptionHandling):
        (WTF::installSignalHandler):
        (WTF::jscSignalHandler):
        * wtf/threads/Signals.h:

2017-05-31  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r217611 and r217631.
        https://bugs.webkit.org/show_bug.cgi?id=172785

        "caused wasm-hashset-many.html to become flaky." (Requested by
        keith_miller on #webkit).

        Reverted changesets:

        "Reland r216808, underlying lldb bug has been fixed."
        https://bugs.webkit.org/show_bug.cgi?id=172759
        http://trac.webkit.org/changeset/217611

        "Use dispatch queues for mach exceptions"
        https://bugs.webkit.org/show_bug.cgi?id=172775
        http://trac.webkit.org/changeset/217631

2017-05-31  Keith Miller  <keith_miller@apple.com>

        Use dispatch queues for mach exceptions
        https://bugs.webkit.org/show_bug.cgi?id=172775

        Reviewed by Geoffrey Garen.

        This patch adds support for using a dispatch queue to handle our
        mach exceptions. We use a high priority concurrent dispatch queue
        to handle our mach exceptions. We don't know the priority of the
        thread whose exception we are handling so the most conservative
        answer is to respond with a high priority. These events are both
        rare and usually quite fast so it is likely not a significant cost
        when the thread with an exception has a low priority.

        * wtf/threads/Signals.cpp:
        (WTF::startMachExceptionHandlerThread):

2017-05-31  Keith Miller  <keith_miller@apple.com>

        Reland r216808, underlying lldb bug has been fixed.
        https://bugs.webkit.org/show_bug.cgi?id=172759

        Unreviewed, relanding old patch. See: rdar://problem/31183352

        * Configurations/WTF.xcconfig:
        * WTF.xcodeproj/project.pbxproj:
        * wtf/Platform.h:
        * wtf/PlatformRegisters.h:
        (WTF::registersFromUContext):
        * wtf/StackBounds.h:
        (WTF::StackBounds::StackBounds):
        * wtf/ThreadHolder.cpp:
        (WTF::ThreadHolder::~ThreadHolder):
        * wtf/ThreadMessage.cpp:
        (WTF::sendMessageUsingSignal):
        (WTF::sendMessageUsingMach):
        (WTF::deliverMessagesUsingMach):
        (WTF::sendMessageScoped):
        * wtf/ThreadMessage.h:
        (WTF::sendMessage):
        * wtf/Threading.h:
        (WTF::Thread::machThread):
        * wtf/mac/MachExceptions.defs: Copied from Source/WTF/wtf/ThreadMessage.h.
        * wtf/threads/Signals.cpp:
        (WTF::startMachExceptionHandlerThread):
        (WTF::fromMachException):
        (WTF::toMachMask):
        (WTF::handleSignalsWithMach):
        (WTF::setExceptionPorts):
        (WTF::activeThreads):
        (WTF::registerThreadForMachExceptionHandling):
        (WTF::unregisterThreadForMachExceptionHandling):
        (WTF::installSignalHandler):
        (WTF::jscSignalHandler):
        * wtf/threads/Signals.h:

2017-05-31  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r217603.

        This patch broke the internal builds.

        Reverted changeset:

        "Get <chrono> out of StdLibExtras.h"
        https://bugs.webkit.org/show_bug.cgi?id=172744
        http://trac.webkit.org/changeset/217603

2017-05-31  Simon Fraser  <simon.fraser@apple.com>

        Get <chrono> out of StdLibExtras.h
        https://bugs.webkit.org/show_bug.cgi?id=172744

        Reviewed by Saam Barati.

        We hates std::chrono. Don't include it everywhere to discourage use.

        * wtf/StdLibExtras.h:

2017-05-30  Ryosuke Niwa  <rniwa@webkit.org>

        Only include DataDetectorsUI headers in iOS
        https://bugs.webkit.org/show_bug.cgi?id=172633

        Reviewed by David Kilzer.

        Enable data detectors only on iOS and not other variants of iOS.

        * wtf/FeatureDefines.h:
        * wtf/Platform.h:

2017-05-29  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, disable faster Interpreter::getOpcodeID for ARM_THUMB2 with non-Darwin OSes
        https://bugs.webkit.org/show_bug.cgi?id=172686

        Because of test failures.

        * wtf/Platform.h:

2017-05-28  Dan Bernstein  <mitz@apple.com>

        [Xcode] ALWAYS_SEARCH_USER_PATHS is set to YES
        https://bugs.webkit.org/show_bug.cgi?id=172691

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig: Set ALWAYS_SEARCH_USER_PATHS to NO.

2017-05-28  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC][Linux][FreeBSD] Use faster Interpreter::getOpcodeID()
        https://bugs.webkit.org/show_bug.cgi?id=172686

        Reviewed by Mark Lam.

        As of r217526, JSC gets faster Interpreter::getOpcodeID() by
        embedding OpcodeID value just before the LLInt machine code
        handler pointer. By doing so, we can retrieve OpcodeID from
        the LLInt machine code handler by dereferencing the code
        pointer. `*((int*)ptr - 1)`.

        This patch allows Linux and FreeBSD environments to use this
        optimization.

        * wtf/Platform.h:

2017-05-28  Mark Lam  <mark.lam@apple.com>

        Implement a faster Interpreter::getOpcodeID().
        https://bugs.webkit.org/show_bug.cgi?id=172669

        Reviewed by Saam Barati.

        Added the USE(LLINT_EMBEDDED_OPCODE_ID) configuration.

        * wtf/Platform.h:

2017-05-26  Brent Fulgham  <bfulgham@apple.com>

        [WK2] Address thread safety issues with ResourceLoadStatistics
        https://bugs.webkit.org/show_bug.cgi?id=172519
        <rdar://problem/31707642>

        Reviewed by Chris Dumez.

        Add a new specialization for HashSet.

        * wtf/CrossThreadCopier.h:

2017-05-26  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r217458.

        This change caused 55 JSC test failures.

        Reverted changeset:

        "Date should use historical data if it's available."
        https://bugs.webkit.org/show_bug.cgi?id=172592
        http://trac.webkit.org/changeset/217458

2017-05-25  Keith Miller  <keith_miller@apple.com>

        Date should use historical data if it's available.
        https://bugs.webkit.org/show_bug.cgi?id=172592

        Reviewed by Mark Lam.

        The spec previously disallowed using historical data for Dates.
        This is no longer the case. Additionally, not using historical
        data, when available, seems unfortunate for users. This patch
        removes the code dropping historical data.

        * wtf/DateMath.cpp:
        (WTF::calculateLocalTimeOffset):
        (WTF::msToMilliseconds): Deleted.

2017-05-25  Yusuke Suzuki  <utatane.tea@gmail.com>

        [Win] ASSERTION FAILED: !HashTranslator::equal(KeyTraits::emptyValue(), key)
        https://bugs.webkit.org/show_bug.cgi?id=172586

        Reviewed by Brent Fulgham.

        In ThreadHolder for Windows, we need to construct HashMap<ThreadIdentifier, ThreadHolder*>.
        The problem is that ThreadHolder::platformInitialize touches Thread::id() even before Thread
        is not established. In that case, id() returns incorrect value.

        But, calling ThreadHolder::initialize() after waiting for completion of Thread::establish() is
        not a good idea. Since we already have NewThreadContext->creationMutex, we can wait for completion
        of Thread::establish() easily. However, if we do so, Thread::create() returns RefPtr<Thread> that
        may not call ThreadHolder::initialize() in its thread yet. In that case, ThreadHolder::get() fails.
        Thus, Windows WTF::waitForThreadCompletion implementation becomes broken. We can add a new mutex
        to wait for completion of ThreadHolder::initialize in the creator of the thread (like a ping-pong!).
        But it overly complicates the implementation.

        The following is overly complicated initialization phase.

        Creator -> AC mutex(1) -------> establishment -> RL mutex(1) ----------------------> AC mutex(2) ->

                               Thread -----------------> AC mutex(1) -> ThreadHolder init -> RL mutex(2) ->

        So, instead, in this patch, we just use Thread::currentID(). When calling ThreadHolder::initialize(),
        we pass ThreadIdentifier by using Thread::currentID(). This implementation works great because,

        1. ThreadHolder::initialize requires ThreadIdentifier only in Windows environment because Pthread
           ThreadHolder does not create HashMap<>. And this is used for obsolete Threading APIs. Thus this
           hack will be removed in the near future.

        2. In Windows, Thread::currentID() can return a valid value without using ThreadHolder. And it does
           not require Thread establishment. So, calling currentID() to initialize ThreadHolder is ok in
           Windows.

        * wtf/ThreadHolder.cpp:
        (WTF::ThreadHolder::initialize): Deleted.
        * wtf/ThreadHolder.h:
        * wtf/ThreadHolderPthreads.cpp:
        (WTF::ThreadHolder::initialize):
        * wtf/ThreadHolderWin.cpp:
        (WTF::ThreadHolder::initialize):
        (WTF::ThreadHolder::platformInitialize): Deleted.
        * wtf/ThreadingWin.cpp:
        (WTF::wtfThreadEntryPoint):

2017-05-25  Adrian Perez de Castro  <aperez@igalia.com>

        Clang warns about (intended) returning pointer to stack location in WTF/wtf/ThreadingPthreads.cpp
        https://bugs.webkit.org/show_bug.cgi?id=172595

        Reviewed by Mark Lam.

        * wtf/ThreadingPthreads.cpp: Use a #pragma to silence Clang warning about returning a
        pointer to the stack (which is intended)

2017-05-25  David Kilzer  <ddkilzer@apple.com>

        REGRESSION (r217416): Using #pragma once in WTFString.h broke the build

        * wtf/text/WTFString.h: Switch back to #ifndef/#define/#endif.

2017-05-25  David Kilzer  <ddkilzer@apple.com>

        Make a change to force a build on the Apple bots

        * wtf/text/WTFString.h: Use #pragma once.

2017-05-24  Andreas Kling  <akling@apple.com>

        Disable memory kill mechanisms when running with FastMalloc disabled.
        https://bugs.webkit.org/show_bug.cgi?id=172550
        <rdar://problem/32181908>

        Reviewed by Antti Koivisto.

        If someone is using WebKit with a non-standard allocator, they are likely trying to debug
        or test something, and suddenly getting killed is not gonna help with that.

        * wtf/MemoryPressureHandler.cpp:
        (WTF::MemoryPressureHandler::setShouldUsePeriodicMemoryMonitor):

2017-05-22  Jiewen Tan  <jiewen_tan@apple.com>

        [WebCrypto] Support RSA-PSS
        https://bugs.webkit.org/show_bug.cgi?id=170869
        <rdar://problem/31640672>

        Reviewed by Brent Fulgham.

        * wtf/Platform.h:
        Add a flag to enable RSA-PSS in the future.

2017-05-23  Myles C. Maxfield  <mmaxfield@apple.com>

        Remove dead ENABLE(FONT_LOAD_EVENTS) code
        https://bugs.webkit.org/show_bug.cgi?id=172517

        Rubber-stamped by Simon Fraser.

        * wtf/FeatureDefines.h:

2017-05-23  Don Olmstead  <don.olmstead@am.sony.com>

        [WTF] Export additional symbols in threading
        https://bugs.webkit.org/show_bug.cgi?id=171952

        Reviewed by Konstantin Tokarev.

        * wtf/ThreadMessage.h:
        * wtf/threads/Signals.h:

2017-05-23  Tomas Popela  <tpopela@redhat.com>

        [WTF] Compilation fails with system malloc
        https://bugs.webkit.org/show_bug.cgi?id=172445

        Reviewed by Michael Catanzaro.

        We are using the bmalloc even if the system malloc should be used.
        Don't use bmalloc if the system malloc is requested and add the
        missing implementation for computeRAMSize() on UNIX that's utilizing
        the sysinfo() call.

        * wtf/RAMSize.cpp:
        (WTF::computeRAMSize):

2017-05-22  Brian Burg  <bburg@apple.com>

        Add a debugging macro that sleeps a thread until a debugger attaches
        https://bugs.webkit.org/show_bug.cgi?id=171575

        Reviewed by Mark Lam.

        This is really useful for debugging early errors if for some reason you can't
        launch a process directly from the debugger easily, such as Web Content processes.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/Assertions.h:
        Always define the WTFBreakpointTrap() macro. Still make it an error if the CPU
        type isn't supported for OS(DARWIN); if used on other platforms, cause a WTFCrash()
        with a comment that indicates this is not implemented.

        * wtf/DebugUtilities.h: Added.

2017-05-19  Don Olmstead  <don.olmstead@am.sony.com>

        [WTF] Remove PLATFORM(WIN) references
        https://bugs.webkit.org/show_bug.cgi?id=172301

        Reviewed by Yusuke Suzuki.

        * wtf/MemoryPressureHandler.cpp:
        * wtf/MemoryPressureHandler.h:
        * wtf/Platform.h:

2017-05-19  Don Olmstead  <don.olmstead@am.sony.com>

        [CMake] Add HAVE check for __int128_t
        https://bugs.webkit.org/show_bug.cgi?id=172317

        Reviewed by Yusuke Suzuki.

        * wtf/MediaTime.cpp:
        (WTF::MediaTime::setTimeScale):
        * wtf/Platform.h:

2017-05-18  Andreas Kling  <akling@apple.com>

        [WK2] Notify WebPageProxy client when an active process goes over the inactive memory limit
        https://bugs.webkit.org/show_bug.cgi?id=172244
        <rdar://problem/31800943>

        Reviewed by Geoffrey Garen.

        Add an installable callback to MemoryPressureHandler that gets invoked when an active process
        exceeds the kill limit for an inactive process.

        This allows a UI client to become aware that backgrounding a tab may cause it to get killed.

        * wtf/MemoryPressureHandler.cpp:
        (WTF::thresholdForMemoryKillWithProcessState):
        (WTF::MemoryPressureHandler::thresholdForMemoryKill):
        (WTF::MemoryPressureHandler::measurementTimerFired):
        (WTF::MemoryPressureHandler::doesExceedInactiveLimitWhileActive):
        (WTF::MemoryPressureHandler::doesNotExceedInactiveLimitWhileActive):
        * wtf/MemoryPressureHandler.h:
        (WTF::MemoryPressureHandler::setDidExceedInactiveLimitWhileActiveCallback):

2017-05-18  Geoffrey Garen  <ggaren@apple.com>

        AutomaticThread should wait longer before timing out
        https://bugs.webkit.org/show_bug.cgi?id=172292

        Reviewed by Filip Pizlo.

        Increased the idle timeout from 1s => 10s.

        This reduces the number of thread restarts on JetStream from
        ~150 => ~0. It also matches other thread pool APIs on Darwin.

        Intuitively, it seems wrong for helper threads to idle exit during
        hardcore benchmarking.

        This patch in combination with a bmalloc fix seems to be a 1%-2% JetStream
        speedup on my Mac Pro.

        A nice side-benefit is that per-thread traces are easier to read.

        * wtf/AutomaticThread.cpp:
        (WTF::AutomaticThread::start):
        * wtf/AutomaticThread.h:

2017-05-18  Don Olmstead  <don.olmstead@am.sony.com>

        [Win] Remove usage of _snprintf
        https://bugs.webkit.org/show_bug.cgi?id=172251

        Reviewed by Per Arne Vollan.

        * wtf/DataLog.cpp:
        (WTF::initializeLogFileOnce):
        (WTF::setDataFile):

2017-05-15  Mark Lam  <mark.lam@apple.com>

        Rolling out r214038 and r213697: Crashes when using computed properties with rest destructuring and object spread.
        https://bugs.webkit.org/show_bug.cgi?id=172147

        Rubber-stamped by Saam Barati.

        * wtf/HashSet.h:
        (WTF::=):

2017-05-14  Chris Dumez  <cdumez@apple.com>

        Drop PassRefPtr class from WTF
        https://bugs.webkit.org/show_bug.cgi?id=172091

        Reviewed by Alex Christensen.

        Drop PassRefPtr class from WTF as it is no longer used or needed.
        Also drop RefPtr::release() for the same reasons.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/CrossThreadCopier.cpp:
        * wtf/CrossThreadCopier.h:
        * wtf/Forward.h:
        * wtf/PassRefPtr.h: Removed.
        * wtf/RefPtr.h:
        (WTF::refIfNotNull):
        (WTF::derefIfNotNull):
        (WTF::RefPtr::RefPtr):
        (WTF::RefPtr::release): Deleted.
        * wtf/SizeLimits.cpp:
        * wtf/Vector.h:

2017-05-13  Chris Dumez  <cdumez@apple.com>

        Stop using RefPtr::release()
        https://bugs.webkit.org/show_bug.cgi?id=172074

        Reviewed by Geoffrey Garen.

        * wtf/win/WorkQueueWin.cpp:
        (WTF::WorkQueue::dispatchAfter):

2017-05-13  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r216808.
        https://bugs.webkit.org/show_bug.cgi?id=172075

        caused lldb to hang when debugging (Requested by smfr on
        #webkit).

        Reverted changeset:

        "Use Mach exceptions instead of signals where possible"
        https://bugs.webkit.org/show_bug.cgi?id=171865
        http://trac.webkit.org/changeset/216808

2017-05-12  Keith Miller  <keith_miller@apple.com>

        Use Mach exceptions instead of signals where possible
        https://bugs.webkit.org/show_bug.cgi?id=171865

        Reviewed by Mark Lam.

        This patch enables using mach exceptions on darwin. The way the
        mach exception api works is that we create a mach port, which is
        like a file descriptor.  We then wait for a message to arrive on
        that port in a thread. When another thread raises an exception (say
        due to a bad memory access) the OS sends our thread a message. The
        payload of that message is the register file of the crashing
        thread. We then call our custom handlers that change the state as
        needed. In order to restart the thread we send a payload back to
        the OS with an updated register file along with a success message
        header.

        This patch also makes thread messages work without signals by
        simply suspending the thread, and then running the message at that
        time.

        You can read more about mach exceptions here:
        http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/exception.ps
        and the Mach interface Generator (MiG) here:
        http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/mig.ps

        * Configurations/WTF.xcconfig:
        * WTF.xcodeproj/project.pbxproj:
        * wtf/Platform.h:
        * wtf/PlatformRegisters.h:
        (WTF::registersFromUContext):
        * wtf/StackBounds.h:
        (WTF::StackBounds::StackBounds):
        * wtf/ThreadHolder.cpp:
        (WTF::ThreadHolder::~ThreadHolder):
        * wtf/ThreadMessage.cpp:
        (WTF::sendMessageUsingSignal):
        (WTF::sendMessageUsingMach):
        (WTF::deliverMessagesUsingMach):
        (WTF::sendMessageScoped):
        * wtf/ThreadMessage.h:
        (WTF::sendMessage):
        * wtf/Threading.h:
        (WTF::Thread::machThread):
        * wtf/mac/MachExceptions.defs: Copied from Source/WTF/wtf/ThreadMessage.h.
        * wtf/threads/Signals.cpp:
        (WTF::startMachExceptionHandlerThread):
        (WTF::fromMachException):
        (WTF::toMachMask):
        (WTF::handleSignalsWithMach):
        (WTF::setExceptionPorts):
        (WTF::activeThreads):
        (WTF::registerThreadForMachExceptionHandling):
        (WTF::unregisterThreadForMachExceptionHandling):
        (WTF::installSignalHandler):
        (WTF::jscSignalHandler):
        * wtf/threads/Signals.h:

2017-05-12  Ting-Wei Lan  <lantw44@gmail.com>

        Include algorithm before using std::min
        https://bugs.webkit.org/show_bug.cgi?id=171733

        Reviewed by Chris Dumez.

        * wtf/text/StringCommon.h:

2017-05-12  Andreas Kling  <akling@apple.com>

        More aggressive memory kill limits.
        https://bugs.webkit.org/show_bug.cgi?id=172037
        <rdar://problem/31969082>

        Reviewed by Michael Saboff.

        Bring down the memory kill limits to 4GB for active processes, and 2GB for inactive.
        Also make MemoryUsagePolicy::Strict kick in above 1.5GB.

        * wtf/MemoryPressureHandler.cpp:
        (WTF::MemoryPressureHandler::thresholdForMemoryKill):
        (WTF::thresholdForPolicy):

2017-05-12  Michael Saboff  <msaboff@apple.com>

        [iOS] Use memory footprint to dynamically adjust behavior of allocators
        https://bugs.webkit.org/show_bug.cgi?id=171944

        Reviewed by Filip Pizlo.

        Moved the non-Windows implementation of RAMSize() to bmalloc/AvailableMemory.cpp and
        called the function availableMemory().

        * wtf/RAMSize.cpp:
        (WTF::computeRAMSize):

2017-05-12  Claudio Saavedra  <csaavedra@igalia.com>

        [WPE] Add MemoryFootprintLinux to build

        Unreviewed build fix after r216731.

        * wtf/PlatformWPE.cmake:

2017-05-12  Csaba Osztrogonác  <ossy@webkit.org>

        Unreviewed trivial JSCOnly buildfix after r216731.
        https://bugs.webkit.org/show_bug.cgi?id=171693

        * wtf/PlatformJSCOnly.cmake:

2017-05-11  Yusuke Suzuki  <utatane.tea@gmail.com>

        [Win] Implement memoryFootprint for Windows
        https://bugs.webkit.org/show_bug.cgi?id=171693

        Reviewed by Alex Christensen.

        This patch implements memoryFootprint for Windows. In Windows, we calculate the size
        of private working set. This can be done by enumerating private pages in working set.

        And we also split MemoryFootprint.cpp to cocoa, linux, and win versions.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/MallocPtr.h:
        (WTF::MallocPtr::operator*):
        (WTF::MallocPtr::operator->):
        * wtf/PlatformGTK.cmake:
        * wtf/PlatformJSCOnly.cmake:
        * wtf/PlatformMac.cmake:
        * wtf/PlatformWin.cmake:
        * wtf/cocoa/MemoryFootprintCocoa.cpp: Copied from Source/WTF/wtf/MemoryFootprint.cpp.
        (WTF::memoryFootprint):
        * wtf/linux/MemoryFootprintLinux.cpp: Renamed from Source/WTF/wtf/MemoryFootprint.cpp.
        (WTF::forEachLine):
        (WTF::memoryFootprint):
        * wtf/win/MemoryFootprintWin.cpp: Added.
        (WTF::memoryFootprint):

2017-05-11  Don Olmstead  <don.olmstead@am.sony.com>

        [CMake] Add HAVE check for regex.h
        https://bugs.webkit.org/show_bug.cgi?id=171950

        Reviewed by Michael Catanzaro.

        * wtf/Platform.h:

2017-05-11  Chris Dumez  <cdumez@apple.com>

        Annotate Ref::ptr() with RETURNS_NONNULL
        https://bugs.webkit.org/show_bug.cgi?id=171996

        Reviewed by Andreas Kling.

        Annotate Ref::ptr() with RETURNS_NONNULL as it can never return null.

        * wtf/Ref.h:
        (WTF::Ref::ptr): Deleted.

2017-05-11  Joseph Pecoraro  <pecoraro@apple.com>

        Remove Vibration API
        https://bugs.webkit.org/show_bug.cgi?id=171766

        Rubber-stamped by Alexey Proskuryakov.

        * wtf/FeatureDefines.h:

2017-05-09  Sam Weinig  <sam@webkit.org>

        Remove support for legacy Notifications
        https://bugs.webkit.org/show_bug.cgi?id=171487

        Reviewed by Jon Lee.

        * wtf/FeatureDefines.h:
        Remove definition of ENABLE_LEGACY_NOTIFICATIONS.

2017-05-10  Adrian Perez de Castro  <aperez@igalia.com>

        Remove some last remnants of the EFL port
        https://bugs.webkit.org/show_bug.cgi?id=171922

        Reviewed by Antonio Gomes.

        The EFL port is no more.

        * wtf/PlatformEfl.cmake: Removed.

2017-05-10  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win] StaticStringImpl in HTMLNames.cpp aren't constructed
        https://bugs.webkit.org/show_bug.cgi?id=171800

        Reviewed by Yusuke Suzuki.

        Global variables of StaticStringImpl in HTMLNames.cpp aren't
        constructed on Windows since Bug 171586. It seems that
        reinterpret_cast prevents constexpr's compile time initialization
        in VC++.

        * wtf/text/StringImpl.h:
        (WTF::StringImplShape::StringImplShape): Added const char* and
        const char16_t* members in the union. Do not use reinterpret_cast
        in constexpr constructors.

2017-05-09  Mark Lam  <mark.lam@apple.com>

        Force StaticStringImpl constructor to use the constexpr versions of StringImplShape constructors.
        https://bugs.webkit.org/show_bug.cgi?id=171861

        Reviewed by Yusuke Suzuki.

        This is strictly necessary for correctness of the StaticStringImpl implementation.
        We force the constructor selection by adding an extra dummy argument to the
        constexpr versions of the StringImplShape constructors to disambiguate them from
        the non-constexpr versions.

        * wtf/text/StringImpl.h:
        (WTF::StringImplShape::StringImplShape):
        (WTF::StringImpl::StaticStringImpl::StaticStringImpl):

2017-05-09  Zan Dobersek  <zdobersek@igalia.com>

        Upstream the WPE port
        https://bugs.webkit.org/show_bug.cgi?id=171110

        Reviewed by Alex Christensen.

        * wtf/Platform.h:
        * wtf/PlatformWPE.cmake: Added.
        * wtf/glib/RunLoopSourcePriority.h:

2017-05-08  Mark Lam  <mark.lam@apple.com>

        Speculative Windows build fix after r216428.
        https://bugs.webkit.org/show_bug.cgi?id=171776

        Not reviewed.

        * wtf/StackTrace.h:

2017-05-08  Mark Lam  <mark.lam@apple.com>

        Introduce ExceptionScope::assertNoException() and releaseAssertNoException().
        https://bugs.webkit.org/show_bug.cgi?id=171776

        Reviewed by Keith Miller.

        1. Add an option to skip some number of top frames when capturing the StackTrace.
        2. Add an option to use an indentation string when dumping the StackTrace.

        * wtf/StackTrace.cpp:
        (WTF::StackTrace::captureStackTrace):
        (WTF::StackTrace::dump):
        * wtf/StackTrace.h:

2017-05-05  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Use memoryFootprint for MemoryUsage retrieval in Linux
        https://bugs.webkit.org/show_bug.cgi?id=171757

        Reviewed by Michael Catanzaro.

        This patch leverages memoryFootprint() to retrieve physical footprint in Linux.

        * wtf/linux/MemoryPressureHandlerLinux.cpp:
        (WTF::MemoryPressureHandler::ReliefLogger::platformMemoryUsage):

2017-05-05  Don Olmstead  <don.olmstead@am.sony.com>

        [WTF] Do not export deleted constructor in StringView
        https://bugs.webkit.org/show_bug.cgi?id=171751

        Reviewed by Alexey Proskuryakov.

        * wtf/text/StringView.h:

2017-05-05  Yusuke Suzuki  <utatane.tea@gmail.com>

        [GTK][JSCOnly] Merge MainThread implementations and use generic one
        https://bugs.webkit.org/show_bug.cgi?id=171738

        Reviewed by Michael Catanzaro.

        GLib MainThread implementation is generic enough to be used in JSCOnly.
        We move it to generic/ and GTK (GLib ports) and JSCOnly use it.
        And we also drop GLib MainThread's isMainThread function because
        generic thread ID one is enough.

        This patch also cleans up initializing main thread code by using std::call_once.

        * wtf/MainThread.cpp:
        (WTF::initializeMainThread):
        (WTF::isMainThread):
        (WTF::initializeMainThreadToProcessMainThread):
        (WTF::initializeWebThread):
        (WTF::canAccessThreadLocalDataForThread):
        (WTF::initializeMainThreadOnce): Deleted.
        (WTF::initializeMainThreadToProcessMainThreadOnce): Deleted.
        (WTF::initializeWebThreadOnce): Deleted.
        * wtf/PlatformGTK.cmake:
        * wtf/PlatformJSCOnly.cmake:
        * wtf/generic/MainThreadGeneric.cpp:
        (WTF::MainThreadDispatcher::MainThreadDispatcher):
        (WTF::MainThreadDispatcher::schedule):
        (WTF::MainThreadDispatcher::fired):
        (WTF::scheduleDispatchFunctionsOnMainThread):
        * wtf/glib/MainThreadGLib.cpp: Removed.

2017-05-04  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r216206.
        https://bugs.webkit.org/show_bug.cgi?id=171714

        Multiple LayoutTests crashing in Document::page() (Requested
        by ap on #webkit).

        Reverted changeset:

        "Remove support for legacy Notifications"
        https://bugs.webkit.org/show_bug.cgi?id=171487
        http://trac.webkit.org/changeset/216206

2017-05-04  Don Olmstead  <don.olmstead@am.sony.com>

        [Win] Remove redundant macros that are set in the CMake config
        https://bugs.webkit.org/show_bug.cgi?id=171571

        Reviewed by Brent Fulgham.

        * config.h:

2017-05-04  Mark Lam  <mark.lam@apple.com>

        NeverDestroyed<String>(ASCIILiteral(...)) is not thread safe.
        https://bugs.webkit.org/show_bug.cgi?id=171586
        <rdar://problem/31873190>

        Reviewed by Yusuke Suzuki.

        StaticStringImpl is meant to be thread-safe.  However, it has a bug: it did not
        set the s_hashFlagDidReportCost flag.  As a result, if cost() is called on it,
        different threads may try to change its flags bits at the same time.  This patch
        changes StaticStringImpl to always set the s_hashFlagDidReportCost flag.

        Also factored out StringImplShape and made StringImpl and StaticStringImpl extend
        it.  This makes it more clear that the 2 are intended to have the same shape.
        Note: there is already a static_assert that the 2 have the same size.  This
        change also ensures that they both have the same shape, which is a requirement in
        order for StaticStringImpl to work.

        Introduced the MAKE_STATIC_STRING_IMPL macro as a convenient way to instantiate
        StaticStringImpls from literal strings.  This allows us to trivially change

            NeverDestroyed<String> myString(ASCIILiteral("myString"));

        to ...

            NeverDestroyed<String> myString(MAKE_STATIC_STRING_IMPL("myString"));

        and by so doing, make it thread-safe.

        MAKE_STATIC_STRING_IMPL instantiates a lambda function to create the static
        StaticStringImpls.

        * wtf/text/StringImpl.h:
        (WTF::StringImplShape::StringImplShape):
        (WTF::StringImpl::StringImpl):
        (WTF::StringImpl::cost):
        (WTF::StringImpl::setHash):
        (WTF::StringImpl::StaticStringImpl::StaticStringImpl):
        (WTF::StringImpl::StaticStringImpl::operator StringImpl&):
        * wtf/text/WTFString.h:
        (WTF::String::String):
        * wtf/text/icu/TextBreakIteratorICU.h:
        (WTF::caretRules):

2017-05-04  Sam Weinig  <sam@webkit.org>

        Remove support for legacy Notifications
        https://bugs.webkit.org/show_bug.cgi?id=171487

        Reviewed by Jon Lee.

        * wtf/FeatureDefines.h:
        Remove definition of ENABLE_LEGACY_NOTIFICATIONS.

2017-05-04  Yusuke Suzuki  <utatane.tea@gmail.com>

        [GTK][JSCOnly] Implement memoryFootprint for Linux
        https://bugs.webkit.org/show_bug.cgi?id=171680

        Reviewed by Carlos Alberto Lopez Perez.

        Darwin's phys_footprint returns the amount of dirty anonymous memory in the process.
        This patch implements the same thing in Linux by reading /proc/self/smaps.
        We sum sizes of private dirty pages in anonymous regions.

        * wtf/MemoryFootprint.cpp:
        (WTF::forEachLine):
        (WTF::memoryFootprint):

2017-05-03  Mark Lam  <mark.lam@apple.com>

        Use the CLoop for CPU(ARM64E).
        https://bugs.webkit.org/show_bug.cgi?id=171620
        <rdar://problem/31973027>

        Reviewed by Geoffrey Garen.

        * wtf/Platform.h:

2017-05-02  Daniel Bates  <dabates@apple.com>

        Fix the build after <https://trac.webkit.org/changeset/216102>
        (https://bugs.webkit.org/show_bug.cgi?id=170925)

        Export into global scope ASCIICaseInsensitiveStringViewHashTranslator.

        Also fix indentation of member functions of ASCIICaseInsensitiveStringViewHashTranslator.

        * wtf/text/StringHash.h:

2017-05-02  Daniel Bates  <dabates@apple.com>

        Using StringView.split() instead of String.split() in some places
        https://bugs.webkit.org/show_bug.cgi?id=170925

        Reviewed by Darin Adler and Sam Weinig.

        * wtf/HashMap.h: Add HashMap::get() overload that takes a HashTranslator.
        * wtf/text/StringHash.h:
        (WebCore::ASCIICaseInsensitiveStringViewHashTranslator::hash): Added.
        (WebCore::ASCIICaseInsensitiveStringViewHashTranslator::equal): Added.

2017-05-01  Dan Bernstein  <mitz@apple.com>

        [Xcode] It’s easy to accidentally install a WTF header outside /usr/local/include/wtf
        https://bugs.webkit.org/show_bug.cgi?id=171533

        Reviewed by Andy Estes.

        * WTF.xcodeproj/project.pbxproj: Removed the WTF target’s Headers build phase. Its existence
          was making it easy to accidentally add a header to the target and make it Private, which
          would have Xcode install a copy of it right under /usr/local/include, in addition to the
          copy installed under /usr/local/include/wtf by the Copy WTF Headers target.
          Also got rid of INSTALL_PATH_PREFIX in the script build phase in the Copy WTF Headers
          target, because it is being never set anymore.

2017-05-01  Dan Bernstein  <mitz@apple.com>

        WTF installs an extra copy of a header outside /usr/local/include/wtf

        * WTF.xcodeproj/project.pbxproj: Demoted CPUTime.h from Private to Project.

2017-05-01  Daniel Bates  <dabates@apple.com>

        Cleanup: Change ASCIICaseInsensitiveHash from a class to a struct
        https://bugs.webkit.org/show_bug.cgi?id=171460

        Reviewed by Sam Weinig.

        All of the members of ASCIICaseInsensitiveHash have public visibility.
        We are underutilizing the purpose of a class - defaults to private
        visibility of members. We should change ASCIICaseInsensitiveHash from
        a class to a struct, which by definition defaults to public visibility
        for members.

        * wtf/text/StringHash.h:

2017-04-29  Yusuke Suzuki  <utatane.tea@gmail.com>

        Move WebCore CPUTime to WTF and implement it in all the platforms
        https://bugs.webkit.org/show_bug.cgi?id=171477

        Reviewed by Chris Dumez.

        We move WebCore::CPUTime to WTF::CPUTime since it is useful even in JSC
        and it does not depend on any external libraries.
        And we additionally implement WTF::CPUTime in all the platforms: Windows and Unix.

        In CPUTime, instead of holding int64_t, we hold MonotonicTime and Seconds.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/CPUTime.cpp: Copied from Source/WebCore/platform/CPUTime.cpp.
        (WTF::CPUTime::percentageCPUUsageSince):
        * wtf/CPUTime.h: Renamed from Source/WebCore/platform/CPUTime.h.
        * wtf/PlatformEfl.cmake:
        * wtf/PlatformGTK.cmake:
        * wtf/PlatformJSCOnly.cmake:
        * wtf/PlatformMac.cmake:
        * wtf/PlatformWin.cmake:
        * wtf/cocoa/CPUTimeCocoa.mm: Renamed from Source/WebCore/platform/cocoa/CPUTimeCocoa.mm.
        (WTF::timeValueToMicroseconds):
        (WTF::CPUTime::get):
        * wtf/unix/CPUTimeUnix.cpp: Renamed from Source/WebCore/platform/CPUTime.cpp.
        (WTF::timevalToSeconds):
        (WTF::CPUTime::get):
        * wtf/win/CPUTimeWin.cpp: Added.
        (WTF::fileTimeToSeconds):
        (WTF::CPUTime::get):

2017-04-28  Simon Fraser  <simon.fraser@apple.com>

        Add system trace points for Document::updateTouchEventRegions()
        https://bugs.webkit.org/show_bug.cgi?id=171470
        rdar://problem/31901239

        Reviewed by Tim Horton.

        Add trace markers for updateTouchEventRegions.

        * wtf/SystemTracing.h:

2017-04-28  Daniel Bates  <dabates@apple.com>

        Add StringView::toExistingAtomicString()
        https://bugs.webkit.org/show_bug.cgi?id=171405

        Reviewed by Andreas Kling.

        Similar to the reasons for JSString::toExistingAtomicString() we should expose a way to
        convert a StringView to an existing atomic string. Looking up an atomic string is more
        efficient that creating one, which requires a lookup and memory allocation.

        We are not making use of StringView::toExistingAtomicString() now, but will in the patch
        for <https://bugs.webkit.org/show_bug.cgi?id=170925>.

        * wtf/text/AtomicStringImpl.cpp:
        (WTF::AtomicStringImpl::lookUp): Modified to take a const LChar*/UChar*.
        (WTF::AtomicStringImpl::lookUpInternal): Renamed to AtomicStringImpl::lookup() to avoid
        an extra function call.
        * wtf/text/AtomicStringImpl.h:
        * wtf/text/StringView.h:
        (WTF::StringView::toExistingAtomicString): Added.

2017-04-28  Chris Dumez  <cdumez@apple.com>

        Update DOMTokenList.replace() to match the latest DOM specification
        https://bugs.webkit.org/show_bug.cgi?id=171388

        Reviewed by Alex Christensen.

        Add Vector::findMatching() API which takes in a lambda function for convenience.
        Add optional startIndex parameter to Vector::removeFirstMatching() / removeAllMatching()
        to remove items only after given index.

        * wtf/Vector.h:
        (WTF::minCapacity>::findMatching):
        (WTF::minCapacity>::find):
        (WTF::minCapacity>::removeFirstMatching):
        (WTF::minCapacity>::removeAllMatching):

2017-04-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        Move UUID from WebCore/platform to WTF
        https://bugs.webkit.org/show_bug.cgi?id=171372

        Reviewed by Michael Catanzaro.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/UUID.cpp: Renamed from Source/WebCore/platform/UUID.cpp.
        * wtf/UUID.h: Renamed from Source/WebCore/platform/UUID.h.

2017-04-26  Keith Miller  <keith_miller@apple.com>

        LocklessBag needs a destructor
        https://bugs.webkit.org/show_bug.cgi?id=171334

        Reviewed by Mark Lam.

        Currently, if the bag is destructed any remaining nodes in the bag will
        be leaked.

        * wtf/LocklessBag.h:
        (WTF::LocklessBag::consumeAll):
        (WTF::LocklessBag::~LocklessBag):
        * wtf/threads/Signals.cpp:
        (WTF::jscSignalHandler):
        (WTF::installSignalHandler):

2017-04-26  Don Olmstead  <don.olmstead@am.sony.com>

        [ARM] Enable GCC visibility
        https://bugs.webkit.org/show_bug.cgi?id=171296

        Reviewed by Michael Catanzaro.

        * wtf/Platform.h:

2017-04-26  Yusuke Suzuki  <utatane.tea@gmail.com>

        sendMessageScoped's signal handler calls LocklessBag::consumeAll, which causes heap deallocation in signal handler and leads deadlock
        https://bugs.webkit.org/show_bug.cgi?id=171319

        Reviewed by Keith Miller.

        In sendMessageScoped, we call LocklessBag<SignalHandler>::consumeAll `thread->threadMessages().consumeAll()`.
        In LocklessBag::consumeAll, we call `delete` on Nodes.
        The problem is that this is called under the context of signal handler. Thus, when calling this, the original
        thread may hold the lock in bmalloc. In that case, this `delete` call attempts to lock the heap lock recursively,
        and causes deadlock.

        Instead, this patch transfers the LocklessBag's Node to the sender thread. And the sender thread deletes it instead.

        * wtf/LocklessBag.h:
        (WTF::LocklessBag::consumeAllWithNode):
        * wtf/ThreadMessage.cpp:
        (WTF::ThreadMessageData::ThreadMessageData):
        (WTF::sendMessageScoped):

2017-04-25  Don Olmstead  <don.olmstead@am.sony.com>

        [Win] Use Clang's __has_declspec_attribute for export macros
        https://bugs.webkit.org/show_bug.cgi?id=171240

        Reviewed by Alex Christensen.

        * wtf/Compiler.h:
        * wtf/ExportMacros.h:
        * wtf/Platform.h:

2017-04-25  Keith Miller  <keith_miller@apple.com>

        Our signal handler shouldn't print when sigaction succeeds
        https://bugs.webkit.org/show_bug.cgi?id=171286

        Reviewed by Michael Saboff.

        It turns out !result is not the same as !!result.

        * wtf/threads/Signals.cpp:
        (WTF::jscSignalHandler):

2017-04-25  Myles C. Maxfield  <mmaxfield@apple.com>

        Add performance test for FontCache::systemFallbackForCharacters()
        https://bugs.webkit.org/show_bug.cgi?id=170842

        Reviewed by Tim Horton.

        * wtf/unicode/CharacterNames.h:

2017-04-24  Andy VanWagoner  <thetalecrafter@gmail.com>

        Clean up ICU headers
        https://bugs.webkit.org/show_bug.cgi?id=170997

        Reviewed by JF Bastien.

        Update all icu headers to 55.1

        * icu/LICENSE: Update copyright
        * icu/README: Explain ICU headers for OS X better
        * icu/unicode/localpointer.h:
        (LocalPointer::LocalPointer):
        (LocalPointer::adoptInsteadAndCheckErrorCode):
        * icu/unicode/platform.h:
        * icu/unicode/putil.h:
        * icu/unicode/std_string.h:
        * icu/unicode/ubrk.h:
        * icu/unicode/uchar.h:
        * icu/unicode/ucnv.h:
        * icu/unicode/ucol.h:
        * icu/unicode/uconfig.h:
        * icu/unicode/ucurr.h:
        * icu/unicode/uloc.h:
        * icu/unicode/umachine.h:
        * icu/unicode/unistr.h:
        (UnicodeString::getArrayStart):
        (UnicodeString::UnicodeString):
        (UnicodeString::hasShortLength):
        (UnicodeString::getShortLength):
        (UnicodeString::length):
        (UnicodeString::getCapacity):
        (UnicodeString::isBogus):
        (UnicodeString::isWritable):
        (UnicodeString::isBufferWritable):
        (UnicodeString::getBuffer):
        (UnicodeString::isEmpty):
        (UnicodeString::setZeroLength):
        (UnicodeString::setShortLength):
        (UnicodeString::setLength):
        (UnicodeString::setToEmpty):
        (UnicodeString::remove):
        * icu/unicode/urename.h:
        * icu/unicode/uscript.h:
        * icu/unicode/uset.h:
        * icu/unicode/ustring.h:
        * icu/unicode/utf8.h:
        * icu/unicode/utypes.h:
        * icu/unicode/uvernum.h:

2017-04-24  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, fix Windows build after r215715
        https://bugs.webkit.org/show_bug.cgi?id=171199

        * wtf/StackTrace.h:

2017-04-24  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Move JSC tools/StackTrace to WTF and unify stack trace dump code
        https://bugs.webkit.org/show_bug.cgi?id=171199

        Reviewed by Mark Lam.

        JSC tools/StackTrace's dump code is almost identical to WTF Assertions'
        stack trace dump code. This patch moves tools/StackTrace to WTF and use
        it in Assertions. It unifies the two duplicate implementations into one.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/Assertions.cpp:
        * wtf/CMakeLists.txt:
        * wtf/Platform.h:
        * wtf/StackTrace.cpp: Renamed from Source/JavaScriptCore/tools/StackTrace.cpp.
        (WTF::StackTrace::captureStackTrace):
        (WTF::StackTrace::dump):
        * wtf/StackTrace.h: Copied from Source/JavaScriptCore/tools/StackTrace.h.
        (WTF::StackTrace::StackTrace):
        (WTF::StackTrace::stack):
        (WTF::StackTrace::DemangleEntry::mangledName):
        (WTF::StackTrace::DemangleEntry::demangledName):
        (WTF::StackTrace::DemangleEntry::DemangleEntry):
        * wtf/SystemFree.h: Renamed from Source/JavaScriptCore/tools/StackTrace.h.
        (WTF::SystemFree::operator()):

2017-04-24  Yusuke Suzuki  <utatane.tea@gmail.com>

        [AppleWin] The procedure entry point ?waitForThreadCompletion@WTF@@YAHI@Z could not be located in the dynamic link library WebKitQuartzCoreAdditions.dll
        https://bugs.webkit.org/show_bug.cgi?id=171029

        Reviewed by Brent Fulgham.

        While WTF Threading APIs are updated, WebKitQuartzCoreAdditions.dll in Windows uses some of the old APIs,
        waitForThreadCompletion and createThread. This patch implements both on top of the new APIs.
        These APIs are only exposed in Windows for this compatibility problem and new code should not use it.

        * wtf/ThreadHolder.cpp:
        (WTF::ThreadHolder::initialize):
        * wtf/ThreadHolder.h:
        * wtf/ThreadHolderWin.cpp:
        (WTF::ThreadHolder::get):
        (WTF::ThreadHolder::platformInitialize):
        (WTF::ThreadHolder::destruct):
        * wtf/Threading.h:
        * wtf/ThreadingWin.cpp:
        (WTF::createThread):
        (WTF::waitForThreadCompletion):

2017-04-24  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Switch to use ENABLE_REMOTE_INSPECTOR instead of ENABLE_INSPECTOR_SERVER for the remote inspector
        https://bugs.webkit.org/show_bug.cgi?id=166680

        Reviewed by Michael Catanzaro.

        Add GRefPtr hash traits to allow using GRefPtr as a key of HashMaps.

        * wtf/glib/GRefPtr.h:
        (WTF::HashTraits<GRefPtr<P>>::emptyValue):
        (WTF::HashTraits<GRefPtr<P>>::peek):
        (WTF::HashTraits<GRefPtr<P>>::customDeleteBucket):

2017-04-22  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Get stack pointer without pthread attr
        https://bugs.webkit.org/show_bug.cgi?id=171162

        Reviewed by Mark Lam.

        If HAVE(MACHINE_CONTEXT) is not enabled, we get stack base and boundary by using
        pthread_attr functions. However, it is wrong since this function can be called
        after the thread is suspended. In that case, we should not call any functions
        that is not async signal safe. For example, pthread_getattr_np calls malloc.

        Instead we use getApproximateStackPointer(), which returns approximate stack pointer.

        * wtf/Threading.h:
        * wtf/ThreadingPthreads.cpp:
        (WTF::getApproximateStackPointer):
        (WTF::isOnAlternativeSignalStack):
        When gathering conservative roots, we should keep stack pointer pointing stack.
        And if concurrent GC is enabled, we always need to keep the above invariant.
        So, we do not support alternative signal stack.

        (WTF::Thread::signalHandlerSuspendResume):
        (WTF::Thread::getRegisters):

2017-04-22  Yusuke Suzuki  <utatane.tea@gmail.com>

        REGRESSION(r215638): [Linux] Several worker tests are crashing in Thread::signalHandlerSuspendResume after r215638
        https://bugs.webkit.org/show_bug.cgi?id=171159

        Reviewed by Michael Catanzaro.

        Now, SIGUSR2 is used by ThreadMessage. Instead SIGUSR1 becomes empty.
        We should use some signal, that is not managed by WTF Signal mechanism
        because the behaivor of this suspend and resume is a bit tricky.
        For example, we set a bit tricky signal mask to sigaction to temporary
        block SIGUSR2 in the handler to avoid nested SIGUSR2. And we cannot
        use ThreadMessage to implement this mechanism because this suspend
        and resume handler will stop in the middle of the handler by sigsuspend.
        It is not the expected semantics by ThreadMessage.

        So now, we use SIGUSR1 instead. And we note that SIGUSR1 is used for
        pthread ports.

        * wtf/ThreadingPthreads.cpp:
        * wtf/threads/Signals.h:

2017-04-20  Sam Weinig  <sam@webkit.org>

        Split cryptographic digest computation and parsing out of CSP code so it can be reused
        https://bugs.webkit.org/show_bug.cgi?id=171076

        Reviewed by Chris Dumez.

        * wtf/text/Base64.cpp:
        (WTF::base64Decode):
        (WTF::base64URLDecode):
        Add overloads for base64Decode and base64URLDecode that take a StringView, to avoid allocations
        of Strings.

        * wtf/text/Base64.h:
        (WTF::isBase64OrBase64URLCharacter):
        Move helper predicate used for parsing either type of Base64 encoded string from WebCore.

2017-04-21  Keith Miller  <keith_miller@apple.com>

        Unreviewed, rolling out r215634.

        underlying build issues should have been fixed

        Reverted changeset:

        "Unreviewed, rolling out r215620 and r215623."
        https://bugs.webkit.org/show_bug.cgi?id=171139
        http://trac.webkit.org/changeset/215634

2017-04-21  Keith Miller  <keith_miller@apple.com>

        Remove LL/SC from Atomics
        https://bugs.webkit.org/show_bug.cgi?id=171141

        Reviewed by Saam Barati.

        Adding load link and store conditionally was not an actual progression
        and the existing code is causing problems for users of Atomics. So let's
        get rid of it.

        * wtf/Atomics.h:
        (WTF::hasFence):
        (WTF::Atomic::exchange):
        (WTF::Atomic::transaction):
        (WTF::Atomic::transactionRelaxed):
        (WTF::Atomic::prepare): Deleted.
        (WTF::Atomic::attempt): Deleted.
        * wtf/Bitmap.h:
        (WTF::WordType>::concurrentTestAndSet):
        (WTF::WordType>::concurrentTestAndClear):
        * wtf/LockAlgorithm.h:
        (WTF::LockAlgorithm::lockFast):
        (WTF::LockAlgorithm::unlockFast):

2017-04-21  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r215620 and r215623.
        https://bugs.webkit.org/show_bug.cgi?id=171139

        broke arm64 build (Requested by keith_miller on #webkit).

        Reverted changesets:

        "Add signaling API"
        https://bugs.webkit.org/show_bug.cgi?id=170976
        http://trac.webkit.org/changeset/215620

        "Unreviewed, fix Cloop build."
        http://trac.webkit.org/changeset/215623

2017-04-20  Keith Miller  <keith_miller@apple.com>

        Add signaling API
        https://bugs.webkit.org/show_bug.cgi?id=170976

        Reviewed by Filip Pizlo.

        This patch adds a bunch of new functionality to WTF. First, it add
        a new data structure of a lockless bag. The LocklessBag class can
        be used as either a multi-writer multi-reader lockless bag or a
        multi-writer single consumer lockless bag.

        Next, this patch adds an abstraction around sigaction in WTF.
        Basically, you can add a handler, which can be an arbitrary
        lambda. Although it should still be safe for the signal you are
        handling.  the signal handler manager will then do all the
        appropriate handling of chaining:

        In the SIGUSR case we always forward the signal to any other
        non-default handler installed before us. We need to do this,
        otherwise, since it's not possible to tell if a SIGUSR was
        intended exlusively for our handlers. Signal handlers don't record
        how many times they were sent only that there is at least one
        unhandled signal.

        In the faulting cases we require that every handle be able to
        recognise a fault they installed, vs crashes. If none of our
        handlers claim to have handled the fault we will forward the
        fault. If a handler was installed before the first fault handler
        we simply call that handler and rely on them to take the
        appropriate action. If no handler was installed before our first
        handler we restore the default handler and allow the fault to
        happen again.

        Finally, this patch adds a signal based messaging system.  This
        system allows the user to run an arbitrary lambda from the SIGUSR2
        signal handler of any target WTF::Thread. This is already in use
        for the VMTraps API which allows us to kill rogue VMs by sending
        the VM's running WTF::Thread a SIGUSR and requesting it jetison
        all optimized code and throw an uncatchable exception from all
        function entries/loop backedges.  In the future, we will also use
        this API for Wasm to reset the instruction caches in currently
        executing Wasm threads.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/Atomics.h:
        (WTF::Atomic::Atomic):
        * wtf/LocklessBag.h: Added.
        (WTF::LocklessBag::LocklessBag):
        (WTF::LocklessBag::add):
        (WTF::LocklessBag::iterate):
        (WTF::LocklessBag::consumeAll):
        * wtf/ThreadMessage.cpp: Added.
        (WTF::ThreadMessageData::ThreadMessageData):
        (WTF::initializeThreadMessages):
        (WTF::sendMessageScoped):
        * wtf/ThreadMessage.h: Added.
        (WTF::sendMessage):
        * wtf/Threading.cpp:
        (WTF::initializeThreading):
        * wtf/Threading.h:
        (WTF::Thread::threadMessages):
        * wtf/ThreadingPthreads.cpp:
        (WTF::Thread::currentMayBeNull):
        (WTF::Thread::current):
        (WTF::Thread::signal):
        * wtf/threads/Signals.cpp: Added.
        (WTF::jscSignalHandler):
        (WTF::installSignalHandler):
        * wtf/threads/Signals.h: Added.
        (WTF::toSystemSignal):
        (WTF::fromSystemSignal):

2017-04-21  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] WTF target should not have wtf and subdirectries in public interface
        https://bugs.webkit.org/show_bug.cgi?id=171115

        Reviewed by Michael Catanzaro.

        In r209665 WEBCORE_FRAMEWORK macro started to export INCLUDE_DIRECTORIES of
        targets as their public interface, so that linked targets can use them
        implicitly without copying directory lists around. This matches existing
        practice for all targets except WTF, headers from which are always included
        with full path starting from "<wtf/...".

        Since r209665 it became possible to include headers from wtf or its
        subdirectories in CMake builds without using "<wtf/..." path. It should
        not be allowed.

        * wtf/CMakeLists.txt: WTF/wtf and its sudirectories should not be in
        public include paths of WTF target.

2017-04-20  Sam Weinig  <sam@webkit.org>

        Move notFound into its own file
        https://bugs.webkit.org/show_bug.cgi?id=170972

        Reviewed by Zalan Bujtas.

        It is odd to require including <wtf/Vector.h> just to use WTF::notFound.
        This is not causing any current problems, but does in few changes I have
        queued up.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/NotFound.h: Added.
        * wtf/Vector.h:
        * wtf/text/StringCommon.h:

2017-04-20  Filip Pizlo  <fpizlo@apple.com>

        Optimize SharedArrayBuffer in the DFG+FTL
        https://bugs.webkit.org/show_bug.cgi?id=164108

        Reviewed by Saam Barati.
        
        Made small changes as part of benchmarking the JS versions of these locks.

        * benchmarks/LockSpeedTest.cpp:
        * benchmarks/ToyLocks.h:
        * wtf/Range.h:
        (WTF::Range::dump):

2017-04-19  Youenn Fablet  <youenn@apple.com>

        [Win] Activate streams API by default
        https://bugs.webkit.org/show_bug.cgi?id=171000

        Reviewed by Brent Fulgham.

        * wtf/FeatureDefines.h:

2017-04-19  David Kilzer  <ddkilzer@apple.com>

        Vector.h: error: 'auto' not allowed in lambda parameter
        <https://webkit.org/b/171010>
        <rdar://problem/31716076>

        Reviewed by Saam Barati.

        * wtf/Vector.h:
        (WTF::removeRepeatedElements): Replace 'auto' with a specific
        type, 'T', based on a Vector<> template type.

2017-04-19  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r215518.

        This change appears to have broken the Windows build.

        Reverted changeset:

        "Move notFound into its own file"
        https://bugs.webkit.org/show_bug.cgi?id=170972
        http://trac.webkit.org/changeset/215518

2017-04-19  Sam Weinig  <sam@webkit.org>

        Move notFound into its own file
        https://bugs.webkit.org/show_bug.cgi?id=170972

        Reviewed by Zalan Bujtas.

        It is odd to require including <wtf/Vector.h> just to use WTF::notFound.
        This is not causing any current problems, but does in few changes I have
        queued up.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/NotFound.h: Added.
        * wtf/Vector.h:
        * wtf/text/StringCommon.h:

2017-04-18  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GLIB] Define priorities also for async network IO tasks
        https://bugs.webkit.org/show_bug.cgi?id=170905

        Reviewed by Žan Doberšek.

        Add AsyncIONetwork, DiskCacheRead and DiskCacheWrite priorities.

        * wtf/glib/RunLoopSourcePriority.h:

2017-04-18  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC][GTK] glib RunLoop does not accept negative start interval
        https://bugs.webkit.org/show_bug.cgi?id=170775

        Reviewed by Saam Barati.

        RunLoop::Timer for glib does not accept negative start interval.
        We use 0_s if the given value is negative.

        * wtf/glib/RunLoopGLib.cpp:
        (WTF::RunLoop::TimerBase::secondsUntilFire):

2017-04-17  Alex Christensen  <achristensen@webkit.org>

        Allow Variants of RetainPtrs
        https://bugs.webkit.org/show_bug.cgi?id=170923

        Reviewed by Tim Horton and Sam Weinig.

        * wtf/RetainPtr.h:
        (WTF::RetainPtr::operator&): Deleted.
        Operator& was causing a compile error when making Variant<RetainPtr<T>, ...>
        and because it is strange and only used once, let's just remove it.
        * wtf/Variant.h:
        (WTF::get):
        (WTF::get_if):
        Use std::addressof instead of operator& which could be overloaded to return any type with any meaning.

2017-04-17  Youenn Fablet  <youenn@apple.com>

        Disable outdated WritableStream API
        https://bugs.webkit.org/show_bug.cgi?id=170749
        <rdar://problem/31446233>

        Reviewed by Alex Christensen.

        Replacing READABLE_STREAM_API, READABLE_BYTE_STREAM_API and WRITABLE_STREAM_API compilation flag by:
        - A STREAMS_API compilation flag.
        - A ReadableByteStreamAPI and WritableStreamAPI runtime flags, turned off except for RWT and DRT.

        * wtf/FeatureDefines.h:

2017-04-17  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Move isNullFunctionPointer down into WTF
        https://bugs.webkit.org/show_bug.cgi?id=170892

        Reviewed by Sam Weinig.

        Test: TestWebKitAPI/Tests/WTF/darwin/WeakLinking.cpp

        * WTF.xcodeproj/project.pbxproj: Added reference to new file.
        * wtf/darwin: Added.
        * wtf/darwin/WeakLinking.h: Added.
        (WTF::isNullFunctionPointer): Copied from ResourceLoadStatisticsClassifierCocoa.cpp in
          WebKit2 and changed into a function template that works with any function pointer.

2017-04-17  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r215366.

        This test is failing on performance bots.

        Reverted changeset:

        "Add performance test for asking the platform for a font for
        U+2060 WORD JOINER"
        https://bugs.webkit.org/show_bug.cgi?id=170842
        http://trac.webkit.org/changeset/215366

2017-04-17  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSCOnly] Fix build failures in macOS
        https://bugs.webkit.org/show_bug.cgi?id=170887

        Reviewed by Alex Christensen.

        JSCOnly port does not use mac/MainThread.cpp.
        We change the ifdef gurard to use generic implementaion in JSCOnly on macOS.

        * wtf/MainThread.cpp:
        * wtf/PlatformJSCOnly.cmake:

2017-04-17  JF Bastien  <jfbastien@apple.com>

        B3: don't allow unsigned offsets in Value
        https://bugs.webkit.org/show_bug.cgi?id=170692

        Reviewed by Filip Pizlo.

        Add C++17's std::conjunction type trait, except for Microsoft VS
        2015 update 2 and later because it adds the logical operator type
        traits, event when C++ is pre-2017:
        https://blogs.msdn.microsoft.com/vcblog/2016/01/22/vs-2015-update-2s-stl-is-c17-so-far-feature-complete/

        * wtf/StdLibExtras.h:

2017-04-14  Mark Lam  <mark.lam@apple.com>

        Update architectures in xcconfig files.
        https://bugs.webkit.org/show_bug.cgi?id=170867
        <rdar://problem/31628104>

        Reviewed by Joseph Pecoraro.

        * Configurations/Base.xcconfig:

2017-04-14  Myles C. Maxfield  <mmaxfield@apple.com>

        Add performance test for asking the platform for a font for U+2060 WORD JOINER
        https://bugs.webkit.org/show_bug.cgi?id=170842

        Reviewed by Tim Horton.

        * wtf/unicode/CharacterNames.h:

2017-04-13  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Date.parse should accept wider range of representation
        https://bugs.webkit.org/show_bug.cgi?id=170720

        Reviewed by Darin Adler.

        We would like to relax Date.parse to accept the representation "May 8".
        At that time, we choose `2000` as a default year. This is because of
        the following reason.

        1. According to the V8, this default value is compatible to the old KJS. While current V8 uses 2001,
           SpiderMonkey does not have such a fallback path. So this reason is not big deal.

        2. It is a leap year. When using `new Date("Feb 29")`, we assume that people want to save month and day.
           Leap year can save user inputs if they is valid. If we use the current year instead, the current year
           may not be a leap year. In that case, `new Date("Feb 29").getMonth()` becomes 2 (March).

        * wtf/DateMath.cpp:
        (WTF::parseDateFromNullTerminatedCharacters):

2017-04-13  Dan Bernstein  <mitz@apple.com>

        WTF installs an extra copy of a header outside /usr/local/include/wtf

        * WTF.xcodeproj/project.pbxproj: Demoted PriorityQueue.h from Private to Project.

2017-04-13  Oliver Hunt  <oliver@apple.com>

        allocationSize should use safe arithmetic by default
        https://bugs.webkit.org/show_bug.cgi?id=170804

        Reviewed by JF Bastien.

        Make all allocationSize() functions work in terms
        of Checked<size_t>

        * wtf/text/StringImpl.h:
        (WTF::StringImpl::allocationSize):
        (WTF::StringImpl::tailOffset):

2017-04-13  JF Bastien  <jfbastien@apple.com>

        WebAssembly: manage memory better
        https://bugs.webkit.org/show_bug.cgi?id=170628

        Reviewed by Keith Miller, Michael Saboff.

        Re-use a VM tag which was intended for JavaScript core, was then
        used by our GC, and is now unused. If I don't do this then
        WebAssembly fast memories will make vmmap look super weird because
        it'll look like multi-gigabyte of virtual memory are allocated as
        part of our process' regular memory!

        Separately I need to update vmmap and other tools to print the
        right name. Right now this tag gets identified as "JS garbage
        collector".

        * wtf/OSAllocator.h:
        * wtf/VMTags.h:

2017-04-13  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Use proper ifdef guard for code using MachineContext
        https://bugs.webkit.org/show_bug.cgi?id=170800

        Reviewed by Carlos Alberto Lopez Perez.

        SamplingProfiler and FastMemory rely on MachineContext feature.

        * wtf/Platform.h:

2017-04-12  Dan Bernstein  <mitz@apple.com>

        [Mac] Future-proof .xcconfig files
        https://bugs.webkit.org/show_bug.cgi?id=170802

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:

2017-04-12  Yusuke Suzuki  <utatane.tea@gmail.com>

        Use HAVE(MACHINE_CONTEXT) instead of USE(MACHINE_CONTEXT)
        https://bugs.webkit.org/show_bug.cgi?id=170770

        Rubber stamped by Mark Lam.

        * wtf/Platform.h:
        * wtf/PlatformRegisters.h:
        * wtf/ThreadingPthreads.cpp:
        (WTF::Thread::getRegisters):

2017-04-12  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Clean up heap/MachineStackMarker by introducing USE(MACHINE_CONTEXT)
        https://bugs.webkit.org/show_bug.cgi?id=170770

        Reviewed by Mark Lam.

        We add a new define USE_MACHINE_CONTEXT, which becomes true if mcontext_t exists
        and we know the way to retrieve values from mcontext_t.

        * wtf/Platform.h:
        * wtf/PlatformRegisters.h:
        * wtf/ThreadingPthreads.cpp:
        (WTF::Thread::getRegisters):

2017-04-12  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Introduce Thread class and use RefPtr<Thread> and align Windows Threading implementation semantics to Pthread one
        https://bugs.webkit.org/show_bug.cgi?id=170502

        Reviewed by Mark Lam.

        This patch is refactoring of WTF Threading mechanism to merge JavaScriptCore's threading extension to WTF Threading.
        Previously, JavaScriptCore requires richer threading features (such as suspending and resuming threads), and they
        are implemented for PlatformThread in JavaScriptCore. But these features should be implemented in WTF Threading side
        instead of maintaining JSC's own threading features too. This patch removes these features from JSC and move it to
        WTF Threading.

        However, current WTF Threading has one problem: Windows version of WTF Threading has different semantics from Pthreads
        one. In Windows WTF Threading, we cannot perform any operation after the target thread is detached: WTF Threading stop
        tracking the state of the thread once the thread is detached. But this is not the same to Pthreads one. In Pthreads,
        pthread_detach just means that the resource of the thread will be destroyed automatically. While some operations like
        pthread_join will be rejected, some operations like pthread_kill will be accepted.

        The problem is that detached thread can be suspended and resumed in JSC. For example, in jsc.cpp, we start the worker
        thread and detach it immediately. In worker thread, we will create VM and thus concurrent GC will suspend and resume
        the detached thread. However, in Windows WTF Threading, we have no reference to the detached thread. Thus we cannot
        perform suspend and resume operations onto the detached thread.

        To solve the problem, we change Windows Threading mechanism drastically to align it to the Pthread semantics. In the
        new Threading, we have RefPtr<Thread> class. It holds a handle to a platform thread. We can perform threading operations
        with this class. For example, Thread::suspend is offered. And we use destructor of the thread local variable to release
        the resources held by RefPtr<Thread>. In Windows, Thread::detach does nothing because the resource will be destroyed
        automatically by RefPtr<Thread>.

        To do so, we introduce ThreadHolder for Windows. This is similar to the previous ThreadIdentifierData for Pthreads.
        It holds RefPtr<Thread> in the thread local storage (technically, it is Fiber Local Storage in Windows). Thread::current()
        will return this reference.

        The problematic situation is that the order of the deallocation of the thread local storage is not defined. So we should
        not touch thread local storage in the destructor of the thread local storage. To avoid such edge cases, we have
        currentThread() / Thread::currentID() APIs. They are safe to be called even in the destructor of the other thread local
        storage. And in Windows, in the FLS destructor, we will create the thread_local variable to defer the destruction of
        the ThreadHolder. We ensure that this destructor is called after the other FLS destructors are called in Windows 10.

        This patch is performance neutral.

        * WTF.xcodeproj/project.pbxproj:
        * benchmarks/ConditionSpeedTest.cpp:
        * benchmarks/LockFairnessTest.cpp:
        * benchmarks/LockSpeedTest.cpp:
        * wtf/AutomaticThread.cpp:
        (WTF::AutomaticThread::start):
        * wtf/CMakeLists.txt:
        * wtf/MainThread.h:
        * wtf/MemoryPressureHandler.h:
        * wtf/ParallelJobsGeneric.cpp:
        (WTF::ParallelEnvironment::ThreadPrivate::tryLockFor):
        (WTF::ParallelEnvironment::ThreadPrivate::workerThread):
        * wtf/ParallelJobsGeneric.h:
        (WTF::ParallelEnvironment::ThreadPrivate::ThreadPrivate): Deleted.
        * wtf/ParkingLot.cpp:
        (WTF::ParkingLot::forEachImpl):
        * wtf/ParkingLot.h:
        (WTF::ParkingLot::forEach):
        * wtf/PlatformRegisters.h: Renamed from Source/JavaScriptCore/runtime/PlatformThread.h.
        * wtf/RefPtr.h:
        (WTF::RefPtr::RefPtr):
        * wtf/ThreadFunctionInvocation.h:
        (WTF::ThreadFunctionInvocation::ThreadFunctionInvocation):
        * wtf/ThreadHolder.cpp: Added.
        (WTF::ThreadHolder::~ThreadHolder):
        (WTF::ThreadHolder::initialize):
        * wtf/ThreadHolder.h: Renamed from Source/WTF/wtf/ThreadIdentifierDataPthreads.h.
        (WTF::ThreadHolder::thread):
        (WTF::ThreadHolder::ThreadHolder):
        * wtf/ThreadHolderPthreads.cpp: Renamed from Source/WTF/wtf/ThreadIdentifierDataPthreads.cpp.
        (WTF::ThreadHolder::initializeOnce):
        (WTF::ThreadHolder::current):
        (WTF::ThreadHolder::destruct):
        * wtf/ThreadHolderWin.cpp: Added.
        (WTF::threadMapMutex):
        (WTF::threadMap):
        (WTF::ThreadHolder::initializeOnce):
        (WTF::ThreadHolder::current):
        (WTF::ThreadHolder::destruct):
        * wtf/ThreadSpecific.h:
        * wtf/Threading.cpp:
        (WTF::Thread::normalizeThreadName):
        (WTF::threadEntryPoint):
        (WTF::Thread::create):
        (WTF::Thread::setCurrentThreadIsUserInteractive):
        (WTF::Thread::setCurrentThreadIsUserInitiated):
        (WTF::Thread::setGlobalMaxQOSClass):
        (WTF::Thread::adjustedQOSClass):
        (WTF::Thread::dump):
        (WTF::initializeThreading):
        (WTF::normalizeThreadName): Deleted.
        (WTF::createThread): Deleted.
        (WTF::setCurrentThreadIsUserInteractive): Deleted.
        (WTF::setCurrentThreadIsUserInitiated): Deleted.
        (WTF::setGlobalMaxQOSClass): Deleted.
        (WTF::adjustedQOSClass): Deleted.
        * wtf/Threading.h:
        (WTF::Thread::id):
        (WTF::Thread::operator==):
        (WTF::Thread::operator!=):
        (WTF::Thread::joinableState):
        (WTF::Thread::didBecomeDetached):
        (WTF::Thread::didJoin):
        (WTF::Thread::hasExited):
        (WTF::currentThread):
        * wtf/ThreadingPthreads.cpp:
        (WTF::Thread::Thread):
        (WTF::Thread::~Thread):
        (WTF::Thread::signalHandlerSuspendResume):
        (WTF::Thread::initializePlatformThreading):
        (WTF::initializeCurrentThreadEvenIfNonWTFCreated):
        (WTF::wtfThreadEntryPoint):
        (WTF::Thread::createInternal):
        (WTF::Thread::initializeCurrentThreadInternal):
        (WTF::Thread::changePriority):
        (WTF::Thread::waitForCompletion):
        (WTF::Thread::detach):
        (WTF::Thread::current):
        (WTF::Thread::currentID):
        (WTF::Thread::signal):
        (WTF::Thread::resume):
        (WTF::Thread::getRegisters):
        (WTF::Thread::didExit):
        (WTF::Thread::establish):
        (WTF::PthreadState::PthreadState): Deleted.
        (WTF::PthreadState::joinableState): Deleted.
        (WTF::PthreadState::pthreadHandle): Deleted.
        (WTF::PthreadState::didBecomeDetached): Deleted.
        (WTF::PthreadState::didExit): Deleted.
        (WTF::PthreadState::didJoin): Deleted.
        (WTF::PthreadState::hasExited): Deleted.
        (WTF::threadMapMutex): Deleted.
        (WTF::initializeThreading): Deleted.
        (WTF::threadMap): Deleted.
        (WTF::identifierByPthreadHandle): Deleted.
        (WTF::establishIdentifierForPthreadHandle): Deleted.
        (WTF::pthreadHandleForIdentifierWithLockAlreadyHeld): Deleted.
        (WTF::createThreadInternal): Deleted.
        (WTF::initializeCurrentThreadInternal): Deleted.
        (WTF::changeThreadPriority): Deleted.
        (WTF::waitForThreadCompletion): Deleted.
        (WTF::detachThread): Deleted.
        (WTF::threadDidExit): Deleted.
        (WTF::currentThread): Deleted.
        (WTF::signalThread): Deleted.
        * wtf/ThreadingWin.cpp:
        (WTF::Thread::Thread):
        (WTF::Thread::~Thread):
        (WTF::Thread::initializeCurrentThreadInternal):
        (WTF::Thread::initializePlatformThreading):
        (WTF::wtfThreadEntryPoint):
        (WTF::Thread::createInternal):
        (WTF::Thread::changePriority):
        (WTF::Thread::waitForCompletion):
        (WTF::Thread::detach):
        (WTF::Thread::resume):
        (WTF::Thread::getRegisters):
        (WTF::Thread::current):
        (WTF::Thread::currentID):
        (WTF::Thread::didExit):
        (WTF::Thread::establish):
        (WTF::initializeCurrentThreadInternal): Deleted.
        (WTF::threadMapMutex): Deleted.
        (WTF::initializeThreading): Deleted.
        (WTF::threadMap): Deleted.
        (WTF::storeThreadHandleByIdentifier): Deleted.
        (WTF::threadHandleForIdentifier): Deleted.
        (WTF::clearThreadHandleForIdentifier): Deleted.
        (WTF::createThreadInternal): Deleted.
        (WTF::changeThreadPriority): Deleted.
        (WTF::waitForThreadCompletion): Deleted.
        (WTF::detachThread): Deleted.
        (WTF::currentThread): Deleted.
        * wtf/WorkQueue.cpp:
        (WTF::WorkQueue::concurrentApply):
        * wtf/WorkQueue.h:
        * wtf/cocoa/WorkQueueCocoa.cpp:
        (WTF::dispatchQOSClass):
        * wtf/generic/WorkQueueGeneric.cpp:
        (WorkQueue::platformInitialize):
        (WorkQueue::platformInvalidate):
        * wtf/linux/MemoryPressureHandlerLinux.cpp:
        (WTF::MemoryPressureHandler::EventFDPoller::EventFDPoller):
        (WTF::MemoryPressureHandler::EventFDPoller::~EventFDPoller):
        * wtf/win/MainThreadWin.cpp:
        (WTF::initializeMainThreadPlatform):

2017-04-11  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Use the DisplayRefreshMonitor facilities
        https://bugs.webkit.org/show_bug.cgi?id=170599

        Reviewed by Carlos Garcia Campos.

        * wtf/Platform.h: Enable USE_REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR for the GTK+ port.
        * wtf/glib/RunLoopSourcePriority.h: Add the DisplayRefreshMonitorTimer entry that
        matches the value of LayerFlushTimer.

2017-04-11  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WebCore][JSC] ResourceUsageData.{timeOfNextEdenCollection,timeOfNextFullCollection} should be MonotonicTime
        https://bugs.webkit.org/show_bug.cgi?id=170725

        Reviewed by Sam Weinig.

        Make MonotonicTime more constexpr friendly mainly to annotate MonotonicTime::nan() as constexpr.

        * wtf/MonotonicTime.h:
        (WTF::MonotonicTime::MonotonicTime):
        (WTF::MonotonicTime::fromRawSeconds):
        (WTF::MonotonicTime::infinity):
        (WTF::MonotonicTime::nan):
        (WTF::MonotonicTime::secondsSinceEpoch):
        (WTF::MonotonicTime::operator bool):
        (WTF::MonotonicTime::operator+):
        (WTF::MonotonicTime::operator-):
        (WTF::MonotonicTime::operator==):
        (WTF::MonotonicTime::operator!=):
        (WTF::MonotonicTime::operator<):
        (WTF::MonotonicTime::operator>):
        (WTF::MonotonicTime::operator<=):
        (WTF::MonotonicTime::operator>=):

2017-04-11  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, build fix for Windows port after r215228
        https://bugs.webkit.org/show_bug.cgi?id=170723

        * wtf/win/RunLoopWin.cpp:
        (WTF::RunLoop::TimerBase::timerFired):

2017-04-11  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC][GTK] Use RunLoop::Timer in GTK port
        https://bugs.webkit.org/show_bug.cgi?id=170723

        Reviewed by Carlos Garcia Campos.

        Add secondsUntilFire method. And add setName and setPriority
        for GTK RunLoop::Timer.

        * wtf/RunLoop.h:
        * wtf/cf/RunLoopCF.cpp:
        (WTF::RunLoop::TimerBase::secondsUntilFire):
        * wtf/generic/RunLoopGeneric.cpp:
        (WTF::RunLoop::TimerBase::secondsUntilFire):
        * wtf/glib/RunLoopGLib.cpp:
        (WTF::RunLoop::TimerBase::setName):
        (WTF::RunLoop::TimerBase::secondsUntilFire):
        * wtf/win/RunLoopWin.cpp:
        (WTF::RunLoop::TimerBase::timerFired):
        (WTF::RunLoop::TimerBase::start):
        (WTF::RunLoop::TimerBase::isActive):
        (WTF::RunLoop::TimerBase::secondsUntilFire):

2017-04-11  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Enable JSRunLoopTimer for JSCOnly and Windows
        https://bugs.webkit.org/show_bug.cgi?id=170655

        Reviewed by Carlos Garcia Campos.

        This patch makes RunLoop::Timer in Generic and Windows thread-safe to use it
        in JSC's JSRunLoopTimer. Eventually, we would like to replace JSRunLoopTimer's
        platform-dependent implementation to WTF::RunLoop::Timer.

        * wtf/RunLoop.h:
        * wtf/cf/RunLoopCF.cpp:
        (WTF::RunLoop::TimerBase::start):
        * wtf/generic/RunLoopGeneric.cpp:
        (WTF::RunLoop::TimerBase::ScheduledTask::EarliestSchedule::operator()):
        (WTF::RunLoop::populateTasks):
        (WTF::RunLoop::runImpl):
        (WTF::RunLoop::schedule):
        (WTF::RunLoop::scheduleAndWakeUp):
        (WTF::RunLoop::TimerBase::~TimerBase):
        (WTF::RunLoop::TimerBase::start):
        (WTF::RunLoop::TimerBase::stop):
        (WTF::RunLoop::TimerBase::isActive):
        * wtf/glib/RunLoopGLib.cpp:
        (WTF::RunLoop::TimerBase::TimerBase):
        * wtf/win/RunLoopWin.cpp:
        (WTF::RunLoop::TimerBase::timerFired):
        (WTF::RunLoop::TimerBase::start):
        (WTF::RunLoop::TimerBase::stop):
        (WTF::RunLoop::TimerBase::isActive):

2017-04-11  Zan Dobersek  <zdobersek@igalia.com>

        REGRESSION(r213645): It made JSC tests super slow and timeout on AArch64 Linux
        https://bugs.webkit.org/show_bug.cgi?id=169510

        Reviewed by Saam Barati.

        Add the `volatile` qualifiers for ASM statements that set up ldxr and stxr
        instruction calls when HAVE(LL_SC) is enabled for aarch64 platforms.

        This avoids indefinite execution when running GCC-compiled JSC on Linux.
        Specific bug or expected behavior that differs from Clang wasn't determined.

        HAVE(LL_SC) is re-enabled on non-Darwin aarch64 platforms.

        * wtf/Atomics.h:
        * wtf/Platform.h:

2017-04-10  Thorsten Glaser  <tg@mirbsd.de>

        [GTK] Fix x32 build
        https://bugs.webkit.org/show_bug.cgi?id=170673

        Reviewed by Carlos Alberto Lopez Perez.

        * wtf/Platform.h:

2017-04-09  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Annotate Seconds' member functions and operators with constexpr
        https://bugs.webkit.org/show_bug.cgi?id=170662

        Reviewed by Daniel Bates.

        Annotate Seconds' member functions and operators with constexpr.
        It allows us to use Seconds calculation in compile time and use these
        calculation for static const global variables.

        operator% is an exception: it uses fmod and it is not offered as constexpr.

        * wtf/MathExtras.h:
        (defaultMinimumForClamp):
        (defaultMaximumForClamp):
        (clampToAccepting64):
        Super unfortunate ugly code. This is because GCC 4.9 does not support C++14 relaxed constexpr.

        * wtf/Seconds.h:
        (WTF::Seconds::Seconds):
        (WTF::Seconds::value):
        (WTF::Seconds::minutes):
        (WTF::Seconds::seconds):
        (WTF::Seconds::milliseconds):
        (WTF::Seconds::microseconds):
        (WTF::Seconds::nanoseconds):
        (WTF::Seconds::operator bool):
        (WTF::Seconds::operator+):
        (WTF::Seconds::operator-):
        (WTF::Seconds::operator*):
        (WTF::Seconds::operator/):
        (WTF::Seconds::operator==):
        (WTF::Seconds::operator!=):
        (WTF::Seconds::operator<):
        (WTF::Seconds::operator>):
        (WTF::Seconds::operator<=):
        (WTF::Seconds::operator>=):

2017-04-09  Chris Dumez  <cdumez@apple.com>

        Start dropping Timer API dealing with double
        https://bugs.webkit.org/show_bug.cgi?id=170649

        Reviewed by Yusuke Suzuki.

        Start dropping Timer API dealing with double as people should use Seconds now.

        * wtf/RunLoopTimer.h:
        * wtf/glib/MainThreadGLib.cpp:
        (WTF::MainThreadDispatcher::schedule):

2017-04-07  Keith Miller  <keith_miller@apple.com>

        Unreviewed, remove constexpr function since GTK didn't like it.

        * wtf/PriorityQueue.h:
        (WTF::PriorityQueue::parentOf):

2017-04-07  Chris Dumez  <cdumez@apple.com>

        Start using MonotonicTime / Seconds in Timer class
        https://bugs.webkit.org/show_bug.cgi?id=170625

        Reviewed by Simon Fraser.

        Add modulo operator to MonotonicTime.

        * wtf/MonotonicTime.h:
        (WTF::MonotonicTime::operator%):

2017-04-07  Keith Miller  <keith_miller@apple.com>

        Add a PriorityQueue class
        https://bugs.webkit.org/show_bug.cgi?id=170579

        Reviewed by Saam Barati.

        This patch adds a new PriorityQueue class that is backed by
        WTF::Vector.  It also has a number of other niceties such as being
        able to iterate the queue and increase or decrease keys.

        One note is that increaseKey and decreaseKey are O(n) rather than
        O(log(n)).  Traditionally, the lookup of the key is done with a
        hash map but that's not feasible here.  This is because unless the
        queue's element type is a pointer there is no good way maintain a
        persistent reference to every entry in the queue while we sift.
        The only way to update the location of an entry is to do a hash
        table lookup with the entry's hash but this is probably more
        expensive than just doing a linear search.

        Also, add comparison operator functions, which can be passed to PriorityQueue.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/MathExtras.h:
        (isLessThan):
        (isLessThanEqual):
        (isGreaterThan):
        (isGreaterThanEqual):
        * wtf/PriorityQueue.h: Added.
        (WTF::PriorityQueue::size):
        (WTF::PriorityQueue::isEmpty):
        (WTF::PriorityQueue::enqueue):
        (WTF::PriorityQueue::peek):
        (WTF::PriorityQueue::dequeue):
        (WTF::PriorityQueue::decreaseKey):
        (WTF::PriorityQueue::increaseKey):
        (WTF::PriorityQueue::begin):
        (WTF::PriorityQueue::end):
        (WTF::PriorityQueue::isValidHeap):
        (WTF::PriorityQueue::parentOf):
        (WTF::PriorityQueue::leftChildOf):
        (WTF::PriorityQueue::rightChildOf):
        (WTF::PriorityQueue::siftUp):
        (WTF::PriorityQueue::siftDown):

2017-04-07  Alex Christensen  <achristensen@webkit.org>

        Use audit_token_t instead of pid_t for checking sandbox of other processes
        https://bugs.webkit.org/show_bug.cgi?id=170616
        <rdar://problem/31158189>

        Reviewed by Daniel Bates.

        * wtf/spi/darwin/SandboxSPI.h:
        Declare more SPI.

2017-04-07  Ting-Wei Lan  <lantw44@gmail.com>

        Include cstdio before using sscanf and stderr
        https://bugs.webkit.org/show_bug.cgi?id=170098

        Reviewed by Michael Catanzaro.

        * wtf/NumberOfCores.cpp:

2017-04-07  Saam Barati  <sbarati@apple.com>

        WebAssembly: Make to a compilation API that allows for multi-VM concurrent compilations of Wasm Modules
        https://bugs.webkit.org/show_bug.cgi?id=170488

        Reviewed by JF Bastien.

        * wtf/SharedTask.h: Make SharedTaskFunctor forward its arguments.

2017-04-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Update the priorities used in glib main loop sources
        https://bugs.webkit.org/show_bug.cgi?id=170457

        Reviewed by Žan Doberšek.

        Add an enum to define prirorities used in different GLib main sources. It allows to give them a better name
        than high, low, medium, etc., but also to document them and other GLib based ports can define their own
        values without changing all the places where they are used. The default values are based on the priorities
        pre-defined by GLib.

        * wtf/glib/MainThreadGLib.cpp:
        (WTF::MainThreadDispatcher::MainThreadDispatcher):
        * wtf/glib/RunLoopGLib.cpp:
        (WTF::RunLoop::RunLoop):
        (WTF::RunLoop::dispatchAfter):
        (WTF::RunLoop::TimerBase::TimerBase):
        * wtf/glib/RunLoopSourcePriority.h: Added.
        * wtf/linux/MemoryPressureHandlerLinux.cpp:
        (WTF::MemoryPressureHandler::EventFDPoller::EventFDPoller):

2017-04-06  Filip Pizlo  <fpizlo@apple.com>

        Linear scan should run liveness only once
        https://bugs.webkit.org/show_bug.cgi?id=170569

        Reviewed by Keith Miller.
        
        Have Liveness<> call Adapter::prepareToCompute(), since this makes it a lot easier to implement
        constraint generation, since the constraint generator now gets to run after the Adapter is fully
        constructed.
        
        * wtf/IndexMap.h:
        (WTF::IndexMap::append): Also make this a bit more versatile.
        * wtf/Liveness.h:
        (WTF::Liveness::LocalCalc::Iterable::contains):
        (WTF::Liveness::Iterable::contains):
        (WTF::Liveness::compute):

2017-04-06  Andreas Kling  <akling@apple.com>

        Kill any WebContent process using over 16 GB of memory.
        https://bugs.webkit.org/show_bug.cgi?id=170515
        <rdar://problem/29930931>

        Reviewed by Antti Koivisto.

        Restructure the code since it was getting out of sync with the intended behavior.
        Now there's a thresholdForMemoryKill() which returns the current memory limit based
        on the process status.

        The memory usage policy is separated from the killing, and now only drives the
        asynchronous invocations of pressure relief that occur when we pass over one of
        the policy edges (now 1GB for Conservative, 2GB for Strict.)

        Removed the "Panic" policy and moved the memory kill logic to shrinkOrDie().

        Behavior as of this patch:

            - Everyone gets killed over 16 GB.
            - Inactive processes get killed over 4 GB.
            - Strict memory usage policy kicks in at 2 GB.
            - Conservative memory usage policy at 1 GB.

        Like before, we make a best-effort attempt to free up memory before killing the process.

        * wtf/MemoryPressureHandler.cpp:
        (WTF::toString):
        (WTF::MemoryPressureHandler::thresholdForMemoryKill):
        (WTF::thresholdForPolicy):
        (WTF::policyForFootprint):
        (WTF::MemoryPressureHandler::shrinkOrDie):
        (WTF::MemoryPressureHandler::setMemoryUsagePolicyBasedOnFootprint):
        (WTF::MemoryPressureHandler::measurementTimerFired):
        * wtf/MemoryPressureHandler.h:

2017-04-05  Andreas Kling  <akling@apple.com>

        Make inactive web processes behave as though under memory pressure.
        https://bugs.webkit.org/show_bug.cgi?id=170042
        <rdar://problem/31038445>

        Reviewed by Antti Koivisto.

        Once a web process becomes inactive, let's try to reduce its impact
        on memory usage by treating it as if it's under memory pressure until
        it becomes active.

        * wtf/MemoryPressureHandler.cpp:
        (WTF::MemoryPressureHandler::setProcessState):
        (WTF::MemoryPressureHandler::isUnderMemoryPressure):
        * wtf/MemoryPressureHandler.h:
        (WTF::MemoryPressureHandler::isUnderMemoryPressure): Deleted.

2017-04-05  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Suppress warnings in GCC
        https://bugs.webkit.org/show_bug.cgi?id=170501

        Reviewed by Keith Miller.

        Add a new macro UNUSED_FUNCTION to annotate unused static functions.
        #pragma GCC diagnostic ignored "-Wunused-function" does not work.

        * wtf/Compiler.h:

2017-04-04  Filip Pizlo  <fpizlo@apple.com>

        Air::eliminateDeadCode() should not use a HashSet
        https://bugs.webkit.org/show_bug.cgi?id=170487

        Reviewed by Saam Barati.
        
        BitVector::iterator knows when it's at the end. Expose this functionality.

        * wtf/BitVector.h:
        (WTF::BitVector::iterator::isAtEnd):

2017-04-04  Keith Miller  <keith_miller@apple.com>

        WebAssembly: ModuleInformation should be a ref counted thing that can be shared across threads.
        https://bugs.webkit.org/show_bug.cgi?id=170478

        Reviewed by Saam Barati.

        This adds a new String::fromUTF8 that converts a vector of characters to
        a string.

        Also, it cleans up some style.

        * wtf/text/WTFString.h:
        (WTF::String::fromUTF8):
        * wtf/unicode/UTF8.cpp:
        (WTF::Unicode::convertLatin1ToUTF8):

2017-04-04  Filip Pizlo  <fpizlo@apple.com>

        B3::fixSSA() needs a tune-up
        https://bugs.webkit.org/show_bug.cgi?id=170485

        Reviewed by Saam Barati.
        
        This makes IndexSparseSet capable of being used as a map if you instantiate it with
        KeyValuePair<unsigned, ValueType>.

        * wtf/HashTraits.h:
        * wtf/IndexSparseSet.h:
        (WTF::DefaultIndexSparseSetTraits::create):
        (WTF::DefaultIndexSparseSetTraits::key):
        (WTF::OverflowHandler>::IndexSparseSet):
        (WTF::OverflowHandler>::add):
        (WTF::OverflowHandler>::set):
        (WTF::OverflowHandler>::remove):
        (WTF::OverflowHandler>::clear):
        (WTF::OverflowHandler>::size):
        (WTF::OverflowHandler>::isEmpty):
        (WTF::OverflowHandler>::contains):
        (WTF::OverflowHandler>::sort):
        (WTF::IndexSparseSet<OverflowHandler>::IndexSparseSet): Deleted.
        (WTF::IndexSparseSet<OverflowHandler>::add): Deleted.
        (WTF::IndexSparseSet<OverflowHandler>::remove): Deleted.
        (WTF::IndexSparseSet<OverflowHandler>::clear): Deleted.
        (WTF::IndexSparseSet<OverflowHandler>::size): Deleted.
        (WTF::IndexSparseSet<OverflowHandler>::isEmpty): Deleted.
        (WTF::IndexSparseSet<OverflowHandler>::contains): Deleted.
        (WTF::IndexSparseSet<OverflowHandler>::sort): Deleted.
        * wtf/Liveness.h:
        (WTF::Liveness::LocalCalc::Iterable::iterator::iterator):
        (WTF::Liveness::workset):

2017-04-04  Filip Pizlo  <fpizlo@apple.com>

        Don't need to Air::reportUsedRegisters for wasm at -O1
        https://bugs.webkit.org/show_bug.cgi?id=170459

        Reviewed by Saam Barati.
        
        Just moved the liveness computation into a method, which enabled me to do the profiling
        that I used to write this patch.

        * wtf/Liveness.h:
        (WTF::Liveness::Liveness):
        (WTF::Liveness::compute):

2017-04-03  Filip Pizlo  <fpizlo@apple.com>

        Air liveness should build constraints and solve them rather than repeatedly parsing IR
        https://bugs.webkit.org/show_bug.cgi?id=170421

        Reviewed by Saam Barati.

        * wtf/Vector.h:
        (WTF::minCapacity>::appendIfNotContains): Because sometimes Vector<> is the best kind of set.

2017-04-03  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Introduce WTF::RandomDevice which keeps /dev/urandom opened
        https://bugs.webkit.org/show_bug.cgi?id=170095

        Reviewed by Michael Catanzaro.

        In this patch, we introduce RandomDevice, which keeps /dev/urandom opened
        to avoid repeatedly open and close urandom file descriptor in Linux.

        The purpose is similar to std::random_device, but WTF::RandomDevice explicitly
        avoids using ARC4, which is recently attempted to be removed from the WebKit
        tree[1].

        [1]: https://trac.webkit.org/r214329

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/OSRandomSource.cpp:
        (WTF::cryptographicallyRandomValuesFromOS):
        (WTF::crashUnableToOpenURandom): Deleted.
        (WTF::crashUnableToReadFromURandom): Deleted.
        * wtf/RandomDevice.cpp: Copied from Source/WTF/wtf/OSRandomSource.cpp.
        (WTF::crashUnableToOpenURandom):
        (WTF::crashUnableToReadFromURandom):
        (WTF::RandomDevice::RandomDevice):
        (WTF::RandomDevice::~RandomDevice):
        (WTF::RandomDevice::cryptographicallyRandomValues):
        * wtf/RandomDevice.h: Added.

2017-04-03  Filip Pizlo  <fpizlo@apple.com>

        WTF::Liveness should have an API that focuses on actions at instruction boundaries
        https://bugs.webkit.org/show_bug.cgi?id=170407

        Reviewed by Keith Miller.
        
        Change the Liveness<> API to handle early and late things in one lump inside forEachUse
        and forEachDef functions. This reduces the amount of different functions that Liveness<>
        expects from its adaptor. This makes it easier to implement optimizations that cache the
        use/def behavior of each instruction boundary.

        * wtf/Liveness.h:
        (WTF::Liveness::Liveness):
        (WTF::Liveness::LocalCalc::execute):

2017-04-01  Csaba Osztrogonác  <ossy@webkit.org>

        Mac cmake buildfix after 214586.
        https://bugs.webkit.org/show_bug.cgi?id=170381

        Unreviewed.

        * wtf/BlockPtr.h:

2017-03-30  Filip Pizlo  <fpizlo@apple.com>

        Air should support linear scan for optLevel<2
        https://bugs.webkit.org/show_bug.cgi?id=170161

        Reviewed by Saam Barati.
        
        This change introduces a new low-latency register allocator. It can allocate registers very
        quickly by doing a relatively poor job. Implementing this algorithm required beefing up some of
        our core algorithms.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/Deque.h: Make it possible to do some basic priority queueing with this data structure.
        (WTF::inlineCapacity>::removeAllMatching):
        (WTF::inlineCapacity>::appendAndBubble):
        (WTF::inlineCapacity>::takeLast):
        * wtf/IndexKeyType.h: Added. This makes it possible to use IndexMap and IndexSet with value or pointer types. Previously they just worked with pointer types.
        (WTF::IndexKeyType::index):
        * wtf/IndexMap.h: Adopt IndexKeyType.
        (WTF::IndexMap::operator[]):
        (WTF::IndexMap::append):
        * wtf/IndexSet.h: Adopt IndexKeyType.
        (WTF::IndexSet::add):
        (WTF::IndexSet::addAll):
        (WTF::IndexSet::remove):
        (WTF::IndexSet::contains):
        (WTF::IndexSet::Iterable::iterator::operator*):
        * wtf/Range.h: Added. This used to be B3::HeapRange. This generalizes that data structure to any kind of range stuff.
        (WTF::Range::Range):
        (WTF::Range::top):
        (WTF::Range::operator==):
        (WTF::Range::operator!=):
        (WTF::Range::operator bool):
        (WTF::Range::operator|):
        (WTF::Range::operator|=):
        (WTF::Range::begin):
        (WTF::Range::end):
        (WTF::Range::overlaps):
        (WTF::Range::dump):
        * wtf/RangeSet.h:
        (WTF::RangeSet::add):

2017-03-25  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Move platformThreadSignal to WTF
        https://bugs.webkit.org/show_bug.cgi?id=170097

        Reviewed by Mark Lam.

        * wtf/Threading.h:
        * wtf/ThreadingPthreads.cpp:
        (WTF::signalThread):

2017-03-26  Filip Pizlo  <fpizlo@apple.com>

        B3::fixSSA should do liveness pruning
        https://bugs.webkit.org/show_bug.cgi?id=170111

        Reviewed by Saam Barati.
        
        Move Air::Liveness<> to WTF::Liveness<>. This is pretty easy since Air::Liveness<> was
        already fairly generic. It leverages the CFG concept so that it can understand many
        different kinds of basic blocks. It doesn't try to understand the contents of basic
        blocks; it just asks the adaptor for the block size and asks for the early/late
        uses/defs of each thing in the block.
        
        This makes it easy to create a B3::VariableLiveness, which fixSSA then uses for
        pruning. One of the new features is the Liveness::LiveAtHead nested class, which you
        instantiate if you want to perform liveAtHead queries, which SSA construction wants to
        do.
        
        This also fixes https://bugs.webkit.org/show_bug.cgi?id=170102#c12

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/Liveness.h: Added.
        (WTF::Liveness::Liveness):
        (WTF::Liveness::LocalCalc::LocalCalc):
        (WTF::Liveness::LocalCalc::Iterable::Iterable):
        (WTF::Liveness::LocalCalc::Iterable::iterator::iterator):
        (WTF::Liveness::LocalCalc::Iterable::iterator::operator++):
        (WTF::Liveness::LocalCalc::Iterable::iterator::operator*):
        (WTF::Liveness::LocalCalc::Iterable::iterator::operator==):
        (WTF::Liveness::LocalCalc::Iterable::iterator::operator!=):
        (WTF::Liveness::LocalCalc::Iterable::begin):
        (WTF::Liveness::LocalCalc::Iterable::end):
        (WTF::Liveness::LocalCalc::Iterable::contains):
        (WTF::Liveness::LocalCalc::live):
        (WTF::Liveness::LocalCalc::isLive):
        (WTF::Liveness::LocalCalc::execute):
        (WTF::Liveness::rawLiveAtHead):
        (WTF::Liveness::Iterable::Iterable):
        (WTF::Liveness::Iterable::iterator::iterator):
        (WTF::Liveness::Iterable::iterator::operator*):
        (WTF::Liveness::Iterable::iterator::operator++):
        (WTF::Liveness::Iterable::iterator::operator==):
        (WTF::Liveness::Iterable::iterator::operator!=):
        (WTF::Liveness::Iterable::begin):
        (WTF::Liveness::Iterable::end):
        (WTF::Liveness::Iterable::contains):
        (WTF::Liveness::liveAtHead):
        (WTF::Liveness::liveAtTail):
        (WTF::Liveness::workset):
        (WTF::Liveness::LiveAtHead::LiveAtHead):
        (WTF::Liveness::LiveAtHead::isLiveAtHead):

2017-03-25  Filip Pizlo  <fpizlo@apple.com>

        Air::Liveness shouldn't need HashSets
        https://bugs.webkit.org/show_bug.cgi?id=170102

        Reviewed by Yusuke Suzuki.

        * wtf/IndexSparseSet.h: Add some helpers for a HashSet-free liveness analysis.
        (WTF::IndexSparseSet::values):
        (WTF::IndexSparseSet<OverflowHandler>::sort):
        * wtf/StdLibExtras.h:
        (WTF::mergeDeduplicatedSorted): Rapidly merge two sorted lists that don't have duplicates to produce a new sorted list that doesn't have duplicates.
        * wtf/Vector.h:
        (WTF::minCapacity>::uncheckedAppend): Inline this!
        (WTF::removeRepeatedElements): This is a version of std::unique() that works naturally for Vectors.

2017-03-26  Filip Pizlo  <fpizlo@apple.com>

        Air should use RegisterSet for RegLiveness
        https://bugs.webkit.org/show_bug.cgi?id=170108

        Reviewed by Yusuke Suzuki.

        * wtf/Atomics.h:
        (WTF::ensurePointer): This is a useful replacement for std::once, which requires less fencing.
        * wtf/Bitmap.h: Add more utilities.
        (WTF::Bitmap::iterator::iterator): An iterator for set bits.
        (WTF::Bitmap::iterator::operator*):
        (WTF::Bitmap::iterator::operator++):
        (WTF::Bitmap::iterator::operator==):
        (WTF::Bitmap::iterator::operator!=):
        (WTF::Bitmap::begin):
        (WTF::Bitmap::end):
        (WTF::WordType>::subsumes): a.subsumes(b) if all of b's set bits are set in a.
        (WTF::WordType>::findBit): find next set or clear bit.

2017-03-24  JF Bastien  <jfbastien@apple.com>

        WebAssembly: store state in TLS instead of on VM
        https://bugs.webkit.org/show_bug.cgi?id=169611

        Reviewed by Filip Pizlo.

        * wtf/FastTLS.h: reserve one key for WebAssembly, delete a bunch
        of dead code which clang couldn't compile (it's valid GCC assembly
        which LLVM dislikes).

2017-03-24  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r214351.

        This change caused API test
        WebKit1.DidCreateJavaScriptContextBackForwardCacheTest to
        fail.

        Reverted changeset:

        "Make inactive web processes behave as though under memory
        pressure."
        https://bugs.webkit.org/show_bug.cgi?id=170042
        http://trac.webkit.org/changeset/214351

2017-03-24  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r214329.

        Significantly regressed Speedometer

        Reverted changeset:

        "window.crypto.getRandomValues() uses the insecure RC4 RNG"
        https://bugs.webkit.org/show_bug.cgi?id=169623
        http://trac.webkit.org/changeset/214329

2017-03-24  Andreas Kling  <akling@apple.com>

        Make inactive web processes behave as though under memory pressure.
        <https://webkit.org/b/170042>

        Reviewed by Antti Koivisto.

        Once a web process becomes inactive, let's try to reduce its impact
        on memory usage by treating it as if it's under memory pressure until
        it becomes active.

        * wtf/MemoryPressureHandler.cpp:
        (WTF::MemoryPressureHandler::setProcessState):
        (WTF::MemoryPressureHandler::isUnderMemoryPressure):
        * wtf/MemoryPressureHandler.h:
        (WTF::MemoryPressureHandler::isUnderMemoryPressure): Deleted.

2017-03-23  Michael Catanzaro  <mcatanzaro@igalia.com>

        window.crypto.getRandomValues() uses the insecure RC4 RNG
        https://bugs.webkit.org/show_bug.cgi?id=169623

        Reviewed by Alex Christensen.

        Remove the RC4 random generator in favor of using OS randomness for now. This is basically
        a merge of https://codereview.chromium.org/1431233002 from Blink, original author "eroman".

        * wtf/CryptographicallyRandomNumber.cpp:
        (WTF::cryptographicallyRandomNumber):
        (WTF::cryptographicallyRandomValues):
        (): Deleted.

2017-03-23  Tomas Popela  <tpopela@redhat.com>

        Fix uninitialized public members in WTF
        https://bugs.webkit.org/show_bug.cgi?id=169676

        Reviewed by Michael Catanzaro.

        Found by Coverity scan.

        * wtf/Bag.h:
        * wtf/HashTable.h:
        * wtf/HashTraits.h:
        * wtf/Insertion.h:
        * wtf/OrderMaker.h:
        * wtf/ParallelJobsGeneric.h:

2017-03-22  Andreas Kling  <akling@apple.com>

        Let MemoryPressureHandler track whether the process is active or inactive.
        <https://webkit.org/b/169990>

        Reviewed by Antti Koivisto.

        An active process is a process that meets any of these criteria:

            - Has had a visible Page in an active window in the last hour
            - Is playing audio

        This replaces the old mechanism where MemoryPressureHandler would invoke
        a callback to know whether the process was eligible for a memory kill.
        Instead we now plumb the relevant information down from WebCore and kill
        based on this activity state.

        * wtf/MemoryPressureHandler.cpp:
        (WTF::MemoryPressureHandler::measurementTimerFired):
        (WTF::MemoryPressureHandler::setProcessState):
        * wtf/MemoryPressureHandler.h:
        (WTF::MemoryPressureHandler::setMemoryKillCallback):
        (WTF::MemoryPressureHandler::processState):
        (WTF::MemoryPressureHandler::setProcessIsEligibleForMemoryKillCallback): Deleted.

2017-03-20  Simon Fraser  <simon.fraser@apple.com>

        Add a system trace point for memory warning handling
        https://bugs.webkit.org/show_bug.cgi?id=169893

        Reviewed by Zalan Bujtas.

        Make it possible to pass data to the Begin trace point.

        * wtf/SystemTracing.h:
        (WTF::TraceScope::TraceScope):

2017-03-17  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Time channel attack on SVG Filters
        https://bugs.webkit.org/show_bug.cgi?id=118689

        Reviewed by Simon Fraser.

        Performing arithmetic operations on subnormal floating-point numbers is
        very expensive. Normalizing the floating-point number to the minimum normal
        value should accelerate the calculations and there won't be a noticeable
        difference in the result since all the subnormal values and the minimum
        normal value are all very close to zero.

        * wtf/MathExtras.h:
        (normalizedFloat):

2017-03-11  Filip Pizlo  <fpizlo@apple.com>

        Air should be powerful enough to support Tmp-splitting
        https://bugs.webkit.org/show_bug.cgi?id=169515

        Reviewed by Saam Barati.
        
        Teach IndexMap how to handle types that don't have a default constructor. This makes it
        easy to create a IndexMap<BasicBlock, InsertionSet>, which is a super powerful
        construct.

        * wtf/IndexMap.h:
        (WTF::IndexMap::IndexMap):
        (WTF::IndexMap::resize):
        (WTF::IndexMap::clear):

2017-03-16  Simon Fraser  <simon.fraser@apple.com>

        Improve the system tracing points
        https://bugs.webkit.org/show_bug.cgi?id=169790

        Reviewed by Zalan Bujtas.

        Use a more cohesive set of system trace points that give a good overview of what
        WebKit is doing. Added points for resource loading, render tree building, sync messages
        to the web process, async image decode, WASM and fetching cookies.

        * wtf/SystemTracing.h:

2017-03-16  Carlos Garcia Campos  <cgarcia@igalia.com>

        [UNIX] Implement currentSearchLocaleID() and currentTextBreakLocaleID()
        https://bugs.webkit.org/show_bug.cgi?id=169745

        Reviewed by Yusuke Suzuki.

        Add a common implementation for Unix based ports using setlocale.

        * wtf/PlatformGTK.cmake:
        * wtf/PlatformJSCOnly.cmake:
        * wtf/text/gtk/TextBreakIteratorInternalICUGtk.cpp: Removed.
        * wtf/text/unix/TextBreakIteratorInternalICUUnix.cpp: Renamed from Source/WTF/wtf/text/jsconly/TextBreakIteratorInternalICUJSCOnly.cpp.
        (WTF::currentSearchLocaleID):
        (WTF::currentTextBreakLocaleID):

2017-03-16  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GLIB] MainThread implementation is not GTK+ specific
        https://bugs.webkit.org/show_bug.cgi?id=169736

        Reviewed by Yusuke Suzuki.

        It's implemented in MainThreadGLib.cpp for glib based ports, so ifdefs in MainThread should not be
        PLATFORM(GTK) but USE(GLIB).

        * wtf/MainThread.cpp:
        * wtf/MainThread.h:

2017-03-15  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [CMake][JSCOnly] Fix build with GLib event loop
        https://bugs.webkit.org/show_bug.cgi?id=169730

        Reviewed by Michael Catanzaro.

        * wtf/MainThread.cpp:
        * wtf/PlatformJSCOnly.cmake: WorkQueueGLib was removed in r199713.

2017-03-15  Dean Jackson  <dino@apple.com>

        Sort Xcode project files
        https://bugs.webkit.org/show_bug.cgi?id=169669

        Reviewed by Antoine Quint.

        * WTF.xcodeproj/project.pbxproj:

2017-03-14  Filip Pizlo  <fpizlo@apple.com>

        Fix some typos in this benchmark.

        Rubber stamped by Saam Barati.

        * benchmarks/HashSetDFGReplay.cpp:
        (main):

2017-03-14  Filip Pizlo  <fpizlo@apple.com>

        Record the HashSet/HashMap operations in DFG/FTL/B3 and replay them in a benchmark
        https://bugs.webkit.org/show_bug.cgi?id=169590

        Reviewed by Saam Barati.
        
        This adds LoggingHashSet and LoggingHashMap, which are drop-in replacements for HashSet and
        HashMap that log everything that they do, so that you can replay it later.
        
        This also adds a benchmark (HashSetDFGReplay) based on doing a recording of some of the HashSets
        in the DFG compiler.

        * WTF.xcodeproj/project.pbxproj:
        * benchmarks/HashSetDFGReplay.cpp: Added.
        (benchmark):
        (main):
        * wtf/CMakeLists.txt:
        * wtf/GlobalVersion.cpp: Added.
        (WTF::newGlobalVersion):
        * wtf/GlobalVersion.h: Added.
        * wtf/HashMap.h:
        (WTF::X>::swap):
        * wtf/HashSet.h:
        (WTF::V>::addVoid):
        * wtf/LoggingHashID.h: Added.
        (WTF::LoggingHashID::LoggingHashID):
        (WTF::LoggingHashID::dump):
        * wtf/LoggingHashMap.h: Added.
        * wtf/LoggingHashSet.h: Added.
        * wtf/LoggingHashTraits.h: Added.
        (WTF::LoggingHashKeyTraits::print):
        (WTF::LoggingHashValueTraits::print):

2017-03-13  Jer Noble  <jer.noble@apple.com>

        Make classes used by Media Stream encode/decode friendly
        https://bugs.webkit.org/show_bug.cgi?id=169567

        Reviewed by Eric Carlson.

        * wtf/MediaTime.h:
        (WTF::MediaTime::encode):
        (WTF::MediaTime::decode):

2017-03-14  Yusuke Suzuki  <utatane.tea@gmail.com>

        Add secondsAs<T> methods to Seconds to convert it to integers with clamp
        https://bugs.webkit.org/show_bug.cgi?id=169537

        Reviewed by Carlos Garcia Campos.

        When using the usual static_cast, infinity becomes 0 accidentally.
        It is not intended value when using Seconds for timeout value.
        Instead, we use clampToAccepting64 to convert Seconds to
        integer values to pass them to the system functions.

        * wtf/MathExtras.h:
        (clampToAccepting64):
        * wtf/Seconds.h:
        (WTF::Seconds::minutesAs):
        (WTF::Seconds::secondsAs):
        (WTF::Seconds::millisecondsAs):
        (WTF::Seconds::microsecondsAs):
        (WTF::Seconds::nanosecondsAs):
        * wtf/cocoa/WorkQueueCocoa.cpp:
        (WTF::WorkQueue::dispatchAfter):
        * wtf/glib/RunLoopGLib.cpp:
        (WTF::RunLoop::dispatchAfter):
        (WTF::RunLoop::TimerBase::updateReadyTime):

2017-03-13  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC][Linux] Implement VMTrap in Linux ports
        https://bugs.webkit.org/show_bug.cgi?id=169436

        Reviewed by Mark Lam.

        Enable VMTrap mechanism for Linux and FreeBSD.

        * wtf/Platform.h:

2017-03-13  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Clean up RunLoop and WorkQueue with Seconds and Function
        https://bugs.webkit.org/show_bug.cgi?id=169537

        Reviewed by Sam Weinig.

        This patch modernizes RunLoop and WorkQueue.

        1. Use Ref<> aggressively
        2. Use Seconds instead of chrono times
        3. Use Function<> instead of std::function

        * wtf/MainThread.cpp:
        (WTF::dispatchFunctionsFromMainThread):
        * wtf/RunLoop.h:
        * wtf/WorkQueue.h:
        * wtf/cocoa/WorkQueueCocoa.cpp:
        (WTF::WorkQueue::dispatch):
        (WTF::WorkQueue::dispatchAfter):
        (WTF::WorkQueue::concurrentApply):
        * wtf/generic/MainThreadGeneric.cpp:
        (WTF::scheduleDispatchFunctionsOnMainThread):
        * wtf/generic/RunLoopGeneric.cpp:
        (WTF::RunLoop::TimerBase::ScheduledTask::create):
        (WTF::RunLoop::TimerBase::ScheduledTask::EarliestSchedule::operator()):
        (WTF::RunLoop::populateTasks):
        (WTF::RunLoop::runImpl):
        (WTF::RunLoop::schedule):
        (WTF::RunLoop::scheduleAndWakeUp):
        (WTF::RunLoop::dispatchAfter):
        (WTF::RunLoop::TimerBase::start):
        * wtf/generic/WorkQueueGeneric.cpp:
        (WorkQueue::dispatch):
        (WorkQueue::dispatchAfter):
        * wtf/glib/RunLoopGLib.cpp:
        (WTF::DispatchAfterContext::DispatchAfterContext):
        (WTF::RunLoop::dispatchAfter):
        (WTF::RunLoop::TimerBase::updateReadyTime):
        (WTF::RunLoop::TimerBase::start):
        * wtf/win/WorkQueueWin.cpp:
        (WTF::WorkQueue::performWorkOnRegisteredWorkThread):
        (WTF::WorkQueue::dispatch):
        (WTF::WorkQueue::dispatchAfter):

2017-03-13  Chris Dumez  <cdumez@apple.com>

        [WK2] Only report background WebProcesses as unresponsive in the background after 90 seconds
        https://bugs.webkit.org/show_bug.cgi?id=169425
        <rdar://problem/30954003>

        Reviewed by Andreas Kling.

        * wtf/RunLoop.h:
        (WTF::RunLoop::TimerBase::startRepeating):
        (WTF::RunLoop::TimerBase::startOneShot):
        Add overloads to RunLoop::Timer that take Seconds in parameter,
        for convenience.

        * wtf/Seconds.h:
        (WTF::Seconds::fromHours):
        (WTF::seconds_literals::operator _h):
        Allow _h suffix for initializing Seconds type to hours.

2017-03-11  Csaba Osztrogonác  <ossy@webkit.org>

        REGRESSION(r213645): It made JSC tests super slow and timeout on AArch64 Linux
        https://bugs.webkit.org/show_bug.cgi?id=169510

        Unreviewed, disable LL_SC on Linux to unbreak this platform.

        * wtf/Atomics.h:
        * wtf/Platform.h:

2017-03-10  Filip Pizlo  <fpizlo@apple.com>

        The JITs should be able to emit fast TLS loads
        https://bugs.webkit.org/show_bug.cgi?id=169483

        Reviewed by Keith Miller.

        Consolidated what we know about fast TLS in FastTLS.h.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/FastTLS.h: Added.
        (WTF::loadFastTLS):
        (WTF::fastTLSOffsetForKey):
        * wtf/Platform.h:
        * wtf/WTFThreadData.cpp:
        (WTF::WTFThreadData::createAndRegisterForGetspecificDirect):
        * wtf/WTFThreadData.h:
        (WTF::wtfThreadData):

2017-03-10  Mark Lam  <mark.lam@apple.com>

        Turn ENABLE(MASM_PROBE) on by default for OS(DARWIN) release builds.
        https://bugs.webkit.org/show_bug.cgi?id=169493

        Reviewed by Saam Barati.

        MASM_PROBE was already enabled for debug builds.  This change makes it so that we
        don't have to rebuild the world every time we need to use it on a release build.

        * wtf/Platform.h:

2017-03-10  Csaba Osztrogonác  <ossy@webkit.org>

        Unreviewed AArch64 Linux buildfix after r213645.
        https://bugs.webkit.org/show_bug.cgi?id=169300

        * wtf/Atomics.h: intptr_t and int64_t are typedefs for long int on Linux.
        They are different types only on Darwin platforms.

2017-03-09  Caio Lima  <ticaiolima@gmail.com>

        [ESnext] Implement Object Rest - Implementing Object Rest Destructuring
        https://bugs.webkit.org/show_bug.cgi?id=167962

        Reviewed by Keith Miller.

        * wtf/HashSet.h:
        (WTF::=):

2017-03-09  Youenn Fablet  <youenn@apple.com>

        Activate VideoToolbox when WebRTC is enabled on iOS
        https://bugs.webkit.org/show_bug.cgi?id=169423

        Reviewed by Jon Lee.

        * wtf/Platform.h: Activate VIDEOTOOLBOX if WEBRTC is enabled.

2017-03-09  Filip Pizlo  <fpizlo@apple.com>

        std::isnan/isinf/isfinite should work with WTF time classes
        https://bugs.webkit.org/show_bug.cgi?id=164991

        Reviewed by Darin Adler.
        
        The consensus view (see comments in https://bugs.webkit.org/show_bug.cgi?id=152045) of how
        to check if something is NaN is to use std::isnan(). To be able to do that for time
        classes, they need to provide their own isnan() overhload. This also provides isinf()
        overloads.

        * wtf/MonotonicTime.h:
        (std::isnan):
        (std::isinf):
        * wtf/Seconds.h:
        (std::isnan):
        (std::isinf):
        * wtf/TimeWithDynamicClockType.h:
        (std::isnan):
        (std::isinf):
        * wtf/WallTime.h:
        (std::isnan):
        (std::isinf):

2017-03-09  Mark Lam  <mark.lam@apple.com>

        Use const AbstractLocker& (instead of const LockHolder&) in more places.
        https://bugs.webkit.org/show_bug.cgi?id=169424

        Reviewed by Filip Pizlo.

        * wtf/RunLoop.h:
        * wtf/generic/RunLoopGeneric.cpp:
        (WTF::RunLoop::wakeUp):
        (WTF::RunLoop::schedule):

2017-03-09  Mark Lam  <mark.lam@apple.com>

        Make the VM Traps mechanism non-polling for the DFG and FTL.
        https://bugs.webkit.org/show_bug.cgi?id=168920
        <rdar://problem/30738588>

        Reviewed by Filip Pizlo.

        Make StackBounds more useful for checking if a pointer is within stack bounds.

        * wtf/MetaAllocator.cpp:
        (WTF::MetaAllocator::isInAllocatedMemory):
        * wtf/MetaAllocator.h:
        * wtf/Platform.h:
        * wtf/StackBounds.h:
        (WTF::StackBounds::emptyBounds):
        (WTF::StackBounds::StackBounds):
        (WTF::StackBounds::isEmpty):
        (WTF::StackBounds::contains):

2017-03-07  Filip Pizlo  <fpizlo@apple.com>

        WTF should make it super easy to do ARM concurrency tricks
        https://bugs.webkit.org/show_bug.cgi?id=169300

        Reviewed by Mark Lam.
        
        This adds Atomic<>::loadLink and Atomic<>::storeCond, available only when HAVE(LL_SC).
        
        It abstracts loadLink/storeCond behind prepare/attempt. You can write prepare/attempt
        loops whenever your loop fits into the least common denominator of LL/SC and CAS.
        
        This modifies Atomic<>::transaction to use prepare/attempt. So, if you write your loop
        using Atomic<>::transaction, then you get LL/SC for free.

        Depending on the kind of transaction you are doing, you may not want to perform an LL
        until you have a chance to just load the current value. Atomic<>::transaction() assumes
        that you do not care to have any ordering guarantees in that case. If you think that
        the transaction has a good chance of aborting this way, you want
        Atomic<>::transaction() to first do a plain load. But if you don't think that such an
        abort is likely, then you want to go straight to the LL. The API supports this concept
        via TransactionAbortLikelihood.
        
        Additionally, this redoes the depend/consume API to be dead simple. Dependency is
        unsigned. You get a dependency on a loaded value by just saying
        dependency(loadedValue). You consume the dependency by using it as a bonus index to
        some pointer dereference. This is made easy with the consume<T*>(ptr, dependency)
        helper. In those cases where you want to pass around both a computed value and a
        dependency, there's DependencyWith<T>. But you won't need it in most cases. The loaded
        value or any value computed from the loaded value is a fine input to dependency()!
        
        This change updates a bunch of hot paths to use the new APIs. Using transaction() gives
        us optimal LL/SC loops for object marking and lock acquisition.
        
        This change also updates a bunch of hot paths to use dependency()/consume().
        
        This is a significant Octane/splay speed-up on ARM.

        * wtf/Atomics.h:
        (WTF::hasFence):
        (WTF::Atomic::prepare):
        (WTF::Atomic::attempt):
        (WTF::Atomic::transaction):
        (WTF::Atomic::transactionRelaxed):
        (WTF::nullDependency):
        (WTF::dependency):
        (WTF::DependencyWith::DependencyWith):
        (WTF::dependencyWith):
        (WTF::consume):
        (WTF::Atomic::tryTransactionRelaxed): Deleted.
        (WTF::Atomic::tryTransaction): Deleted.
        (WTF::zeroWithConsumeDependency): Deleted.
        (WTF::consumeLoad): Deleted.
        * wtf/Bitmap.h:
        (WTF::WordType>::get):
        (WTF::WordType>::concurrentTestAndSet):
        (WTF::WordType>::concurrentTestAndClear):
        * wtf/LockAlgorithm.h:
        (WTF::LockAlgorithm::lockFast):
        (WTF::LockAlgorithm::unlockFast):
        (WTF::LockAlgorithm::unlockSlow):
        * wtf/Platform.h:

2017-03-08  Anders Carlsson  <andersca@apple.com>

        Simplify the PaymentCoordinator interface
        https://bugs.webkit.org/show_bug.cgi?id=169382
        Part of rdar://problem/28880714.

        Reviewed by Tim Horton.

        * wtf/EnumTraits.h:
        Fix a build warning.

2017-03-06  Andreas Kling  <akling@apple.com>

        [iOS] Report domains crashing under memory pressure via enhanced privacy logging.
        <https://webkit.org/b/169133>
        <rdar://problem/29964017>

        Reviewed by Antti Koivisto.

        Add a mechanism for getting a callback when the memory pressure status changes.

        * wtf/MemoryPressureHandler.cpp:
        (WTF::MemoryPressureHandler::measurementTimerFired):
        (WTF::MemoryPressureHandler::beginSimulatedMemoryPressure):
        (WTF::MemoryPressureHandler::endSimulatedMemoryPressure):
        (WTF::MemoryPressureHandler::setUnderMemoryPressure):
        (WTF::MemoryPressureHandler::memoryPressureStatusChanged):
        * wtf/MemoryPressureHandler.h:
        (WTF::MemoryPressureHandler::setMemoryPressureStatusChangedCallback):
        (WTF::MemoryPressureHandler::setUnderMemoryPressure): Deleted.

2017-03-03  Jer Noble  <jer.noble@apple.com>

        [Win64] '__int128_t': undeclared identifier in MediaTime.cpp
        https://bugs.webkit.org/show_bug.cgi?id=169123

        Reviewed by Alex Christensen.

        Don't perform the 128-bit optimized path on Windows, where the __int128_t intrinsic isn't available.

        * wtf/MediaTime.cpp:
        (WTF::MediaTime::setTimeScale):

2017-03-03  Keith Miller  <keith_miller@apple.com>

        WASM should support faster loads.
        https://bugs.webkit.org/show_bug.cgi?id=162693

        Reviewed by Saam Barati.

        Add new forms of dataLog that take a boolean which describes if the log should happen. This makes cases where we have a static const bool for printing nicer since you can do:

        dataLogIf(verbose, things, to, print);

        instead of:

        if (verbose)
            dataLog(things, to, print);

        Also, add a operator! to Ref that has the same semantics as C++ refs.

        * wtf/DataLog.h:
        (WTF::dataLogLn):
        (WTF::dataLogIf):
        (WTF::dataLogLnIf):
        * wtf/Ref.h:
        (WTF::Ref::operator!):

2017-03-02  Jer Noble  <jer.noble@apple.com>

        Sufficently large timeValue and timeScale arguments to MediaTime will cause wrapping in toTimeScale().
        https://bugs.webkit.org/show_bug.cgi?id=169098

        Reviewed by Keith Miller.

        Use a non-standard but Clang & GCC supported __int128_t type extension to do the 128-bit math rather than
        rolling our own. Since this is only available in 64-bit builds, for 32-bit, just fix the underlying 128-bit
        math.

        * wtf/MediaTime.cpp:
        (WTF::MediaTime::setTimeScale):

2017-03-01  Konstantin Tokarev  <annulen@yandex.ru>

        Removed unused WTF_COMPILER_SUPPORTS_CXX_USER_LITERALS macro
        https://bugs.webkit.org/show_bug.cgi?id=168969

        Reviewed by Darin Adler.

        * wtf/Compiler.h:

2017-03-01  Tomas Popela  <tpopela@redhat.com>

        [WTF] va_list is not ended in StringPrintStream
        https://bugs.webkit.org/show_bug.cgi?id=169035

        Reviewed by Michael Saboff.

        Also fix whitespace errors while touching this file.

        * wtf/StringPrintStream.cpp:
        (WTF::StringPrintStream::vprintf):
        (WTF::StringPrintStream::increaseSize):

2017-03-01  Andreas Kling  <akling@apple.com>

        Move MemoryPressureHandler to WTF
        <https://webkit.org/b/168908>

        Reviewed by Sam Weinig.

        Move MemoryPressureHandler down to WTF so it can be used from JavaScriptCore.

        I had to do a blind rewrite of the Windows memory checking timer since it can
        no longer use WebCore::Timer. I also moved the Win32Handle helper class to WTF.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/MemoryPressureHandler.cpp: Renamed from Source/WebCore/platform/MemoryPressureHandler.cpp.
        (WTF::MemoryPressureHandler::singleton):
        (WTF::MemoryPressureHandler::MemoryPressureHandler):
        (WTF::MemoryPressureHandler::setShouldUsePeriodicMemoryMonitor):
        (WTF::toString):
        (WTF::thresholdForPolicy):
        (WTF::policyForFootprint):
        (WTF::MemoryPressureHandler::measurementTimerFired):
        (WTF::MemoryPressureHandler::beginSimulatedMemoryPressure):
        (WTF::MemoryPressureHandler::endSimulatedMemoryPressure):
        (WTF::MemoryPressureHandler::releaseMemory):
        (WTF::MemoryPressureHandler::ReliefLogger::logMemoryUsageChange):
        (WTF::MemoryPressureHandler::install):
        (WTF::MemoryPressureHandler::uninstall):
        (WTF::MemoryPressureHandler::holdOff):
        (WTF::MemoryPressureHandler::respondToMemoryPressure):
        (WTF::MemoryPressureHandler::platformReleaseMemory):
        (WTF::MemoryPressureHandler::ReliefLogger::platformMemoryUsage):
        (WTF::MemoryPressureHandler::platformInitialize):
        * wtf/MemoryPressureHandler.h: Renamed from Source/WebCore/platform/MemoryPressureHandler.h.
        (WTF::MemoryPressureHandler::setMemoryKillCallback):
        (WTF::MemoryPressureHandler::setProcessIsEligibleForMemoryKillCallback):
        (WTF::MemoryPressureHandler::setLowMemoryHandler):
        (WTF::MemoryPressureHandler::isUnderMemoryPressure):
        (WTF::MemoryPressureHandler::setUnderMemoryPressure):
        (WTF::MemoryPressureHandler::ReliefLogger::ReliefLogger):
        (WTF::MemoryPressureHandler::ReliefLogger::~ReliefLogger):
        (WTF::MemoryPressureHandler::ReliefLogger::logString):
        (WTF::MemoryPressureHandler::ReliefLogger::setLoggingEnabled):
        (WTF::MemoryPressureHandler::ReliefLogger::loggingEnabled):
        (WTF::MemoryPressureHandler::ReliefLogger::MemoryUsage::MemoryUsage):
        * wtf/PlatformEfl.cmake:
        * wtf/PlatformGTK.cmake:
        * wtf/PlatformMac.cmake:
        * wtf/PlatformWin.cmake:
        * wtf/cocoa/MemoryPressureHandlerCocoa.mm: Renamed from Source/WebCore/platform/cocoa/MemoryPressureHandlerCocoa.mm.
        (WTF::MemoryPressureHandler::platformReleaseMemory):
        (WTF::MemoryPressureHandler::install):
        (WTF::MemoryPressureHandler::uninstall):
        (WTF::MemoryPressureHandler::holdOff):
        (WTF::MemoryPressureHandler::respondToMemoryPressure):
        (WTF::MemoryPressureHandler::ReliefLogger::platformMemoryUsage):
        * wtf/linux/CurrentProcessMemoryStatus.cpp: Renamed from Source/WebCore/platform/linux/CurrentProcessMemoryStatus.cpp.
        (WTF::systemPageSize):
        (WTF::currentProcessMemoryStatus):
        * wtf/linux/CurrentProcessMemoryStatus.h: Renamed from Source/WebCore/platform/linux/CurrentProcessMemoryStatus.h.
        * wtf/linux/MemoryPressureHandlerLinux.cpp: Renamed from Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp.
        (WTF::MemoryPressureHandler::EventFDPoller::EventFDPoller):
        * wtf/win/MemoryPressureHandlerWin.cpp: Renamed from Source/WebCore/platform/win/MemoryPressureHandlerWin.cpp.
        (WTF::MemoryPressureHandler::platformInitialize):
        (WTF::MemoryPressureHandler::windowsMeasurementTimerFired):
        (WTF::MemoryPressureHandler::platformReleaseMemory):
        (WTF::MemoryPressureHandler::install):
        (WTF::MemoryPressureHandler::uninstall):
        (WTF::MemoryPressureHandler::holdOff):
        (WTF::MemoryPressureHandler::respondToMemoryPressure):
        (WTF::MemoryPressureHandler::ReliefLogger::platformMemoryUsage):
        * wtf/win/Win32Handle.h: Renamed from Source/WebCore/platform/win/Win32Handle.h.
        (WTF::Win32Handle::Win32Handle):
        (WTF::Win32Handle::~Win32Handle):
        (WTF::Win32Handle::clear):
        (WTF::Win32Handle::isValid):
        (WTF::Win32Handle::get):
        (WTF::Win32Handle::release):
        (WTF::Win32Handle::operator=):

2017-02-28  Chris Dumez  <cdumez@apple.com>

        [iOS] Throttle requestAnimationFrame to 30fps in low power mode
        https://bugs.webkit.org/show_bug.cgi?id=168837
        <rdar://problem/30700929>

        Reviewed by Simon Fraser.

        Add support for operator -= on WTF::OptionSet for convenience:
            set -= Enum::A;
        looks much better than:
            set = set - Enum::A;

        * wtf/OptionSet.h:
        (WTF::OptionSet::operator-=):

2017-02-28  Michael Saboff  <msaboff@apple.com>

        Add ability to configure JSC options from a file
        https://bugs.webkit.org/show_bug.cgi?id=168914

        Reviewed by Filip Pizlo.

        Added the ability to set options and DataLog file location via a configuration file.
        The pathname can include the printf style "%pid", which will be replaced with the
        current process id.

        * wtf/DataLog.cpp:
        (WTF::initializeLogFileOnce):
        (WTF::setDataFile):
        * wtf/DataLog.h:

2017-02-27  Andy Estes  <aestes@apple.com>

        [iOS] Enable file replacement
        https://bugs.webkit.org/show_bug.cgi?id=168907
        <rdar://problem/22258242>

        Reviewed by David Kilzer.

        * wtf/FeatureDefines.h: Set ENABLE_FILE_REPLACEMENT to 1 on all Cocoa platforms.

2017-02-27  Myles C. Maxfield  <mmaxfield@apple.com>

        Rename ICU cursor iterator to caret iterator
        https://bugs.webkit.org/show_bug.cgi?id=168206

        Reviewed by Simon Fraser.

        * wtf/text/TextBreakIterator.cpp:
        (WTF::mapModeToBackingIterator):
        * wtf/text/TextBreakIterator.h:
        * wtf/text/cf/TextBreakIteratorCF.h:
        (WTF::TextBreakIteratorCF::TextBreakIteratorCF):
        * wtf/text/icu/TextBreakIteratorICU.h:
        (WTF::caretRules):
        (WTF::TextBreakIteratorICU::TextBreakIteratorICU):
        (WTF::cursorRules): Deleted.
        * wtf/text/mac/TextBreakIteratorInternalICUMac.mm:
        (WTF::mapModeToBackingIterator):

2017-02-27  Myles C. Maxfield  <mmaxfield@apple.com>

        Use RAII for ICU breaking iterators
        https://bugs.webkit.org/show_bug.cgi?id=168203

        Reviewed by Simon Fraser.

        * wtf/text/TextBreakIterator.h:
        (WTF::CachedTextBreakIterator::CachedTextBreakIterator):
        (WTF::CachedTextBreakIterator::~CachedTextBreakIterator):
        (WTF::CachedTextBreakIterator::preceding):
        (WTF::CachedTextBreakIterator::following):
        (WTF::CachedTextBreakIterator::isBoundary):

2017-02-24  Jer Noble  <jer.noble@apple.com>

        Add public method to MediaTime for doing timeScale conversion.
        https://bugs.webkit.org/show_bug.cgi?id=168860

        Reviewed by Eric Carlson.

        The newly public method, modeled on CMTimeConvertScale, allows callers to specify what rounding technique
        will be used when converting to a new time scale.

        * wtf/MediaTime.cpp:
        (WTF::MediaTime::toTimeScale):
        (WTF::MediaTime::setTimeScale):
        * wtf/MediaTime.h:

2017-02-26  Myles C. Maxfield  <mmaxfield@apple.com>

        Stop compiling our own cursorMovementIterator()
        https://bugs.webkit.org/show_bug.cgi?id=168211

        Reviewed by David Hyatt.

        This patch creates a unified Text Breaking API, which can be backed by either ICU
        or CoreFoundation (for ports which can use it). Rather than using inheritance and
        virtual functions to implement this, because there are only two subclasses, the
        simpler option of just using a Variant is used instead. There is also a cache which
        allows you to reuse iterators without reconstructing them. This cache is better
        than the previous method of having a single static iterator because the cache
        lets you use two iterators simultaneously.

        In the future, I will hook up all iterators to use this shared class. However, for
        this patch, I've only hooked up the caret position iterator (backed by CoreFoundation
        on Cocoa ports and UBRK_CHARACTER on other ports). 

        * WTF.xcodeproj/project.pbxproj:
        * wtf/spi/cf/CFStringSPI.h: Added.
        * wtf/text/TextBreakIterator.cpp:
        (WTF::initializeIteratorWithRules): Deleted.
        (WTF::cursorMovementIterator): Deleted.
        * wtf/text/TextBreakIterator.h:
        (WTF::TextBreakIterator::preceding):
        (WTF::TextBreakIterator::following):
        (WTF::TextBreakIterator::isBoundary):
        (WTF::TextBreakIterator::setText):
        (WTF::TextBreakIterator::mode):
        (WTF::TextBreakIterator::locale):
        (WTF::TextBreakIteratorCache::singleton):
        (WTF::TextBreakIteratorCache::take):
        (WTF::TextBreakIteratorCache::put):
        (WTF::TextBreakIteratorCache::TextBreakIteratorCache):
        * wtf/text/cf/TextBreakIteratorCF.h: Added.
        (WTF::TextBreakIteratorCF::TextBreakIteratorCF):
        (WTF::TextBreakIteratorCF::setText):
        (WTF::TextBreakIteratorCF::preceding):
        (WTF::TextBreakIteratorCF::following):
        (WTF::TextBreakIteratorCF::isBoundary):
        * wtf/text/icu/TextBreakIteratorICU.h: Added.
        (WTF::TextBreakIteratorICU::set8BitText):
        (WTF::TextBreakIteratorICU::TextBreakIteratorICU):
        (WTF::TextBreakIteratorICU::operator=):
        (WTF::TextBreakIteratorICU::~TextBreakIteratorICU):
        (WTF::TextBreakIteratorICU::setText):
        (WTF::TextBreakIteratorICU::preceding):
        (WTF::TextBreakIteratorICU::following):
        (WTF::TextBreakIteratorICU::isBoundary):
        * wtf/text/icu/UTextProviderLatin1.h:
        * wtf/text/mac/TextBreakIteratorInternalICUMac.mm:
        (WTF::mapModeToBackingIterator):
        (WTF::TextBreakIterator::TextBreakIterator):

2017-02-24  Joseph Pecoraro  <pecoraro@apple.com>

        [Resource Timing] Gather timing information with reliable responseEnd time
        https://bugs.webkit.org/show_bug.cgi?id=168351

        Reviewed by Alex Christensen.

        * wtf/persistence/Coders.h:
        (WTF::Persistence::Coder<Seconds>::encode):
        (WTF::Persistence::Coder<Seconds>::decode):

2017-02-24  Keith Miller  <keith_miller@apple.com>

        Rubber-stamped by Chris Dumez.

        Replace typename Bool with typename BoolType because X11 has
        #define Bool int for some unknown reason...

        * wtf/HashFunctions.h:
        (WTF::TupleHash::allTrue):
        * wtf/HashTraits.h:
        (WTF::TupleHashTraits::allTrue):

2017-02-24  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r212944.

        Caused a lot of failures on the debug bots

        Reverted changeset:

        "[Resource Timing] Gather timing information with reliable
        responseEnd time"
        https://bugs.webkit.org/show_bug.cgi?id=168351
        http://trac.webkit.org/changeset/212944

2017-02-24  Keith Miller  <keith_miller@apple.com>

        We should be able to use std::tuples as keys in HashMap
        https://bugs.webkit.org/show_bug.cgi?id=168805

        Reviewed by Filip Pizlo.

        This patch adds support for using std::tupeles as the key
        type in HashMap. It is equivalent to doing a sequence of
        std::pairs but has a nicer syntax.

        * wtf/HashFunctions.h:
        (WTF::TupleHash::hash):
        (WTF::TupleHash::equal):
        (WTF::TupleHash::allTrue):
        * wtf/HashTraits.h:
        (WTF::TupleHashTraits::allTrue):
        (WTF::TupleHashTraits::emptyValue):
        (WTF::TupleHashTraits::constructDeletedValue):
        (WTF::TupleHashTraits::isDeletedValue):

2017-02-24  Alex Christensen  <achristensen@webkit.org>

        Prepare to enable WebRTC on iOS
        https://bugs.webkit.org/show_bug.cgi?id=168811

        Reviewed by Youenn Fablet.

        * wtf/Platform.h:

2017-02-23  Joseph Pecoraro  <pecoraro@apple.com>

        [Resource Timing] Gather timing information with reliable responseEnd time
        https://bugs.webkit.org/show_bug.cgi?id=168351

        Reviewed by Alex Christensen.

        * wtf/persistence/Coders.h:
        (WTF::Persistence::Coder<Seconds>::encode):
        (WTF::Persistence::Coder<Seconds>::decode):

2017-02-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        Better handle Thread and RunLoop initialization
        https://bugs.webkit.org/show_bug.cgi?id=167828

        Reviewed by Yusuke Suzuki.

        Make initialization functions more independent so that they can run in different
        order. WTF::initializeMainThread initializes WTF threading, so that neither WTF nor JSC theading need to be
        initialized before. RunLoop::initializeMainRunLoop() requires main thread to be initialized in some
        ports, so it initializes main thread too. WebKit1 always calls WTF::initializeMainThreadToProcessMainThread()
        before RunLoop::initializeMainRunLoop() so there's no problem there. GC threads are initialized alwayas by the
        main thread. The rules should be simpler now:

          - JSC::initializeThreading: should always be called when JSC is used.
          - WTF::initializeThreading: only needs to be explicitly called when JSC is not used and process doesn't
            initialize a main thread or main run loop.
          - WTF::initializeMainThread: only needs to be explicitly called if process initializes a main thread but not a
            main run loop.
          - WTF::initializeMainThreadToProcessMainThread(): should always be called in WebKit1 before
            RunLoop::initializeMainRunLoop().
          - RunLoop::initializeMainRunLoop(): to initialize the main run loop. The only requirement is JSC::initializeThreading()
            to be called before if JSC is used.

        * wtf/MainThread.cpp:
        (WTF::initializeMainThreadOnce): Use pthread_once to initialize the main thread also in GTK+ port.
        (WTF::initializeMainThreadToProcessMainThreadOnce): Call initializeThreading() before the platform
        initialization and initializeGCThreads() after it.
        (WTF::initializeMainThread): Ditto.
        * wtf/RunLoop.cpp:
        (WTF::RunLoop::initializeMainRunLoop): Call initializeMainThread().
        * wtf/glib/MainThreadGLib.cpp:
        (WTF::initializeMainThreadPlatform):
        (WTF::isMainThread):
        * wtf/mac/MainThreadMac.mm:
        (WTF::initializeMainThreadPlatform): Remove call to initializeGCThreads().
        (WTF::initializeMainThreadToProcessMainThreadPlatform): Ditto.

2017-02-22  Myles C. Maxfield  <mmaxfield@apple.com>

        [Cocoa] Remove Yosemite-specific font lookup code
        https://bugs.webkit.org/show_bug.cgi?id=168682

        Reviewed by Zalan Bujtas.

        * wtf/Platform.h:

2017-02-22  Keith Miller  <keith_miller@apple.com>

        Remove the demand executable allocator
        https://bugs.webkit.org/show_bug.cgi?id=168754

        Reviewed by Saam Barati.

        * wtf/Platform.h:

2017-02-22  Alex Christensen  <achristensen@webkit.org>

        Re-commit part of r212812 accidentally rolled out with r212841.
        https://bugs.webkit.org/show_bug.cgi?id=167293

        * wtf/Platform.h:
        Use libwebrtc on Mac if webrtc is enabled.

2017-02-22  Alex Christensen  <achristensen@webkit.org>

        Fix ASAN build after activating libwebrtc.

        * wtf/Ref.h:
        __asan_address_is_poisoned returns an int, not a bool.
        This didn't cause a problem before because we didn't include the real definition anywhere,
        but libwebrtc includes <sanitizer/asan_interface.h> directly now so the return types need to be correct.

2017-02-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Test fast/events/message-port-postMessage-recursive.html times out
        https://bugs.webkit.org/show_bug.cgi?id=168570

        Reviewed by Michael Catanzaro.

        This has recently been added and the patch is good. It's just revealing a problem with our timers. The test is
        posting a message recursively, and also starts a timeout timer to finish the test. The timeout timer is never
        fired for us, because WebCore timers have lower priority than the one used by postMessage. ScriptExecutionContext
        uses Document::postTask, that uses scheduleOnMainThread, that uses RunLoop::dispatch(). We are not setting any
        priority for the timer used by RunLoop::dispatch, so it's using the default.
        Use a RunLoop::Timer to schedule tasks to the main thread instead of using RunLoop::dispatch(). This allows us
        to use a different priority, that is now set to G_PRIORITY_HIGH_IDLE + 20 to match WebCore timers. But it also
        avoids the double queue we had with RunLoop::dispatch(), because scheduleOnMainThread() also queues the tasks.

        * wtf/glib/MainThreadGLib.cpp:
        (WTF::MainThreadDispatcher::MainThreadDispatcher):
        (WTF::MainThreadDispatcher::schedule):
        (WTF::MainThreadDispatcher::fired):
        (WTF::scheduleDispatchFunctionsOnMainThread):

2017-02-21  Youenn Fablet  <youenn@apple.com>

        [WebRTC][Mac] Activate libwebrtc
        https://bugs.webkit.org/show_bug.cgi?id=167293

        Reviewed by Alex Christensen.

        * wtf/Platform.h:

2017-02-20  Filip Pizlo  <fpizlo@apple.com>

        The collector thread should only start when the mutator doesn't have heap access
        https://bugs.webkit.org/show_bug.cgi?id=167737

        Reviewed by Keith Miller.
        
        Extend the use of AbstractLocker so that we can use more locking idioms.

        * wtf/AutomaticThread.cpp:
        (WTF::AutomaticThreadCondition::notifyOne):
        (WTF::AutomaticThreadCondition::notifyAll):
        (WTF::AutomaticThreadCondition::add):
        (WTF::AutomaticThreadCondition::remove):
        (WTF::AutomaticThreadCondition::contains):
        (WTF::AutomaticThread::AutomaticThread):
        (WTF::AutomaticThread::tryStop):
        (WTF::AutomaticThread::isWaiting):
        (WTF::AutomaticThread::notify):
        (WTF::AutomaticThread::start):
        (WTF::AutomaticThread::threadIsStopping):
        * wtf/AutomaticThread.h:
        * wtf/NumberOfCores.cpp:
        (WTF::numberOfProcessorCores):
        * wtf/ParallelHelperPool.cpp:
        (WTF::ParallelHelperClient::finish):
        (WTF::ParallelHelperClient::claimTask):
        (WTF::ParallelHelperPool::Thread::Thread):
        (WTF::ParallelHelperPool::didMakeWorkAvailable):
        (WTF::ParallelHelperPool::hasClientWithTask):
        (WTF::ParallelHelperPool::getClientWithTask):
        * wtf/ParallelHelperPool.h:

2017-02-21  Alex Christensen  <achristensen@webkit.org>

        Unreviewed, rolling out r212699.

        Internal build not ready

        Reverted changeset:

        "[WebRTC][Mac] Activate libwebrtc"
        https://bugs.webkit.org/show_bug.cgi?id=167293
        http://trac.webkit.org/changeset/212699

2017-02-20  Youenn Fablet  <youenn@apple.com>

        [WebRTC][Mac] Activate libwebrtc
        https://bugs.webkit.org/show_bug.cgi?id=167293

        Reviewed by Alex Christensen.

        * wtf/Platform.h:

2017-02-20  Mark Lam  <mark.lam@apple.com>

        [Re-landing] CachedCall should let GC know to keep its arguments alive.
        https://bugs.webkit.org/show_bug.cgi?id=168567
        <rdar://problem/30475767>

        Reviewed by Saam Barati.

        Added a WTF_FORBID_HEAP_ALLOCATION that will cause a compilation failure if
        a class declared with it is malloced.

        While this doesn't prevent that class declared WTF_FORBID_HEAP_ALLOCATION from
        being embedded in another class that is heap allocated, it does at minimum
        document the intent and gives the users of this class a chance to do the
        right thing.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/ForbidHeapAllocation.h: Added.

2017-02-20  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r212685.

        This change broke the 32-bit Sierra build.

        Reverted changeset:

        "Resource Load Statistics: Add alternate classification
        method"
        https://bugs.webkit.org/show_bug.cgi?id=168347
        http://trac.webkit.org/changeset/212685

2017-02-20  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Add alternate classification method
        https://bugs.webkit.org/show_bug.cgi?id=168347
        <rdar://problem/30352793>

        Reviewed by Alex Christensen.

        * wtf/Platform.h:
            Added support for HAVE(CORE_PREDICTION).

2017-02-20  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r212618.
        https://bugs.webkit.org/show_bug.cgi?id=168609

        "Appears to cause PLT regression" (Requested by mlam on
        #webkit).

        Reverted changeset:

        "CachedCall should let GC know to keep its arguments alive."
        https://bugs.webkit.org/show_bug.cgi?id=168567
        http://trac.webkit.org/changeset/212618

2017-02-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed, rolling out r212622.

        Caused several test failures

        Reverted changeset:

        "[GTK] Test fast/events/message-port-postMessage-
        recursive.html times out"
        https://bugs.webkit.org/show_bug.cgi?id=168570
        http://trac.webkit.org/changeset/212622

2017-02-19  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Test fast/events/message-port-postMessage-recursive.html times out
        https://bugs.webkit.org/show_bug.cgi?id=168570

        Reviewed by Michael Catanzaro.

        This has recently been added and the patch is good. It's just revealing a problem with our timers. The test is
        posting a message recursively, and also starts a timeout timer to finish the test. The timeout timer is never
        fired for us, because WebCore timers have lower priority than the one used by
        postMessage. ScriptExecutionContext uses Document::postTask, that uses scheduleOnMainThread, that uses
        RunLoop::dispatch(). We are not setting any priority for the timer used by RunLoop::dispatch, so it's using the
        default. RunLoop::dispatch is normally used to schedule tasks between threads, or just to ensure something is
        run in a different run loop iteration, but in general nothing urgent as a graphics redraw or something like
        that. It's quite common to use g_idle_add to schedule tasks between threads, so I think it makes sense to use
        G_PRIORITY_DEFAULT_IDLE for the RunLoop timer.

        * wtf/glib/RunLoopGLib.cpp:
        (WTF::RunLoop::RunLoop):

2017-02-19  Mark Lam  <mark.lam@apple.com>

        CachedCall should let GC know to keep its arguments alive.
        https://bugs.webkit.org/show_bug.cgi?id=168567
        <rdar://problem/30475767>

        Reviewed by Saam Barati.

        Added a WTF_FORBID_HEAP_ALLOCATION that will cause a compilation failure if
        a class declared with it is malloced.

        While this doesn't prevent that class declared WTF_FORBID_HEAP_ALLOCATION from
        being embedded in another class that is heap allocated, it does at minimum
        document the intent and gives the users of this class a chance to do the
        right thing.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/ForbidHeapAllocation.h: Added.

2017-02-19  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r212466.
        https://bugs.webkit.org/show_bug.cgi?id=168577

        causes crashes on AArch64 on linux, maybe it's causing crashes
        on iOS too (Requested by pizlo on #webkit).

        Reverted changeset:

        "The collector thread should only start when the mutator
        doesn't have heap access"
        https://bugs.webkit.org/show_bug.cgi?id=167737
        http://trac.webkit.org/changeset/212466

2017-02-18  Chris Dumez  <cdumez@apple.com>

        Recursive MessagePort.postMessage() calls causes tab to become unresponsive
        https://bugs.webkit.org/show_bug.cgi?id=168548
        <rdar://problem/29808005>

        Reviewed by Darin Adler.

        Add API to retrieve all messages in the queue at once.

        * wtf/MessageQueue.h:

2017-02-16  Alex Christensen  <achristensen@webkit.org>

        Remove EFL-specific files in Source.

        Rubber-stamped by Anders Carlsson.

        * wtf/text/efl: Removed.
        * wtf/text/efl/TextBreakIteratorInternalICUEfl.cpp: Removed.

2017-02-10  Filip Pizlo  <fpizlo@apple.com>

        The collector thread should only start when the mutator doesn't have heap access
        https://bugs.webkit.org/show_bug.cgi?id=167737

        Reviewed by Keith Miller.
        
        Extend the use of AbstractLocker so that we can use more locking idioms.

        * wtf/AutomaticThread.cpp:
        (WTF::AutomaticThreadCondition::notifyOne):
        (WTF::AutomaticThreadCondition::notifyAll):
        (WTF::AutomaticThreadCondition::add):
        (WTF::AutomaticThreadCondition::remove):
        (WTF::AutomaticThreadCondition::contains):
        (WTF::AutomaticThread::AutomaticThread):
        (WTF::AutomaticThread::tryStop):
        (WTF::AutomaticThread::isWaiting):
        (WTF::AutomaticThread::notify):
        (WTF::AutomaticThread::start):
        (WTF::AutomaticThread::threadIsStopping):
        * wtf/AutomaticThread.h:
        * wtf/NumberOfCores.cpp:
        (WTF::numberOfProcessorCores): Allow this to be overridden for testing.
        * wtf/ParallelHelperPool.cpp:
        (WTF::ParallelHelperClient::finish):
        (WTF::ParallelHelperClient::claimTask):
        (WTF::ParallelHelperPool::Thread::Thread):
        (WTF::ParallelHelperPool::didMakeWorkAvailable):
        (WTF::ParallelHelperPool::hasClientWithTask):
        (WTF::ParallelHelperPool::getClientWithTask):
        * wtf/ParallelHelperPool.h:

2017-02-16  Anders Carlsson  <andersca@apple.com>

        Remove EFL from WTF
        https://bugs.webkit.org/show_bug.cgi?id=168452

        Reviewed by Alex Christensen.

        * wtf/CurrentTime.cpp:
        * wtf/DisallowCType.h:
        * wtf/FeatureDefines.h:
        * wtf/MainThread.cpp:
        * wtf/MainThread.h:
        * wtf/Platform.h:
        * wtf/RunLoop.h:
        * wtf/WorkQueue.h:
        * wtf/efl/DispatchQueueEfl.cpp: Removed.
        * wtf/efl/DispatchQueueEfl.h: Removed.
        * wtf/efl/DispatchQueueWorkItemEfl.h: Removed.
        * wtf/efl/EflTypedefs.h: Removed.
        * wtf/efl/MainThreadEfl.cpp: Removed.
        * wtf/efl/RunLoopEfl.cpp: Removed.
        * wtf/efl/UniquePtrEfl.h: Removed.
        * wtf/efl/WorkQueueEfl.cpp: Removed.

2017-02-13  Alex Christensen  <achristensen@webkit.org>

        URLs with an invalid IPv4 address should be invalid
        https://bugs.webkit.org/show_bug.cgi?id=168260

        Reviewed by Tim Horton.

        * wtf/Expected.h:
        (WTF::Expected::value):
        Added missing WTFMove for rvalue Expected::value().

2017-02-13  Said Abou-Hallawa  <sabouhallawa@apple.com>

        The current frame of an image should not deleted if another frame is asynchronously being decoded
        https://bugs.webkit.org/show_bug.cgi?id=167618

        Reviewed by Simon Fraser.

        Add ASSERT_IMPLIES() which should fire when a condition is true but the
        assertion is false.

        * wtf/Assertions.h:

2017-02-13  Brady Eidson  <beidson@apple.com>

        Followup to: Replace all WebKit Library Version checks in WK2 with SDK version checks.
        https://bugs.webkit.org/show_bug.cgi?id=168124

        Reviewed by Geoffrey Garen.

        * wtf/spi/darwin/dyldSPI.h:

2017-02-13  Myles C. Maxfield  <mmaxfield@apple.com>

        Update custom line breaking iterators to the latest version of Unicode
        https://bugs.webkit.org/show_bug.cgi?id=168182

        Reviewed by Zalan Bujtas.

        ICU 55.1 supports loose / normal / strict line breaking rules. The oldest platform we ship
        on has a version of ICU >= that one. Therefore, we don't need to compile our own rules;
        we can just use ICU's rules.

        * wtf/text/LineBreakIteratorPoolICU.h:
        (WTF::LineBreakIteratorPool::makeLocaleWithBreakKeyword):
        (WTF::LineBreakIteratorPool::take):
        * wtf/text/TextBreakIterator.cpp:
        (WTF::acquireLineBreakIterator):
        (WTF::openLineBreakIterator):
        (WTF::mapLineIteratorModeToRules): Deleted.
        (WTF::isCJKLocale): Deleted.
        * wtf/text/TextBreakIterator.h:
        (WTF::LazyLineBreakIterator::LazyLineBreakIterator):
        (WTF::LazyLineBreakIterator::mode):
        (WTF::LazyLineBreakIterator::get):
        (WTF::LazyLineBreakIterator::resetStringAndReleaseIterator):
        (WTF::LazyLineBreakIterator::isLooseCJKMode): Deleted.

2017-02-10  Dan Bernstein  <mitz@apple.com>

        [Xcode] WTF installs extra copies of two headers outside /usr/local/include/wtf
        https://bugs.webkit.org/show_bug.cgi?id=168160

        Reviewed by Sam Weinig.

        * WTF.xcodeproj/project.pbxproj: Demoted OrdinalNumber.h MemoryFootprint.h from Private to
          Project.

2017-02-10  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r212139.
        https://bugs.webkit.org/show_bug.cgi?id=168152

        Caused some assertions (Requested by JoePeck on #webkit).

        Reverted changeset:

        "Fix misleading comment in RunLoop.h"
        https://bugs.webkit.org/show_bug.cgi?id=167832
        http://trac.webkit.org/changeset/212139

2017-02-10  Joseph Pecoraro  <pecoraro@apple.com>

        Fix misleading comment in RunLoop.h
        https://bugs.webkit.org/show_bug.cgi?id=167832

        Reviewed by Sam Weinig.

        * wtf/RunLoop.h:
        Mac initialization used to force using CFRunLoopGetMain(). Now however it just
        uses RunLoop::current which uses CFRunLoopGetCurrent(). So this comment that
        it can be done on any thread is misleading and can lead to incorrect behavior
        if it is actually done on a non-main thread on Mac.

2017-02-09  Alex Christensen  <achristensen@webkit.org>

        Unreviewed, rolling out r212040.

        Broke build.  I'm not surprised

        Reverted changeset:

        "[WebRTC][Mac] Activate libwebrtc"
        https://bugs.webkit.org/show_bug.cgi?id=167293
        http://trac.webkit.org/changeset/212040

2017-02-09  Youenn Fablet  <youenn@apple.com>

        [WebRTC][Mac] Activate libwebrtc
        https://bugs.webkit.org/show_bug.cgi?id=167293

        Reviewed by Alex Christensen.

        * wtf/Platform.h:

2017-02-09  Brady Eidson  <beidson@apple.com>

        Transition "WebKit Library Version" checks to SDK version checks.
        <rdar://problem/30313696> and https://bugs.webkit.org/show_bug.cgi?id=168056

        Reviewed by Geoffrey Garen.

        * wtf/spi/darwin/dyldSPI.h: Add entries for the iOS 10.3, macOS 10.11, and macOS 10.12.4 SDKs.

2017-02-09  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r211980 and r211987.
        https://bugs.webkit.org/show_bug.cgi?id=168072

        Caused API test WebKit2.DuplicateCompletionHandlerCalls to
        fail (Requested by ryanhaddad on #webkit).

        Reverted changesets:

        "Transition "WebKit Library Version" checks to SDK version
        checks."
        https://bugs.webkit.org/show_bug.cgi?id=168056
        http://trac.webkit.org/changeset/211980

        "Build fix for APPLE_INTERNAL_SDK builds after r211980."
        http://trac.webkit.org/changeset/211987

2017-02-09  Alexey Proskuryakov  <ap@apple.com>

        Remove unused WebThreadRunSync
        https://bugs.webkit.org/show_bug.cgi?id=168024

        Reviewed by Tim Horton.

        * wtf/ios/WebCoreThread.cpp:
        * wtf/ios/WebCoreThread.h:

2017-02-09  Brady Eidson  <beidson@apple.com>

        Build fix for APPLE_INTERNAL_SDK builds after r211980.

        Unreviewed.

        * wtf/spi/darwin/dyldSPI.h:

2017-02-09  Brady Eidson  <beidson@apple.com>

        Transition "WebKit Library Version" checks to SDK version checks.
        <rdar://problem/30313696> and https://bugs.webkit.org/show_bug.cgi?id=168056

        Reviewed by Geoffrey Garen.

        * wtf/spi/darwin/dyldSPI.h: Add entries for the iOS 10.3, macOS 10.11, and macOS 10.12.4 SDKs.

2017-02-06  Jer Noble  <jer.noble@apple.com>

        Playback stalls when a SourceBuffer append causes frame eviction
        https://bugs.webkit.org/show_bug.cgi?id=167834

        Reviewed by Eric Carlson.

        Optimize the MediaTime class; specifically the compare() method. The class only
        needs 6 bits to store the TimeFlags, so make that a uint8_t rather than uint32_t.
        The implementation is slightly simpler if the TimeScale is unsigned, so make that
        a uint32_t rather than int32_t. Inline the comparison operators. Optimize the equality
        comparison by bitwise-and'ing the flags together and masking the result. Optimize for
        common comparison scenarios (equal timeScales, equal timeValues(), etc.). Attempt the
        mathematically simpler simpler method for comparing ratios, and only fall back to the
        complex method if the results of multiplying the timeScale by the timeValue overflows.

        * wtf/MediaTime.cpp:
        (WTF::greatestCommonDivisor):
        (WTF::leastCommonMultiple):
        (WTF::signum):
        (WTF::MediaTime::MediaTime):
        (WTF::MediaTime::createWithFloat):
        (WTF::MediaTime::createWithDouble):
        (WTF::MediaTime::operator+):
        (WTF::MediaTime::operator-):
        (WTF::MediaTime::operator!):
        (WTF::MediaTime::operator bool):
        (WTF::MediaTime::compare):
        (WTF::MediaTime::setTimeScale):
        (WTF::abs):
        (WTF::MediaTime::operator<): Deleted.
        (WTF::MediaTime::operator>): Deleted.
        (WTF::MediaTime::operator!=): Deleted.
        (WTF::MediaTime::operator==): Deleted.
        (WTF::MediaTime::operator>=): Deleted.
        (WTF::MediaTime::operator<=): Deleted.
        * wtf/MediaTime.h:

2017-02-04  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Fix huge ENABLE_RESOURCE_USAGE warning spam

        Unreviewed. We shouldn't redefine ENABLE_RESOURCE_USAGE in Platform.h as
        it's already defined in cmakeconfig.h.

        * wtf/Platform.h:

2017-02-03  Joseph Pecoraro  <pecoraro@apple.com>

        Performance Timing: Convert WTF::MonotonicTime and WTF::Seconds
        https://bugs.webkit.org/show_bug.cgi?id=167768

        Reviewed by Geoffrey Garen.

        * wtf/Stopwatch.h:
        (WTF::Stopwatch::elapsedTimeSince):
        (WTF::Stopwatch::elapsedTimeSinceMonotonicTime): Deleted.

2017-02-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Add initial implementation of resource usage overlay
        https://bugs.webkit.org/show_bug.cgi?id=167731

        Reviewed by Michael Catanzaro.

        Enable RESOURCE_USAGE for GTK+ port too.

        * wtf/Platform.h:

2017-02-02  Andreas Kling  <akling@apple.com>

        [Mac] In-process memory pressure monitor for WebContent processes AKA websam
        <https://webkit.org/b/167491>
        <rdar://problem/30116072>

        Reviewed by Antti Koivisto.

        Add a WTF helper function for getting the current process's memory footprint.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/MemoryFootprint.cpp:
        (WTF::memoryFootprint):
        * wtf/MemoryFootprint.h:

2017-02-02  Mark Lam  <mark.lam@apple.com>

        Add a SIGILL crash analyzer to make debugging SIGILLs easier.
        https://bugs.webkit.org/show_bug.cgi?id=167714
        <rdar://problem/30318237>

        Reviewed by Filip Pizlo.

        * wtf/StdLibExtras.h:

2017-02-02  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r211571 and r211582.
        https://bugs.webkit.org/show_bug.cgi?id=167751

        This change caused API test WebKit1.MemoryPressureHandler to
        fail with an assertion. (Requested by ryanhaddad on #webkit).

        Reverted changesets:

        "[Mac] In-process memory pressure monitor for WebContent
        processes."
        https://bugs.webkit.org/show_bug.cgi?id=167491
        http://trac.webkit.org/changeset/211571

        "Unreviewed attempt to fix the Windows build after r211571."
        http://trac.webkit.org/changeset/211582

2017-02-02  Andreas Kling  <akling@apple.com>

        [Mac] In-process memory pressure monitor for WebContent processes.
        <https://webkit.org/b/167491>
        <rdar://problem/30116072>

        Reviewed by Antti Koivisto.

        Add a WTF helper function for getting the current process's memory footprint.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/MemoryFootprint.cpp:
        (WTF::memoryFootprint):
        * wtf/MemoryFootprint.h:

2017-02-01  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, fix the WebKit nightly open source build
        <rdar://problem/30308635>

        We cannot assume all internal SDKs have the latest WebKitAdditions, so we need an explicit header check here.

        * wtf/Platform.h:

2017-02-01  Andreas Kling  <akling@apple.com>

        Implement the alwaysRunsAtBackgroundPriority WK2 setting using thread QoS.
        <https://webkit.org/b/167387>
        <rdar://problem/29711409>

        Reviewed by Antti Koivisto.

        Add a new mechanism for overriding the max thread QoS level globally:

            void setGlobalMaxQOSClass(qos_class_t)
            qos_class_t adjustedQOSClass(qos_class_t)

        The QoS cap applies to all newly created threads, threads that try to override
        their QoS class manually, and also passed down to bmalloc.

        * wtf/Threading.cpp:
        (WTF::setCurrentThreadIsUserInteractive):
        (WTF::setCurrentThreadIsUserInitiated):
        (WTF::setGlobalMaxQOSClass):
        (WTF::adjustedQOSClass):
        * wtf/Threading.h:
        * wtf/ThreadingPthreads.cpp:
        (WTF::createThreadInternal):
        * wtf/cocoa/WorkQueueCocoa.cpp:
        (WTF::dispatchQOSClass):

2017-01-31  Antti Koivisto  <antti@apple.com>

        Teach cache coders to encode time_points
        https://bugs.webkit.org/show_bug.cgi?id=167670

        Reviewed by Andreas Kling.

        * wtf/persistence/Coders.h:
        (WTF::Persistence::Coder<std::chrono::system_clock::time_point>::encode):
        (WTF::Persistence::Coder<std::chrono::system_clock::time_point>::decode):

2017-01-31  Joseph Pecoraro  <pecoraro@apple.com>

        Removed unused m_nestedCount from RunLoop
        https://bugs.webkit.org/show_bug.cgi?id=167674

        Reviewed by Sam Weinig.

        * wtf/RunLoop.h:
        * wtf/cf/RunLoopCF.cpp:
        (WTF::RunLoop::RunLoop):
        (WTF::RunLoop::run):

2017-01-31  Filip Pizlo  <fpizlo@apple.com>

        The mutator should be able to perform increments of GC work
        https://bugs.webkit.org/show_bug.cgi?id=167528

        Reviewed by Keith Miller and Geoffrey Garen.

        We want dataLog to be locked even if you're not logging to a file!

        * wtf/DataLog.cpp:
        (WTF::initializeLogFileOnce):

2017-01-28  Wenson Hsieh  <wenson_hsieh@apple.com>

        Check USE(APPLE_INTERNAL_SDK) instead of specific headers when importing from WebKitAdditions
        https://bugs.webkit.org/show_bug.cgi?id=167555

        Reviewed by Dan Bernstein.

        Instead of guarding #import <WebKitAdditions/*> on the existence of the imported file, consult
        USE(APPLE_INTERNAL_SDK) instead.

        * wtf/Platform.h:

2017-01-26  Saam Barati  <sbarati@apple.com>

        Harden how the compiler references GC objects
        https://bugs.webkit.org/show_bug.cgi?id=167277
        <rdar://problem/30179506>

        Reviewed by Filip Pizlo.

        I made TinyPtrSet use bitwise_cast instead of static_cast
        for its singleEntry() function so that it can work on pointer-like
        types just as it can on actual pointer types.
        
        An example of where this matters is when you have TinyPtrSet<T>
        where T is defined to be a struct which wraps a pointer, e.g:
        
        struct T {
            void* m_pointer;
        }

        * wtf/TinyPtrSet.h:
        (WTF::TinyPtrSet::singleEntry):

2017-01-25  Wenson Hsieh  <wenson_hsieh@apple.com>

        Introduce an item-provider-based pasteboard wrapper
        https://bugs.webkit.org/show_bug.cgi?id=167410

        Reviewed by Enrica Casucci.

        Adds an additional feature flag.

        * wtf/FeatureDefines.h:

2017-01-25  Konstantin Tokarev  <annulen@yandex.ru>

        Removed leftovers of pre-2015 VisualStudio support
        https://bugs.webkit.org/show_bug.cgi?id=167434

        Reviewed by Alex Christensen.

        * wtf/Compiler.h:
        * wtf/Platform.h:
        * wtf/StringExtras.h:

2017-01-25  Chris Dumez  <cdumez@apple.com>

        Disable Download attribute support on iOS
        https://bugs.webkit.org/show_bug.cgi?id=167337
        <rdar://problem/30154148>

        Reviewed by Alexey Proskuryakov.

        Disable Download attribute support on iOS as it currently does not work.

        * wtf/FeatureDefines.h:

2017-01-25  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add a hook to include additional feature defines
        https://bugs.webkit.org/show_bug.cgi?id=167403

        Reviewed by Enrica Casucci.

        * wtf/Platform.h: Include AdditionalFeatureDefines.h, if it exists.

2017-01-24  Joseph Pecoraro  <pecoraro@apple.com>

        Fold USER_TIMING into WEB_TIMING and make it a RuntimeEnabledFeature
        https://bugs.webkit.org/show_bug.cgi?id=167394

        Reviewed by Ryosuke Niwa.

        * wtf/FeatureDefines.h:

2017-01-24  Konstantin Tokarev  <annulen@yandex.ru>

        VS2015 supports ref qualifiers
        https://bugs.webkit.org/show_bug.cgi?id=167368

        Reviewed by Sam Weinig.

        * wtf/Compiler.h: Enable
        WTF_COMPILER_SUPPORTS_CXX_REFERENCE_QUALIFIED_FUNCTIONS for VS2015

2017-01-24  Daniel Bates  <dabates@apple.com>

        StringView.split() should use an iterator design pattern instead of allocating a Vector
        https://bugs.webkit.org/show_bug.cgi?id=163225

        Reviewed by Darin Adler.

        Implement StringView.split() using an iterator design.

        Using an iterator design avoids the need to allocate a Vector of StringView objects,
        which is space-inefficient and error prone as the returned Vector may outlive the
        lifetime of the underlying string associated with the split (as StringView is a non-
        owning reference to a string).

        StringView.split() now returns a StringView::SplitResult object that implements begin()/end()
        to support iterating over StringView substrings delimited by the specified separator
        character. For example, to iterate over the 'c'-separated substrings of a StringView v,
        you can write:

        for (StringView substring : v.split('c'))
            // Do something with substring.

        * wtf/text/StringView.cpp:
        (WTF::StringView::SplitResult::Iterator::findNextSubstring): Advances the iterator to point to the
        next substring.
        (WTF::StringView::split): Modified to return a SplitResult::Iterator object instead of a Vector<StringView>.
        * wtf/text/StringView.h:
        (WTF::StringView::SplitResult::SplitResult):
        (WTF::StringView::SplitResult::Iterator::Iterator):
        (WTF::StringView::SplitResult::Iterator::operator*):
        (WTF::StringView::SplitResult::Iterator::operator==):
        (WTF::StringView::SplitResult::Iterator::operator!=):
        Implements the iterator interface.

2017-01-20  Joseph Pecoraro  <pecoraro@apple.com>

        Remove outdated ENABLE(CSP_NEXT) build flag
        https://bugs.webkit.org/show_bug.cgi?id=167252

        Reviewed by Brent Fulgham.

        * wtf/FeatureDefines.h:

2017-01-17  Andreas Kling  <akling@apple.com>

        Annotate FastMalloc functions with returns_nonnull attribute.
        <https://webkit.org/b/167144>

        Reviewed by Antti Koivisto.

        Decorate fastMalloc() and friends with __attribute__((returns_nonnull)) for supporting
        compilers that can do useful things with that information.

        * wtf/Compiler.h:
        * wtf/FastMalloc.h:

2017-01-17  Joseph Pecoraro  <pecoraro@apple.com>

        ENABLE(USER_TIMING) Not Defined for Apple Windows or OS X Ports
        https://bugs.webkit.org/show_bug.cgi?id=116551
        <rdar://problem/13949830>

        Reviewed by Alex Christensen.

        * wtf/FeatureDefines.h:

2017-01-16  Joseph Pecoraro  <pecoraro@apple.com>

        Remove the REQUEST_ANIMATION_FRAME flag
        https://bugs.webkit.org/show_bug.cgi?id=156980
        <rdar://problem/25906849>

        Reviewed by Simon Fraser.

        * wtf/FeatureDefines.h:

2017-01-15  Sam Weinig  <sam@webkit.org>

        Add the ability to use numbers in makeString()
        https://bugs.webkit.org/show_bug.cgi?id=167087

        Reviewed by Darin Adler.

        Allow numbers to be easily used in makeString() and tryMakeString().

        For instance, you can now write:
            int amount = 7;
            auto foo = makeString("There are ", amount, " apples in the cart");

        * WTF.xcodeproj/project.pbxproj:
        Add new file.

        * wtf/text/IntegerToStringConversion.h:
        (WTF::writeNumberToBufferImpl):
        (WTF::writeNumberToBufferSigned):
        (WTF::writeNumberToBufferUnsigned):
        (WTF::lengthOfNumberAsStringImpl):
        (WTF::lengthOfNumberAsStringSigned):
        (WTF::lengthOfNumberAsStringUnsigned):
        Add variants of integer writing code that compute the length of the string
        that would be produced and writes the string to an existing buffer.

        (WTF::IntegerToStringConversionTrait<AtomicString>::flush): Deleted.
        (WTF::IntegerToStringConversionTrait<String>::flush): Deleted.
        (WTF::IntegerToStringConversionTrait<StringBuilder>::flush): Deleted.
        Move these traits to their respective classes.

        * wtf/text/AtomicString.h:
        (WTF::IntegerToStringConversionTrait<AtomicString>::flush):
        * wtf/text/StringBuilder.h:
        (WTF::IntegerToStringConversionTrait<StringBuilder>::flush):
        * wtf/text/WTFString.h:
        (WTF::IntegerToStringConversionTrait<String>::flush):
        Traits moved here from IntegerToStringConversion.h

        * wtf/text/StringConcatenateNumbers.h: Added.
        (WTF::StringTypeAdapter<int>::StringTypeAdapter<int>):
        (WTF::StringTypeAdapter<int>::length):
        (WTF::StringTypeAdapter<int>::is8Bit):
        (WTF::StringTypeAdapter<int>::writeTo):
        (WTF::StringTypeAdapter<int>::toString):
        (WTF::StringTypeAdapter<unsigned>::StringTypeAdapter<unsigned>):
        (WTF::StringTypeAdapter<unsigned>::length):
        (WTF::StringTypeAdapter<unsigned>::is8Bit):
        (WTF::StringTypeAdapter<unsigned>::writeTo):
        (WTF::StringTypeAdapter<unsigned>::toString):
        (WTF::StringTypeAdapter<float>::StringTypeAdapter<float>):
        (WTF::StringTypeAdapter<float>::length):
        (WTF::StringTypeAdapter<float>::is8Bit):
        (WTF::StringTypeAdapter<float>::writeTo):
        (WTF::StringTypeAdapter<float>::toString):
        (WTF::StringTypeAdapter<double>::StringTypeAdapter<double>):
        (WTF::StringTypeAdapter<double>::length):
        (WTF::StringTypeAdapter<double>::is8Bit):
        (WTF::StringTypeAdapter<double>::writeTo):
        (WTF::StringTypeAdapter<double>::toString):
        Add basic adaptors for int, unsigned, float, and double.

        (WTF::FormattedNumber::fixedPrecision):
        (WTF::FormattedNumber::fixedWidth):
        (WTF::FormattedNumber::length):
        (WTF::FormattedNumber::buffer):
        (WTF::FormattedNumber::stringView):
        (WTF::StringTypeAdapter<FormattedNumber>::StringTypeAdapter<FormattedNumber>):
        (WTF::StringTypeAdapter<FormattedNumber>::length):
        (WTF::StringTypeAdapter<FormattedNumber>::is8Bit):
        (WTF::StringTypeAdapter<FormattedNumber>::writeTo):
        (WTF::StringTypeAdapter<FormattedNumber>::toString):
        Add a special class, FormattedNumber, and an adaptor for it, allowing for
        fixedPrecision and fixedWidth representation of doubles.

2017-01-14  Yusuke Suzuki  <utatane.tea@gmail.com>

        WebAssembly: Suppress warnings & errors in GCC
        https://bugs.webkit.org/show_bug.cgi?id=167049

        Reviewed by Sam Weinig.

        * wtf/LEBDecoder.h:
        (WTF::LEBDecoder::decodeInt):
        If T = int, it performs `-1 << shift`. It causes
        warning in GCC. Instead, we first cast it to the
        UnsignedT, perform operation and re-cast to the
        T.

2017-01-13  Joseph Pecoraro  <pecoraro@apple.com>

        Remove ENABLE(DETAILS_ELEMENT) guards
        https://bugs.webkit.org/show_bug.cgi?id=167042

        Reviewed by Alex Christensen.

        * wtf/FeatureDefines.h:

2017-01-11  Darin Adler  <darin@apple.com>

        Remove PassRefPtr from more of "platform"
        https://bugs.webkit.org/show_bug.cgi?id=166809

        Reviewed by Sam Weinig.

        * wtf/Ref.h: Changed the template so that a const Ref<T> does not prohibit non-const
        use of T. We can still use const Ref<const T> to express that. The earlier design
        was intentional, but was not consistent with either actual references or with
        other smart pointer classes like RefPtr. One way to see how much better this is,
        is to see all the many, many cases where we have const_cast just to work around
        this. I searched for those and included fixes for many in this patch.

2017-01-12  Chris Dumez  <cdumez@apple.com>

        [iOS] Implement support for KeyboardEvent.code
        https://bugs.webkit.org/show_bug.cgi?id=166932
        <rdar://problem/29972518>

        Reviewed by Darin Adler.

        Enable KEYBOARD_CODE_ATTRIBUTE feature on iOS.

        * wtf/FeatureDefines.h:

2017-01-11  Andreas Kling  <akling@apple.com>

        Crash when WebCore's GC heap grows way too large.
        <https://webkit.org/b/166875>
        <rdar://problem/27896585>

        Reviewed by Mark Lam.

        Publish the WTF::GB constant.

        * wtf/StdLibExtras.h:

2017-01-11  Anders Carlsson  <andersca@apple.com>

        navigator.plugins.refresh and WKContextRefreshPlugIns doesn't pick up changes to already-present plug-ins
        https://bugs.webkit.org/show_bug.cgi?id=166942
        rdar://problem/29839194

        Reviewed by Sam Weinig.

        * wtf/spi/cf/CFBundleSPI.h:
        Add SPI declaration.

2017-01-06  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>

        [GTK] Should support key and code properties on keyboard events
        https://bugs.webkit.org/show_bug.cgi?id=166759

        Reviewed by Carlos Garcia Campos.

        * wtf/FeatureDefines.h: enable key and code properties support for GTK.

2017-01-08  Antti Koivisto  <antti@apple.com>

        Move cache coders to WTF
        https://bugs.webkit.org/show_bug.cgi?id=166825

        Rubber-stamped by Sam Weinig.

        Make it possible to use robust serialization of WTF types on the lower levels of the stack.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/persistence: Added.
        * wtf/persistence/Coder.h: Copied from Source/WebKit2/NetworkProcess/cache/NetworkCacheCoder.h.
        (WebKit::NetworkCache::Coder::encode): Deleted.
        (WebKit::NetworkCache::Coder::decode): Deleted.
        * wtf/persistence/Coders.cpp: Copied from Source/WebKit2/NetworkProcess/cache/NetworkCacheCoders.cpp.
        (WebKit::NetworkCache::Coder<AtomicString>::encode): Deleted.
        (WebKit::NetworkCache::Coder<AtomicString>::decode): Deleted.
        (WebKit::NetworkCache::Coder<CString>::encode): Deleted.
        (WebKit::NetworkCache::Coder<CString>::decode): Deleted.
        (WebKit::NetworkCache::Coder<String>::encode): Deleted.
        (WebKit::NetworkCache::decodeStringText): Deleted.
        (WebKit::NetworkCache::Coder<String>::decode): Deleted.
        (WebKit::NetworkCache::Coder<SHA1::Digest>::encode): Deleted.
        (WebKit::NetworkCache::Coder<SHA1::Digest>::decode): Deleted.
        (WebKit::NetworkCache::Coder<WebCore::HTTPHeaderMap>::encode): Deleted.
        (WebKit::NetworkCache::Coder<WebCore::HTTPHeaderMap>::decode): Deleted.
        * wtf/persistence/Coders.h: Copied from Source/WebKit2/NetworkProcess/cache/NetworkCacheCoders.h.
        (WebKit::NetworkCache::Coder<std::optional<T>>::encode): Deleted.
        (WebKit::NetworkCache::Coder<std::optional<T>>::decode): Deleted.
        * wtf/persistence/Decoder.cpp: Copied from Source/WebKit2/NetworkProcess/cache/NetworkCacheDecoder.cpp.
        (WebKit::NetworkCache::Decoder::Decoder): Deleted.
        (WebKit::NetworkCache::Decoder::~Decoder): Deleted.
        (WebKit::NetworkCache::Decoder::bufferIsLargeEnoughToContain): Deleted.
        (WebKit::NetworkCache::Decoder::decodeFixedLengthData): Deleted.
        (WebKit::NetworkCache::Decoder::decodeNumber): Deleted.
        (WebKit::NetworkCache::Decoder::decode): Deleted.
        (WebKit::NetworkCache::Decoder::verifyChecksum): Deleted.
        * wtf/persistence/Decoder.h: Copied from Source/WebKit2/NetworkProcess/cache/NetworkCacheDecoder.h.
        (WebKit::NetworkCache::Decoder::length): Deleted.
        (WebKit::NetworkCache::Decoder::currentOffset): Deleted.
        (WebKit::NetworkCache::Decoder::decodeEnum): Deleted.
        (WebKit::NetworkCache::Decoder::decode): Deleted.
        (WebKit::NetworkCache::Decoder::bufferIsLargeEnoughToContain): Deleted.
        * wtf/persistence/Encoder.cpp: Copied from Source/WebKit2/NetworkProcess/cache/NetworkCacheEncoder.cpp.
        (WebKit::NetworkCache::Encoder::Encoder): Deleted.
        (WebKit::NetworkCache::Encoder::~Encoder): Deleted.
        (WebKit::NetworkCache::Encoder::grow): Deleted.
        (WebKit::NetworkCache::Encoder::updateChecksumForData): Deleted.
        (WebKit::NetworkCache::Encoder::encodeFixedLengthData): Deleted.
        (WebKit::NetworkCache::Encoder::encodeNumber): Deleted.
        (WebKit::NetworkCache::Encoder::encode): Deleted.
        (WebKit::NetworkCache::Encoder::encodeChecksum): Deleted.
        * wtf/persistence/Encoder.h: Copied from Source/WebKit2/NetworkProcess/cache/NetworkCacheEncoder.h.
        (WebKit::NetworkCache::Encoder::encodeEnum): Deleted.
        (WebKit::NetworkCache::Encoder::encode): Deleted.
        (WebKit::NetworkCache::Encoder::operator<<): Deleted.
        (WebKit::NetworkCache::Encoder::buffer): Deleted.
        (WebKit::NetworkCache::Encoder::bufferSize): Deleted.
        (WebKit::NetworkCache::Encoder::updateChecksumForNumber): Deleted.

2017-01-08  Konstantin Tokarev  <annulen@yandex.ru>

        Introduce CPU(X86_SSE2) instead of various SSE2 checks
        https://bugs.webkit.org/show_bug.cgi?id=166808

        Reviewed by Michael Catanzaro.

        Now copyLCharsFromUCharSource can use SSE2 implementation on non-Darwin
        OSes, and all SSE2 code paths are available for MSVC on x86 if /arch:SSE2
        or higher is enabled, and for MSVC on x86_64.

        * wtf/Platform.h:
        * wtf/text/ASCIIFastPath.h:
        (WTF::copyLCharsFromUCharSource):

2017-01-05  Myles C. Maxfield  <mmaxfield@apple.com>

        Carets can split up marriages and families
        https://bugs.webkit.org/show_bug.cgi?id=166711
        <rdar://problem/29019333>

        Reviewed by Alex Christensen.

        There are four code points which should be allowed to accept emoji modifiers:
        - U+1F46A FAMILY
        - U+1F46B MAN AND WOMAN HOLDING HANDS
        - U+1F46C TWO MEN HOLDING HANDS
        - U+1F46D TWO WOMEN HOLDING HANDS

        Even though macOS's and iOS's emoji keyboard don't allow users to actually type
        these combinations, we may still receive them from other platforms. We should
        therefore treat these as joining sequences. Rendering isn't a problem because
        the fonts accept the emoji modifiers, but our caret placement code isn't educated
        about it. Currently, we treat these emoji groups as ligatures, allowing the caret
        to be placed between the two code points, which visually shows as being horizontally
        centered in the glyph. Instead, we should treat these code points as accepting
        emoji modifiers.

        Tests: editing/caret/emoji.html
               editing/caret/ios/emoji.html

        * wtf/text/TextBreakIterator.cpp:
        (WTF::cursorMovementIterator):

2017-01-05  Filip Pizlo  <fpizlo@apple.com>

        AutomaticThread timeout shutdown leaves a small window where notify() would think that the thread is still running
        https://bugs.webkit.org/show_bug.cgi?id=166742

        Reviewed by Geoffrey Garen.
        
        Remove the use of the RAII ThreadScope, since the use of RAII helped make this bug possible:
        we'd do ~ThreadScope after we had done ~LockHolder, so in between when we decided to shut
        down a thread and when it reported itself as being shut down, there was a window where a
        notify() call would get confused.
        
        Now, we run all thread shutdown stuff while the lock is held. We release the lock last. One
        API implication is that threadWillStop becomes threadIsStopping and it's called while the
        lock is held. This seems benign.

        * wtf/AutomaticThread.cpp:
        (WTF::AutomaticThread::start):
        (WTF::AutomaticThread::threadIsStopping):
        (WTF::AutomaticThread::ThreadScope::ThreadScope): Deleted.
        (WTF::AutomaticThread::ThreadScope::~ThreadScope): Deleted.
        (WTF::AutomaticThread::threadWillStop): Deleted.
        * wtf/AutomaticThread.h:

2017-01-04  Darin Adler  <darin@apple.com>

        Remove PassRefPtr use from the "html" directory, other improvements
        https://bugs.webkit.org/show_bug.cgi?id=166635

        Reviewed by Alex Christensen.

        * wtf/RefPtr.h:
        (WTF::makeRefPtr): Added.

2017-01-04  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed build fix after r210313
        https://bugs.webkit.org/show_bug.cgi?id=166676

        Revert `#pragma once` to ifdefs due to build failure.

        * wtf/text/StringView.h:

2017-01-04  Yusuke Suzuki  <utatane.tea@gmail.com>

        Limit thread name appropriately
        https://bugs.webkit.org/show_bug.cgi?id=166676

        Reviewed by Sam Weinig.

        In some platform, the max length of thread names are limited.
        For example, the number of the max length is 32 in Windows and
        16 in Linux. But the specified thread name is typically long
        in WebKit like "com.apple.CoreIPC.ReceiveQueue"

        We port the logic substring the thread name in
        generic/WorkQueueGeneric.cpp to Threading. It retrieves the name
        "ReceiveQueue" from "com.apple.CoreIPC.ReceiveQueue". And apply
        the appropriate the thread name limit and use it on Linux and
        Windows environment.

        * wtf/Threading.cpp:
        (WTF::normalizeThreadName):
        (WTF::createThread):
        * wtf/Threading.h:
        * wtf/ThreadingPthreads.cpp:
        (WTF::initializeCurrentThreadInternal):
        * wtf/ThreadingWin.cpp:
        (WTF::initializeCurrentThreadInternal):
        * wtf/generic/WorkQueueGeneric.cpp:
        (WorkQueue::platformInitialize):
        * wtf/text/StringView.h:
        (WTF::StringView::left):
        (WTF::StringView::right):
        (WTF::StringView::reverseFind):

2017-01-04  Sam Weinig  <sam@webkit.org>

        REGRESSION (r210257): com.apple.WebKit.WebContent.Development crashed in com.apple.WebCore: WebCore::ExceptionOr<WTF::Ref<WebCore::Database> >::operator= + 14
        <rdar://problem/29866398> 

        * wtf/Expected.h:
        (WTF::Expected::swap):
        Add missing calls to destroy() when moving things over each other in a union.

2017-01-03  Yusuke Suzuki  <utatane.tea@gmail.com>

        Use prctl to name thread on Linux
        https://bugs.webkit.org/show_bug.cgi?id=166663

        Reviewed by Michael Catanzaro.

        It is quite useful if we can name threads. This name will be shown in GDB.
        While macOS uses pthread_setname_np, we can use prctl on Linux.

        * wtf/ThreadingPthreads.cpp:
        (WTF::initializeCurrentThreadInternal):

2017-01-03  Yusuke Suzuki  <utatane.tea@gmail.com>

        WorkQueueGeneric's platformInvalidate() can deadlock when called on the RunLoop's thread
        https://bugs.webkit.org/show_bug.cgi?id=166645

        Reviewed by Carlos Garcia Campos.

        WorkQueue can be destroyed on its invoking thread itself.
        The scenario is the following.

            1. Create WorkQueue (in thread A).
            2. Dispatch a task (in thread A, dispatching a task to thread B).
            3. Deref in thread A.
            4. The task is executed in thread B.
            5. Deref in thread B.
            6. The WorkQueue is destroyed, calling platformInvalidate in thread B.

        In that case, if platformInvalidate waits thread B's termination, it causes deadlock.
        We do not need to wait the thread termination.

        * wtf/WorkQueue.h:
        * wtf/generic/WorkQueueGeneric.cpp:
        (WorkQueue::platformInitialize):
        (WorkQueue::platformInvalidate):

2017-01-03  Sam Weinig  <sam@webkit.org>

        Make WTF::Expected support Ref template parameters
        https://bugs.webkit.org/show_bug.cgi?id=166662

        Reviewed by Alex Christensen.

        Tests: Added to TestWebKitAPI/Expected.cpp

        * wtf/Expected.h:
        (WTF::UnexpectedType::value):
        Add overloads based on this value type to allow getting at the value
        as an rvalue for moving the error into the Expected.

        (WTF::Expected::Expected):
        Add overload that takes an ErrorType/UnexpectedType<ErrorType> as an rvalue.

        (WTF::Expected::swap):
        Move the temporary value/error rather than copying.

2017-01-02  Julien Brianceau  <jbriance@cisco.com>

        Remove sh4 specific code from JavaScriptCore
        https://bugs.webkit.org/show_bug.cgi?id=166640

        Reviewed by Filip Pizlo.

        * wtf/Platform.h:

2017-01-02  Yusuke Suzuki  <utatane.tea@gmail.com>

        Leverage Substring to create new AtomicStringImpl for StaticStringImpl and SymbolImpl
        https://bugs.webkit.org/show_bug.cgi?id=166636

        Reviewed by Darin Adler.

        Previously we always create the full atomic string if we need to create the same string
        based on the given value. For example, when generating AtomicStringImpl from the SymbolImpl,
        we need to create a new AtomicStringImpl since SymbolImpl never becomes `isAtomic() == true`.
        But it is costly.

        This patch leverages the substring system of StringImpl. Instead of allocating the completely
        duplicate string, we create a substring StringImpl that shares the same content with the
        base string.

        * wtf/text/AtomicStringImpl.cpp:
        (WTF::stringTable):
        (WTF::addToStringTable):
        (WTF::addSubstring):
        (WTF::AtomicStringImpl::addSlowCase):
        (WTF::AtomicStringImpl::remove):
        (WTF::AtomicStringImpl::lookUpSlowCase):
        * wtf/text/StringImpl.h:
        (WTF::StringImpl::StaticStringImpl::operator StringImpl&):

2017-01-02  Yusuke Suzuki  <utatane.tea@gmail.com>

        Use StaticStringImpl instead of StaticASCIILiteral
        https://bugs.webkit.org/show_bug.cgi?id=166586

        Reviewed by Darin Adler.

        It is more handy way to define static StringImpl. It calculates the length
        and hash value by using the constexpr constructor and function. So we do
        not need to calculate these things in Perl script.
        And it allows us to use StaticStringImpl in the hand written C++ code.
        Previously, we need to calculate the length and hash value by hand if we
        would like to use StaticASCIILiteral in the hand written C++ code, and it
        meant that we cannot use it at all in the hand written C++ code.

        * wtf/text/AtomicStringImpl.cpp:
        (WTF::AtomicStringImpl::addSlowCase):
        (WTF::AtomicStringImpl::lookUpSlowCase):
        * wtf/text/AtomicStringImpl.h:
        * wtf/text/StringImpl.h:
        * wtf/text/SymbolImpl.h:
        * wtf/text/UniquedStringImpl.h:

2017-01-02  Andreas Kling  <akling@apple.com>

        Discard media controls JS/CSS caches under memory pressure.
        <https://webkit.org/b/166639>

        Reviewed by Antti Koivisto.

        * wtf/text/WTFString.h:
        (WTF::String::clearImplIfNotShared): Add a helper for clearing a String if the underlying
        StringImpl is not referenced by anyone else.

2016-12-22  Mark Lam  <mark.lam@apple.com>

        De-duplicate finally blocks.
        https://bugs.webkit.org/show_bug.cgi?id=160168

        Reviewed by Saam Barati.

        Added some methods to bring SegmentedVector closer to parity with Vector.

        * wtf/SegmentedVector.h:
        (WTF::SegmentedVector::first):
        (WTF::SegmentedVector::last):
        (WTF::SegmentedVector::takeLast):

2016-12-19  Mark Lam  <mark.lam@apple.com>

        Rolling out r209974 and r209952. They break some websites in mysterious ways. Step 2: Rollout r209952.
        https://bugs.webkit.org/show_bug.cgi?id=166049

        Not reviewed.

        * wtf/SegmentedVector.h:
        (WTF::SegmentedVector::last):
        (WTF::SegmentedVector::first): Deleted.
        (WTF::SegmentedVector::takeLast): Deleted.

2016-12-16  Mark Lam  <mark.lam@apple.com>

        Add predecessor info to dumps from JSC_dumpBytecodeLivenessResults=true.
        https://bugs.webkit.org/show_bug.cgi?id=165958

        Reviewed by Keith Miller.

        Added some methods to bring SegmentedVector closer to parity with Vector.

        * wtf/SegmentedVector.h:
        (WTF::SegmentedVector::first):
        (WTF::SegmentedVector::last):
        (WTF::SegmentedVector::takeLast):

2016-12-16  Michael Saboff  <msaboff@apple.com>

        REGRESSION: HipChat and Mail sometimes hang beneath JSC::Heap::lastChanceToFinalize()
        https://bugs.webkit.org/show_bug.cgi?id=165962

        Reviewed by Filip Pizlo.

        There is an inherent race in Condition::waitFor() where the timeout can happen just before
        a notify from another thread.

        Fixed this by adding a condition variable and flag to each AutomaticThread.  The flag
        is used to signify to a notifying thread that the thread is waiting.  That flag is set
        in the waiting thread before calling waitFor() and cleared by another thread when it
        notifies the thread.  The access to that flag happens when the lock is held.
        Now the waiting thread checks if the flag after a timeout to see that it in fact should
        proceed like a normal notification.

        The added condition variable allows us to target a specific thread.  We used to keep a list
        of waiting threads, now we keep a list of all threads.  To notify one thread, we look for
        a waiting thread and notify it directly.  If we can't find a waiting thread, we start a
        sleeping thread.

        We notify all threads by waking all waiting threads and starting all sleeping threads.

        * wtf/AutomaticThread.cpp:
        (WTF::AutomaticThreadCondition::notifyOne):
        (WTF::AutomaticThreadCondition::notifyAll):
        (WTF::AutomaticThread::isWaiting):
        (WTF::AutomaticThread::notify):
        (WTF::AutomaticThread::start):
        * wtf/AutomaticThread.h:

2016-12-15  Myles C. Maxfield  <mmaxfield@apple.com>

        Unreviewed build fix after r209910

        Unreviewed.

        * wtf/Platform.h:

2016-12-15  Myles C. Maxfield  <mmaxfield@apple.com>

        Stop reinterpret_casting UBreakIterators to the undefined type TextBreakIterator
        https://bugs.webkit.org/show_bug.cgi?id=165931

        We have a class declaration for TextBreakIterator but no definition for it. When we
        create an ICU UBreakIterator, we immediately reinterpret_cast it to this undefined
        type, and pass it around our code inside WebCore. Then, whenever we want to actually
        use this iterator, we reinterpret_cast it back to UBreakIterator. This is likely due
        to some ports historically implementing breaking interators on top of other libraries
        other than ICU; however, now, all ports use ICU. Because this internal type is not
        helpful and just adds confusion, we should just call our breaking iterators what
        they are: UBreakIterators.

        This patch is a mechanical replacement of TextBreakIterator to UBreakIterator and
        removes the functions we were calling which pass through directly to ubrk_*().

        Reviewed by Alex Christensen.

        * wtf/text/LineBreakIteratorPoolICU.h:
        (WTF::LineBreakIteratorPool::take):
        (WTF::LineBreakIteratorPool::put):
        * wtf/text/StringView.cpp:
        (WTF::StringView::GraphemeClusters::Iterator::Impl::computeIndexEnd):
        * wtf/text/TextBreakIterator.cpp:
        (WTF::initializeIterator):
        (WTF::initializeIteratorWithRules):
        (WTF::setTextForIterator):
        (WTF::setContextAwareTextForIterator):
        (WTF::wordBreakIterator):
        (WTF::sentenceBreakIterator):
        (WTF::cursorMovementIterator):
        (WTF::acquireLineBreakIterator):
        (WTF::releaseLineBreakIterator):
        (WTF::openLineBreakIterator):
        (WTF::closeLineBreakIterator):
        (WTF::getNonSharedCharacterBreakIterator):
        (WTF::cacheNonSharedCharacterBreakIterator):
        (WTF::isWordTextBreak):
        (WTF::numGraphemeClusters):
        (WTF::numCharactersInGraphemeClusters):
        (WTF::textBreakFirst): Deleted.
        (WTF::textBreakLast): Deleted.
        (WTF::textBreakNext): Deleted.
        (WTF::textBreakPrevious): Deleted.
        (WTF::textBreakPreceding): Deleted.
        (WTF::textBreakFollowing): Deleted.
        (WTF::textBreakCurrent): Deleted.
        (WTF::isTextBreak): Deleted.
        * wtf/text/TextBreakIterator.h:
        (WTF::LazyLineBreakIterator::lastCharacter):
        (WTF::LazyLineBreakIterator::secondToLastCharacter):
        (WTF::LazyLineBreakIterator::setPriorContext):
        (WTF::LazyLineBreakIterator::updatePriorContext):
        (WTF::LazyLineBreakIterator::resetPriorContext):
        (WTF::LazyLineBreakIterator::priorContextLength):
        (WTF::LazyLineBreakIterator::get):
        (WTF::NonSharedCharacterBreakIterator::operator UBreakIterator*):
        (WTF::NonSharedCharacterBreakIterator::operator TextBreakIterator*): Deleted.

2016-12-15  Myles C. Maxfield  <mmaxfield@apple.com>

        Sort Xcode project files
        https://bugs.webkit.org/show_bug.cgi?id=165937

        Reviewed by Simon Fraser.

        * WTF.xcodeproj/project.pbxproj:

2016-12-15  Konstantin Tokarev  <annulen@yandex.ru>

        Added missing override and final specifiers
        https://bugs.webkit.org/show_bug.cgi?id=165903

        Reviewed by Darin Adler.

        * wtf/RunLoop.h:

2016-12-15  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Optimize Kraken stringify
        https://bugs.webkit.org/show_bug.cgi?id=165857

        Reviewed by Darin Adler.

        Kraken json-stringify-tinderbox performance heavily relies on StringBuilder::appendQuotedJSONString.
        According to the result produced by Linux `perf`, it occupies 28% of execution time.

        We tighten the hottest loop in the above function. We create the super fast path for non escaping case.
        And add " and \ cases (since including " in the string is common). Then we fallback to the slow case.

        It improves the performance 5.5% in Kraken json-stringify-tinderbox in MBP.

            Performance result in my MBP (dandelion).

                Collected 100 samples per benchmark/VM, with 100 VM invocations per benchmark. Emitted a call to gc()
                between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the
                jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution times
                with 95% confidence intervals in milliseconds.

                                                   baseline                  patched

                json-stringify-tinderbox        29.243+-0.241      ^      27.701+-0.235         ^ definitely 1.0557x faster

                <arithmetic>                    29.243+-0.241      ^      27.701+-0.235         ^ definitely 1.0557x faster

            Performance result in my Linux laptop (hanayamata).

                Collected 100 samples per benchmark/VM, with 100 VM invocations per benchmark. Emitted a call to gc()
                between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the
                jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution times
                with 95% confidence intervals in milliseconds.

                                                   baseline                  patched

                json-stringify-tinderbox        26.711+-0.475      ^      25.255+-0.034         ^ definitely 1.0577x faster

                <arithmetic>                    26.711+-0.475      ^      25.255+-0.034         ^ definitely 1.0577x faster

        * wtf/text/StringBuilder.cpp:
        (WTF::appendQuotedJSONStringInternalSlow):
        (WTF::appendQuotedJSONStringInternal):

2016-12-14  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r209795.
        https://bugs.webkit.org/show_bug.cgi?id=165853

        rolled out the wrong revision (Requested by pizlo on #webkit).

        Reverted changeset:

        "MarkedBlock::marksConveyLivenessDuringMarking should take
        into account collection scope"
        https://bugs.webkit.org/show_bug.cgi?id=165741
        http://trac.webkit.org/changeset/209795

2016-12-14  Enrique Ocaña González  <eocanha@igalia.com>

        REGRESSION(r207879-207891): [GStreamer] Introduced many layout test failures and crashes, bots exiting early
        https://bugs.webkit.org/show_bug.cgi?id=164022

        Reviewed by Xabier Rodriguez-Calvar.

        * wtf/glib/GLibUtilities.h:
        Added new macros to convert gulong to/from gpointer.

2016-12-14  Gavin Barraclough  <barraclough@apple.com>

        MarkedBlock::marksConveyLivenessDuringMarking should take into account collection scope
        https://bugs.webkit.org/show_bug.cgi?id=165741

        Unreviewed, re-landing this with fix (revert erroneous change to Options).

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/DataLog.cpp:
        (WTF::initializeLogFileOnce):
        (WTF::initializeLogFile):
        (WTF::dataFile):
        * wtf/DataLog.h:
        * wtf/LockedPrintStream.cpp: Added.
        (WTF::LockedPrintStream::LockedPrintStream):
        (WTF::LockedPrintStream::~LockedPrintStream):
        (WTF::LockedPrintStream::vprintf):
        (WTF::LockedPrintStream::flush):
        (WTF::LockedPrintStream::begin):
        (WTF::LockedPrintStream::end):
        * wtf/LockedPrintStream.h: Added.
        * wtf/PrintStream.cpp:
        (WTF::PrintStream::printfVariableFormat):
        (WTF::PrintStream::begin):
        (WTF::PrintStream::end):
        * wtf/PrintStream.h:
        (WTF::PrintStream::atomically):
        (WTF::PrintStream::print):
        (WTF::PrintStream::println):
        (WTF::PrintStream::printImpl):
        (WTF::>::unpack):
        (WTF::FormatImpl::FormatImpl):
        (WTF::FormatImpl::dump):
        (WTF::format):
        (WTF::printInternal):
        * wtf/RecursiveLockAdapter.h: Added.
        (WTF::RecursiveLockAdapter::RecursiveLockAdapter):
        (WTF::RecursiveLockAdapter::lock):
        (WTF::RecursiveLockAdapter::unlock):
        (WTF::RecursiveLockAdapter::tryLock):
        (WTF::RecursiveLockAdapter::isLocked):
        * wtf/WordLock.cpp:
        * wtf/WordLock.h:

2016-12-14  Gavin Barraclough  <barraclough@apple.com>

        MarkedBlock::marksConveyLivenessDuringMarking should take into account collection scope
        https://bugs.webkit.org/show_bug.cgi?id=165741

        Unreviewed rollout due to performance regression.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/DataLog.cpp:
        (WTF::initializeLogFileOnce):
        (WTF::initializeLogFile):
        (WTF::dataFile):
        * wtf/DataLog.h:
        * wtf/LockedPrintStream.cpp: Removed.
        * wtf/LockedPrintStream.h: Removed.
        * wtf/PrintStream.cpp:
        (WTF::PrintStream::printfVariableFormat): Deleted.
        (WTF::PrintStream::begin): Deleted.
        (WTF::PrintStream::end): Deleted.
        * wtf/PrintStream.h:
        (WTF::PrintStream::print):
        (WTF::PrintStream::println):
        (WTF::PrintStream::atomically): Deleted.
        (WTF::PrintStream::printImpl): Deleted.
        (): Deleted.
        (WTF::>::unpack): Deleted.
        (WTF::FormatImpl::FormatImpl): Deleted.
        (WTF::FormatImpl::dump): Deleted.
        (WTF::format): Deleted.
        * wtf/RecursiveLockAdapter.h: Removed.
        * wtf/WordLock.cpp:
        * wtf/WordLock.h:

2016-12-13  JF Bastien  <jfbastien@apple.com>

        std::expected: fix rvalue forwarding issues
        https://bugs.webkit.org/show_bug.cgi?id=165812

        Reviewed by Mark Lam.

        * wtf/Expected.h:
        (WTF::UnexpectedType::UnexpectedType):
        (WTF::ExpectedDetail::Base::Base):
        (WTF::Expected::Expected):

2016-12-13  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r209544.

        Looks like r209489 did not cause the performance regression
        after all

        Reverted changeset:

        "Unreviewed, rolling out r209489."
        https://bugs.webkit.org/show_bug.cgi?id=165550
        http://trac.webkit.org/changeset/209544

2016-12-13  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r209725.
        https://bugs.webkit.org/show_bug.cgi?id=165811

        "Broke ARMv7 builds" (Requested by msaboff on #webkit).

        Reverted changeset:

        "REGRESSION(r209653): speedometer crashes making virtual slow
        path tailcalls"
        https://bugs.webkit.org/show_bug.cgi?id=165748
        http://trac.webkit.org/changeset/209725

2016-12-13  JF Bastien  <jfbastien@apple.com>

        [WTF] Turn tryMakeString(), makeString() into variadic templates
        https://bugs.webkit.org/show_bug.cgi?id=147142

        Reviewed by Mark Lam.

        I wrote this patch while improving WebAssembly's error messages,
        and only found this bug afterwards. My implementation does the
        bare minimum to make this code variadic without changing
        behavior. I think it's better to go with this baby step first, and
        improve the code later.

        Notable, for my WebAssembly patch I also taught the code to handle
        integers and other types (including WebAssembly types). A
        follow-up could rely on ADL magic to pretty-format these other
        types.

        * wtf/text/StringConcatenate.h:
        (WTF::sumWithOverflow): This unconditionally does the sum for all
        inputs, which the compiler is more likely to appreciate (because
        it's the common case) compared to testing for overflow and bailing
        on each addition
        (WTF::are8Bit): are: the plural of is!
        (WTF::makeStringAccumulator): accumulate strings
        (WTF::tryMakeStringFromAdapters): a small helper which creates the string adapters
        (WTF::tryMakeString): expose out of WTF, since it's part of this file's used API
        (WTF::makeString): make it variadic

2016-12-13  Konstantin Tokarev  <annulen@yandex.ru>

        Unreviewed, silence -Wsuggest-attribute for GCC with pragmas

        * wtf/PrintStream.cpp:
        (WTF::PrintStream::printfVariableFormat):

2016-12-12  Michael Saboff  <msaboff@apple.com>

        REGRESSION(r209653): speedometer crashes making virtual slow path tailcalls
        https://bugs.webkit.org/show_bug.cgi?id=165748

        Reviewed by Filip Pizlo.

        Rolling back in r209653, r209654, r209663, and r209673.

        * wtf/Platform.h:

2016-12-12  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r209703.
        https://bugs.webkit.org/show_bug.cgi?id=165749

        Broke Apple builds (Requested by annulen|home on #webkit).

        Reverted changeset:

        "Unreviewed, use WTF_ATTRIBUTE_PRINTF instead of clang pragma"
        http://trac.webkit.org/changeset/209703

2016-12-12  Konstantin Tokarev  <annulen@yandex.ru>

        Unreviewed, use WTF_ATTRIBUTE_PRINTF instead of clang pragma

        * wtf/PrintStream.cpp:
        (WTF::PrintStream::printfVariableFormat):
        * wtf/PrintStream.h:

2016-12-11  Konstantin Tokarev  <annulen@yandex.ru>

        Unreviewed, guarded clang pragma with COMPILER(CLANG) to fix -Werror

        * wtf/PrintStream.cpp:
        (WTF::PrintStream::printfVariableFormat):

2016-12-11  Filip Pizlo  <fpizlo@apple.com>

        Change to use #pragma once (requested by Darin Adler).

        * wtf/RecursiveLockAdapter.h:

2016-12-11  Filip Pizlo  <fpizlo@apple.com>

        Change to use #pragma once (requested by Darin Adler).

        * wtf/LockedPrintStream.h:

2016-12-10  Filip Pizlo  <fpizlo@apple.com>

        MarkedBlock::marksConveyLivenessDuringMarking should take into account collection scope
        https://bugs.webkit.org/show_bug.cgi?id=165741

        Reviewed by Saam Barati.
        
        To find this bug, I needed to seriously beef up our logging infrastructure.
        
        It's now the case that:
        
            dataLog(...);
        
        will print its output atomically. This happens with some careful magic:
        
        - dataFile() is now a LockedPrintStream that locks around print().
        
        - The lock is a recursive lock via RecursiveLockAdapter<>, so if the dump methods end
          up calling back into dataLog() then it just works. This is important: say the dump()
          calls a getter that itself does logging, maybe because it's encountering badness and
          wants to report it before crashing).
        
        - The lock is a WordLock so that ParkingLot and Lock can keep using dataLog() for
          debugging. We probably won't need to debug WordLock anytime soon - the algorithm is
          so simple.
        
        - LockedPrintStream::print(...) causes the print callbacks of its arguments to run on
          the underlying PrintStream, so that you don't need to do recursive lock acquisition
          on each individual argument and whatever printing it does recursively.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/DataLog.cpp:
        (WTF::initializeLogFileOnce):
        (WTF::initializeLogFile):
        (WTF::dataFile):
        * wtf/DataLog.h:
        * wtf/LockedPrintStream.cpp: Added.
        (WTF::LockedPrintStream::LockedPrintStream):
        (WTF::LockedPrintStream::~LockedPrintStream):
        (WTF::LockedPrintStream::vprintf):
        (WTF::LockedPrintStream::flush):
        (WTF::LockedPrintStream::begin):
        (WTF::LockedPrintStream::end):
        * wtf/LockedPrintStream.h: Added.
        * wtf/PrintStream.cpp:
        (WTF::PrintStream::printfVariableFormat):
        (WTF::PrintStream::begin):
        (WTF::PrintStream::end):
        * wtf/PrintStream.h:
        (WTF::PrintStream::atomically):
        (WTF::PrintStream::print):
        (WTF::PrintStream::println):
        (WTF::PrintStream::printImpl):
        (WTF::>::unpack):
        (WTF::FormatImpl::FormatImpl):
        (WTF::FormatImpl::dump):
        (WTF::format):
        (WTF::printInternal):
        * wtf/RecursiveLockAdapter.h: Added.
        (WTF::RecursiveLockAdapter::RecursiveLockAdapter):
        (WTF::RecursiveLockAdapter::lock):
        (WTF::RecursiveLockAdapter::unlock):
        (WTF::RecursiveLockAdapter::tryLock):
        (WTF::RecursiveLockAdapter::isLocked):
        * wtf/WordLock.cpp:
        * wtf/WordLock.h:

2016-12-11  Darin Adler  <darin@apple.com>

        Use std::vsnprintf instead of vasprintf
        https://bugs.webkit.org/show_bug.cgi?id=165740

        Reviewed by Sam Weinig.

        * wtf/Platform.h: Remove HAVE_VASPRINTF.
        * wtf/StringExtras.h: Change the vsnprintf workaround to be used only
        in older versions of Visual Studio, since the problem it works around
        was resolved in Visual Studio 2015.

2016-12-10  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r209653, r209654, r209663, and
        r209673.
        https://bugs.webkit.org/show_bug.cgi?id=165739

        speedometer crashes (Requested by pizlo on #webkit).

        Reverted changesets:

        "JSVALUE64: Pass arguments in platform argument registers when
        making JavaScript calls"
        https://bugs.webkit.org/show_bug.cgi?id=160355
        http://trac.webkit.org/changeset/209653

        "Unreviewed build fix for 32 bit builds."
        http://trac.webkit.org/changeset/209654

        "Unreviewed build fix for the CLOOP after r209653"
        http://trac.webkit.org/changeset/209663

        "REGRESSION(r209653) Crash in CallFrameShuffler::snapshot()"
        https://bugs.webkit.org/show_bug.cgi?id=165728
        http://trac.webkit.org/changeset/209673

2016-12-10  Chris Dumez  <cdumez@apple.com>

        Avoid calling shrink() in the Vector destructor
        https://bugs.webkit.org/show_bug.cgi?id=165675

        Reviewed by Daniel Bates.

        Avoid calling shrink() in the Vector destructor to avoid function call
        overhead and unnecessarily reseting m_size to 0.

        * wtf/Vector.h:
        (WTF::Vector::~Vector):
        (WTF::Vector::asanSetBufferSizeToFullCapacity):
        (WTF::minCapacity>::asanSetBufferSizeToFullCapacity):

2016-12-09  Michael Saboff  <msaboff@apple.com>

        JSVALUE64: Pass arguments in platform argument registers when making JavaScript calls
        https://bugs.webkit.org/show_bug.cgi?id=160355

        Reviewed by Filip Pizlo.

        Added a new build option ENABLE_VM_COUNTERS to enable JIT'able counters.
        The default is for the option to be off.

        * wtf/Platform.h:
        Added ENABLE_VM_COUNTERS

2016-12-09  Geoffrey Garen  <ggaren@apple.com>

        Deploy OrdinalNumber in JSC::SourceCode
        https://bugs.webkit.org/show_bug.cgi?id=165687

        Reviewed by Michael Saboff.

        * wtf/text/OrdinalNumber.h:
        (WTF::OrdinalNumber::operator>): Added a >.

2016-12-09  Geoffrey Garen  <ggaren@apple.com>

        TextPosition and OrdinalNumber should be more like idiomatic numbers
        https://bugs.webkit.org/show_bug.cgi?id=165678

        Reviewed by Filip Pizlo.

        * wtf/text/TextPosition.h:
        (WTF::TextPosition::minimumPosition): Deleted. Just use the default
        constructor. Other numbers use their default constructors to mean zero.

        Any time you need a comment that says "used as a default value", that's
        a pretty good indicator that it should be the default constructor.

2016-12-09  Geoffrey Garen  <ggaren@apple.com>

        Moved OrdinalNumber into its own file
        https://bugs.webkit.org/show_bug.cgi?id=165663

        Reviewed by Saam Barati.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/text/OrdinalNumber.h: Copied from Source/WTF/wtf/text/TextPosition.h.
        (WTF::TextPosition::TextPosition): Deleted.
        (WTF::TextPosition::operator==): Deleted.
        (WTF::TextPosition::operator!=): Deleted.
        (WTF::TextPosition::minimumPosition): Deleted.
        (WTF::TextPosition::belowRangePosition): Deleted.
        * wtf/text/TextPosition.h:
        (WTF::OrdinalNumber::fromZeroBasedInt): Deleted.
        (WTF::OrdinalNumber::fromOneBasedInt): Deleted.
        (WTF::OrdinalNumber::OrdinalNumber): Deleted.
        (WTF::OrdinalNumber::zeroBasedInt): Deleted.
        (WTF::OrdinalNumber::oneBasedInt): Deleted.
        (WTF::OrdinalNumber::operator==): Deleted.
        (WTF::OrdinalNumber::operator!=): Deleted.
        (WTF::OrdinalNumber::first): Deleted.
        (WTF::OrdinalNumber::beforeFirst): Deleted.

2016-12-08  David Kilzer  <ddkilzer@apple.com>

        Always check the return value of pthread_key_create()
        <https://webkit.org/b/165274>

        Reviewed by Darin Adler.

        * wtf/ThreadIdentifierDataPthreads.cpp:
        (WTF::ThreadIdentifierData::initializeOnce): Make the code more
        readable by assigning a variable to the result of
        pthread_key_create().  This matches the idiom used elsewhere.

2016-12-08  Keith Miller  <keith_miller@apple.com>

        Add 64-bit signed LEB decode method
        https://bugs.webkit.org/show_bug.cgi?id=165630

        Reviewed by Ryosuke Niwa.

        Add int64 LEB decode and fix some 64-bit specific issues
        with the decoder. There is also a fix where we would allow
        LEBs with canonical length + 1 size that is fixed by this
        patch.

        * wtf/LEBDecoder.h:
        (WTF::LEBDecoder::decodeUInt):
        (WTF::LEBDecoder::decodeInt):
        (WTF::LEBDecoder::decodeUInt32):
        (WTF::LEBDecoder::decodeUInt64):
        (WTF::LEBDecoder::decodeInt32):
        (WTF::LEBDecoder::decodeInt64):

2016-12-08  Anders Carlsson  <andersca@apple.com>

        Defer sending Mach messages if the queue is full
        https://bugs.webkit.org/show_bug.cgi?id=165622
        rdar://problem/29518036

        Reviewed by Brady Eidson.

        Add new SPI.

        * wtf/spi/darwin/XPCSPI.h:

2016-12-06  Filip Pizlo  <fpizlo@apple.com>

        Concurrent GC should be stable enough to land enabled on X86_64
        https://bugs.webkit.org/show_bug.cgi?id=164990

        Reviewed by Geoffrey Garen.
        
        Adds the ability to say:
        
        auto locker = holdLock(any type of lock)
        
        Instead of having to say:
        
        Locker<LockType> locker(locks of type LockType)
        
        I think that we should use "auto locker = holdLock(lock)" as the default way that we acquire
        locks unless we need to use a special locker type.
        
        This also adds the ability to safepoint a lock. Safepointing a lock is basically a super fast
        way of unlocking it fairly and then immediately relocking it - i.e. letting anyone who is
        waiting to run without losing steam of there is noone waiting.

        * wtf/Lock.cpp:
        (WTF::LockBase::safepointSlow):
        * wtf/Lock.h:
        (WTF::LockBase::safepoint):
        * wtf/LockAlgorithm.h:
        (WTF::LockAlgorithm::safepointFast):
        (WTF::LockAlgorithm::safepoint):
        (WTF::LockAlgorithm::safepointSlow):
        * wtf/Locker.h:
        (WTF::AbstractLocker::AbstractLocker):
        (WTF::Locker::tryLock):
        (WTF::Locker::operator bool):
        (WTF::Locker::Locker):
        (WTF::Locker::operator=):
        (WTF::holdLock):
        (WTF::tryHoldLock):

2016-12-08  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r209489.

        Likely caused large regressions on JetStream, Sunspider and
        Speedometer

        Reverted changeset:

        "Add system trace points for JavaScript VM entry/exit"
        https://bugs.webkit.org/show_bug.cgi?id=165550
        http://trac.webkit.org/changeset/209489

2016-12-07  Simon Fraser  <simon.fraser@apple.com>

        Add system trace points for JavaScript VM entry/exit
        https://bugs.webkit.org/show_bug.cgi?id=165550

        Reviewed by Tim Horton.
        
        Add trace points for entry/exit into/out of the JS VM.

        * wtf/SystemTracing.h:

2016-12-06  Alexey Proskuryakov  <ap@apple.com>

        Correct SDKROOT values in xcconfig files
        https://bugs.webkit.org/show_bug.cgi?id=165487
        rdar://problem/29539209

        Reviewed by Dan Bernstein.

        Fix suggested by Dan Bernstein.

        * Configurations/DebugRelease.xcconfig:

2016-12-06  Michael Saboff  <msaboff@apple.com>

        REGRESSION(r209399): Causes crashes when dumping JIT disassembly
        https://bugs.webkit.org/show_bug.cgi?id=165483

        Reviewed by Geoffrey Garen.

        Fixed the RELEASE_ASSERT() to check that the 6 character string is terminated by a null
        character.

        * wtf/SixCharacterHash.cpp:
        (WTF::sixCharacterHashStringToInteger):

2016-12-04  Darin Adler  <darin@apple.com>

        Use ASCIICType more, and improve it a little bit
        https://bugs.webkit.org/show_bug.cgi?id=165360

        Reviewed by Sam Weinig.

        * wtf/ASCIICType.h: Added declarations of all the functions to the top of the file,
        so we have a list of what's available, not just a mix of that and the implementation.

        * wtf/HexNumber.h:
        (WTF::Internal::hexDigitsForMode): Moved lowerHexDigits and upperHexDigits
        inside this function.
        (WTF::appendByteAsHex): Use auto.
        (WTF::placeByteAsHexCompressIfPossible): Ditto.
        (WTF::placeByteAsHex): Ditto.
        (WTF::appendUnsignedAsHex): Ditto.
        (WTF::appendUnsigned64AsHex): Ditto.
        (WTF::appendUnsignedAsHexFixedSize): Ditto.
        (WTF::isHexDigit): Deleted.
        (WTF::uncheckedHexDigit): Deleted.
        (WTF::hexDigitValue): Deleted.
        (WTF::uncheckedHexDigitValue): Deleted.

        * wtf/SixCharacterHash.cpp:
        (WTF::sixCharacterHashStringToInteger): Use isASCIIUpper, isASCIILower, and
        isASCIIDigit. Also added some FIXMEs; for some reason this function uses
        RELEASE_ASSERT to abort if the passed-in string is not six characters long,
        and it's not clear to me why this is so critical to assert.
        (WTF::integerToSixCharacterHashString): Moved the table inside this function,
        obviating the need for a macro named TABLE.

        * wtf/dtoa/bignum.cc:
        (WTF::double_conversion::HexCharValue): Deleted.
        (WTF::double_conversion::Bignum::AssignHexString): Use toASCIIHexValue.
        * wtf/dtoa/double-conversion.cc:
        (WTF::double_conversion::StringToDoubleConverter::StringToDouble): Use isASCIIDigit.

        * wtf/text/StringBuilder.cpp:
        (WTF::appendQuotedJSONStringInternal): Use upperNibbleToASCIIHexDigit and
        lowerNibbleToASCIIHexDigit.

        * wtf/text/StringImpl.cpp:
        (WTF::StringImpl::convertToUppercaseWithoutLocale): Use toASCIIUpper.
        Removed the workaround for a bug that was fixed in Visual Studio 2013.

2016-12-05  Joseph Pecoraro  <pecoraro@apple.com>

        REGRESSION(r208985): SafariForWebKitDevelopment Symbol Not Found looking for method with WTF::Optional
        https://bugs.webkit.org/show_bug.cgi?id=165351

        Reviewed by Yusuke Suzuki.

        Include a slimmed down version of WTF::Optional which older versions
        of Safari still depend on for a JavaScriptCore exported symbol.
        To prevent misuse name it WTF::DeprecatedOptional and use it only in
        the one instance it is needed.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/DeprecatedOptional.h: Added.
        (WTF::Optional::operator bool):
        (WTF::Optional::value):
        (WTF::Optional::asPtr):

2016-12-05  Konstantin Tokarev  <annulen@yandex.ru>

        Add __STDC_FORMAT_MACROS before inttypes.h is included
        https://bugs.webkit.org/show_bug.cgi?id=165374

        We need formatting macros like PRIu64 to be available in all places where
        inttypes.h header is used. All these usages get inttypes.h definitions
        via wtf/Assertions.h header, except SQLiteFileSystem.cpp where formatting
        macros are not used anymore since r185129.

        This patch fixes multiple build errors with MinGW and reduces number of
        independent __STDC_FORMAT_MACROS uses in the code base.

        Reviewed by Darin Adler.

        * wtf/Assertions.h: Define __STDC_FORMAT_MACROS.
        * wtf/StdLibExtras.h: Remove definition of PRId64 for Windows, as we
        have __STDC_FORMAT_MACROS defined now.

2016-12-03  Yusuke Suzuki  <utatane.tea@gmail.com>

        Refactor SymbolImpl layout
        https://bugs.webkit.org/show_bug.cgi?id=165247

        Reviewed by Darin Adler.

        This patch moves SymbolImpl initialization from StringImpl to SymbolImpl.
        In SymbolImpl, we create the appropriate fields. At that time, these fields
        should be aligned to the BufferSubstring StringImpl.

        And we newly create the `m_flags` in SymbolImpl. Instead of using special
        StringImpl::null(), we store s_flagIsNullSymbol flag here. In WTF, we have
        the invariant that StringImpl::empty() is the only atomic empty string.
        But StringImpl::null() breaks this invariant. Using a special flag is safer
        way to represent the null Symbol `Symbol()`.

        * WTF.xcodeproj/project.pbxproj:
        * wtf/CMakeLists.txt:
        * wtf/StdLibExtras.h:
        (WTF::roundUpToMultipleOfImpl0):
        (WTF::roundUpToMultipleOfImpl):
        (WTF::roundUpToMultipleOf):
        * wtf/text/StringImpl.cpp:
        (WTF::StringImpl::~StringImpl):
        (WTF::StringImpl::createSymbol): Deleted.
        (WTF::StringImpl::createNullSymbol): Deleted.
        * wtf/text/StringImpl.h:
        (WTF::StringImpl::isAtomic):
        (WTF::StringImpl::StringImpl):
        (WTF::StringImpl::requiresCopy):
        (WTF::StringImpl::isNullSymbol): Deleted.
        (WTF::StringImpl::symbolAwareHash): Deleted.
        (WTF::StringImpl::existingSymbolAwareHash): Deleted.
        (WTF::StringImpl::null): Deleted.
        (WTF::StringImpl::extractFoldedStringInSymbol): Deleted.
        (WTF::StringImpl::symbolRegistry): Deleted.
        (WTF::StringImpl::hashForSymbol): Deleted.
        * wtf/text/StringStatics.cpp:
        (WTF::StringImpl::nextHashForSymbol): Deleted.
        * wtf/text/SymbolImpl.cpp: Copied from Source/WTF/wtf/text/SymbolRegistry.cpp.
        (WTF::SymbolImpl::nextHashForSymbol):
        (WTF::SymbolImpl::create):
        (WTF::SymbolImpl::createNullSymbol):
        * wtf/text/SymbolImpl.h:
        (WTF::SymbolImpl::hashForSymbol):
        (WTF::SymbolImpl::symbolRegistry):
        (WTF::SymbolImpl::isNullSymbol):
        (WTF::SymbolImpl::extractFoldedString):
        (WTF::SymbolImpl::SymbolImpl):
        (WTF::StringImpl::symbolAwareHash):
        (WTF::StringImpl::existingSymbolAwareHash):
        * wtf/text/SymbolRegistry.cpp:
        (WTF::SymbolRegistry::~SymbolRegistry):
        (WTF::SymbolRegistry::symbolForKey):
        (WTF::SymbolRegistry::keyForSymbol):
        * wtf/text/UniquedStringImpl.h:
        (WTF::UniquedStringImpl::UniquedStringImpl):

2016-12-01  Yusuke Suzuki  <utatane.tea@gmail.com>

        Introduce StringImpl::StaticStringImpl with constexpr constructor
        https://bugs.webkit.org/show_bug.cgi?id=165093

        Reviewed