Title: [265987] branches/safari-609-branch/Source/_javascript_Core
Revision
265987
Author
repst...@apple.com
Date
2020-08-20 17:47:55 -0700 (Thu, 20 Aug 2020)

Log Message

Cherry-pick r264643. rdar://problem/67027034

    TryGetById clobberize rules are wrong.
    https://bugs.webkit.org/show_bug.cgi?id=163834
    <rdar://problem/65625807>

    Reviewed by Keith Miller.

    Theoretically, TryGetById can do the same things GetById does i.e. reify lazy
    properties, read the stack, etc.  Hence, its clobberize rule should be clobberTop
    just like GetById.  However, in practice, we don't currently use @tryGetById to
    access anything on the stack (and probably never will).  But as a conservative
    measure, we'll just treat TryGetById like it can.  In clobberize terms, this
    means we declare TryGetById as doing read(World) (just like GetById) instead of
    read(Heap).

    * dfg/DFGAbstractInterpreterInlines.h:
    (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
    * dfg/DFGClobberize.h:
    (JSC::DFG::clobberize):
    * dfg/DFGClobbersExitState.cpp:
    (JSC::DFG::clobbersExitState):

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@264643 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Diff

Modified: branches/safari-609-branch/Source/_javascript_Core/ChangeLog (265986 => 265987)


--- branches/safari-609-branch/Source/_javascript_Core/ChangeLog	2020-08-21 00:19:59 UTC (rev 265986)
+++ branches/safari-609-branch/Source/_javascript_Core/ChangeLog	2020-08-21 00:47:55 UTC (rev 265987)
@@ -1,3 +1,53 @@
+2020-08-20  Russell Epstein  <repst...@apple.com>
+
+        Cherry-pick r264643. rdar://problem/67027034
+
+    TryGetById clobberize rules are wrong.
+    https://bugs.webkit.org/show_bug.cgi?id=163834
+    <rdar://problem/65625807>
+    
+    Reviewed by Keith Miller.
+    
+    Theoretically, TryGetById can do the same things GetById does i.e. reify lazy
+    properties, read the stack, etc.  Hence, its clobberize rule should be clobberTop
+    just like GetById.  However, in practice, we don't currently use @tryGetById to
+    access anything on the stack (and probably never will).  But as a conservative
+    measure, we'll just treat TryGetById like it can.  In clobberize terms, this
+    means we declare TryGetById as doing read(World) (just like GetById) instead of
+    read(Heap).
+    
+    * dfg/DFGAbstractInterpreterInlines.h:
+    (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
+    * dfg/DFGClobberize.h:
+    (JSC::DFG::clobberize):
+    * dfg/DFGClobbersExitState.cpp:
+    (JSC::DFG::clobbersExitState):
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@264643 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2020-07-20  Mark Lam  <mark....@apple.com>
+
+            TryGetById clobberize rules are wrong.
+            https://bugs.webkit.org/show_bug.cgi?id=163834
+            <rdar://problem/65625807>
+
+            Reviewed by Keith Miller.
+
+            Theoretically, TryGetById can do the same things GetById does i.e. reify lazy
+            properties, read the stack, etc.  Hence, its clobberize rule should be clobberTop
+            just like GetById.  However, in practice, we don't currently use @tryGetById to
+            access anything on the stack (and probably never will).  But as a conservative
+            measure, we'll just treat TryGetById like it can.  In clobberize terms, this
+            means we declare TryGetById as doing read(World) (just like GetById) instead of
+            read(Heap).
+
+            * dfg/DFGAbstractInterpreterInlines.h:
+            (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
+            * dfg/DFGClobberize.h:
+            (JSC::DFG::clobberize):
+            * dfg/DFGClobbersExitState.cpp:
+            (JSC::DFG::clobbersExitState):
+
 2020-05-20  Alan Coon  <alanc...@apple.com>
 
         Cherry-pick r261877. rdar://problem/63461428

Modified: branches/safari-609-branch/Source/_javascript_Core/dfg/DFGAbstractInterpreterInlines.h (265986 => 265987)


--- branches/safari-609-branch/Source/_javascript_Core/dfg/DFGAbstractInterpreterInlines.h	2020-08-21 00:19:59 UTC (rev 265986)
+++ branches/safari-609-branch/Source/_javascript_Core/dfg/DFGAbstractInterpreterInlines.h	2020-08-21 00:47:55 UTC (rev 265987)
@@ -3142,6 +3142,7 @@
     case TryGetById:
         // FIXME: This should constant fold at least as well as the normal GetById case.
         // https://bugs.webkit.org/show_bug.cgi?id=156422
+        clobberWorld();
         makeHeapTopForNode(node);
         break;
 

Modified: branches/safari-609-branch/Source/_javascript_Core/dfg/DFGClobberize.h (265986 => 265987)


--- branches/safari-609-branch/Source/_javascript_Core/dfg/DFGClobberize.h	2020-08-21 00:19:59 UTC (rev 265986)
+++ branches/safari-609-branch/Source/_javascript_Core/dfg/DFGClobberize.h	2020-08-21 00:47:55 UTC (rev 265987)
@@ -614,6 +614,7 @@
     case GetByIdDirect:
     case GetByIdDirectFlush:
     case GetByValWithThis:
+    case TryGetById:
     case PutById:
     case PutByIdWithThis:
     case PutByValWithThis:
@@ -1242,11 +1243,6 @@
         return;
     }
 
-    case TryGetById: {
-        read(Heap);
-        return;
-    }
-
     case MultiGetByOffset: {
         read(JSCell_structureID);
         read(JSObject_butterfly);

Modified: branches/safari-609-branch/Source/_javascript_Core/dfg/DFGClobbersExitState.cpp (265986 => 265987)


--- branches/safari-609-branch/Source/_javascript_Core/dfg/DFGClobbersExitState.cpp	2020-08-21 00:19:59 UTC (rev 265986)
+++ branches/safari-609-branch/Source/_javascript_Core/dfg/DFGClobbersExitState.cpp	2020-08-21 00:47:55 UTC (rev 265987)
@@ -83,6 +83,7 @@
     case FilterGetByStatus:
     case FilterPutByIdStatus:
     case FilterInByIdStatus:
+    case TryGetById:
         // These do clobber memory, but nothing that is observable. It may be nice to separate the
         // heaps into those that are observable and those that aren't, but we don't do that right now.
         // FIXME: https://bugs.webkit.org/show_bug.cgi?id=148440
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to