Title: [164071] trunk/Source/_javascript_Core
Revision
164071
Author
[email protected]
Date
2014-02-13 15:57:53 -0800 (Thu, 13 Feb 2014)

Log Message

Unreviewed, roll out http://trac.webkit.org/changeset/164066.
        
It broke tests and it was just plain wrong.

* bytecode/GetByIdStatus.cpp:
(JSC::GetByIdStatus::computeFromLLInt):
(JSC::GetByIdStatus::computeForStubInfo):
* runtime/Structure.h:
(JSC::Structure::takesSlowPathInDFGForImpureProperty):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (164070 => 164071)


--- trunk/Source/_javascript_Core/ChangeLog	2014-02-13 23:41:14 UTC (rev 164070)
+++ trunk/Source/_javascript_Core/ChangeLog	2014-02-13 23:57:53 UTC (rev 164071)
@@ -1,3 +1,15 @@
+2014-02-13  Filip Pizlo  <[email protected]>
+
+        Unreviewed, roll out http://trac.webkit.org/changeset/164066.
+        
+        It broke tests and it was just plain wrong.
+
+        * bytecode/GetByIdStatus.cpp:
+        (JSC::GetByIdStatus::computeFromLLInt):
+        (JSC::GetByIdStatus::computeForStubInfo):
+        * runtime/Structure.h:
+        (JSC::Structure::takesSlowPathInDFGForImpureProperty):
+
 2014-02-13  Ryuan Choi  <[email protected]>
 
         Unreviewed build fix.

Modified: trunk/Source/_javascript_Core/bytecode/GetByIdStatus.cpp (164070 => 164071)


--- trunk/Source/_javascript_Core/bytecode/GetByIdStatus.cpp	2014-02-13 23:41:14 UTC (rev 164070)
+++ trunk/Source/_javascript_Core/bytecode/GetByIdStatus.cpp	2014-02-13 23:57:53 UTC (rev 164071)
@@ -59,6 +59,9 @@
     if (!structure)
         return GetByIdStatus(NoInformation, false);
 
+    if (structure->takesSlowPathInDFGForImpureProperty())
+        return GetByIdStatus(NoInformation, false);
+
     unsigned attributesIgnored;
     JSCell* specificValue;
     PropertyOffset offset = structure->getConcurrently(
@@ -188,6 +191,8 @@
         
     case access_get_by_id_self: {
         Structure* structure = stubInfo->u.getByIdSelf.baseObjectStructure.get();
+        if (structure->takesSlowPathInDFGForImpureProperty())
+            return GetByIdStatus(TakesSlowPath, true);
         unsigned attributesIgnored;
         JSCell* specificValue;
         result.m_offset = structure->getConcurrently(
@@ -210,6 +215,9 @@
             ASSERT(list->list[i].isDirect);
             
             Structure* structure = list->list[i].base.get();
+            if (structure->takesSlowPathInDFGForImpureProperty())
+                return GetByIdStatus(TakesSlowPath, true);
+
             if (result.m_structureSet.contains(structure))
                 continue;
             

Modified: trunk/Source/_javascript_Core/runtime/Structure.h (164070 => 164071)


--- trunk/Source/_javascript_Core/runtime/Structure.h	2014-02-13 23:41:14 UTC (rev 164070)
+++ trunk/Source/_javascript_Core/runtime/Structure.h	2014-02-13 23:57:53 UTC (rev 164071)
@@ -139,6 +139,7 @@
     // DFG from inlining property accesses since structures don't transition when a new impure property appears.
     bool takesSlowPathInDFGForImpureProperty()
     {
+        ASSERT(!typeInfo().hasImpureGetOwnPropertySlot() || typeInfo().newImpurePropertyFiresWatchpoints());
         return typeInfo().hasImpureGetOwnPropertySlot();
     }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to