Title: [186422] releases/WebKitGTK/webkit-2.8/Source/_javascript_Core
Revision
186422
Author
[email protected]
Date
2015-07-07 02:03:55 -0700 (Tue, 07 Jul 2015)

Log Message

Merge r185770 - WebKit crash while loading nytimes at _javascript_Core: JSC::ExecutableAllocator::allocate + 276
https://bugs.webkit.org/show_bug.cgi?id=146163
<rdar://problem/20392986>

Reviewed by Michael Saboff.

There's no good way to test this in our test harness because we don't
have a way to simulate executable memory pressure, and doing so would
cause the cases that still use JITCompilationMustSucceed to crash.

Instead, I tested by manually forcing all regexp JIT compilation to
fail and running the _javascript_Core tests.

* yarr/YarrJIT.cpp:
(JSC::Yarr::YarrGenerator::compile): Allow compilation to fail. We can
fall back to the regexp interpreter if we need to.

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.8/Source/_javascript_Core/ChangeLog (186421 => 186422)


--- releases/WebKitGTK/webkit-2.8/Source/_javascript_Core/ChangeLog	2015-07-07 09:02:35 UTC (rev 186421)
+++ releases/WebKitGTK/webkit-2.8/Source/_javascript_Core/ChangeLog	2015-07-07 09:03:55 UTC (rev 186422)
@@ -1,3 +1,22 @@
+2015-06-19  Geoffrey Garen  <[email protected]>
+
+        WebKit crash while loading nytimes at _javascript_Core: JSC::ExecutableAllocator::allocate + 276
+        https://bugs.webkit.org/show_bug.cgi?id=146163
+        <rdar://problem/20392986>
+
+        Reviewed by Michael Saboff.
+
+        There's no good way to test this in our test harness because we don't
+        have a way to simulate executable memory pressure, and doing so would
+        cause the cases that still use JITCompilationMustSucceed to crash.
+
+        Instead, I tested by manually forcing all regexp JIT compilation to
+        fail and running the _javascript_Core tests.
+
+        * yarr/YarrJIT.cpp:
+        (JSC::Yarr::YarrGenerator::compile): Allow compilation to fail. We can
+        fall back to the regexp interpreter if we need to.
+
 2015-06-16  Andreas Kling  <[email protected]>
 
         Remove unused template parameter InlineCapacity from SegmentedVector.

Modified: releases/WebKitGTK/webkit-2.8/Source/_javascript_Core/yarr/YarrJIT.cpp (186421 => 186422)


--- releases/WebKitGTK/webkit-2.8/Source/_javascript_Core/yarr/YarrJIT.cpp	2015-07-07 09:02:35 UTC (rev 186421)
+++ releases/WebKitGTK/webkit-2.8/Source/_javascript_Core/yarr/YarrJIT.cpp	2015-07-07 09:03:55 UTC (rev 186422)
@@ -2643,11 +2643,8 @@
 
         initCallFrame();
 
-        // Compile the pattern to the internal 'YarrOp' representation.
         opCompileBody(m_pattern.m_body);
 
-        // If we encountered anything we can't handle in the JIT code
-        // (e.g. backreferences) then return early.
         if (m_shouldFallBack) {
             jitObject.setFallBack(true);
             return;
@@ -2656,8 +2653,12 @@
         generate();
         backtrack();
 
-        // Link & finalize the code.
-        LinkBuffer linkBuffer(*vm, *this, REGEXP_CODE_ID);
+        LinkBuffer linkBuffer(*vm, *this, REGEXP_CODE_ID, JITCompilationCanFail);
+        if (linkBuffer.didFailToAllocate()) {
+            jitObject.setFallBack(true);
+            return;
+        }
+
         m_backtrackingState.linkDataLabels(linkBuffer);
 
         if (compileMode == MatchOnly) {
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to