<!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<Adaptor>::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>::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->vm().heap.reportExtraMemoryCost(size);
</del><ins>+
+ // FIXME: switch to deprecatedReportExtraMemory.
+ // https://bugs.webkit.org/show_bug.cgi?id=142593
+ exec->vm().heap.reportExtraMemoryAllocated(size);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> extern "C" 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 <ggaren@apple.com>
+
+ 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<Adaptor>::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 <mark.lam@apple.com>
</span><span class="cx">
</span><span class="cx"> Use std::numeric_limits<unsigned>::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->m_codeBlocks.add(this);
</span><del>- m_heap->reportExtraMemoryCost(sizeof(CodeBlock));
</del><ins>+ m_heap->reportExtraMemoryAllocated(sizeof(CodeBlock));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> CodeBlock::CodeBlock(ScriptExecutable* ownerExecutable, UnlinkedCodeBlock* unlinkedCodeBlock, JSScope* scope, PassRefPtr<SourceProvider> 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->m_codeBlocks.add(this);
</span><del>- m_heap->reportExtraMemoryCost(sizeof(CodeBlock) + m_instructions.size() * sizeof(Instruction));
</del><ins>+ m_heap->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->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->size());
</del><ins>+ visitor.reportExtraMemoryVisited(ownerExecutable(), m_jitCode->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(&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<JITCode> code)
</span><span class="cx"> {
</span><span class="cx"> ASSERT(m_heap->isDeferred());
</span><del>- m_heap->reportExtraMemoryCost(code->size());
</del><ins>+ m_heap->reportExtraMemoryAllocated(code->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 <= m_storageSpace.size().
</span><span class="cx"> ASSERT(m_totalBytesCopied <= 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->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<Unknown>, 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&);
</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<ArrayBuffer> 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<const JSCell*> 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 > minExtraCost)
- reportExtraMemoryCostSlowCase(cost);
</del><ins>+ if (size > 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 && Heap::isRemembered(owner))
+ return;
+#else
+ UNUSED_PARAM(owner);
+#endif
+
+ size_t* counter = &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 > minExtraMemory)
+ deprecatedReportExtraMemorySlowCase(size);
+}
+
</ins><span class="cx"> template<typename Functor> inline typename Functor::ReturnType Heap::forEachProtectedCell(Functor& functor)
</span><span class="cx"> {
</span><span class="cx"> for (auto& 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()->operationInProgress() == EdenCollection && Heap::isRemembered(owner))
- return;
-#else
- UNUSED_PARAM(owner);
-#endif
-
- size_t* counter = &m_shared.m_vm->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()->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<size_t>(length) * elementSize);
</del><ins>+ vm.heap.reportExtraMemoryAllocated(static_cast<size_t>(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->byteSize());
</del><ins>+ visitor.reportExtraMemoryVisited(thisObject, thisObject->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->m_value.impl();
</span><span class="cx"> ASSERT(impl);
</span><del>- visitor.reportExtraMemoryUsage(thisObject, impl->costDuringGC());
</del><ins>+ visitor.reportExtraMemoryVisited(thisObject, impl->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()->hasOneRef())
</span><del>- Heap::heap(this)->reportExtraMemoryCost(m_value.impl()->cost());
</del><ins>+ Heap::heap(this)->reportExtraMemoryAllocated(m_value.impl()->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<StringImpl> newImpl = StringImpl::tryCreateUninitialized(m_length, buffer)) {
</span><del>- Heap::heap(this)->reportExtraMemoryCost(newImpl->cost());
</del><ins>+ Heap::heap(this)->reportExtraMemoryAllocated(newImpl->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<StringImpl> newImpl = StringImpl::tryCreateUninitialized(m_length, buffer)) {
</span><del>- Heap::heap(this)->reportExtraMemoryCost(newImpl->cost());
</del><ins>+ Heap::heap(this)->reportExtraMemoryAllocated(newImpl->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()->is8Bit());
</span><del>- Heap::heap(this)->reportExtraMemoryCost(cost);
</del><ins>+ Heap::heap(this)->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)->reportExtraMemoryCost((capacity - m_reportedCapacity) * (sizeof(unsigned) + sizeof(WriteBarrier<Unknown>)));
</del><ins>+ // FIXME: Switch to deprecatedReportExtraMemory, or adopt reportExtraMemoryVisited.
+ // https://bugs.webkit.org/show_bug.cgi?id=142593
+ Heap::heap(array)->reportExtraMemoryAllocated((capacity - m_reportedCapacity) * (sizeof(unsigned) + sizeof(WriteBarrier<Unknown>)));
</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->m_map.capacity() * (sizeof(JSObject*) + sizeof(WriteBarrier<Unknown>)));
</del><ins>+ visitor.reportExtraMemoryVisited(thisObj, thisObj->m_map.capacity() * (sizeof(JSObject*) + sizeof(WriteBarrier<Unknown>)));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WeakMapData::set(VM& 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 <ggaren@apple.com>
+
+ 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>::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 <mmaxfield@apple.com>
</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() > this->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->extraMemoryCost();
</span><span class="cx"> if (extraMemoryCost < 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()->vm());
</span><del>- if (extraMemoryCostDelta > 0)
- scriptExecutionContext()->vm().heap.reportExtraMemoryCost(extraMemoryCostDelta);
</del><ins>+ if (extraMemoryCostDelta > 0) {
+ // FIXME: Switch to deprecatedReportExtraMemory, or adopt reportExtraMemoryVisited.
+ // https://bugs.webkit.org/show_bug.cgi?id=142593
+ scriptExecutionContext()->vm().heap.reportExtraMemoryAllocated(extraMemoryCostDelta);
+ }
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> Vector<String> SourceBuffer::bufferedSamplesForTrackID(const AtomicString& 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& start, const MediaTime& 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<PlatformTimeRanges> 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->heap()->reportExtraMemoryCost(nodeCount * sizeof(Node));
</del><ins>+ // FIXME: Switch to deprecatedReportExtraMemory, or adopt reportExtraMemoryVisited.
+ // https://bugs.webkit.org/show_bug.cgi?id=142593
+ exec->heap()->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, "data");
</span><span class="cx"> wrapper->putDirect(exec->vm(), dataName, toJS(exec, globalObject, imageData->data()), DontDelete | ReadOnly);
</span><del>- exec->heap()->reportExtraMemoryCost(imageData->data()->length());
</del><ins>+ // FIXME: Switch to deprecatedReportExtraMemory, or adopt reportExtraMemoryVisited.
+ // https://bugs.webkit.org/show_bug.cgi?id=142593
+ exec->heap()->reportExtraMemoryAllocated(imageData->data()->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& globalObject, NodeList& 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<JSNodeList>(&globalObject, &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, " thisObject->visitAdditionalChildren(visitor);\n") if $interface->extendedAttributes->{"JSCustomMarkFunction"};
</span><span class="cx"> if ($interface->extendedAttributes->{"ReportExtraMemoryCost"}) {
</span><del>- push(@implContent, " visitor.reportExtraMemoryUsage(cell, thisObject->impl().memoryCost());\n");
</del><ins>+ push(@implContent, " visitor.reportExtraMemoryVisited(cell, thisObject->impl().memoryCost());\n");
</ins><span class="cx"> }
</span><span class="cx"> if ($numCachedAttributes > 0) {
</span><span class="cx"> foreach (@{$interface->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, <<END) if $interface->extendedAttributes->{"ReportExtraMemoryCost"};
</span><del>- globalObject->vm().heap.reportExtraMemoryCost(impl->memoryCost());
</del><ins>+ globalObject->vm().heap.reportExtraMemoryAllocated(impl->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& 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 <class Collection, class Iterator>
</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()->vm());
</span><span class="cx"> size_t numBytes = 4 * m_imageBuffer->internalSize().width() * m_imageBuffer->internalSize().height();
</span><del>- scriptExecutionContext()->vm().heap.reportExtraMemoryCost(numBytes);
</del><ins>+ // FIXME: Switch to deprecatedReportExtraMemory, or adopt reportExtraMemoryVisited.
+ // https://bugs.webkit.org/show_bug.cgi?id=142593
+ scriptExecutionContext()->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 && m_context->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<Element*>* CollectionNamedElementCache::find(const StringToElementsMap& map, const AtomicString& 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& vm = JSDOMWindowBase::commonVM();
</span><span class="cx"> JSC::JSLockHolder lock(vm);
</span><del>- vm.heap.reportExtraMemoryCost(cachedImage->encodedSize());
</del><ins>+ // FIXME: Switch to deprecatedReportExtraMemory, or adopt reportExtraMemoryVisited.
+ // https://bugs.webkit.org/show_bug.cgi?id=142593
+ vm.heap.reportExtraMemoryAllocated(cachedImage->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 > 0)
- vm.heap.reportExtraMemoryCost(extraMemoryCostDelta);
</del><ins>+ if (extraMemoryCostDelta > 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& vm = scriptExecutionContext()->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>