<!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>[181533] releases/WebKitGTK/webkit-2.8/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/181533">181533</a></dd>
<dt>Author</dt> <dd>carlosgc@webkit.org</dd>
<dt>Date</dt> <dd>2015-03-16 03:13:35 -0700 (Mon, 16 Mar 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Merge <a href="http://trac.webkit.org/projects/webkit/changeset/181407">r181407</a> - Refactored the JSC::Heap extra cost API for clarity and to make some known bugs more obvious
https://bugs.webkit.org/show_bug.cgi?id=142589

Reviewed by Andreas Kling.

Source/JavaScriptCore:

* API/JSBase.cpp:
(JSReportExtraMemoryCost): Added a FIXME to annotate a known bug.

* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::CodeBlock):
(JSC::CodeBlock::visitAggregate):
* bytecode/CodeBlock.h:
(JSC::CodeBlock::setJITCode): Updated for rename.

* heap/Heap.cpp:
(JSC::Heap::Heap):
(JSC::Heap::reportExtraMemoryAllocatedSlowCase):
(JSC::Heap::deprecatedReportExtraMemorySlowCase): Renamed our reporting
APIs to clarify their relationship to each other: One must report extra
memory at the time of allocation, and at the time the GC visits it.

(JSC::Heap::extraMemorySize):
(JSC::Heap::size):
(JSC::Heap::capacity):
(JSC::Heap::sizeAfterCollect):
(JSC::Heap::willStartCollection): Updated for renames. Added explicit
API for deprecated users who can't use our best API.

(JSC::Heap::reportExtraMemoryCostSlowCase): Deleted.
(JSC::Heap::extraSize): Deleted.

* heap/Heap.h:
* heap/HeapInlines.h:
(JSC::Heap::reportExtraMemoryAllocated):
(JSC::Heap::reportExtraMemoryVisited):
(JSC::Heap::deprecatedReportExtraMemory):
(JSC::Heap::reportExtraMemoryCost): Deleted. Ditto.

* heap/SlotVisitor.h:
* heap/SlotVisitorInlines.h:
(JSC::SlotVisitor::reportExtraMemoryVisited):
(JSC::SlotVisitor::reportExtraMemoryUsage): Deleted. Moved this
functionality into the Heap since it's pretty detailed in its access
to the heap.

* runtime/JSArrayBufferView.cpp:
(JSC::JSArrayBufferView::ConstructionContext::ConstructionContext):
* runtime/JSGenericTypedArrayViewInlines.h:
(JSC::JSGenericTypedArrayView&lt;Adaptor&gt;::visitChildren): Updated for
renames.

* runtime/JSString.cpp:
(JSC::JSString::visitChildren):
(JSC::JSRopeString::resolveRopeToAtomicString):
(JSC::JSRopeString::resolveRope):
* runtime/JSString.h:
(JSC::JSString::finishCreation): Updated for renames.

* runtime/SparseArrayValueMap.cpp:
(JSC::SparseArrayValueMap::add): Added FIXME.

* runtime/WeakMapData.cpp:
(JSC::WeakMapData::visitChildren): Updated for rename.

Source/WebCore:

Updated for renames to JSC extra cost APIs.

Added FIXMEs to our 10 use cases that are currently wrong, including
canvas, which is the cause of https://bugs.webkit.org/show_bug.cgi?id=142457.

* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::appendBufferInternal):
(WebCore::SourceBuffer::sourceBufferPrivateAppendComplete):
(WebCore::SourceBuffer::reportExtraMemoryAllocated):
(WebCore::SourceBuffer::reportExtraMemoryCost): Deleted.
* Modules/mediasource/SourceBuffer.h:
* bindings/js/JSDocumentCustom.cpp:
(WebCore::toJS):
* bindings/js/JSImageDataCustom.cpp:
(WebCore::toJS):
* bindings/js/JSNodeListCustom.cpp:
(WebCore::createWrapper):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):
* dom/CollectionIndexCache.cpp:
(WebCore::reportExtraMemoryAllocatedForCollectionIndexCache):
(WebCore::reportExtraMemoryCostForCollectionIndexCache): Deleted.
* dom/CollectionIndexCache.h:
(WebCore::Iterator&gt;::computeNodeCountUpdatingListCache):
* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::createImageBuffer):
* html/HTMLCollection.h:
(WebCore::CollectionNamedElementCache::didPopulate):
* html/HTMLImageLoader.cpp:
(WebCore::HTMLImageLoader::imageChanged):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::parseAttribute):
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::dropProtection):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#releasesWebKitGTKwebkit28SourceJavaScriptCoreAPIJSBasecpp">releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/API/JSBase.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceJavaScriptCoreChangeLog">releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceJavaScriptCorebytecodeCodeBlockcpp">releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/bytecode/CodeBlock.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceJavaScriptCorebytecodeCodeBlockh">releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/bytecode/CodeBlock.h</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceJavaScriptCoreheapHeapcpp">releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/heap/Heap.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceJavaScriptCoreheapHeaph">releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/heap/Heap.h</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceJavaScriptCoreheapHeapInlinesh">releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/heap/HeapInlines.h</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceJavaScriptCoreheapSlotVisitorh">releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/heap/SlotVisitor.h</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceJavaScriptCoreheapSlotVisitorInlinesh">releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/heap/SlotVisitorInlines.h</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceJavaScriptCoreruntimeJSArrayBufferViewcpp">releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/JSArrayBufferView.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceJavaScriptCoreruntimeJSGenericTypedArrayViewInlinesh">releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceJavaScriptCoreruntimeJSStringcpp">releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/JSString.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceJavaScriptCoreruntimeJSStringh">releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/JSString.h</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceJavaScriptCoreruntimeSparseArrayValueMapcpp">releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/SparseArrayValueMap.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceJavaScriptCoreruntimeWeakMapDatacpp">releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/WeakMapData.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceWebCoreChangeLog">releases/WebKitGTK/webkit-2.8/Source/WebCore/ChangeLog</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceWebCoreModulesmediasourceSourceBuffercpp">releases/WebKitGTK/webkit-2.8/Source/WebCore/Modules/mediasource/SourceBuffer.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceWebCoreModulesmediasourceSourceBufferh">releases/WebKitGTK/webkit-2.8/Source/WebCore/Modules/mediasource/SourceBuffer.h</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceWebCorebindingsjsJSDocumentCustomcpp">releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/js/JSDocumentCustom.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceWebCorebindingsjsJSImageDataCustomcpp">releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/js/JSImageDataCustom.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceWebCorebindingsjsJSNodeListCustomcpp">releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/js/JSNodeListCustom.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceWebCorebindingsscriptsCodeGeneratorJSpm">releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceWebCoredomCollectionIndexCachecpp">releases/WebKitGTK/webkit-2.8/Source/WebCore/dom/CollectionIndexCache.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceWebCoredomCollectionIndexCacheh">releases/WebKitGTK/webkit-2.8/Source/WebCore/dom/CollectionIndexCache.h</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceWebCorehtmlHTMLCanvasElementcpp">releases/WebKitGTK/webkit-2.8/Source/WebCore/html/HTMLCanvasElement.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceWebCorehtmlHTMLCollectionh">releases/WebKitGTK/webkit-2.8/Source/WebCore/html/HTMLCollection.h</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceWebCorehtmlHTMLImageLoadercpp">releases/WebKitGTK/webkit-2.8/Source/WebCore/html/HTMLImageLoader.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceWebCorehtmlHTMLMediaElementcpp">releases/WebKitGTK/webkit-2.8/Source/WebCore/html/HTMLMediaElement.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceWebCorexmlXMLHttpRequestcpp">releases/WebKitGTK/webkit-2.8/Source/WebCore/xml/XMLHttpRequest.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="releasesWebKitGTKwebkit28SourceJavaScriptCoreAPIJSBasecpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/API/JSBase.cpp (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/API/JSBase.cpp        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/API/JSBase.cpp        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -138,7 +138,10 @@
</span><span class="cx">     }
</span><span class="cx">     ExecState* exec = toJS(ctx);
</span><span class="cx">     JSLockHolder locker(exec);
</span><del>-    exec-&gt;vm().heap.reportExtraMemoryCost(size);
</del><ins>+
+    // FIXME: switch to deprecatedReportExtraMemory.
+    // https://bugs.webkit.org/show_bug.cgi?id=142593
+    exec-&gt;vm().heap.reportExtraMemoryAllocated(size);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> extern &quot;C&quot; JS_EXPORT void JSSynchronousGarbageCollectForDebugging(JSContextRef);
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/ChangeLog (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/ChangeLog        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/ChangeLog        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -1,3 +1,69 @@
</span><ins>+2015-03-11  Geoffrey Garen  &lt;ggaren@apple.com&gt;
+
+        Refactored the JSC::Heap extra cost API for clarity and to make some known bugs more obvious
+        https://bugs.webkit.org/show_bug.cgi?id=142589
+
+        Reviewed by Andreas Kling.
+
+        * API/JSBase.cpp:
+        (JSReportExtraMemoryCost): Added a FIXME to annotate a known bug.
+
+        * bytecode/CodeBlock.cpp:
+        (JSC::CodeBlock::CodeBlock):
+        (JSC::CodeBlock::visitAggregate):
+        * bytecode/CodeBlock.h:
+        (JSC::CodeBlock::setJITCode): Updated for rename.
+
+        * heap/Heap.cpp:
+        (JSC::Heap::Heap):
+        (JSC::Heap::reportExtraMemoryAllocatedSlowCase):
+        (JSC::Heap::deprecatedReportExtraMemorySlowCase): Renamed our reporting
+        APIs to clarify their relationship to each other: One must report extra
+        memory at the time of allocation, and at the time the GC visits it.
+
+        (JSC::Heap::extraMemorySize):
+        (JSC::Heap::size):
+        (JSC::Heap::capacity):
+        (JSC::Heap::sizeAfterCollect):
+        (JSC::Heap::willStartCollection): Updated for renames. Added explicit
+        API for deprecated users who can't use our best API.

+        (JSC::Heap::reportExtraMemoryCostSlowCase): Deleted.
+        (JSC::Heap::extraSize): Deleted.
+
+        * heap/Heap.h:
+        * heap/HeapInlines.h:
+        (JSC::Heap::reportExtraMemoryAllocated):
+        (JSC::Heap::reportExtraMemoryVisited):
+        (JSC::Heap::deprecatedReportExtraMemory):
+        (JSC::Heap::reportExtraMemoryCost): Deleted. Ditto.
+
+        * heap/SlotVisitor.h:
+        * heap/SlotVisitorInlines.h:
+        (JSC::SlotVisitor::reportExtraMemoryVisited):
+        (JSC::SlotVisitor::reportExtraMemoryUsage): Deleted. Moved this
+        functionality into the Heap since it's pretty detailed in its access
+        to the heap.
+
+        * runtime/JSArrayBufferView.cpp:
+        (JSC::JSArrayBufferView::ConstructionContext::ConstructionContext):
+        * runtime/JSGenericTypedArrayViewInlines.h:
+        (JSC::JSGenericTypedArrayView&lt;Adaptor&gt;::visitChildren): Updated for
+        renames.
+
+        * runtime/JSString.cpp:
+        (JSC::JSString::visitChildren):
+        (JSC::JSRopeString::resolveRopeToAtomicString):
+        (JSC::JSRopeString::resolveRope):
+        * runtime/JSString.h:
+        (JSC::JSString::finishCreation): Updated for renames.
+
+        * runtime/SparseArrayValueMap.cpp:
+        (JSC::SparseArrayValueMap::add): Added FIXME.
+
+        * runtime/WeakMapData.cpp:
+        (JSC::WeakMapData::visitChildren): Updated for rename.
+
</ins><span class="cx"> 2015-03-10  Mark Lam  &lt;mark.lam@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Use std::numeric_limits&lt;unsigned&gt;::max() instead of (unsigned)-1.
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceJavaScriptCorebytecodeCodeBlockcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/bytecode/CodeBlock.cpp (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/bytecode/CodeBlock.cpp        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/bytecode/CodeBlock.cpp        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -1665,7 +1665,7 @@
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     m_heap-&gt;m_codeBlocks.add(this);
</span><del>-    m_heap-&gt;reportExtraMemoryCost(sizeof(CodeBlock));
</del><ins>+    m_heap-&gt;reportExtraMemoryAllocated(sizeof(CodeBlock));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> CodeBlock::CodeBlock(ScriptExecutable* ownerExecutable, UnlinkedCodeBlock* unlinkedCodeBlock, JSScope* scope, PassRefPtr&lt;SourceProvider&gt; sourceProvider, unsigned sourceOffset, unsigned firstLineColumnOffset)
</span><span class="lines">@@ -2142,7 +2142,7 @@
</span><span class="cx">         dumpBytecode();
</span><span class="cx">     
</span><span class="cx">     m_heap-&gt;m_codeBlocks.add(this);
</span><del>-    m_heap-&gt;reportExtraMemoryCost(sizeof(CodeBlock) + m_instructions.size() * sizeof(Instruction));
</del><ins>+    m_heap-&gt;reportExtraMemoryAllocated(sizeof(CodeBlock) + m_instructions.size() * sizeof(Instruction));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> CodeBlock::~CodeBlock()
</span><span class="lines">@@ -2234,15 +2234,15 @@
</span><span class="cx">     if (CodeBlock* otherBlock = specialOSREntryBlockOrNull())
</span><span class="cx">         otherBlock-&gt;visitAggregate(visitor);
</span><span class="cx"> 
</span><del>-    visitor.reportExtraMemoryUsage(ownerExecutable(), sizeof(CodeBlock));
</del><ins>+    visitor.reportExtraMemoryVisited(ownerExecutable(), sizeof(CodeBlock));
</ins><span class="cx">     if (m_jitCode)
</span><del>-        visitor.reportExtraMemoryUsage(ownerExecutable(), m_jitCode-&gt;size());
</del><ins>+        visitor.reportExtraMemoryVisited(ownerExecutable(), m_jitCode-&gt;size());
</ins><span class="cx">     if (m_instructions.size()) {
</span><span class="cx">         // Divide by refCount() because m_instructions points to something that is shared
</span><span class="cx">         // by multiple CodeBlocks, and we only want to count it towards the heap size once.
</span><span class="cx">         // Having each CodeBlock report only its proportional share of the size is one way
</span><span class="cx">         // of accomplishing this.
</span><del>-        visitor.reportExtraMemoryUsage(ownerExecutable(), m_instructions.size() * sizeof(Instruction) / m_instructions.refCount());
</del><ins>+        visitor.reportExtraMemoryVisited(ownerExecutable(), m_instructions.size() * sizeof(Instruction) / m_instructions.refCount());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     visitor.append(&amp;m_unlinkedCode);
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceJavaScriptCorebytecodeCodeBlockh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/bytecode/CodeBlock.h (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/bytecode/CodeBlock.h        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/bytecode/CodeBlock.h        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -273,7 +273,7 @@
</span><span class="cx">     void setJITCode(PassRefPtr&lt;JITCode&gt; code)
</span><span class="cx">     {
</span><span class="cx">         ASSERT(m_heap-&gt;isDeferred());
</span><del>-        m_heap-&gt;reportExtraMemoryCost(code-&gt;size());
</del><ins>+        m_heap-&gt;reportExtraMemoryAllocated(code-&gt;size());
</ins><span class="cx">         ConcurrentJITLocker locker(m_lock);
</span><span class="cx">         WTF::storeStoreFence(); // This is probably not needed because the lock will also do something similar, but it's good to be paranoid.
</span><span class="cx">         m_jitCode = code;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceJavaScriptCoreheapHeapcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/heap/Heap.cpp (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/heap/Heap.cpp        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/heap/Heap.cpp        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -310,7 +310,8 @@
</span><span class="cx">     , m_blockAllocator()
</span><span class="cx">     , m_objectSpace(this)
</span><span class="cx">     , m_storageSpace(this)
</span><del>-    , m_extraMemoryUsage(0)
</del><ins>+    , m_extraMemorySize(0)
+    , m_deprecatedExtraMemorySize(0)
</ins><span class="cx">     , m_machineThreads(this)
</span><span class="cx">     , m_sharedData(vm)
</span><span class="cx">     , m_slotVisitor(m_sharedData)
</span><span class="lines">@@ -378,23 +379,18 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Heap::reportExtraMemoryCostSlowCase(size_t cost)
</del><ins>+void Heap::reportExtraMemoryAllocatedSlowCase(size_t size)
</ins><span class="cx"> {
</span><del>-    // Our frequency of garbage collection tries to balance memory use against speed
-    // by collecting based on the number of newly created values. However, for values
-    // that hold on to a great deal of memory that's not in the form of other JS values,
-    // that is not good enough - in some cases a lot of those objects can pile up and
-    // use crazy amounts of memory without a GC happening. So we track these extra
-    // memory costs. Only unusually large objects are noted, and we only keep track
-    // of this extra cost until the next GC. In garbage collected languages, most values
-    // are either very short lived temporaries, or have extremely long lifetimes. So
-    // if a large value survives one garbage collection, there is not much point to
-    // collecting more frequently as long as it stays alive.
-
-    didAllocate(cost);
</del><ins>+    didAllocate(size);
</ins><span class="cx">     collectIfNecessaryOrDefer();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void Heap::deprecatedReportExtraMemorySlowCase(size_t size)
+{
+    m_deprecatedExtraMemorySize += size;
+    reportExtraMemoryAllocatedSlowCase(size);
+}
+
</ins><span class="cx"> void Heap::reportAbandonedObjectGraph()
</span><span class="cx"> {
</span><span class="cx">     // Our clients don't know exactly how much memory they
</span><span class="lines">@@ -840,19 +836,19 @@
</span><span class="cx">     return m_objectSpace.objectCount();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-size_t Heap::extraSize()
</del><ins>+size_t Heap::extraMemorySize()
</ins><span class="cx"> {
</span><del>-    return m_extraMemoryUsage + m_arrayBuffers.size();
</del><ins>+    return m_extraMemorySize + m_deprecatedExtraMemorySize + m_arrayBuffers.size();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> size_t Heap::size()
</span><span class="cx"> {
</span><del>-    return m_objectSpace.size() + m_storageSpace.size() + extraSize();
</del><ins>+    return m_objectSpace.size() + m_storageSpace.size() + extraMemorySize();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> size_t Heap::capacity()
</span><span class="cx"> {
</span><del>-    return m_objectSpace.capacity() + m_storageSpace.capacity() + extraSize();
</del><ins>+    return m_objectSpace.capacity() + m_storageSpace.capacity() + extraMemorySize();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> size_t Heap::sizeAfterCollect()
</span><span class="lines">@@ -862,7 +858,7 @@
</span><span class="cx">     // rather than all used (including dead) copied bytes, thus it's 
</span><span class="cx">     // always the case that m_totalBytesCopied &lt;= m_storageSpace.size(). 
</span><span class="cx">     ASSERT(m_totalBytesCopied &lt;= m_storageSpace.size());
</span><del>-    return m_totalBytesVisited + m_totalBytesCopied + extraSize();
</del><ins>+    return m_totalBytesVisited + m_totalBytesCopied + extraMemorySize();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> size_t Heap::protectedGlobalObjectCount()
</span><span class="lines">@@ -1110,7 +1106,8 @@
</span><span class="cx">     }
</span><span class="cx">     if (m_operationInProgress == FullCollection) {
</span><span class="cx">         m_sizeBeforeLastFullCollect = m_sizeAfterLastCollect + m_bytesAllocatedThisCycle;
</span><del>-        m_extraMemoryUsage = 0;
</del><ins>+        m_extraMemorySize = 0;
+        m_deprecatedExtraMemorySize = 0;
</ins><span class="cx"> 
</span><span class="cx">         if (m_fullActivityCallback)
</span><span class="cx">             m_fullActivityCallback-&gt;willCollect();
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceJavaScriptCoreheapHeaph"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/heap/Heap.h (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/heap/Heap.h        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/heap/Heap.h        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -160,13 +160,21 @@
</span><span class="cx">     JS_EXPORT_PRIVATE void collect(HeapOperation collectionType = AnyCollection);
</span><span class="cx">     bool collectIfNecessaryOrDefer(); // Returns true if it did collect.
</span><span class="cx"> 
</span><del>-    void reportExtraMemoryCost(size_t cost);
</del><ins>+    // Use this API to report non-GC memory referenced by GC objects. Be sure to
+    // call both of these functions: Calling only one may trigger catastropic
+    // memory growth.
+    void reportExtraMemoryAllocated(size_t);
+    void reportExtraMemoryVisited(JSCell*, size_t);
+
+    // Use this API to report non-GC memory if you can't use the better API above.
+    void deprecatedReportExtraMemory(size_t);
+
</ins><span class="cx">     JS_EXPORT_PRIVATE void reportAbandonedObjectGraph();
</span><span class="cx"> 
</span><span class="cx">     JS_EXPORT_PRIVATE void protect(JSValue);
</span><span class="cx">     JS_EXPORT_PRIVATE bool unprotect(JSValue); // True when the protect count drops to 0.
</span><span class="cx">     
</span><del>-    size_t extraSize(); // extra memory usage outside of pages allocated by the heap
</del><ins>+    size_t extraMemorySize(); // Non-GC memory referenced by GC objects.
</ins><span class="cx">     JS_EXPORT_PRIVATE size_t size();
</span><span class="cx">     JS_EXPORT_PRIVATE size_t capacity();
</span><span class="cx">     JS_EXPORT_PRIVATE size_t objectCount();
</span><span class="lines">@@ -260,15 +268,15 @@
</span><span class="cx">     void* allocateWithNormalDestructor(size_t); // For use with objects that inherit directly or indirectly from JSDestructibleObject.
</span><span class="cx">     void* allocateWithoutDestructor(size_t); // For use with objects without destructors.
</span><span class="cx"> 
</span><del>-    static const size_t minExtraCost = 256;
-    static const size_t maxExtraCost = 1024 * 1024;
</del><ins>+    static const size_t minExtraMemory = 256;
</ins><span class="cx">     
</span><span class="cx">     class FinalizerOwner : public WeakHandleOwner {
</span><span class="cx">         virtual void finalize(Handle&lt;Unknown&gt;, void* context) override;
</span><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     JS_EXPORT_PRIVATE bool isValidAllocation(size_t);
</span><del>-    JS_EXPORT_PRIVATE void reportExtraMemoryCostSlowCase(size_t);
</del><ins>+    JS_EXPORT_PRIVATE void reportExtraMemoryAllocatedSlowCase(size_t);
+    JS_EXPORT_PRIVATE void deprecatedReportExtraMemorySlowCase(size_t);
</ins><span class="cx"> 
</span><span class="cx">     void collectImpl(HeapOperation, void* stackOrigin, void* stackTop, MachineThreads::RegisterState&amp;);
</span><span class="cx"> 
</span><span class="lines">@@ -353,7 +361,8 @@
</span><span class="cx">     MarkedSpace m_objectSpace;
</span><span class="cx">     CopiedSpace m_storageSpace;
</span><span class="cx">     GCIncomingRefCountedSet&lt;ArrayBuffer&gt; m_arrayBuffers;
</span><del>-    size_t m_extraMemoryUsage;
</del><ins>+    size_t m_extraMemorySize;
+    size_t m_deprecatedExtraMemorySize;
</ins><span class="cx"> 
</span><span class="cx">     HashSet&lt;const JSCell*&gt; m_copyingRememberedSet;
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceJavaScriptCoreheapHeapInlinesh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/heap/HeapInlines.h (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/heap/HeapInlines.h        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/heap/HeapInlines.h        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -152,12 +152,41 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline void Heap::reportExtraMemoryCost(size_t cost)
</del><ins>+inline void Heap::reportExtraMemoryAllocated(size_t size)
</ins><span class="cx"> {
</span><del>-    if (cost &gt; minExtraCost) 
-        reportExtraMemoryCostSlowCase(cost);
</del><ins>+    if (size &gt; minExtraMemory) 
+        reportExtraMemoryAllocatedSlowCase(size);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline void Heap::reportExtraMemoryVisited(JSCell* owner, size_t size)
+{
+#if ENABLE(GGC)
+    // We don't want to double-count the extra memory that was reported in previous collections.
+    if (operationInProgress() == EdenCollection &amp;&amp; Heap::isRemembered(owner))
+        return;
+#else
+    UNUSED_PARAM(owner);
+#endif
+
+    size_t* counter = &amp;m_extraMemorySize;
+    
+#if ENABLE(COMPARE_AND_SWAP)
+    for (;;) {
+        size_t oldSize = *counter;
+        if (WTF::weakCompareAndSwapSize(counter, oldSize, oldSize + size))
+            return;
+    }
+#else
+    (*counter) += size;
+#endif
+}
+
+inline void Heap::deprecatedReportExtraMemory(size_t size)
+{
+    if (size &gt; minExtraMemory) 
+        deprecatedReportExtraMemorySlowCase(size);
+}
+
</ins><span class="cx"> template&lt;typename Functor&gt; inline typename Functor::ReturnType Heap::forEachProtectedCell(Functor&amp; functor)
</span><span class="cx"> {
</span><span class="cx">     for (auto&amp; pair : m_protectedValues)
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceJavaScriptCoreheapSlotVisitorh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/heap/SlotVisitor.h (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/heap/SlotVisitor.h        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/heap/SlotVisitor.h        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -105,7 +105,7 @@
</span><span class="cx"> 
</span><span class="cx">     void copyLater(JSCell*, CopyToken, void*, size_t);
</span><span class="cx">     
</span><del>-    void reportExtraMemoryUsage(JSCell* owner, size_t);
</del><ins>+    void reportExtraMemoryVisited(JSCell* owner, size_t);
</ins><span class="cx">     
</span><span class="cx">     void addWeakReferenceHarvester(WeakReferenceHarvester*);
</span><span class="cx">     void addUnconditionalFinalizer(UnconditionalFinalizer*);
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceJavaScriptCoreheapSlotVisitorInlinesh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/heap/SlotVisitorInlines.h (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/heap/SlotVisitorInlines.h        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/heap/SlotVisitorInlines.h        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -252,27 +252,9 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx">     
</span><del>-inline void SlotVisitor::reportExtraMemoryUsage(JSCell* owner, size_t size)
</del><ins>+inline void SlotVisitor::reportExtraMemoryVisited(JSCell* owner, size_t size)
</ins><span class="cx"> {
</span><del>-#if ENABLE(GGC)
-    // We don't want to double-count the extra memory that was reported in previous collections.
-    if (heap()-&gt;operationInProgress() == EdenCollection &amp;&amp; Heap::isRemembered(owner))
-        return;
-#else
-    UNUSED_PARAM(owner);
-#endif
-
-    size_t* counter = &amp;m_shared.m_vm-&gt;heap.m_extraMemoryUsage;
-    
-#if ENABLE(COMPARE_AND_SWAP)
-    for (;;) {
-        size_t oldSize = *counter;
-        if (WTF::weakCompareAndSwapSize(counter, oldSize, oldSize + size))
-            return;
-    }
-#else
-    (*counter) += size;
-#endif
</del><ins>+    heap()-&gt;reportExtraMemoryVisited(owner, size);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> inline Heap* SlotVisitor::heap() const
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceJavaScriptCoreruntimeJSArrayBufferViewcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/JSArrayBufferView.cpp (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/JSArrayBufferView.cpp        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/JSArrayBufferView.cpp        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -78,7 +78,7 @@
</span><span class="cx">             return;
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    vm.heap.reportExtraMemoryCost(static_cast&lt;size_t&gt;(length) * elementSize);
</del><ins>+    vm.heap.reportExtraMemoryAllocated(static_cast&lt;size_t&gt;(length) * elementSize);
</ins><span class="cx">     
</span><span class="cx">     m_structure = structure;
</span><span class="cx">     m_mode = OversizeTypedArray;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceJavaScriptCoreruntimeJSGenericTypedArrayViewInlinesh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -446,7 +446,7 @@
</span><span class="cx">     }
</span><span class="cx">         
</span><span class="cx">     case OversizeTypedArray: {
</span><del>-        visitor.reportExtraMemoryUsage(thisObject, thisObject-&gt;byteSize());
</del><ins>+        visitor.reportExtraMemoryVisited(thisObject, thisObject-&gt;byteSize());
</ins><span class="cx">         break;
</span><span class="cx">     }
</span><span class="cx">         
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceJavaScriptCoreruntimeJSStringcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/JSString.cpp (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/JSString.cpp        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/JSString.cpp        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -77,7 +77,7 @@
</span><span class="cx">     else {
</span><span class="cx">         StringImpl* impl = thisObject-&gt;m_value.impl();
</span><span class="cx">         ASSERT(impl);
</span><del>-        visitor.reportExtraMemoryUsage(thisObject, impl-&gt;costDuringGC());
</del><ins>+        visitor.reportExtraMemoryVisited(thisObject, impl-&gt;costDuringGC());
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -181,7 +181,7 @@
</span><span class="cx"> 
</span><span class="cx">     // If we resolved a string that didn't previously exist, notify the heap that we've grown.
</span><span class="cx">     if (m_value.impl()-&gt;hasOneRef())
</span><del>-        Heap::heap(this)-&gt;reportExtraMemoryCost(m_value.impl()-&gt;cost());
</del><ins>+        Heap::heap(this)-&gt;reportExtraMemoryAllocated(m_value.impl()-&gt;cost());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void JSRopeString::clearFibers() const
</span><span class="lines">@@ -240,7 +240,7 @@
</span><span class="cx">     if (is8Bit()) {
</span><span class="cx">         LChar* buffer;
</span><span class="cx">         if (RefPtr&lt;StringImpl&gt; newImpl = StringImpl::tryCreateUninitialized(m_length, buffer)) {
</span><del>-            Heap::heap(this)-&gt;reportExtraMemoryCost(newImpl-&gt;cost());
</del><ins>+            Heap::heap(this)-&gt;reportExtraMemoryAllocated(newImpl-&gt;cost());
</ins><span class="cx">             m_value = newImpl.release();
</span><span class="cx">         } else {
</span><span class="cx">             outOfMemory(exec);
</span><span class="lines">@@ -254,7 +254,7 @@
</span><span class="cx"> 
</span><span class="cx">     UChar* buffer;
</span><span class="cx">     if (RefPtr&lt;StringImpl&gt; newImpl = StringImpl::tryCreateUninitialized(m_length, buffer)) {
</span><del>-        Heap::heap(this)-&gt;reportExtraMemoryCost(newImpl-&gt;cost());
</del><ins>+        Heap::heap(this)-&gt;reportExtraMemoryAllocated(newImpl-&gt;cost());
</ins><span class="cx">         m_value = newImpl.release();
</span><span class="cx">     } else {
</span><span class="cx">         outOfMemory(exec);
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceJavaScriptCoreruntimeJSStringh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/JSString.h (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/JSString.h        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/JSString.h        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -107,7 +107,7 @@
</span><span class="cx">         Base::finishCreation(vm);
</span><span class="cx">         m_length = length;
</span><span class="cx">         setIs8Bit(m_value.impl()-&gt;is8Bit());
</span><del>-        Heap::heap(this)-&gt;reportExtraMemoryCost(cost);
</del><ins>+        Heap::heap(this)-&gt;reportExtraMemoryAllocated(cost);
</ins><span class="cx">         vm.m_newStringsSinceLastHashCons++;
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceJavaScriptCoreruntimeSparseArrayValueMapcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/SparseArrayValueMap.cpp (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/SparseArrayValueMap.cpp        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/SparseArrayValueMap.cpp        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -80,7 +80,9 @@
</span><span class="cx">     AddResult result = m_map.add(i, entry);
</span><span class="cx">     size_t capacity = m_map.capacity();
</span><span class="cx">     if (capacity != m_reportedCapacity) {
</span><del>-        Heap::heap(array)-&gt;reportExtraMemoryCost((capacity - m_reportedCapacity) * (sizeof(unsigned) + sizeof(WriteBarrier&lt;Unknown&gt;)));
</del><ins>+        // FIXME: Switch to deprecatedReportExtraMemory, or adopt reportExtraMemoryVisited.
+        // https://bugs.webkit.org/show_bug.cgi?id=142593
+        Heap::heap(array)-&gt;reportExtraMemoryAllocated((capacity - m_reportedCapacity) * (sizeof(unsigned) + sizeof(WriteBarrier&lt;Unknown&gt;)));
</ins><span class="cx">         m_reportedCapacity = capacity;
</span><span class="cx">     }
</span><span class="cx">     return result;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceJavaScriptCoreruntimeWeakMapDatacpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/WeakMapData.cpp (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/WeakMapData.cpp        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore/runtime/WeakMapData.cpp        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -64,7 +64,7 @@
</span><span class="cx">     // Rough approximation of the external storage needed for the hashtable.
</span><span class="cx">     // This isn't exact, but it is close enough, and proportional to the actual
</span><span class="cx">     // external mermory usage.
</span><del>-    visitor.reportExtraMemoryUsage(thisObj, thisObj-&gt;m_map.capacity() * (sizeof(JSObject*) + sizeof(WriteBarrier&lt;Unknown&gt;)));
</del><ins>+    visitor.reportExtraMemoryVisited(thisObj, thisObj-&gt;m_map.capacity() * (sizeof(JSObject*) + sizeof(WriteBarrier&lt;Unknown&gt;)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WeakMapData::set(VM&amp; vm, JSObject* key, JSValue value)
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/ChangeLog (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/WebCore/ChangeLog        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/ChangeLog        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -1,3 +1,45 @@
</span><ins>+2015-03-11  Geoffrey Garen  &lt;ggaren@apple.com&gt;
+
+        Refactored the JSC::Heap extra cost API for clarity and to make some known bugs more obvious
+        https://bugs.webkit.org/show_bug.cgi?id=142589
+
+        Reviewed by Andreas Kling.
+
+        Updated for renames to JSC extra cost APIs.
+
+        Added FIXMEs to our 10 use cases that are currently wrong, including
+        canvas, which is the cause of https://bugs.webkit.org/show_bug.cgi?id=142457.
+
+        * Modules/mediasource/SourceBuffer.cpp:
+        (WebCore::SourceBuffer::appendBufferInternal):
+        (WebCore::SourceBuffer::sourceBufferPrivateAppendComplete):
+        (WebCore::SourceBuffer::reportExtraMemoryAllocated):
+        (WebCore::SourceBuffer::reportExtraMemoryCost): Deleted.
+        * Modules/mediasource/SourceBuffer.h:
+        * bindings/js/JSDocumentCustom.cpp:
+        (WebCore::toJS):
+        * bindings/js/JSImageDataCustom.cpp:
+        (WebCore::toJS):
+        * bindings/js/JSNodeListCustom.cpp:
+        (WebCore::createWrapper):
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateImplementation):
+        * dom/CollectionIndexCache.cpp:
+        (WebCore::reportExtraMemoryAllocatedForCollectionIndexCache):
+        (WebCore::reportExtraMemoryCostForCollectionIndexCache): Deleted.
+        * dom/CollectionIndexCache.h:
+        (WebCore::Iterator&gt;::computeNodeCountUpdatingListCache):
+        * html/HTMLCanvasElement.cpp:
+        (WebCore::HTMLCanvasElement::createImageBuffer):
+        * html/HTMLCollection.h:
+        (WebCore::CollectionNamedElementCache::didPopulate):
+        * html/HTMLImageLoader.cpp:
+        (WebCore::HTMLImageLoader::imageChanged):
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::parseAttribute):
+        * xml/XMLHttpRequest.cpp:
+        (WebCore::XMLHttpRequest::dropProtection):
+
</ins><span class="cx"> 2015-03-11  Myles C. Maxfield  &lt;mmaxfield@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Inline block children do not have correct baselines if their children are also block elements
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceWebCoreModulesmediasourceSourceBuffercpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/Modules/mediasource/SourceBuffer.cpp (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/WebCore/Modules/mediasource/SourceBuffer.cpp        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/Modules/mediasource/SourceBuffer.cpp        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -571,7 +571,7 @@
</span><span class="cx">     // 6. Asynchronously run the buffer append algorithm.
</span><span class="cx">     m_appendBufferTimer.startOneShot(0);
</span><span class="cx"> 
</span><del>-    reportExtraMemoryCost();
</del><ins>+    reportExtraMemoryAllocated();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SourceBuffer::appendBufferTimerFired()
</span><span class="lines">@@ -657,7 +657,7 @@
</span><span class="cx">             provideMediaData(trackBuffer, trackID);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    reportExtraMemoryCost();
</del><ins>+    reportExtraMemoryAllocated();
</ins><span class="cx">     if (extraMemoryCost() &gt; this-&gt;maximumBufferSize())
</span><span class="cx">         m_bufferFull = true;
</span><span class="cx"> 
</span><span class="lines">@@ -1978,7 +1978,7 @@
</span><span class="cx">     return extraMemoryCost;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void SourceBuffer::reportExtraMemoryCost()
</del><ins>+void SourceBuffer::reportExtraMemoryAllocated()
</ins><span class="cx"> {
</span><span class="cx">     size_t extraMemoryCost = this-&gt;extraMemoryCost();
</span><span class="cx">     if (extraMemoryCost &lt; m_reportedExtraMemoryCost)
</span><span class="lines">@@ -1988,8 +1988,11 @@
</span><span class="cx">     m_reportedExtraMemoryCost = extraMemoryCost;
</span><span class="cx"> 
</span><span class="cx">     JSC::JSLockHolder lock(scriptExecutionContext()-&gt;vm());
</span><del>-    if (extraMemoryCostDelta &gt; 0)
-        scriptExecutionContext()-&gt;vm().heap.reportExtraMemoryCost(extraMemoryCostDelta);
</del><ins>+    if (extraMemoryCostDelta &gt; 0) {
+        // FIXME: Switch to deprecatedReportExtraMemory, or adopt reportExtraMemoryVisited.
+        // https://bugs.webkit.org/show_bug.cgi?id=142593
+        scriptExecutionContext()-&gt;vm().heap.reportExtraMemoryAllocated(extraMemoryCostDelta);
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Vector&lt;String&gt; SourceBuffer::bufferedSamplesForTrackID(const AtomicString&amp; trackID)
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceWebCoreModulesmediasourceSourceBufferh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/Modules/mediasource/SourceBuffer.h (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/WebCore/Modules/mediasource/SourceBuffer.h        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/Modules/mediasource/SourceBuffer.h        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -189,7 +189,7 @@
</span><span class="cx">     void removeCodedFrames(const MediaTime&amp; start, const MediaTime&amp; end);
</span><span class="cx"> 
</span><span class="cx">     size_t extraMemoryCost() const;
</span><del>-    void reportExtraMemoryCost();
</del><ins>+    void reportExtraMemoryAllocated();
</ins><span class="cx"> 
</span><span class="cx">     std::unique_ptr&lt;PlatformTimeRanges&gt; bufferedAccountingForEndOfStream() const;
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceWebCorebindingsjsJSDocumentCustomcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/js/JSDocumentCustom.cpp (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/js/JSDocumentCustom.cpp        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/js/JSDocumentCustom.cpp        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -109,7 +109,9 @@
</span><span class="cx">         for (Node* n = document; n; n = NodeTraversal::next(*n))
</span><span class="cx">             nodeCount++;
</span><span class="cx">         
</span><del>-        exec-&gt;heap()-&gt;reportExtraMemoryCost(nodeCount * sizeof(Node));
</del><ins>+        // FIXME: Switch to deprecatedReportExtraMemory, or adopt reportExtraMemoryVisited.
+        // https://bugs.webkit.org/show_bug.cgi?id=142593
+        exec-&gt;heap()-&gt;reportExtraMemoryAllocated(nodeCount * sizeof(Node));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return wrapper;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceWebCorebindingsjsJSImageDataCustomcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/js/JSImageDataCustom.cpp (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/js/JSImageDataCustom.cpp        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/js/JSImageDataCustom.cpp        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -47,7 +47,9 @@
</span><span class="cx">     wrapper = CREATE_DOM_WRAPPER(globalObject, ImageData, imageData);
</span><span class="cx">     Identifier dataName(exec, &quot;data&quot;);
</span><span class="cx">     wrapper-&gt;putDirect(exec-&gt;vm(), dataName, toJS(exec, globalObject, imageData-&gt;data()), DontDelete | ReadOnly);
</span><del>-    exec-&gt;heap()-&gt;reportExtraMemoryCost(imageData-&gt;data()-&gt;length());
</del><ins>+    // FIXME: Switch to deprecatedReportExtraMemory, or adopt reportExtraMemoryVisited.
+    // https://bugs.webkit.org/show_bug.cgi?id=142593
+    exec-&gt;heap()-&gt;reportExtraMemoryAllocated(imageData-&gt;data()-&gt;length());
</ins><span class="cx">     
</span><span class="cx">     return wrapper;
</span><span class="cx"> }
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceWebCorebindingsjsJSNodeListCustomcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/js/JSNodeListCustom.cpp (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/js/JSNodeListCustom.cpp        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/js/JSNodeListCustom.cpp        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -62,7 +62,9 @@
</span><span class="cx"> 
</span><span class="cx"> JSC::JSValue createWrapper(JSDOMGlobalObject&amp; globalObject, NodeList&amp; nodeList)
</span><span class="cx"> {
</span><del>-    globalObject.vm().heap.reportExtraMemoryCost(nodeList.memoryCost());
</del><ins>+    // FIXME: Switch to deprecatedReportExtraMemory, or adopt reportExtraMemoryVisited.
+    // https://bugs.webkit.org/show_bug.cgi?id=142593
+    globalObject.vm().heap.reportExtraMemoryAllocated(nodeList.memoryCost());
</ins><span class="cx">     return createNewWrapper&lt;JSNodeList&gt;(&amp;globalObject, &amp;nodeList);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -2857,7 +2857,7 @@
</span><span class="cx">         }
</span><span class="cx">         push(@implContent, &quot;    thisObject-&gt;visitAdditionalChildren(visitor);\n&quot;) if $interface-&gt;extendedAttributes-&gt;{&quot;JSCustomMarkFunction&quot;};
</span><span class="cx">         if ($interface-&gt;extendedAttributes-&gt;{&quot;ReportExtraMemoryCost&quot;}) {
</span><del>-            push(@implContent, &quot;    visitor.reportExtraMemoryUsage(cell, thisObject-&gt;impl().memoryCost());\n&quot;);
</del><ins>+            push(@implContent, &quot;    visitor.reportExtraMemoryVisited(cell, thisObject-&gt;impl().memoryCost());\n&quot;);
</ins><span class="cx">         }
</span><span class="cx">         if ($numCachedAttributes &gt; 0) {
</span><span class="cx">             foreach (@{$interface-&gt;attributes}) {
</span><span class="lines">@@ -3072,7 +3072,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> END
</span><span class="cx">         push(@implContent, &lt;&lt;END) if $interface-&gt;extendedAttributes-&gt;{&quot;ReportExtraMemoryCost&quot;};
</span><del>-    globalObject-&gt;vm().heap.reportExtraMemoryCost(impl-&gt;memoryCost());
</del><ins>+    globalObject-&gt;vm().heap.reportExtraMemoryAllocated(impl-&gt;memoryCost());
</ins><span class="cx"> END
</span><span class="cx"> 
</span><span class="cx">         if ($svgPropertyType) {
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceWebCoredomCollectionIndexCachecpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/dom/CollectionIndexCache.cpp (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/WebCore/dom/CollectionIndexCache.cpp        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/dom/CollectionIndexCache.cpp        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -30,11 +30,13 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-void reportExtraMemoryCostForCollectionIndexCache(size_t cost)
</del><ins>+void reportExtraMemoryAllocatedForCollectionIndexCache(size_t cost)
</ins><span class="cx"> {
</span><span class="cx">     JSC::VM&amp; vm = JSDOMWindowBase::commonVM();
</span><span class="cx">     JSC::JSLockHolder lock(vm);
</span><del>-    vm.heap.reportExtraMemoryCost(cost);
</del><ins>+    // FIXME: Switch to deprecatedReportExtraMemory, or adopt reportExtraMemoryVisited.
+    // https://bugs.webkit.org/show_bug.cgi?id=142593
+    vm.heap.reportExtraMemoryAllocated(cost);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceWebCoredomCollectionIndexCacheh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/dom/CollectionIndexCache.h (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/WebCore/dom/CollectionIndexCache.h        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/dom/CollectionIndexCache.h        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -30,7 +30,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-void reportExtraMemoryCostForCollectionIndexCache(size_t);
</del><ins>+void reportExtraMemoryAllocatedForCollectionIndexCache(size_t);
</ins><span class="cx"> 
</span><span class="cx"> template &lt;class Collection, class Iterator&gt;
</span><span class="cx"> class CollectionIndexCache {
</span><span class="lines">@@ -100,7 +100,7 @@
</span><span class="cx">     m_listValid = true;
</span><span class="cx"> 
</span><span class="cx">     if (unsigned capacityDifference = m_cachedList.capacity() - oldCapacity)
</span><del>-        reportExtraMemoryCostForCollectionIndexCache(capacityDifference * sizeof(NodeType*));
</del><ins>+        reportExtraMemoryAllocatedForCollectionIndexCache(capacityDifference * sizeof(NodeType*));
</ins><span class="cx"> 
</span><span class="cx">     return m_cachedList.size();
</span><span class="cx"> }
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceWebCorehtmlHTMLCanvasElementcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/html/HTMLCanvasElement.cpp (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/WebCore/html/HTMLCanvasElement.cpp        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/html/HTMLCanvasElement.cpp        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -580,7 +580,9 @@
</span><span class="cx"> 
</span><span class="cx">     JSC::JSLockHolder lock(scriptExecutionContext()-&gt;vm());
</span><span class="cx">     size_t numBytes = 4 * m_imageBuffer-&gt;internalSize().width() * m_imageBuffer-&gt;internalSize().height();
</span><del>-    scriptExecutionContext()-&gt;vm().heap.reportExtraMemoryCost(numBytes);
</del><ins>+    // FIXME: Switch to deprecatedReportExtraMemory, or adopt reportExtraMemoryVisited.
+    // https://bugs.webkit.org/show_bug.cgi?id=142593
+    scriptExecutionContext()-&gt;vm().heap.reportExtraMemoryAllocated(numBytes);
</ins><span class="cx"> 
</span><span class="cx"> #if USE(IOSURFACE_CANVAS_BACKING_STORE) || ENABLE(ACCELERATED_2D_CANVAS)
</span><span class="cx">     if (m_context &amp;&amp; m_context-&gt;is2d())
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceWebCorehtmlHTMLCollectionh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/html/HTMLCollection.h (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/WebCore/html/HTMLCollection.h        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/html/HTMLCollection.h        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -160,7 +160,7 @@
</span><span class="cx">     m_didPopulate = true;
</span><span class="cx"> #endif
</span><span class="cx">     if (size_t cost = memoryCost())
</span><del>-        reportExtraMemoryCostForCollectionIndexCache(cost);
</del><ins>+        reportExtraMemoryAllocatedForCollectionIndexCache(cost);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> inline const Vector&lt;Element*&gt;* CollectionNamedElementCache::find(const StringToElementsMap&amp; map, const AtomicString&amp; key) const
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceWebCorehtmlHTMLImageLoadercpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/html/HTMLImageLoader.cpp (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/WebCore/html/HTMLImageLoader.cpp        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/html/HTMLImageLoader.cpp        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -87,7 +87,9 @@
</span><span class="cx">         if (!element().inDocument()) {
</span><span class="cx">             JSC::VM&amp; vm = JSDOMWindowBase::commonVM();
</span><span class="cx">             JSC::JSLockHolder lock(vm);
</span><del>-            vm.heap.reportExtraMemoryCost(cachedImage-&gt;encodedSize());
</del><ins>+            // FIXME: Switch to deprecatedReportExtraMemory, or adopt reportExtraMemoryVisited.
+            // https://bugs.webkit.org/show_bug.cgi?id=142593
+            vm.heap.reportExtraMemoryAllocated(cachedImage-&gt;encodedSize());
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceWebCorehtmlHTMLMediaElementcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/html/HTMLMediaElement.cpp (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/WebCore/html/HTMLMediaElement.cpp        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/html/HTMLMediaElement.cpp        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -692,8 +692,11 @@
</span><span class="cx">             size_t extraMemoryCostDelta = extraMemoryCost - m_reportedExtraMemoryCost;
</span><span class="cx">             m_reportedExtraMemoryCost = extraMemoryCost;
</span><span class="cx"> 
</span><del>-            if (extraMemoryCostDelta &gt; 0)
-                vm.heap.reportExtraMemoryCost(extraMemoryCostDelta);
</del><ins>+            if (extraMemoryCostDelta &gt; 0) {
+                // FIXME: Switch to deprecatedReportExtraMemory, or adopt reportExtraMemoryVisited.
+                // https://bugs.webkit.org/show_bug.cgi?id=142593
+                vm.heap.reportExtraMemoryAllocated(extraMemoryCostDelta);
+            }
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceWebCorexmlXMLHttpRequestcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/xml/XMLHttpRequest.cpp (181532 => 181533)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/WebCore/xml/XMLHttpRequest.cpp        2015-03-16 10:00:59 UTC (rev 181532)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/xml/XMLHttpRequest.cpp        2015-03-16 10:13:35 UTC (rev 181533)
</span><span class="lines">@@ -913,7 +913,9 @@
</span><span class="cx">     // report the extra cost at that point.
</span><span class="cx">     JSC::VM&amp; vm = scriptExecutionContext()-&gt;vm();
</span><span class="cx">     JSC::JSLockHolder lock(vm);
</span><del>-    vm.heap.reportExtraMemoryCost(m_responseBuilder.length() * 2);
</del><ins>+    // FIXME: Switch to deprecatedReportExtraMemory, or adopt reportExtraMemoryVisited.
+    // https://bugs.webkit.org/show_bug.cgi?id=142593
+    vm.heap.reportExtraMemoryAllocated(m_responseBuilder.length() * 2);
</ins><span class="cx"> 
</span><span class="cx">     unsetPendingActivity(this);
</span><span class="cx"> }
</span></span></pre>
</div>
</div>

</body>
</html>