Title: [141962] trunk/Source/_javascript_Core
Revision
141962
Author
[email protected]
Date
2013-02-05 18:53:55 -0800 (Tue, 05 Feb 2013)

Log Message

put_to_base should emit a Phantom for "value" across the ForceOSRExit
https://bugs.webkit.org/show_bug.cgi?id=108998

Reviewed by Oliver Hunt.

Otherwise, the OSR exit compiler could clobber it, which would lead to badness.

* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::tallyFrequentExitSites): Build fixes for when DFG debug logging is enabled.
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock): Added extra Phantoms for the "value" field where needed.
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compile): Ditto.

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (141961 => 141962)


--- trunk/Source/_javascript_Core/ChangeLog	2013-02-06 02:48:58 UTC (rev 141961)
+++ trunk/Source/_javascript_Core/ChangeLog	2013-02-06 02:53:55 UTC (rev 141962)
@@ -1,3 +1,19 @@
+2013-02-05  Mark Hahnenberg  <[email protected]>
+
+        put_to_base should emit a Phantom for "value" across the ForceOSRExit
+        https://bugs.webkit.org/show_bug.cgi?id=108998
+
+        Reviewed by Oliver Hunt.
+
+        Otherwise, the OSR exit compiler could clobber it, which would lead to badness.
+
+        * bytecode/CodeBlock.cpp:
+        (JSC::CodeBlock::tallyFrequentExitSites): Build fixes for when DFG debug logging is enabled.
+        * dfg/DFGByteCodeParser.cpp:
+        (JSC::DFG::ByteCodeParser::parseBlock): Added extra Phantoms for the "value" field where needed.
+        * dfg/DFGSpeculativeJIT.cpp:
+        (JSC::DFG::SpeculativeJIT::compile): Ditto.
+
 2013-02-05  Michael Saboff  <[email protected]>
 
         Crash at JSC::call when loading www.gap.com with JSVALUE32_64 Enabled

Modified: trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp (141961 => 141962)


--- trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp	2013-02-06 02:48:58 UTC (rev 141961)
+++ trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp	2013-02-06 02:53:55 UTC (rev 141962)
@@ -3277,7 +3277,7 @@
             continue;
         
 #if DFG_ENABLE(DEBUG_VERBOSE)
-        dataLog("OSR exit #", i, " (bc#", exit.m_codeOrigin.bytecodeIndex, ", @", exit.m_nodeIndex, ", ", exit.m_kind, ") for ", *this, " occurred frequently: counting as frequent exit site.\n");
+        dataLog("OSR exit #", i, " (bc#", exit.m_codeOrigin.bytecodeIndex, ", ", exit.m_kind, ") for ", *this, " occurred frequently: counting as frequent exit site.\n");
 #endif
     }
 }

Modified: trunk/Source/_javascript_Core/dfg/DFGByteCodeParser.cpp (141961 => 141962)


--- trunk/Source/_javascript_Core/dfg/DFGByteCodeParser.cpp	2013-02-06 02:48:58 UTC (rev 141961)
+++ trunk/Source/_javascript_Core/dfg/DFGByteCodeParser.cpp	2013-02-06 02:53:55 UTC (rev 141962)
@@ -2999,6 +2999,7 @@
             case PutToBaseOperation::Uninitialised:
                 addToGraph(ForceOSRExit);
                 addToGraph(Phantom, get(base));
+                addToGraph(Phantom, get(value));
                 break;
 
             case PutToBaseOperation::GlobalVariablePutChecked: {
@@ -3028,6 +3029,7 @@
                 if (!putToBase->m_structure) {
                     addToGraph(ForceOSRExit);
                     addToGraph(Phantom, get(base));
+                    addToGraph(Phantom, get(value));
                     NEXT_OPCODE(op_put_to_base);
                 }
                 Node* baseNode = get(base);

Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp (141961 => 141962)


--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp	2013-02-06 02:48:58 UTC (rev 141961)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp	2013-02-06 02:53:55 UTC (rev 141962)
@@ -1790,7 +1790,7 @@
         } else {
             
 #if DFG_ENABLE(DEBUG_VERBOSE)
-            dataLogF("SpeculativeJIT generating Node @%d (bc#%u) at JIT offset 0x%x   ", (int)m_currentNode->index(), m_curretNode->codeOrigin.bytecodeIndex, m_jit.debugOffset());
+            dataLogF("SpeculativeJIT generating Node @%d (bc#%u) at JIT offset 0x%x   ", (int)m_currentNode->index(), m_currentNode->codeOrigin.bytecodeIndex, m_jit.debugOffset());
 #endif
 #if DFG_ENABLE(JIT_BREAK_ON_EVERY_NODE)
             m_jit.breakpoint();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to