Title: [218729] trunk/Source/_javascript_Core
Revision
218729
Author
[email protected]
Date
2017-06-22 17:22:45 -0700 (Thu, 22 Jun 2017)

Log Message

The lowering of Identity in the DFG backend needs to use ManualOperandSpeculation
https://bugs.webkit.org/show_bug.cgi?id=173743
<rdar://problem/32932536>

Reviewed by Mark Lam.

The code always manually speculates, however, we weren't specifying
ManualOperandSpeculation when creating a JSValueOperand. This would
fire an assertion in JSValueOperand construction for a node like:
Identity(String:@otherNode)

I spent about 45 minutes trying to craft a test and came up
empty. However, this fixes a debug assertion on an internal
Apple website.

* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (218728 => 218729)


--- trunk/Source/_javascript_Core/ChangeLog	2017-06-22 23:34:05 UTC (rev 218728)
+++ trunk/Source/_javascript_Core/ChangeLog	2017-06-23 00:22:45 UTC (rev 218729)
@@ -1,5 +1,27 @@
 2017-06-22  Saam Barati  <[email protected]>
 
+        The lowering of Identity in the DFG backend needs to use ManualOperandSpeculation
+        https://bugs.webkit.org/show_bug.cgi?id=173743
+        <rdar://problem/32932536>
+
+        Reviewed by Mark Lam.
+
+        The code always manually speculates, however, we weren't specifying
+        ManualOperandSpeculation when creating a JSValueOperand. This would
+        fire an assertion in JSValueOperand construction for a node like:
+        Identity(String:@otherNode)
+        
+        I spent about 45 minutes trying to craft a test and came up
+        empty. However, this fixes a debug assertion on an internal
+        Apple website.
+
+        * dfg/DFGSpeculativeJIT32_64.cpp:
+        (JSC::DFG::SpeculativeJIT::compile):
+        * dfg/DFGSpeculativeJIT64.cpp:
+        (JSC::DFG::SpeculativeJIT::compile):
+
+2017-06-22  Saam Barati  <[email protected]>
+
         ValueRep(DoubleRep(@v)) can not simply convert to @v
         https://bugs.webkit.org/show_bug.cgi?id=173687
         <rdar://problem/32855563>

Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp (218728 => 218729)


--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp	2017-06-22 23:34:05 UTC (rev 218728)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp	2017-06-23 00:22:45 UTC (rev 218729)
@@ -2100,7 +2100,7 @@
             break;
         }
         default: {
-            JSValueOperand op(this, node->child1());
+            JSValueOperand op(this, node->child1(), ManualOperandSpeculation);
             GPRTemporary resultTag(this, Reuse, op, TagWord);
             GPRTemporary resultPayload(this, Reuse, op, PayloadWord);
             GPRReg sourceTag = op.tagGPR();

Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp (218728 => 218729)


--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp	2017-06-22 23:34:05 UTC (rev 218728)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp	2017-06-23 00:22:45 UTC (rev 218729)
@@ -2210,7 +2210,7 @@
             break;
         }
         default: {
-            JSValueOperand op(this, node->child1());
+            JSValueOperand op(this, node->child1(), ManualOperandSpeculation);
             GPRTemporary result(this, Reuse, op);
             m_jit.move(op.gpr(), result.gpr());
             jsValueResult(result.gpr(), node);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to