Index: third_party/WebKit/Source/platform/heap/ThreadState.cpp |
diff --git a/third_party/WebKit/Source/platform/heap/ThreadState.cpp b/third_party/WebKit/Source/platform/heap/ThreadState.cpp |
index 9de5549437e8814087cb2df86d36621584ab65f4..1065cebb9701c4f3e2c08766b2ace65f143598fe 100644 |
--- a/third_party/WebKit/Source/platform/heap/ThreadState.cpp |
+++ b/third_party/WebKit/Source/platform/heap/ThreadState.cpp |
@@ -626,6 +626,11 @@ void ThreadState::willStartV8GC(BlinkGC::V8GCType gcType) |
if (gcType == BlinkGC::V8MajorGC) |
completeSweep(); |
+ // If stack room is currently at a high premium, do not initiate an |
+ // Oilpan GC. |
+ if (StackFrameDepth::hasInsufficientStackForGC()) |
+ return; |
+ |
// The fact that the PageNavigation GC is scheduled means that there is |
// a dead frame. In common cases, a sequence of Oilpan's GC => V8 GC => |
// Oilpan's GC is needed to collect the dead frame. So we force the |