Title: [197155] trunk/Source/_javascript_Core
Revision
197155
Author
benja...@webkit.org
Date
2016-02-25 18:04:42 -0800 (Thu, 25 Feb 2016)

Log Message

[JSC] Temporal Dead Zone checks on "this" are eliminated when doing OSR Entry to FTL
https://bugs.webkit.org/show_bug.cgi?id=154664

Reviewed by Saam Barati.

When doing OSR Enter into a constructor, we lose the information
that this may have been set to empty by a previously executed block.

All the code just assumed the type for a FlushedJS value and thus
not an empty value. It was then okay to eliminate the TDZ checks.

In this patch, the values on root entry now assume they may be empty.
As a result, the SetArgument() for "this" has "empty" as possible
type and the TDZ checks are no longer eliminated.

* dfg/DFGInPlaceAbstractState.cpp:
(JSC::DFG::InPlaceAbstractState::initialize):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (197154 => 197155)


--- trunk/Source/_javascript_Core/ChangeLog	2016-02-26 02:04:01 UTC (rev 197154)
+++ trunk/Source/_javascript_Core/ChangeLog	2016-02-26 02:04:42 UTC (rev 197155)
@@ -1,3 +1,23 @@
+2016-02-25  Benjamin Poulain  <benja...@webkit.org>
+
+        [JSC] Temporal Dead Zone checks on "this" are eliminated when doing OSR Entry to FTL
+        https://bugs.webkit.org/show_bug.cgi?id=154664
+
+        Reviewed by Saam Barati.
+
+        When doing OSR Enter into a constructor, we lose the information
+        that this may have been set to empty by a previously executed block.
+
+        All the code just assumed the type for a FlushedJS value and thus
+        not an empty value. It was then okay to eliminate the TDZ checks.
+
+        In this patch, the values on root entry now assume they may be empty.
+        As a result, the SetArgument() for "this" has "empty" as possible
+        type and the TDZ checks are no longer eliminated.
+
+        * dfg/DFGInPlaceAbstractState.cpp:
+        (JSC::DFG::InPlaceAbstractState::initialize):
+
 2016-02-25  Ada Chan  <adac...@apple.com>
 
         Update the definition of ENABLE_VIDEO_PRESENTATION_MODE for Mac platform

Modified: trunk/Source/_javascript_Core/dfg/DFGInPlaceAbstractState.cpp (197154 => 197155)


--- trunk/Source/_javascript_Core/dfg/DFGInPlaceAbstractState.cpp	2016-02-26 02:04:01 UTC (rev 197154)
+++ trunk/Source/_javascript_Core/dfg/DFGInPlaceAbstractState.cpp	2016-02-26 02:04:42 UTC (rev 197155)
@@ -121,7 +121,7 @@
             root->valuesAtHead.argument(i).setType(m_graph, SpecCell);
             break;
         case FlushedJSValue:
-            root->valuesAtHead.argument(i).makeHeapTop();
+            root->valuesAtHead.argument(i).makeBytecodeTop();
             break;
         default:
             DFG_CRASH(m_graph, nullptr, "Bad flush format for argument");
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to