Title: [205718] releases/WebKitGTK/webkit-2.14/Source/_javascript_Core
Revision
205718
Author
[email protected]
Date
2016-09-09 02:15:48 -0700 (Fri, 09 Sep 2016)

Log Message

Merge r205466 - Heap::isMarked() should use concurrent lazy flipping
https://bugs.webkit.org/show_bug.cgi?id=161613

Reviewed by Michael Catanzaro.

I found out about this race condition via
https://bugs.webkit.org/show_bug.cgi?id=160125#c233.

The problem is that we use isMarked, and maybe even isLive, inside the concurrent mark
phase. So, they need to lazy-flip in a non-racy way.

* heap/HeapInlines.h:
(JSC::Heap::isLive):
(JSC::Heap::isMarked):

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.14/Source/_javascript_Core/ChangeLog (205717 => 205718)


--- releases/WebKitGTK/webkit-2.14/Source/_javascript_Core/ChangeLog	2016-09-09 08:55:20 UTC (rev 205717)
+++ releases/WebKitGTK/webkit-2.14/Source/_javascript_Core/ChangeLog	2016-09-09 09:15:48 UTC (rev 205718)
@@ -1,3 +1,20 @@
+2016-09-05  Filip Pizlo  <[email protected]>
+
+        Heap::isMarked() should use concurrent lazy flipping
+        https://bugs.webkit.org/show_bug.cgi?id=161613
+
+        Reviewed by Michael Catanzaro.
+        
+        I found out about this race condition via
+        https://bugs.webkit.org/show_bug.cgi?id=160125#c233.
+        
+        The problem is that we use isMarked, and maybe even isLive, inside the concurrent mark
+        phase. So, they need to lazy-flip in a non-racy way.
+
+        * heap/HeapInlines.h:
+        (JSC::Heap::isLive):
+        (JSC::Heap::isMarked):
+
 2016-08-31  Filip Pizlo  <[email protected]>
 
         Butterflies should be allocated in Auxiliary MarkedSpace instead of CopiedSpace and we should rewrite as much of the GC as needed to make this not a regression

Modified: releases/WebKitGTK/webkit-2.14/Source/_javascript_Core/heap/HeapInlines.h (205717 => 205718)


--- releases/WebKitGTK/webkit-2.14/Source/_javascript_Core/heap/HeapInlines.h	2016-09-09 08:55:20 UTC (rev 205717)
+++ releases/WebKitGTK/webkit-2.14/Source/_javascript_Core/heap/HeapInlines.h	2016-09-09 09:15:48 UTC (rev 205718)
@@ -80,7 +80,7 @@
     if (cell->isLargeAllocation())
         return cell->largeAllocation().isLive();
     MarkedBlock& block = cell->markedBlock();
-    block.flipIfNecessary(block.vm()->heap.objectSpace().version());
+    block.flipIfNecessaryConcurrently(block.vm()->heap.objectSpace().version());
     return block.handle().isLiveCell(cell);
 }
 
@@ -90,7 +90,7 @@
     if (cell->isLargeAllocation())
         return cell->largeAllocation().isMarked();
     MarkedBlock& block = cell->markedBlock();
-    block.flipIfNecessary(block.vm()->heap.objectSpace().version());
+    block.flipIfNecessaryConcurrently(block.vm()->heap.objectSpace().version());
     return block.isMarked(cell);
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to