Title: [132749] trunk/Source/_javascript_Core
Revision
132749
Author
[email protected]
Date
2012-10-28 01:20:03 -0700 (Sun, 28 Oct 2012)

Log Message

OSR exit compilation should defend against argument recoveries from code blocks that are no longer on the inline stack
https://bugs.webkit.org/show_bug.cgi?id=100601

Reviewed by Oliver Hunt.

This happened to me while I was fixing bugs for https://bugs.webkit.org/show_bug.cgi?id=100599.
I'm not sure how to reproduce this.

* dfg/DFGAssemblyHelpers.h:
(JSC::DFG::AssemblyHelpers::baselineCodeBlockFor):
(AssemblyHelpers):
* dfg/DFGOSRExitCompiler32_64.cpp:
(JSC::DFG::OSRExitCompiler::compileExit):
* dfg/DFGOSRExitCompiler64.cpp:
(JSC::DFG::OSRExitCompiler::compileExit):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (132748 => 132749)


--- trunk/Source/_javascript_Core/ChangeLog	2012-10-28 07:06:59 UTC (rev 132748)
+++ trunk/Source/_javascript_Core/ChangeLog	2012-10-28 08:20:03 UTC (rev 132749)
@@ -1,5 +1,23 @@
 2012-10-27  Filip Pizlo  <[email protected]>
 
+        OSR exit compilation should defend against argument recoveries from code blocks that are no longer on the inline stack
+        https://bugs.webkit.org/show_bug.cgi?id=100601
+
+        Reviewed by Oliver Hunt.
+
+        This happened to me while I was fixing bugs for https://bugs.webkit.org/show_bug.cgi?id=100599.
+        I'm not sure how to reproduce this.
+
+        * dfg/DFGAssemblyHelpers.h:
+        (JSC::DFG::AssemblyHelpers::baselineCodeBlockFor):
+        (AssemblyHelpers):
+        * dfg/DFGOSRExitCompiler32_64.cpp:
+        (JSC::DFG::OSRExitCompiler::compileExit):
+        * dfg/DFGOSRExitCompiler64.cpp:
+        (JSC::DFG::OSRExitCompiler::compileExit):
+
+2012-10-27  Filip Pizlo  <[email protected]>
+
         DFG::Array::Mode needs to be cleaned up
         https://bugs.webkit.org/show_bug.cgi?id=100599
 

Modified: trunk/Source/_javascript_Core/dfg/DFGAssemblyHelpers.h (132748 => 132749)


--- trunk/Source/_javascript_Core/dfg/DFGAssemblyHelpers.h	2012-10-28 07:06:59 UTC (rev 132748)
+++ trunk/Source/_javascript_Core/dfg/DFGAssemblyHelpers.h	2012-10-28 08:20:03 UTC (rev 132749)
@@ -320,6 +320,13 @@
         return baselineCodeBlockForOriginAndBaselineCodeBlock(codeOrigin, baselineCodeBlock());
     }
     
+    CodeBlock* baselineCodeBlockFor(InlineCallFrame* inlineCallFrame)
+    {
+        if (!inlineCallFrame)
+            return baselineCodeBlock();
+        return baselineCodeBlockForInlineCallFrame(inlineCallFrame);
+    }
+    
     CodeBlock* baselineCodeBlock()
     {
         return m_baselineCodeBlock;

Modified: trunk/Source/_javascript_Core/dfg/DFGOSRExitCompiler32_64.cpp (132748 => 132749)


--- trunk/Source/_javascript_Core/dfg/DFGOSRExitCompiler32_64.cpp	2012-10-28 07:06:59 UTC (rev 132748)
+++ trunk/Source/_javascript_Core/dfg/DFGOSRExitCompiler32_64.cpp	2012-10-28 08:20:03 UTC (rev 132749)
@@ -688,6 +688,8 @@
                 }
             }
 
+            if (!m_jit.baselineCodeBlockFor(inlineCallFrame)->usesArguments())
+                continue;
             int argumentsRegister = m_jit.argumentsRegisterFor(inlineCallFrame);
             if (didCreateArgumentsObject.add(inlineCallFrame).isNewEntry) {
                 // We know this call frame optimized out an arguments object that

Modified: trunk/Source/_javascript_Core/dfg/DFGOSRExitCompiler64.cpp (132748 => 132749)


--- trunk/Source/_javascript_Core/dfg/DFGOSRExitCompiler64.cpp	2012-10-28 07:06:59 UTC (rev 132748)
+++ trunk/Source/_javascript_Core/dfg/DFGOSRExitCompiler64.cpp	2012-10-28 08:20:03 UTC (rev 132749)
@@ -653,6 +653,8 @@
                 }
             }
 
+            if (!m_jit.baselineCodeBlockFor(inlineCallFrame)->usesArguments())
+                continue;
             int argumentsRegister = m_jit.argumentsRegisterFor(inlineCallFrame);
             if (didCreateArgumentsObject.add(inlineCallFrame).isNewEntry) {
                 // We know this call frame optimized out an arguments object that
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to