Title: [164447] trunk/Source/_javascript_Core
Revision
164447
Author
mhahnenb...@apple.com
Date
2014-02-20 14:53:21 -0800 (Thu, 20 Feb 2014)

Log Message

Add a JSC option to disable EdenCollections
https://bugs.webkit.org/show_bug.cgi?id=128849

Reviewed by Mark Lam.

This will help quickly identify whether or not GenGC is responsible for a
particular crash by prematurely collecting a live object.

* heap/Heap.cpp:
(JSC::Heap::collect):
(JSC::Heap::shouldDoFullCollection):
* heap/Heap.h:
* runtime/Options.h:

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (164446 => 164447)


--- trunk/Source/_javascript_Core/ChangeLog	2014-02-20 22:09:12 UTC (rev 164446)
+++ trunk/Source/_javascript_Core/ChangeLog	2014-02-20 22:53:21 UTC (rev 164447)
@@ -1,3 +1,19 @@
+2014-02-20  Mark Hahnenberg  <mhahnenb...@apple.com>
+
+        Add a JSC option to disable EdenCollections
+        https://bugs.webkit.org/show_bug.cgi?id=128849
+
+        Reviewed by Mark Lam.
+
+        This will help quickly identify whether or not GenGC is responsible for a 
+        particular crash by prematurely collecting a live object.
+
+        * heap/Heap.cpp:
+        (JSC::Heap::collect):
+        (JSC::Heap::shouldDoFullCollection):
+        * heap/Heap.h:
+        * runtime/Options.h:
+
 2014-02-20  Michael Saboff  <msab...@apple.com>
 
         REGRESSION (r164417): ASSERTION FAILED: isBranch() in X86 32 bit build

Modified: trunk/Source/_javascript_Core/heap/Heap.cpp (164446 => 164447)


--- trunk/Source/_javascript_Core/heap/Heap.cpp	2014-02-20 22:09:12 UTC (rev 164446)
+++ trunk/Source/_javascript_Core/heap/Heap.cpp	2014-02-20 22:53:21 UTC (rev 164447)
@@ -832,24 +832,16 @@
     }
 #endif
 
-    bool isFullCollection = m_shouldDoFullCollection;
-    if (isFullCollection) {
+    if (shouldDoFullCollection()) {
         m_operationInProgress = FullCollection;
         m_slotVisitor.clearMarkStack();
         m_shouldDoFullCollection = false;
         if (Options::logGC())
             dataLog("FullCollection, ");
     } else {
-#if ENABLE(GGC)
         m_operationInProgress = EdenCollection;
         if (Options::logGC())
             dataLog("EdenCollection, ");
-#else
-        m_operationInProgress = FullCollection;
-        m_slotVisitor.clearMarkStack();
-        if (Options::logGC())
-            dataLog("FullCollection, ");
-#endif
     }
     if (m_operationInProgress == FullCollection)
         m_extraMemoryUsage = 0;
@@ -1136,4 +1128,13 @@
 #endif
 }
 
+bool Heap::shouldDoFullCollection() const
+{
+#if ENABLE(GGC)
+    return Options::alwaysDoFullCollection() || m_shouldDoFullCollection;
+#else
+    return true;
+#endif
+}
+
 } // namespace JSC

Modified: trunk/Source/_javascript_Core/heap/Heap.h (164446 => 164447)


--- trunk/Source/_javascript_Core/heap/Heap.h	2014-02-20 22:09:12 UTC (rev 164446)
+++ trunk/Source/_javascript_Core/heap/Heap.h	2014-02-20 22:53:21 UTC (rev 164447)
@@ -255,6 +255,7 @@
         void zombifyDeadObjects();
         void markDeadObjects();
 
+        bool shouldDoFullCollection() const;
         size_t sizeAfterCollect();
 
         JSStack& stack();

Modified: trunk/Source/_javascript_Core/runtime/Options.h (164446 => 164447)


--- trunk/Source/_javascript_Core/runtime/Options.h	2014-02-20 22:09:12 UTC (rev 164446)
+++ trunk/Source/_javascript_Core/runtime/Options.h	2014-02-20 22:53:21 UTC (rev 164447)
@@ -135,6 +135,7 @@
     v(bool, alwaysComputeHash, false) \
     v(bool, testTheFTL, false) \
     v(bool, verboseSanitizeStack, false) \
+    v(bool, alwaysDoFullCollection, false) \
     \
     v(bool, enableOSREntryToDFG, true) \
     v(bool, enableOSREntryToFTL, true) \
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to