Title: [165197] trunk/Source/_javascript_Core
- Revision
- 165197
- Author
- [email protected]
- Date
- 2014-03-06 10:47:57 -0800 (Thu, 06 Mar 2014)
Log Message
Drop unlinked function code on memory pressure.
<https://webkit.org/b/129789>
Make VM::discardAllCode() also drop UnlinkedFunctionCodeBlocks that
are not currently being compiled.
4.5 MB progression on Membuster.
Reviewed by Geoffrey Garen.
* heap/Heap.cpp:
(JSC::Heap::deleteAllUnlinkedFunctionCode):
* heap/Heap.h:
* runtime/VM.cpp:
(JSC::VM::discardAllCode):
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (165196 => 165197)
--- trunk/Source/_javascript_Core/ChangeLog 2014-03-06 18:33:18 UTC (rev 165196)
+++ trunk/Source/_javascript_Core/ChangeLog 2014-03-06 18:47:57 UTC (rev 165197)
@@ -1,3 +1,21 @@
+2014-03-06 Andreas Kling <[email protected]>
+
+ Drop unlinked function code on memory pressure.
+ <https://webkit.org/b/129789>
+
+ Make VM::discardAllCode() also drop UnlinkedFunctionCodeBlocks that
+ are not currently being compiled.
+
+ 4.5 MB progression on Membuster.
+
+ Reviewed by Geoffrey Garen.
+
+ * heap/Heap.cpp:
+ (JSC::Heap::deleteAllUnlinkedFunctionCode):
+ * heap/Heap.h:
+ * runtime/VM.cpp:
+ (JSC::VM::discardAllCode):
+
2014-03-06 Filip Pizlo <[email protected]>
Clarify how we deal with "special" registers
Modified: trunk/Source/_javascript_Core/heap/Heap.cpp (165196 => 165197)
--- trunk/Source/_javascript_Core/heap/Heap.cpp 2014-03-06 18:33:18 UTC (rev 165196)
+++ trunk/Source/_javascript_Core/heap/Heap.cpp 2014-03-06 18:47:57 UTC (rev 165197)
@@ -802,6 +802,15 @@
m_codeBlocks.deleteUnmarkedAndUnreferenced();
}
+void Heap::deleteAllUnlinkedFunctionCode()
+{
+ for (ExecutableBase* current = m_compiledCode.head(); current; current = current->next()) {
+ if (!current->isFunctionExecutable())
+ continue;
+ static_cast<FunctionExecutable*>(current)->clearUnlinkedCodeForRecompilationIfNotCompiling();
+ }
+}
+
void Heap::deleteUnmarkedCompiledCode()
{
GCPHASE(DeleteCodeBlocks);
Modified: trunk/Source/_javascript_Core/heap/Heap.h (165196 => 165197)
--- trunk/Source/_javascript_Core/heap/Heap.h 2014-03-06 18:33:18 UTC (rev 165196)
+++ trunk/Source/_javascript_Core/heap/Heap.h 2014-03-06 18:47:57 UTC (rev 165197)
@@ -190,6 +190,7 @@
void increaseLastGCLength(double amount) { m_lastGCLength += amount; }
JS_EXPORT_PRIVATE void deleteAllCompiledCode();
+ void deleteAllUnlinkedFunctionCode();
void didAllocate(size_t);
void didAbandon(size_t);
Modified: trunk/Source/_javascript_Core/runtime/VM.cpp (165196 => 165197)
--- trunk/Source/_javascript_Core/runtime/VM.cpp 2014-03-06 18:33:18 UTC (rev 165196)
+++ trunk/Source/_javascript_Core/runtime/VM.cpp 2014-03-06 18:47:57 UTC (rev 165197)
@@ -525,6 +525,7 @@
waitForCompilationsToComplete();
m_codeCache->clear();
heap.deleteAllCompiledCode();
+ heap.deleteAllUnlinkedFunctionCode();
heap.reportAbandonedObjectGraph();
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes