<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[195304] trunk/Source</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/195304">195304</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2016-01-19 12:16:01 -0800 (Tue, 19 Jan 2016)</dd>
</dl>
<h3>Log Message</h3>
<pre>Unreviewed, rolling out <a href="http://trac.webkit.org/projects/webkit/changeset/195141">r195141</a>.
Seems to cause crashes on iOS9 64bit
Reverted changeset:
"Fragmentation-free allocator for timeless and/or coupled
allocations."
https://bugs.webkit.org/show_bug.cgi?id=152696
http://trac.webkit.org/changeset/195141</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWTFChangeLog">trunk/Source/WTF/ChangeLog</a></li>
<li><a href="#trunkSourceWTFWTFvcxprojWTFvcxproj">trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj</a></li>
<li><a href="#trunkSourceWTFWTFvcxprojWTFvcxprojfilters">trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj.filters</a></li>
<li><a href="#trunkSourceWTFWTFxcodeprojprojectpbxproj">trunk/Source/WTF/WTF.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWTFwtfCMakeListstxt">trunk/Source/WTF/wtf/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorecssCSSGrammaryin">trunk/Source/WebCore/css/CSSGrammar.y.in</a></li>
<li><a href="#trunkSourceWebCorecssCSSKeyframesRuleh">trunk/Source/WebCore/css/CSSKeyframesRule.h</a></li>
<li><a href="#trunkSourceWebCorecssCSSParsercpp">trunk/Source/WebCore/css/CSSParser.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSParserh">trunk/Source/WebCore/css/CSSParser.h</a></li>
<li><a href="#trunkSourceWebCorecssCSSParserValuescpp">trunk/Source/WebCore/css/CSSParserValues.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSParserValuesh">trunk/Source/WebCore/css/CSSParserValues.h</a></li>
<li><a href="#trunkSourceWebCorecssCSSSelectorListcpp">trunk/Source/WebCore/css/CSSSelectorList.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSSelectorListh">trunk/Source/WebCore/css/CSSSelectorList.h</a></li>
<li><a href="#trunkSourceWebCorecssStylePropertiescpp">trunk/Source/WebCore/css/StyleProperties.cpp</a></li>
<li><a href="#trunkSourceWebCorecssStylePropertiesh">trunk/Source/WebCore/css/StyleProperties.h</a></li>
<li><a href="#trunkSourceWebCorecssStyleRulecpp">trunk/Source/WebCore/css/StyleRule.cpp</a></li>
<li><a href="#trunkSourceWebCorecssStyleRuleh">trunk/Source/WebCore/css/StyleRule.h</a></li>
<li><a href="#trunkSourceWebCorecssStyleSheetContentscpp">trunk/Source/WebCore/css/StyleSheetContents.cpp</a></li>
<li><a href="#trunkSourceWebCorecssStyleSheetContentsh">trunk/Source/WebCore/css/StyleSheetContents.h</a></li>
<li><a href="#trunkSourceWebCoredomSelectorQuerycpp">trunk/Source/WebCore/dom/SelectorQuery.cpp</a></li>
<li><a href="#trunkSourceWebCoredomSelectorQueryh">trunk/Source/WebCore/dom/SelectorQuery.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFontFaceElementcpp">trunk/Source/WebCore/svg/SVGFontFaceElement.cpp</a></li>
</ul>
<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWTFwtfBumpArenacpp">trunk/Source/WTF/wtf/BumpArena.cpp</a></li>
<li><a href="#trunkSourceWTFwtfBumpArenah">trunk/Source/WTF/wtf/BumpArena.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWTFChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/ChangeLog (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/ChangeLog        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WTF/ChangeLog        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2016-01-19 Chris Dumez <cdumez@apple.com>
+
+ Unreviewed, rolling out r195141.
+
+ Seems to cause crashes on iOS9 64bit
+
+ Reverted changeset:
+
+ "Fragmentation-free allocator for timeless and/or coupled
+ allocations."
+ https://bugs.webkit.org/show_bug.cgi?id=152696
+ http://trac.webkit.org/changeset/195141
+
</ins><span class="cx"> 2016-01-19 Enrica Casucci <enrica@apple.com>
</span><span class="cx">
</span><span class="cx"> Add support for DataDetectors in WK (iOS).
</span></span></pre></div>
<a id="trunkSourceWTFWTFvcxprojWTFvcxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -53,7 +53,6 @@
</span><span class="cx"> <ItemGroup>
</span><span class="cx"> <ClCompile Include="..\wtf\Assertions.cpp" />
</span><span class="cx"> <ClCompile Include="..\wtf\BitVector.cpp" />
</span><del>- <ClCompile Include="..\wtf\BumpArena.cpp" />
</del><span class="cx"> <ClCompile Include="..\wtf\CompilationThread.cpp" />
</span><span class="cx"> <ClCompile Include="..\wtf\CryptographicUtilities.cpp" />
</span><span class="cx"> <ClCompile Include="..\wtf\CryptographicallyRandomNumber.cpp" />
</span></span></pre></div>
<a id="trunkSourceWTFWTFvcxprojWTFvcxprojfilters"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj.filters (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj.filters        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj.filters        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -120,9 +120,6 @@
</span><span class="cx"> <ClCompile Include="..\wtf\BitVector.cpp">
</span><span class="cx"> <Filter>wtf</Filter>
</span><span class="cx"> </ClCompile>
</span><del>- <ClCompile Include="..\wtf\BumpArena.cpp">
- <Filter>wtf</Filter>
- </ClCompile>
</del><span class="cx"> <ClCompile Include="..\wtf\CryptographicUtilities.cpp">
</span><span class="cx"> <Filter>wtf</Filter>
</span><span class="cx"> </ClCompile>
</span></span></pre></div>
<a id="trunkSourceWTFWTFxcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/WTF.xcodeproj/project.pbxproj (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/WTF.xcodeproj/project.pbxproj        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WTF/WTF.xcodeproj/project.pbxproj        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -288,8 +288,6 @@
</span><span class="cx">                 A8A47486151A825B004123FF /* WTFThreadData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A4737A151A825B004123FF /* WTFThreadData.cpp */; };
</span><span class="cx">                 A8A47487151A825B004123FF /* WTFThreadData.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4737B151A825B004123FF /* WTFThreadData.h */; };
</span><span class="cx">                 A8A4748C151A8264004123FF /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4748B151A8264004123FF /* config.h */; };
</span><del>-                AD9C50C11C3C1D5D005FBF1E /* BumpArena.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD9C50BF1C3C1D5D005FBF1E /* BumpArena.cpp */; };
-                AD9C50C21C3C1D5D005FBF1E /* BumpArena.h in Headers */ = {isa = PBXBuildFile; fileRef = AD9C50C01C3C1D5D005FBF1E /* BumpArena.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><span class="cx">                 B38FD7BD168953E80065C969 /* FeatureDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = B38FD7BC168953E80065C969 /* FeatureDefines.h */; };
</span><span class="cx">                 C4F8A93719C65EB400B2B15D /* Stopwatch.h in Headers */ = {isa = PBXBuildFile; fileRef = C4F8A93619C65EB400B2B15D /* Stopwatch.h */; };
</span><span class="cx">                 CD5497AC15857D0300B5BC30 /* MediaTime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD5497AA15857D0300B5BC30 /* MediaTime.cpp */; };
</span><span class="lines">@@ -604,8 +602,6 @@
</span><span class="cx">                 A8A4737A151A825B004123FF /* WTFThreadData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WTFThreadData.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 A8A4737B151A825B004123FF /* WTFThreadData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WTFThreadData.h; sourceTree = "<group>"; };
</span><span class="cx">                 A8A4748B151A8264004123FF /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; };
</span><del>-                AD9C50BF1C3C1D5D005FBF1E /* BumpArena.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BumpArena.cpp; sourceTree = "<group>"; };
-                AD9C50C01C3C1D5D005FBF1E /* BumpArena.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BumpArena.h; sourceTree = "<group>"; };
</del><span class="cx">                 B38FD7BC168953E80065C969 /* FeatureDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FeatureDefines.h; sourceTree = "<group>"; };
</span><span class="cx">                 C4F8A93619C65EB400B2B15D /* Stopwatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Stopwatch.h; sourceTree = "<group>"; };
</span><span class="cx">                 CD5497AA15857D0300B5BC30 /* MediaTime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaTime.cpp; sourceTree = "<group>"; };
</span><span class="lines">@@ -763,8 +759,6 @@
</span><span class="cx">                                 A8A47265151A825A004123FF /* BloomFilter.h */,
</span><span class="cx">                                 0F93274A1C17F4B700CF6564 /* Box.h */,
</span><span class="cx">                                 0F4570441BE834410062A629 /* BubbleSort.h */,
</span><del>-                                AD9C50BF1C3C1D5D005FBF1E /* BumpArena.cpp */,
-                                AD9C50C01C3C1D5D005FBF1E /* BumpArena.h */,
</del><span class="cx">                                 A8A47267151A825A004123FF /* BumpPointerAllocator.h */,
</span><span class="cx">                                 EB95E1EF161A72410089A2F5 /* ByteOrder.h */,
</span><span class="cx">                                 A8A4726A151A825A004123FF /* CheckedArithmetic.h */,
</span><span class="lines">@@ -1271,7 +1265,6 @@
</span><span class="cx">                                 A8A4742C151A825B004123FF /* StringExtras.h in Headers */,
</span><span class="cx">                                 A8A4743F151A825B004123FF /* StringHash.h in Headers */,
</span><span class="cx">                                 A748745417A0BDAE00FA04CB /* StringHashDumpContext.h in Headers */,
</span><del>-                                AD9C50C21C3C1D5D005FBF1E /* BumpArena.h in Headers */,
</del><span class="cx">                                 A8A47441151A825B004123FF /* StringImpl.h in Headers */,
</span><span class="cx">                                 A8A47442151A825B004123FF /* StringOperators.h in Headers */,
</span><span class="cx">                                 0FDDBFA81666DFA300C55FEF /* StringPrintStream.h in Headers */,
</span><span class="lines">@@ -1415,7 +1408,6 @@
</span><span class="cx">                                 A5BA15FA182435A600A82E69 /* AtomicStringImplCF.cpp in Sources */,
</span><span class="cx">                                 9BC70F05176C379D00101DEC /* AtomicStringTable.cpp in Sources */,
</span><span class="cx">                                 1469419D16EAB10A0024E146 /* AutodrainedPoolMac.mm in Sources */,
</span><del>-                                AD9C50C11C3C1D5D005FBF1E /* BumpArena.cpp in Sources */,
</del><span class="cx">                                 8134013815B092FD001FF0B8 /* Base64.cpp in Sources */,
</span><span class="cx">                                 A8A473A8151A825B004123FF /* bignum-dtoa.cc in Sources */,
</span><span class="cx">                                 A8A473AA151A825B004123FF /* bignum.cc in Sources */,
</span></span></pre></div>
<a id="trunkSourceWTFwtfBumpArenacpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WTF/wtf/BumpArena.cpp (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/BumpArena.cpp        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WTF/wtf/BumpArena.cpp        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -1,368 +0,0 @@
</span><del>-/*
- * Copyright (C) 2016 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "BumpArena.h"
-
-#include <wtf/HashSet.h>
-#include <wtf/NeverDestroyed.h>
-#include <wtf/Vector.h>
-
-#if OS(UNIX)
-#define USE_BUMPARENA 1
-#include <sys/mman.h>
-#else
-#define USE_BUMPARENA 0
-#endif
-
-#if OS(DARWIN)
-#include <mach/vm_statistics.h>
-// FIXME: Figure out which VM tag to use.
-#define BUMPARENA_VM_TAG VM_MAKE_TAG(VM_MEMORY_APPLICATION_SPECIFIC_1)
-#else
-#define BUMPARENA_VM_TAG -1
-#endif
-
-#if DEBUG_BUMPARENA
-#include <notify.h>
-#endif
-
-namespace WTF {
-
-#if USE(BUMPARENA)
-
-static const size_t blockSize = 4096;
-static const size_t blockMask = ~(blockSize - 1);
-
-class BumpArena::Block {
-public:
- static constexpr size_t capacity() { return blockSize - sizeof(Block); }
-
- static RefPtr<Block> create(BumpArena&);
- ~Block();
-
- void ref();
- void deref();
-
- BumpArena& arena() { return m_arena.get(); }
-
- static Block& blockFor(const void*);
-
- char* payloadStart() { return reinterpret_cast<char*>(&m_data); }
-
-#if DEBUG_BUMPARENA
- void dump();
-#endif
-
-private:
- friend class BumpArena;
- explicit Block(BumpArena&);
-
- Ref<BumpArena> m_arena;
-
- unsigned m_refCount { 1 };
-
-#if DEBUG_BUMPARENA
- size_t m_bytesAvailable { 0 };
-#endif
-
-#if COMPILER(MSVC)
-#pragma warning(push)
-#pragma warning(disable: 4200) // Disable "zero-sized array in struct/union" warning
-#endif
- char* m_data[0];
-#if COMPILER(MSVC)
-#pragma warning(pop)
-#endif
-};
-
-#if DEBUG_BUMPARENA
-static HashSet<BumpArena*>& arenas()
-{
- static NeverDestroyed<HashSet<BumpArena*>> set;
- return set;
-}
-#endif
-
-BumpArena::Block::Block(BumpArena& arena)
- : m_arena(arena)
-{
-#if DEBUG_BUMPARENA
- m_arena->m_liveBlocks.add(this);
-#endif
-}
-
-BumpArena::Block::~Block()
-{
-#if DEBUG_BUMPARENA
- m_arena->m_liveBlocks.remove(this);
-#endif
-}
-
-void BumpArena::Block::ref()
-{
- ++m_refCount;
-}
-
-struct BlockAllocator {
- static const size_t vmSize = 128 * MB;
-
- BlockAllocator();
-
- void* allocateBlock();
- void deallocateBlock(void*);
-
- bool isAllocation(const void* p) const;
-
- char* vmBase;
- char* vmEnd;
- char* nextBlock;
- Vector<void*> freeList;
-};
-
-BlockAllocator::BlockAllocator()
-{
- vmBase = reinterpret_cast<char*>(mmap(0, vmSize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, BUMPARENA_VM_TAG, 0));
- RELEASE_ASSERT(vmBase != MAP_FAILED);
- vmEnd = vmBase + vmSize;
- nextBlock = reinterpret_cast<char*>(roundUpToMultipleOf<blockSize>(reinterpret_cast<uintptr_t>(vmBase)));
-}
-
-bool BlockAllocator::isAllocation(const void* p) const
-{
- return p >= vmBase && p <= vmEnd;
-}
-
-static BlockAllocator& blockAllocator()
-{
- static NeverDestroyed<BlockAllocator> allocator;
- return allocator;
-}
-
-void* BlockAllocator::allocateBlock()
-{
- if (!freeList.isEmpty()) {
- void* block = freeList.takeLast();
-#if OS(DARWIN)
- while (madvise(block, blockSize, MADV_FREE_REUSE) == -1 && errno == EAGAIN) { }
-#else
- while (madvise(block, blockSize, MADV_NORMAL) == -1 && errno == EAGAIN) { }
-#endif
- return block;
- }
- char* newNextBlock = nextBlock + blockSize;
- if (newNextBlock >= vmEnd)
- return nullptr;
- void* block = nextBlock;
- nextBlock += blockSize;
- return block;
-}
-
-void BlockAllocator::deallocateBlock(void* block)
-{
-#if OS(DARWIN)
- while (madvise(block, blockSize, MADV_FREE_REUSABLE) == -1 && errno == EAGAIN) { }
-#else
- while (madvise(block, blockSize, MADV_DONTNEED) == -1 && errno == EAGAIN) { }
-#endif
- freeList.append(block);
-}
-
-void BumpArena::Block::deref()
-{
- --m_refCount;
-
- if (!m_refCount) {
- this->~Block();
- blockAllocator().deallocateBlock(this);
- } else if (m_refCount == 1 && m_arena->m_currentBlock == this) {
- m_arena->m_currentPayloadEnd = nullptr;
- m_arena->m_currentRemaining = 0;
- // Break the ref-cycle between BumpArena and this Block.
- m_arena->m_currentBlock = nullptr;
- }
-}
-
-RefPtr<BumpArena::Block> BumpArena::Block::create(BumpArena& arena)
-{
- void* allocation = blockAllocator().allocateBlock();
- if (!allocation)
- return nullptr;
- return adoptRef(*new (NotNull, allocation) Block(arena));
-}
-
-#if DEBUG_BUMPARENA
-void BumpArena::Block::dump()
-{
- WTFLogAlways(" %10s %p - %3u, %8lu bytes available\n", m_arena->m_currentBlock == this ? "[current]" : "", this, m_refCount, m_bytesAvailable);
-}
-
-void BumpArena::dump()
-{
- WTFLogAlways("BumpArena{%p}", this);
- WTFLogAlways(" refCount: %u\n", refCount());
- WTFLogAlways(" Blocks (%d)\n", m_liveBlocks.size());
- for (Block* block : m_liveBlocks) {
- if (block == m_currentBlock)
- continue;
- block->dump();
- }
- if (m_currentBlock)
- m_currentBlock->dump();
-}
-#endif
-
-Ref<BumpArena> BumpArena::create()
-{
- return adoptRef(*new BumpArena);
-}
-
-BumpArena::BumpArena()
-{
-#if DEBUG_BUMPARENA
- arenas().add(this);
- static std::once_flag once;
- std::call_once(once, [] {
- int d;
- notify_register_dispatch("com.apple.WebKit.BumpArena.Dump", &d, dispatch_get_main_queue(), ^(int) {
- for (BumpArena* arena : arenas())
- arena->dump();
- });
- });
-#endif
-}
-
-BumpArena::~BumpArena()
-{
-#if DEBUG_BUMPARENA
- arenas().remove(this);
-#endif
-}
-
-void* BumpArena::allocateSlow(size_t size)
-{
- if (size > Block::capacity())
- return fastMalloc(size);
-
- m_currentBlock = Block::create(*this);
- if (!m_currentBlock) {
- m_currentPayloadEnd = nullptr;
- m_currentRemaining = 0;
- return fastMalloc(size);
- }
-
- m_currentPayloadEnd = m_currentBlock->payloadStart() + Block::capacity();
- m_currentRemaining = Block::capacity() - size;
-#if DEBUG_BUMPARENA
- m_currentBlock->m_bytesAvailable = m_currentRemaining;
-#endif
- m_currentBlock->ref();
- return m_currentPayloadEnd - m_currentRemaining - size;
-}
-
-void* BumpArena::allocate(size_t size)
-{
- size = roundUpToMultipleOf<8>(size);
- size_t currentRemaining = m_currentRemaining;
- if (size > currentRemaining)
- return allocateSlow(size);
- currentRemaining -= size;
- m_currentRemaining = currentRemaining;
-#if DEBUG_BUMPARENA
- m_currentBlock->m_bytesAvailable = m_currentRemaining;
-#endif
- m_currentBlock->ref();
- return m_currentPayloadEnd - currentRemaining - size;
-}
-
-void BumpArena::deallocate(void* p)
-{
- if (!p)
- return;
- if (blockAllocator().isAllocation(p))
- Block::blockFor(p).deref();
- else
- fastFree(p);
-}
-
-BumpArena::Block& BumpArena::Block::blockFor(const void* p)
-{
- return *reinterpret_cast<Block*>(reinterpret_cast<uintptr_t>(p) & blockMask);
-}
-
-BumpArena* BumpArena::arenaFor(const void* p)
-{
- ASSERT(p);
- if (!blockAllocator().isAllocation(p))
- return nullptr;
- return &Block::blockFor(p).arena();
-}
-
-void* BumpArena::allocate(BumpArena* arena, size_t size)
-{
- if (arena)
- return arena->allocate(size);
- return fastMalloc(size);
-}
-
-#else // !USE(BUMPARENA) below
-
-class BumpArena::Block {
-public:
- void ref() { }
- void deref() { }
-};
-
-Ref<BumpArena> BumpArena::create()
-{
- return adoptRef(*new BumpArena);
-}
-
-BumpArena::BumpArena()
-{
-}
-
-BumpArena::~BumpArena()
-{
-}
-
-BumpArena* BumpArena::arenaFor(const void*)
-{
- return nullptr;
-}
-
-void* BumpArena::allocate(BumpArena*, size_t size)
-{
- return fastMalloc(size);
-}
-
-void BumpArena::deallocate(void* p)
-{
- fastFree(p);
-}
-
-#endif
-
-} // namespace WTF
</del></span></pre></div>
<a id="trunkSourceWTFwtfBumpArenah"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WTF/wtf/BumpArena.h (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/BumpArena.h        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WTF/wtf/BumpArena.h        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -1,104 +0,0 @@
</span><del>-/*
- * Copyright (C) 2016 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef BumpArena_h
-#define BumpArena_h
-
-#include <wtf/HashSet.h>
-#include <wtf/RefCounted.h>
-#include <wtf/RefPtr.h>
-
-#define DEBUG_BUMPARENA 0
-
-namespace WTF {
-
-class BumpArena : public RefCounted<BumpArena> {
-public:
- WTF_EXPORT_PRIVATE static Ref<BumpArena> create();
- WTF_EXPORT_PRIVATE ~BumpArena();
-
- WTF_EXPORT_PRIVATE static void* allocate(BumpArena*, size_t);
- WTF_EXPORT_PRIVATE static void deallocate(void*);
-
- WTF_EXPORT_PRIVATE static BumpArena* arenaFor(const void*);
-
-private:
- BumpArena();
- void* allocate(size_t);
- void* allocateSlow(size_t);
-
- class Block;
- friend class Block;
- RefPtr<Block> m_currentBlock;
-
- char* m_currentPayloadEnd { nullptr };
- size_t m_currentRemaining { 0 };
-
-#if DEBUG_BUMPARENA
- void dump();
- HashSet<Block*> m_liveBlocks;
-#endif
-};
-
-#define WTF_MAKE_BUMPARENA_ALLOCATED \
-public: \
- void* operator new(size_t, void* p) { return p; } \
- void* operator new[](size_t, void* p) { return p; } \
- \
- void* operator new(size_t size) \
- { \
- return ::WTF::BumpArena::allocate(nullptr, size); \
- } \
- void* operator new(size_t size, BumpArena* arena) \
- { \
- return ::WTF::BumpArena::allocate(arena, size); \
- } \
- void operator delete(void* p) \
- { \
- ::WTF::BumpArena::deallocate(p); \
- } \
- \
- void* operator new[](size_t size) \
- { \
- return ::WTF::BumpArena::allocate(nullptr, size); \
- } \
- \
- void operator delete[](void* p) \
- { \
- ::WTF::BumpArena::deallocate(p); \
- } \
- void* operator new(size_t, NotNullTag, void* location) \
- { \
- ASSERT(location); \
- return location; \
- } \
-private: \
-typedef int __thisIsHereToForceASemicolonAfterThisMacro
-
-} // namespace WTF
-
-using WTF::BumpArena;
-
-#endif
</del></span></pre></div>
<a id="trunkSourceWTFwtfCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/CMakeLists.txt (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/CMakeLists.txt        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WTF/wtf/CMakeLists.txt        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -7,7 +7,6 @@
</span><span class="cx"> BitVector.h
</span><span class="cx"> Bitmap.h
</span><span class="cx"> BubbleSort.h
</span><del>- BumpArena.h
</del><span class="cx"> BumpPointerAllocator.h
</span><span class="cx"> ByteOrder.h
</span><span class="cx"> CompilationThread.h
</span><span class="lines">@@ -155,7 +154,6 @@
</span><span class="cx"> Assertions.cpp
</span><span class="cx"> Atomics.cpp
</span><span class="cx"> BitVector.cpp
</span><del>- BumpArena.cpp
</del><span class="cx"> CompilationThread.cpp
</span><span class="cx"> CryptographicUtilities.cpp
</span><span class="cx"> CryptographicallyRandomNumber.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WebCore/ChangeLog        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2016-01-19 Chris Dumez <cdumez@apple.com>
+
+ Unreviewed, rolling out r195141.
+
+ Seems to cause crashes on iOS9 64bit
+
+ Reverted changeset:
+
+ "Fragmentation-free allocator for timeless and/or coupled
+ allocations."
+ https://bugs.webkit.org/show_bug.cgi?id=152696
+ http://trac.webkit.org/changeset/195141
+
</ins><span class="cx"> 2015-12-07 Jer Noble <jer.noble@apple.com>
</span><span class="cx">
</span><span class="cx"> [EME] Correctly report errors when generating key requests from AVContentKeySession.
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSGrammaryin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSGrammar.y.in (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSGrammar.y.in        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WebCore/css/CSSGrammar.y.in        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -403,7 +403,7 @@
</span><span class="cx"> WEBKIT_SELECTOR_SYM '{' maybe_space selector_list '}' {
</span><span class="cx"> if ($4) {
</span><span class="cx"> if (parser->m_selectorListForParseSelector)
</span><del>- parser->m_selectorListForParseSelector->adoptSelectorVector(parser->arena(), *$4);
</del><ins>+ parser->m_selectorListForParseSelector->adoptSelectorVector(*$4);
</ins><span class="cx"> parser->recycleSelectorVector(std::unique_ptr<Vector<std::unique_ptr<CSSParserSelector>>>($4));
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -1353,7 +1353,7 @@
</span><span class="cx"> #if ENABLE_VIDEO_TRACK
</span><span class="cx"> // used by ::cue(:past/:future)
</span><span class="cx"> | ':' ':' CUEFUNCTION maybe_space simple_selector_list maybe_space ')' {
</span><del>- $$ = CSSParserSelector::parsePseudoElementCueFunctionSelector(parser->arena(), $3, $5);
</del><ins>+ $$ = CSSParserSelector::parsePseudoElementCueFunctionSelector($3, $5);
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> // use by :-webkit-any.
</span><span class="lines">@@ -1366,7 +1366,7 @@
</span><span class="cx"> if ($4) {
</span><span class="cx"> auto selector = std::make_unique<CSSParserSelector>();
</span><span class="cx"> selector->setMatch(CSSSelector::PseudoClass);
</span><del>- selector->adoptSelectorVector(parser->arena(), *std::unique_ptr<Vector<std::unique_ptr<CSSParserSelector>>>($4));
</del><ins>+ selector->adoptSelectorVector(*std::unique_ptr<Vector<std::unique_ptr<CSSParserSelector>>>($4));
</ins><span class="cx"> selector->setPseudoClassValue($2);
</span><span class="cx"> if (selector->pseudoClassType() == CSSSelector::PseudoClassAny)
</span><span class="cx"> $$ = selector.release();
</span><span class="lines">@@ -1377,7 +1377,7 @@
</span><span class="cx"> if ($4) {
</span><span class="cx"> auto selector = std::make_unique<CSSParserSelector>();
</span><span class="cx"> selector->setMatch(CSSSelector::PseudoClass);
</span><del>- selector->adoptSelectorVector(parser->arena(), *std::unique_ptr<Vector<std::unique_ptr<CSSParserSelector>>>($4));
</del><ins>+ selector->adoptSelectorVector(*std::unique_ptr<Vector<std::unique_ptr<CSSParserSelector>>>($4));
</ins><span class="cx"> selector->setPseudoClassValue($2);
</span><span class="cx"> if (selector->pseudoClassType() == CSSSelector::PseudoClassMatches)
</span><span class="cx"> $$ = selector.release();
</span><span class="lines">@@ -1427,7 +1427,7 @@
</span><span class="cx"> selector->setArgument($4);
</span><span class="cx"> selector->setPseudoClassValue($2);
</span><span class="cx"> if (ending)
</span><del>- selector->adoptSelectorVector(parser->arena(), *ending);
</del><ins>+ selector->adoptSelectorVector(*ending);
</ins><span class="cx"> CSSSelector::PseudoClassType pseudoClassType = selector->pseudoClassType();
</span><span class="cx"> if (pseudoClassType == CSSSelector::PseudoClassNthChild || pseudoClassType == CSSSelector::PseudoClassNthLastChild)
</span><span class="cx"> $$ = selector.release();
</span><span class="lines">@@ -1442,7 +1442,7 @@
</span><span class="cx"> selector->setArgument(AtomicString::number($4 * $5));
</span><span class="cx"> selector->setPseudoClassValue($2);
</span><span class="cx"> if (ending)
</span><del>- selector->adoptSelectorVector(parser->arena(), *ending);
</del><ins>+ selector->adoptSelectorVector(*ending);
</ins><span class="cx"> CSSSelector::PseudoClassType pseudoClassType = selector->pseudoClassType();
</span><span class="cx"> if (pseudoClassType == CSSSelector::PseudoClassNthChild || pseudoClassType == CSSSelector::PseudoClassNthLastChild)
</span><span class="cx"> $$ = selector.release();
</span><span class="lines">@@ -1457,7 +1457,7 @@
</span><span class="cx"> selector->setArgument($4);
</span><span class="cx"> selector->setPseudoClassValue($2);
</span><span class="cx"> if (ending)
</span><del>- selector->adoptSelectorVector(parser->arena(), *ending);
</del><ins>+ selector->adoptSelectorVector(*ending);
</ins><span class="cx"> CSSSelector::PseudoClassType pseudoClassType = selector->pseudoClassType();
</span><span class="cx"> if (pseudoClassType == CSSSelector::PseudoClassNthChild || pseudoClassType == CSSSelector::PseudoClassNthLastChild)
</span><span class="cx"> $$ = selector.release();
</span><span class="lines">@@ -1511,7 +1511,7 @@
</span><span class="cx"> auto selector = std::make_unique<CSSParserSelector>();
</span><span class="cx"> selector->setMatch(CSSSelector::PseudoClass);
</span><span class="cx"> selector->setPseudoClassValue($2);
</span><del>- selector->adoptSelectorVector(parser->arena(), *list);
</del><ins>+ selector->adoptSelectorVector(*list);
</ins><span class="cx"> if (selector->pseudoClassType() == CSSSelector::PseudoClassNot)
</span><span class="cx"> $$ = selector.release();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSKeyframesRuleh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSKeyframesRule.h (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSKeyframesRule.h        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WebCore/css/CSSKeyframesRule.h        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx">
</span><span class="cx"> class StyleRuleKeyframes : public StyleRuleBase {
</span><span class="cx"> public:
</span><del>- static Ref<StyleRuleKeyframes> create(BumpArena* arena) { return adoptRef(*new (arena) StyleRuleKeyframes); }
</del><ins>+ static Ref<StyleRuleKeyframes> create() { return adoptRef(*new StyleRuleKeyframes()); }
</ins><span class="cx">
</span><span class="cx"> ~StyleRuleKeyframes();
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSParser.cpp (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSParser.cpp        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WebCore/css/CSSParser.cpp        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -1644,7 +1644,7 @@
</span><span class="cx"> if (unusedEntries)
</span><span class="cx"> results.remove(0, unusedEntries);
</span><span class="cx">
</span><del>- return ImmutableStyleProperties::create(arena(), results.data(), results.size(), m_context.mode);
</del><ins>+ return ImmutableStyleProperties::create(results.data(), results.size(), m_context.mode);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void CSSParser::addPropertyWithPrefixingVariant(CSSPropertyID propId, PassRefPtr<CSSValue> value, bool important, bool implicit)
</span><span class="lines">@@ -12701,9 +12701,9 @@
</span><span class="cx"> if (!media) {
</span><span class="cx"> // To comply with w3c test suite expectation, create an empty media query
</span><span class="cx"> // even when it is syntactically incorrect.
</span><del>- rule = StyleRuleMedia::create(arena(), MediaQuerySet::create(), emptyRules);
</del><ins>+ rule = StyleRuleMedia::create(MediaQuerySet::create(), emptyRules);
</ins><span class="cx"> } else
</span><del>- rule = StyleRuleMedia::create(arena(), media, rules ? *rules : emptyRules);
</del><ins>+ rule = StyleRuleMedia::create(media, rules ? *rules : emptyRules);
</ins><span class="cx"> processAndAddNewRuleToSourceTreeIfNeeded();
</span><span class="cx"> return rule;
</span><span class="cx"> }
</span><span class="lines">@@ -12729,10 +12729,10 @@
</span><span class="cx"> conditionText = String(m_dataStart16.get() + conditionOffset, conditionLength).stripWhiteSpace();
</span><span class="cx">
</span><span class="cx"> if (rules)
</span><del>- rule = StyleRuleSupports::create(arena(), conditionText, conditionIsSupported, *rules);
</del><ins>+ rule = StyleRuleSupports::create(conditionText, conditionIsSupported, *rules);
</ins><span class="cx"> else {
</span><span class="cx"> RuleList emptyRules;
</span><del>- rule = StyleRuleSupports::create(arena(), conditionText, conditionIsSupported, emptyRules);
</del><ins>+ rule = StyleRuleSupports::create(conditionText, conditionIsSupported, emptyRules);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> processAndAddNewRuleToSourceTreeIfNeeded();
</span><span class="lines">@@ -12841,7 +12841,7 @@
</span><span class="cx"> {
</span><span class="cx"> std::unique_ptr<Vector<RefPtr<StyleKeyframe>>> keyframes = WTFMove(popKeyframes);
</span><span class="cx"> m_allowImportRules = m_allowNamespaceDeclarations = false;
</span><del>- RefPtr<StyleRuleKeyframes> rule = StyleRuleKeyframes::create(arena());
</del><ins>+ RefPtr<StyleRuleKeyframes> rule = StyleRuleKeyframes::create();
</ins><span class="cx"> for (size_t i = 0; i < keyframes->size(); ++i)
</span><span class="cx"> rule->parserAppendKeyframe(keyframes->at(i));
</span><span class="cx"> rule->setName(name);
</span><span class="lines">@@ -12849,24 +12849,14 @@
</span><span class="cx"> return rule;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void CSSParser::setArena(BumpArena& arena)
-{
- m_arena = &arena;
-}
-
-BumpArena* CSSParser::arena()
-{
- return m_arena.get();
-}
-
</del><span class="cx"> RefPtr<StyleRuleBase> CSSParser::createStyleRule(Vector<std::unique_ptr<CSSParserSelector>>* selectors)
</span><span class="cx"> {
</span><span class="cx"> RefPtr<StyleRule> rule;
</span><span class="cx"> if (selectors) {
</span><span class="cx"> m_allowImportRules = false;
</span><span class="cx"> m_allowNamespaceDeclarations = false;
</span><del>- rule = StyleRule::create(arena(), m_lastSelectorLineNumber, createStyleProperties());
- rule->parserAdoptSelectorVector(arena(), *selectors);
</del><ins>+ rule = StyleRule::create(m_lastSelectorLineNumber, createStyleProperties());
+ rule->parserAdoptSelectorVector(*selectors);
</ins><span class="cx"> processAndAddNewRuleToSourceTreeIfNeeded();
</span><span class="cx"> } else
</span><span class="cx"> popRuleData();
</span><span class="lines">@@ -12889,7 +12879,7 @@
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span><span class="cx"> }
</span><del>- RefPtr<StyleRuleFontFace> rule = StyleRuleFontFace::create(arena(), createStyleProperties());
</del><ins>+ RefPtr<StyleRuleFontFace> rule = StyleRuleFontFace::create(createStyleProperties());
</ins><span class="cx"> clearProperties();
</span><span class="cx"> processAndAddNewRuleToSourceTreeIfNeeded();
</span><span class="cx"> return rule;
</span><span class="lines">@@ -12973,10 +12963,10 @@
</span><span class="cx"> m_allowImportRules = m_allowNamespaceDeclarations = false;
</span><span class="cx"> RefPtr<StyleRulePage> rule;
</span><span class="cx"> if (pageSelector) {
</span><del>- rule = StyleRulePage::create(arena(), createStyleProperties());
</del><ins>+ rule = StyleRulePage::create(createStyleProperties());
</ins><span class="cx"> Vector<std::unique_ptr<CSSParserSelector>> selectorVector;
</span><span class="cx"> selectorVector.append(WTFMove(pageSelector));
</span><del>- rule->parserAdoptSelectorVector(arena(), selectorVector);
</del><ins>+ rule->parserAdoptSelectorVector(selectorVector);
</ins><span class="cx"> processAndAddNewRuleToSourceTreeIfNeeded();
</span><span class="cx"> } else
</span><span class="cx"> popRuleData();
</span><span class="lines">@@ -13008,7 +12998,7 @@
</span><span class="cx">
</span><span class="cx"> m_allowImportRules = m_allowNamespaceDeclarations = false;
</span><span class="cx">
</span><del>- RefPtr<StyleRuleRegion> regionRule = StyleRuleRegion::create(arena(), regionSelector, *rules);
</del><ins>+ RefPtr<StyleRuleRegion> regionRule = StyleRuleRegion::create(regionSelector, *rules);
</ins><span class="cx">
</span><span class="cx"> if (isExtractingSourceData())
</span><span class="cx"> addNewRuleToSourceTree(CSSRuleSourceData::createUnknown());
</span><span class="lines">@@ -13282,7 +13272,7 @@
</span><span class="cx"> {
</span><span class="cx"> m_allowImportRules = m_allowNamespaceDeclarations = false;
</span><span class="cx">
</span><del>- RefPtr<StyleRuleViewport> rule = StyleRuleViewport::create(arena(), createStyleProperties());
</del><ins>+ RefPtr<StyleRuleViewport> rule = StyleRuleViewport::create(createStyleProperties());
</ins><span class="cx"> clearProperties();
</span><span class="cx">
</span><span class="cx"> processAndAddNewRuleToSourceTreeIfNeeded();
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSParserh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSParser.h (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSParser.h        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WebCore/css/CSSParser.h        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -36,7 +36,6 @@
</span><span class="cx"> #include "SourceSizeList.h"
</span><span class="cx"> #include "WebKitCSSFilterValue.h"
</span><span class="cx"> #include <memory>
</span><del>-#include <wtf/BumpArena.h>
</del><span class="cx"> #include <wtf/HashMap.h>
</span><span class="cx"> #include <wtf/HashSet.h>
</span><span class="cx"> #include <wtf/Vector.h>
</span><span class="lines">@@ -115,8 +114,6 @@
</span><span class="cx"> WEBCORE_EXPORT CSSParser(const CSSParserContext&);
</span><span class="cx"> WEBCORE_EXPORT ~CSSParser();
</span><span class="cx">
</span><del>- void setArena(BumpArena&);
-
</del><span class="cx"> void parseSheet(StyleSheetContents*, const String&, const TextPosition&, RuleSourceDataList*, bool logErrors);
</span><span class="cx"> RefPtr<StyleRuleBase> parseRule(StyleSheetContents*, const String&);
</span><span class="cx"> RefPtr<StyleKeyframe> parseKeyframeRule(StyleSheetContents*, const String&);
</span><span class="lines">@@ -400,8 +397,6 @@
</span><span class="cx">
</span><span class="cx"> CSSParserContext m_context;
</span><span class="cx">
</span><del>- BumpArena* arena();
- RefPtr<BumpArena> m_arena;
</del><span class="cx"> bool m_important;
</span><span class="cx"> CSSPropertyID m_id;
</span><span class="cx"> AtomicString m_customPropertyName;
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSParserValuescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSParserValues.cpp (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSParserValues.cpp        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WebCore/css/CSSParserValues.cpp        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -214,7 +214,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> #if ENABLE(VIDEO_TRACK)
</span><del>-CSSParserSelector* CSSParserSelector::parsePseudoElementCueFunctionSelector(BumpArena* arena, const CSSParserString& functionIdentifier, Vector<std::unique_ptr<CSSParserSelector>>* parsedSelectorVector)
</del><ins>+CSSParserSelector* CSSParserSelector::parsePseudoElementCueFunctionSelector(const CSSParserString& functionIdentifier, Vector<std::unique_ptr<CSSParserSelector>>* parsedSelectorVector)
</ins><span class="cx"> {
</span><span class="cx"> ASSERT_UNUSED(functionIdentifier, String(functionIdentifier) == "cue(");
</span><span class="cx">
</span><span class="lines">@@ -226,7 +226,7 @@
</span><span class="cx"> auto selector = std::make_unique<CSSParserSelector>();
</span><span class="cx"> selector->m_selector->setMatch(CSSSelector::PseudoElement);
</span><span class="cx"> selector->m_selector->setPseudoElementType(CSSSelector::PseudoElementCue);
</span><del>- selector->adoptSelectorVector(arena, *selectorVector);
</del><ins>+ selector->adoptSelectorVector(*selectorVector);
</ins><span class="cx"> return selector.release();
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="lines">@@ -279,10 +279,10 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void CSSParserSelector::adoptSelectorVector(BumpArena* arena, Vector<std::unique_ptr<CSSParserSelector>>& selectorVector)
</del><ins>+void CSSParserSelector::adoptSelectorVector(Vector<std::unique_ptr<CSSParserSelector>>& selectorVector)
</ins><span class="cx"> {
</span><span class="cx"> auto selectorList = std::make_unique<CSSSelectorList>();
</span><del>- selectorList->adoptSelectorVector(arena, selectorVector);
</del><ins>+ selectorList->adoptSelectorVector(selectorVector);
</ins><span class="cx"> m_selector->setSelectorList(WTFMove(selectorList));
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSParserValuesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSParserValues.h (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSParserValues.h        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WebCore/css/CSSParserValues.h        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -24,7 +24,6 @@
</span><span class="cx"> #include "CSSSelector.h"
</span><span class="cx"> #include "CSSValueKeywords.h"
</span><span class="cx"> #include "CSSValueList.h"
</span><del>-#include <wtf/BumpArena.h>
</del><span class="cx"> #include <wtf/text/AtomicString.h>
</span><span class="cx"> #include <wtf/text/AtomicStringHash.h>
</span><span class="cx"> #include <wtf/text/WTFString.h>
</span><span class="lines">@@ -212,7 +211,7 @@
</span><span class="cx"> public:
</span><span class="cx"> static CSSParserSelector* parsePagePseudoSelector(const CSSParserString& pseudoTypeString);
</span><span class="cx"> static CSSParserSelector* parsePseudoElementSelector(CSSParserString& pseudoTypeString);
</span><del>- static CSSParserSelector* parsePseudoElementCueFunctionSelector(BumpArena*, const CSSParserString& functionIdentifier, Vector<std::unique_ptr<CSSParserSelector>>* selectorVector);
</del><ins>+ static CSSParserSelector* parsePseudoElementCueFunctionSelector(const CSSParserString& functionIdentifier, Vector<std::unique_ptr<CSSParserSelector>>* selectorVector);
</ins><span class="cx"> static CSSParserSelector* parsePseudoClassAndCompatibilityElementSelector(CSSParserString& pseudoTypeString);
</span><span class="cx">
</span><span class="cx"> CSSParserSelector();
</span><span class="lines">@@ -229,7 +228,7 @@
</span><span class="cx"> void setRelation(CSSSelector::Relation value) { m_selector->setRelation(value); }
</span><span class="cx"> void setForPage() { m_selector->setForPage(); }
</span><span class="cx">
</span><del>- void adoptSelectorVector(BumpArena*, Vector<std::unique_ptr<CSSParserSelector>>& selectorVector);
</del><ins>+ void adoptSelectorVector(Vector<std::unique_ptr<CSSParserSelector>>& selectorVector);
</ins><span class="cx"> void setLangArgumentList(const Vector<CSSParserString>& stringVector);
</span><span class="cx">
</span><span class="cx"> void setPseudoClassValue(const CSSParserString& pseudoClassString);
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSSelectorListcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSSelectorList.cpp (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSSelectorList.cpp        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WebCore/css/CSSSelectorList.cpp        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> unsigned otherComponentCount = other.componentCount();
</span><span class="cx"> ASSERT_WITH_SECURITY_IMPLICATION(otherComponentCount);
</span><span class="cx">
</span><del>- m_selectorArray = reinterpret_cast<CSSSelector*>(BumpArena::allocate(BumpArena::arenaFor(other.m_selectorArray), sizeof(CSSSelector) * otherComponentCount));
</del><ins>+ m_selectorArray = reinterpret_cast<CSSSelector*>(fastMalloc(sizeof(CSSSelector) * otherComponentCount));
</ins><span class="cx"> for (unsigned i = 0; i < otherComponentCount; ++i)
</span><span class="cx"> new (NotNull, &m_selectorArray[i]) CSSSelector(other.m_selectorArray[i]);
</span><span class="cx"> }
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx"> other.m_selectorArray = nullptr;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void CSSSelectorList::adoptSelectorVector(BumpArena* arena, Vector<std::unique_ptr<CSSParserSelector>>& selectorVector)
</del><ins>+void CSSSelectorList::adoptSelectorVector(Vector<std::unique_ptr<CSSParserSelector>>& selectorVector)
</ins><span class="cx"> {
</span><span class="cx"> ASSERT_WITH_SECURITY_IMPLICATION(!selectorVector.isEmpty());
</span><span class="cx">
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx"> ++flattenedSize;
</span><span class="cx"> }
</span><span class="cx"> ASSERT(flattenedSize);
</span><del>- m_selectorArray = reinterpret_cast<CSSSelector*>(BumpArena::allocate(arena, sizeof(CSSSelector) * flattenedSize));
</del><ins>+ m_selectorArray = reinterpret_cast<CSSSelector*>(fastMalloc(sizeof(CSSSelector) * flattenedSize));
</ins><span class="cx"> size_t arrayIndex = 0;
</span><span class="cx"> for (size_t i = 0; i < selectorVector.size(); ++i) {
</span><span class="cx"> CSSParserSelector* current = selectorVector[i].get();
</span><span class="lines">@@ -119,7 +119,7 @@
</span><span class="cx"> isLastSelector = s->isLastInSelectorList();
</span><span class="cx"> s->~CSSSelector();
</span><span class="cx"> }
</span><del>- BumpArena::deallocate(selectorArray);
</del><ins>+ fastFree(selectorArray);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> String CSSSelectorList::selectorsText() const
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSSelectorListh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSSelectorList.h (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSSelectorList.h        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WebCore/css/CSSSelectorList.h        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx">
</span><span class="cx"> #include "CSSSelector.h"
</span><span class="cx"> #include <memory>
</span><del>-#include <wtf/BumpArena.h>
</del><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><span class="lines">@@ -43,7 +42,7 @@
</span><span class="cx">
</span><span class="cx"> ~CSSSelectorList() { deleteSelectors(); }
</span><span class="cx">
</span><del>- void adoptSelectorVector(BumpArena*, Vector<std::unique_ptr<CSSParserSelector>>&);
</del><ins>+ void adoptSelectorVector(Vector<std::unique_ptr<CSSParserSelector>>& selectorVector);
</ins><span class="cx"> void adoptSelectorArray(CSSSelector* selectors) { ASSERT(!m_selectorArray); m_selectorArray = selectors; }
</span><span class="cx">
</span><span class="cx"> bool isValid() const { return !!m_selectorArray; }
</span></span></pre></div>
<a id="trunkSourceWebCorecssStylePropertiescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleProperties.cpp (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleProperties.cpp        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WebCore/css/StyleProperties.cpp        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -55,9 +55,9 @@
</span><span class="cx"> return value.length() == 7 && (value == "initial" || value == "inherit");
</span><span class="cx"> }
</span><span class="cx">
</span><del>-Ref<ImmutableStyleProperties> ImmutableStyleProperties::create(BumpArena* arena, const CSSProperty* properties, unsigned count, CSSParserMode cssParserMode)
</del><ins>+Ref<ImmutableStyleProperties> ImmutableStyleProperties::create(const CSSProperty* properties, unsigned count, CSSParserMode cssParserMode)
</ins><span class="cx"> {
</span><del>- void* slot = BumpArena::allocate(arena, sizeForImmutableStylePropertiesWithPropertyCount(count));
</del><ins>+ void* slot = WTF::fastMalloc(sizeForImmutableStylePropertiesWithPropertyCount(count));
</ins><span class="cx"> return adoptRef(*new (NotNull, slot) ImmutableStyleProperties(properties, count, cssParserMode));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -66,7 +66,7 @@
</span><span class="cx"> if (is<ImmutableStyleProperties>(*this))
</span><span class="cx"> return downcast<ImmutableStyleProperties>(const_cast<StyleProperties&>(*this));
</span><span class="cx"> const MutableStyleProperties& mutableThis = downcast<MutableStyleProperties>(*this);
</span><del>- return ImmutableStyleProperties::create(BumpArena::arenaFor(this), mutableThis.m_propertyVector.data(), mutableThis.m_propertyVector.size(), cssParserMode());
</del><ins>+ return ImmutableStyleProperties::create(mutableThis.m_propertyVector.data(), mutableThis.m_propertyVector.size(), cssParserMode());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> MutableStyleProperties::MutableStyleProperties(CSSParserMode cssParserMode)
</span></span></pre></div>
<a id="trunkSourceWebCorecssStylePropertiesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleProperties.h (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleProperties.h        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WebCore/css/StyleProperties.h        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -29,7 +29,6 @@
</span><span class="cx"> #include "CSSPropertyNames.h"
</span><span class="cx"> #include "CSSValueKeywords.h"
</span><span class="cx"> #include <memory>
</span><del>-#include <wtf/BumpArena.h>
</del><span class="cx"> #include <wtf/ListHashSet.h>
</span><span class="cx"> #include <wtf/TypeCasts.h>
</span><span class="cx"> #include <wtf/Vector.h>
</span><span class="lines">@@ -47,8 +46,7 @@
</span><span class="cx"> class StylePropertyShorthand;
</span><span class="cx"> class StyleSheetContents;
</span><span class="cx">
</span><del>-class StyleProperties : public WTF::RefCountedBase {
- WTF_MAKE_BUMPARENA_ALLOCATED;
</del><ins>+class StyleProperties : public RefCounted<StyleProperties> {
</ins><span class="cx"> friend class PropertyReference;
</span><span class="cx"> public:
</span><span class="cx"> // Override RefCounted's deref() to ensure operator delete is called on
</span><span class="lines">@@ -163,7 +161,7 @@
</span><span class="cx"> class ImmutableStyleProperties : public StyleProperties {
</span><span class="cx"> public:
</span><span class="cx"> WEBCORE_EXPORT ~ImmutableStyleProperties();
</span><del>- static Ref<ImmutableStyleProperties> create(BumpArena*, const CSSProperty* properties, unsigned count, CSSParserMode);
</del><ins>+ static Ref<ImmutableStyleProperties> create(const CSSProperty* properties, unsigned count, CSSParserMode);
</ins><span class="cx">
</span><span class="cx"> unsigned propertyCount() const { return m_arraySize; }
</span><span class="cx"> bool isEmpty() const { return !propertyCount(); }
</span></span></pre></div>
<a id="trunkSourceWebCorecssStyleRulecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleRule.cpp (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleRule.cpp        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WebCore/css/StyleRule.cpp        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -219,14 +219,14 @@
</span><span class="cx"> return downcast<MutableStyleProperties>(m_properties.get());
</span><span class="cx"> }
</span><span class="cx">
</span><del>-Ref<StyleRule> StyleRule::create(BumpArena* arena, int sourceLine, const Vector<const CSSSelector*>& selectors, Ref<StyleProperties>&& properties)
</del><ins>+Ref<StyleRule> StyleRule::create(int sourceLine, const Vector<const CSSSelector*>& selectors, Ref<StyleProperties>&& properties)
</ins><span class="cx"> {
</span><span class="cx"> ASSERT_WITH_SECURITY_IMPLICATION(!selectors.isEmpty());
</span><del>- CSSSelector* selectorListArray = reinterpret_cast<CSSSelector*>(BumpArena::allocate(arena, sizeof(CSSSelector) * selectors.size()));
</del><ins>+ CSSSelector* selectorListArray = reinterpret_cast<CSSSelector*>(fastMalloc(sizeof(CSSSelector) * selectors.size()));
</ins><span class="cx"> for (unsigned i = 0; i < selectors.size(); ++i)
</span><span class="cx"> new (NotNull, &selectorListArray[i]) CSSSelector(*selectors.at(i));
</span><span class="cx"> selectorListArray[selectors.size() - 1].setLastInSelectorList();
</span><del>- auto rule = StyleRule::create(arena, sourceLine, WTFMove(properties));
</del><ins>+ auto rule = StyleRule::create(sourceLine, WTFMove(properties));
</ins><span class="cx"> rule.get().parserAdoptSelectorArray(selectorListArray);
</span><span class="cx"> return rule;
</span><span class="cx"> }
</span><span class="lines">@@ -244,7 +244,7 @@
</span><span class="cx"> componentsInThisSelector.append(component);
</span><span class="cx">
</span><span class="cx"> if (componentsInThisSelector.size() + componentsSinceLastSplit.size() > maxCount && !componentsSinceLastSplit.isEmpty()) {
</span><del>- rules.append(create(BumpArena::arenaFor(this), sourceLine(), componentsSinceLastSplit, const_cast<StyleProperties&>(m_properties.get())));
</del><ins>+ rules.append(create(sourceLine(), componentsSinceLastSplit, const_cast<StyleProperties&>(m_properties.get())));
</ins><span class="cx"> componentsSinceLastSplit.clear();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -252,7 +252,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (!componentsSinceLastSplit.isEmpty())
</span><del>- rules.append(create(BumpArena::arenaFor(this), sourceLine(), componentsSinceLastSplit, const_cast<StyleProperties&>(m_properties.get())));
</del><ins>+ rules.append(create(sourceLine(), componentsSinceLastSplit, const_cast<StyleProperties&>(m_properties.get())));
</ins><span class="cx">
</span><span class="cx"> return rules;
</span><span class="cx"> }
</span><span class="lines">@@ -360,7 +360,7 @@
</span><span class="cx"> StyleRuleRegion::StyleRuleRegion(Vector<std::unique_ptr<CSSParserSelector>>* selectors, Vector<RefPtr<StyleRuleBase>>& adoptRules)
</span><span class="cx"> : StyleRuleGroup(Region, adoptRules)
</span><span class="cx"> {
</span><del>- m_selectorList.adoptSelectorVector(BumpArena::arenaFor(this), *selectors);
</del><ins>+ m_selectorList.adoptSelectorVector(*selectors);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> StyleRuleRegion::StyleRuleRegion(const StyleRuleRegion& o)
</span></span></pre></div>
<a id="trunkSourceWebCorecssStyleRuleh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleRule.h (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleRule.h        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WebCore/css/StyleRule.h        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -25,7 +25,6 @@
</span><span class="cx"> #include "CSSSelectorList.h"
</span><span class="cx"> #include "MediaList.h"
</span><span class="cx"> #include "StyleProperties.h"
</span><del>-#include <wtf/BumpArena.h>
</del><span class="cx"> #include <wtf/RefPtr.h>
</span><span class="cx"> #include <wtf/TypeCasts.h>
</span><span class="cx">
</span><span class="lines">@@ -38,7 +37,7 @@
</span><span class="cx"> class StyleProperties;
</span><span class="cx">
</span><span class="cx"> class StyleRuleBase : public WTF::RefCountedBase {
</span><del>- WTF_MAKE_BUMPARENA_ALLOCATED;
</del><ins>+ WTF_MAKE_FAST_ALLOCATED;
</ins><span class="cx"> public:
</span><span class="cx"> enum Type {
</span><span class="cx"> Unknown, // Not used.
</span><span class="lines">@@ -102,10 +101,11 @@
</span><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> class StyleRule : public StyleRuleBase {
</span><ins>+ WTF_MAKE_FAST_ALLOCATED;
</ins><span class="cx"> public:
</span><del>- static Ref<StyleRule> create(BumpArena* arena, int sourceLine, Ref<StyleProperties>&& properties)
</del><ins>+ static Ref<StyleRule> create(int sourceLine, Ref<StyleProperties>&& properties)
</ins><span class="cx"> {
</span><del>- return adoptRef(*new (arena) StyleRule(sourceLine, WTFMove(properties)));
</del><ins>+ return adoptRef(*new StyleRule(sourceLine, WTFMove(properties)));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> ~StyleRule();
</span><span class="lines">@@ -114,7 +114,7 @@
</span><span class="cx"> const StyleProperties& properties() const { return m_properties; }
</span><span class="cx"> MutableStyleProperties& mutableProperties();
</span><span class="cx">
</span><del>- void parserAdoptSelectorVector(BumpArena* arena, Vector<std::unique_ptr<CSSParserSelector>>& selectors) { m_selectorList.adoptSelectorVector(arena, selectors); }
</del><ins>+ void parserAdoptSelectorVector(Vector<std::unique_ptr<CSSParserSelector>>& selectors) { m_selectorList.adoptSelectorVector(selectors); }
</ins><span class="cx"> void wrapperAdoptSelectorList(CSSSelectorList& selectors) { m_selectorList = WTFMove(selectors); }
</span><span class="cx"> void parserAdoptSelectorArray(CSSSelector* selectors) { m_selectorList.adoptSelectorArray(selectors); }
</span><span class="cx">
</span><span class="lines">@@ -128,7 +128,7 @@
</span><span class="cx"> StyleRule(int sourceLine, Ref<StyleProperties>&&);
</span><span class="cx"> StyleRule(const StyleRule&);
</span><span class="cx">
</span><del>- static Ref<StyleRule> create(BumpArena*, int sourceLine, const Vector<const CSSSelector*>&, Ref<StyleProperties>&&);
</del><ins>+ static Ref<StyleRule> create(int sourceLine, const Vector<const CSSSelector*>&, Ref<StyleProperties>&&);
</ins><span class="cx">
</span><span class="cx"> Ref<StyleProperties> m_properties;
</span><span class="cx"> CSSSelectorList m_selectorList;
</span><span class="lines">@@ -136,7 +136,7 @@
</span><span class="cx">
</span><span class="cx"> class StyleRuleFontFace : public StyleRuleBase {
</span><span class="cx"> public:
</span><del>- static Ref<StyleRuleFontFace> create(BumpArena* arena, Ref<StyleProperties>&& properties) { return adoptRef(*new (arena) StyleRuleFontFace(WTFMove(properties))); }
</del><ins>+ static Ref<StyleRuleFontFace> create(Ref<StyleProperties>&& properties) { return adoptRef(*new StyleRuleFontFace(WTFMove(properties))); }
</ins><span class="cx">
</span><span class="cx"> ~StyleRuleFontFace();
</span><span class="cx">
</span><span class="lines">@@ -155,7 +155,7 @@
</span><span class="cx">
</span><span class="cx"> class StyleRulePage : public StyleRuleBase {
</span><span class="cx"> public:
</span><del>- static Ref<StyleRulePage> create(BumpArena* arena, Ref<StyleProperties>&& properties) { return adoptRef(*new (arena) StyleRulePage(WTFMove(properties))); }
</del><ins>+ static Ref<StyleRulePage> create(Ref<StyleProperties>&& properties) { return adoptRef(*new StyleRulePage(WTFMove(properties))); }
</ins><span class="cx">
</span><span class="cx"> ~StyleRulePage();
</span><span class="cx">
</span><span class="lines">@@ -163,7 +163,7 @@
</span><span class="cx"> const StyleProperties& properties() const { return m_properties; }
</span><span class="cx"> MutableStyleProperties& mutableProperties();
</span><span class="cx">
</span><del>- void parserAdoptSelectorVector(BumpArena* arena, Vector<std::unique_ptr<CSSParserSelector>>& selectors) { m_selectorList.adoptSelectorVector(arena, selectors); }
</del><ins>+ void parserAdoptSelectorVector(Vector<std::unique_ptr<CSSParserSelector>>& selectors) { m_selectorList.adoptSelectorVector(selectors); }
</ins><span class="cx"> void wrapperAdoptSelectorList(CSSSelectorList& selectors) { m_selectorList = WTFMove(selectors); }
</span><span class="cx">
</span><span class="cx"> Ref<StyleRulePage> copy() const { return adoptRef(*new StyleRulePage(*this)); }
</span><span class="lines">@@ -193,9 +193,9 @@
</span><span class="cx">
</span><span class="cx"> class StyleRuleMedia : public StyleRuleGroup {
</span><span class="cx"> public:
</span><del>- static Ref<StyleRuleMedia> create(BumpArena* arena, PassRefPtr<MediaQuerySet> media, Vector<RefPtr<StyleRuleBase>>& adoptRules)
</del><ins>+ static Ref<StyleRuleMedia> create(PassRefPtr<MediaQuerySet> media, Vector<RefPtr<StyleRuleBase>>& adoptRules)
</ins><span class="cx"> {
</span><del>- return adoptRef(*new (arena) StyleRuleMedia(media, adoptRules));
</del><ins>+ return adoptRef(*new StyleRuleMedia(media, adoptRules));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> MediaQuerySet* mediaQueries() const { return m_mediaQueries.get(); }
</span><span class="lines">@@ -211,9 +211,9 @@
</span><span class="cx">
</span><span class="cx"> class StyleRuleSupports : public StyleRuleGroup {
</span><span class="cx"> public:
</span><del>- static Ref<StyleRuleSupports> create(BumpArena* arena, const String& conditionText, bool conditionIsSupported, Vector<RefPtr<StyleRuleBase>>& adoptRules)
</del><ins>+ static Ref<StyleRuleSupports> create(const String& conditionText, bool conditionIsSupported, Vector<RefPtr<StyleRuleBase>>& adoptRules)
</ins><span class="cx"> {
</span><del>- return adoptRef(*new (arena) StyleRuleSupports(conditionText, conditionIsSupported, adoptRules));
</del><ins>+ return adoptRef(*new StyleRuleSupports(conditionText, conditionIsSupported, adoptRules));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> String conditionText() const { return m_conditionText; }
</span><span class="lines">@@ -230,9 +230,9 @@
</span><span class="cx">
</span><span class="cx"> class StyleRuleRegion : public StyleRuleGroup {
</span><span class="cx"> public:
</span><del>- static Ref<StyleRuleRegion> create(BumpArena* arena, Vector<std::unique_ptr<CSSParserSelector>>* selectors, Vector<RefPtr<StyleRuleBase>>& adoptRules)
</del><ins>+ static Ref<StyleRuleRegion> create(Vector<std::unique_ptr<CSSParserSelector>>* selectors, Vector<RefPtr<StyleRuleBase>>& adoptRules)
</ins><span class="cx"> {
</span><del>- return adoptRef(*new (arena) StyleRuleRegion(selectors, adoptRules));
</del><ins>+ return adoptRef(*new StyleRuleRegion(selectors, adoptRules));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> const CSSSelectorList& selectorList() const { return m_selectorList; }
</span><span class="lines">@@ -249,7 +249,7 @@
</span><span class="cx"> #if ENABLE(CSS_DEVICE_ADAPTATION)
</span><span class="cx"> class StyleRuleViewport : public StyleRuleBase {
</span><span class="cx"> public:
</span><del>- static Ref<StyleRuleViewport> create(BumpArena* arena, Ref<StyleProperties>&& properties) { return adoptRef(*new (arena) StyleRuleViewport(WTFMove(properties))); }
</del><ins>+ static Ref<StyleRuleViewport> create(Ref<StyleProperties>&& properties) { return adoptRef(*new StyleRuleViewport(WTFMove(properties))); }
</ins><span class="cx">
</span><span class="cx"> ~StyleRuleViewport();
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorecssStyleSheetContentscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleSheetContents.cpp (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleSheetContents.cpp        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WebCore/css/StyleSheetContents.cpp        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -71,7 +71,6 @@
</span><span class="cx"> , m_isMutable(false)
</span><span class="cx"> , m_isInMemoryCache(false)
</span><span class="cx"> , m_parserContext(context)
</span><del>- , m_arena(BumpArena::create())
</del><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -92,7 +91,6 @@
</span><span class="cx"> , m_isMutable(false)
</span><span class="cx"> , m_isInMemoryCache(false)
</span><span class="cx"> , m_parserContext(o.m_parserContext)
</span><del>- , m_arena(BumpArena::create())
</del><span class="cx"> {
</span><span class="cx"> ASSERT(o.isCacheable());
</span><span class="cx">
</span><span class="lines">@@ -315,7 +313,6 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> CSSParser p(parserContext());
</span><del>- p.setArena(m_arena.get());
</del><span class="cx"> p.parseSheet(this, sheetText, TextPosition(), nullptr, true);
</span><span class="cx">
</span><span class="cx"> if (m_parserContext.needsSiteSpecificQuirks && isStrictParserMode(m_parserContext.mode)) {
</span><span class="lines">@@ -337,7 +334,6 @@
</span><span class="cx"> bool StyleSheetContents::parseStringAtPosition(const String& sheetText, const TextPosition& textPosition, bool createdByParser)
</span><span class="cx"> {
</span><span class="cx"> CSSParser p(parserContext());
</span><del>- p.setArena(m_arena.get());
</del><span class="cx"> p.parseSheet(this, sheetText, textPosition, nullptr, createdByParser);
</span><span class="cx"> return true;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorecssStyleSheetContentsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleSheetContents.h (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleSheetContents.h        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WebCore/css/StyleSheetContents.h        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -24,7 +24,6 @@
</span><span class="cx"> #include "CSSParserMode.h"
</span><span class="cx"> #include "CachePolicy.h"
</span><span class="cx"> #include "URL.h"
</span><del>-#include <wtf/BumpArena.h>
</del><span class="cx"> #include <wtf/HashMap.h>
</span><span class="cx"> #include <wtf/ListHashSet.h>
</span><span class="cx"> #include <wtf/RefCounted.h>
</span><span class="lines">@@ -174,8 +173,6 @@
</span><span class="cx"> CSSParserContext m_parserContext;
</span><span class="cx">
</span><span class="cx"> Vector<CSSStyleSheet*> m_clients;
</span><del>-
- Ref<BumpArena> m_arena;
</del><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> } // namespace
</span></span></pre></div>
<a id="trunkSourceWebCoredomSelectorQuerycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/SelectorQuery.cpp (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/SelectorQuery.cpp        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WebCore/dom/SelectorQuery.cpp        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -608,11 +608,6 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>-SelectorQueryCache::SelectorQueryCache()
- : m_arena(BumpArena::create())
-{
-}
-
</del><span class="cx"> SelectorQuery* SelectorQueryCache::add(const String& selectors, Document& document, ExceptionCode& ec)
</span><span class="cx"> {
</span><span class="cx"> auto it = m_entries.find(selectors);
</span><span class="lines">@@ -620,7 +615,6 @@
</span><span class="cx"> return it->value.get();
</span><span class="cx">
</span><span class="cx"> CSSParser parser(document);
</span><del>- parser.setArena(m_arena.get());
</del><span class="cx"> CSSSelectorList selectorList;
</span><span class="cx"> parser.parseSelector(selectors, selectorList);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoredomSelectorQueryh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/SelectorQuery.h (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/SelectorQuery.h        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WebCore/dom/SelectorQuery.h        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -29,7 +29,6 @@
</span><span class="cx"> #include "CSSSelectorList.h"
</span><span class="cx"> #include "NodeList.h"
</span><span class="cx"> #include "SelectorCompiler.h"
</span><del>-#include <wtf/BumpArena.h>
</del><span class="cx"> #include <wtf/HashMap.h>
</span><span class="cx"> #include <wtf/Vector.h>
</span><span class="cx"> #include <wtf/text/AtomicStringHash.h>
</span><span class="lines">@@ -133,12 +132,10 @@
</span><span class="cx"> WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx">
</span><span class="cx"> public:
</span><del>- SelectorQueryCache();
</del><span class="cx"> SelectorQuery* add(const String&, Document&, ExceptionCode&);
</span><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> HashMap<String, std::unique_ptr<SelectorQuery>> m_entries;
</span><del>- Ref<BumpArena> m_arena;
</del><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> inline bool SelectorQuery::matches(Element& element) const
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFontFaceElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFontFaceElement.cpp (195303 => 195304)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFontFaceElement.cpp        2016-01-19 19:53:16 UTC (rev 195303)
+++ trunk/Source/WebCore/svg/SVGFontFaceElement.cpp        2016-01-19 20:16:01 UTC (rev 195304)
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx">
</span><span class="cx"> inline SVGFontFaceElement::SVGFontFaceElement(const QualifiedName& tagName, Document& document)
</span><span class="cx"> : SVGElement(tagName, document)
</span><del>- , m_fontFaceRule(StyleRuleFontFace::create(nullptr, MutableStyleProperties::create(CSSStrictMode)))
</del><ins>+ , m_fontFaceRule(StyleRuleFontFace::create(MutableStyleProperties::create(CSSStrictMode)))
</ins><span class="cx"> , m_fontElement(nullptr)
</span><span class="cx"> {
</span><span class="cx"> ASSERT(hasTagName(font_faceTag));
</span></span></pre>
</div>
</div>
</body>
</html>