Title: [186706] trunk/Source/_javascript_Core
Revision
186706
Author
[email protected]
Date
2015-07-10 23:41:25 -0700 (Fri, 10 Jul 2015)

Log Message

DFG::DesiredWatchpoints should accept WatchpointSetType's that aren't necessarily pointers
https://bugs.webkit.org/show_bug.cgi?id=146875

Reviewed by Dan Bernstein.
        
In the future we'll want to add a desired watchpoint set that's something like "please
watch property 'Foo' for 'deletion' on structure 'S1'", so that the "set type" is struct
like "struct MySet { StringImpl* property; Mode mode; Structure* structure };".
        
This is a very mechanical change for now - all of the current users happen to use sets
that are pointer typed, so it's just a matter of moving some "*"'s around.

* dfg/DFGDesiredWatchpoints.h:
(JSC::DFG::GenericSetAdaptor::add):
(JSC::DFG::GenericSetAdaptor::hasBeenInvalidated):
(JSC::DFG::GenericDesiredWatchpoints::GenericDesiredWatchpoints):
(JSC::DFG::GenericDesiredWatchpoints::addLazily):
(JSC::DFG::GenericDesiredWatchpoints::reallyAdd):
(JSC::DFG::GenericDesiredWatchpoints::areStillValid):
(JSC::DFG::GenericDesiredWatchpoints::isWatched):
(JSC::DFG::DesiredWatchpoints::isWatched):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (186705 => 186706)


--- trunk/Source/_javascript_Core/ChangeLog	2015-07-11 05:52:37 UTC (rev 186705)
+++ trunk/Source/_javascript_Core/ChangeLog	2015-07-11 06:41:25 UTC (rev 186706)
@@ -1,5 +1,29 @@
 2015-07-10  Filip Pizlo  <[email protected]>
 
+        DFG::DesiredWatchpoints should accept WatchpointSetType's that aren't necessarily pointers
+        https://bugs.webkit.org/show_bug.cgi?id=146875
+
+        Reviewed by Dan Bernstein.
+        
+        In the future we'll want to add a desired watchpoint set that's something like "please
+        watch property 'Foo' for 'deletion' on structure 'S1'", so that the "set type" is struct
+        like "struct MySet { StringImpl* property; Mode mode; Structure* structure };".
+        
+        This is a very mechanical change for now - all of the current users happen to use sets
+        that are pointer typed, so it's just a matter of moving some "*"'s around.
+
+        * dfg/DFGDesiredWatchpoints.h:
+        (JSC::DFG::GenericSetAdaptor::add):
+        (JSC::DFG::GenericSetAdaptor::hasBeenInvalidated):
+        (JSC::DFG::GenericDesiredWatchpoints::GenericDesiredWatchpoints):
+        (JSC::DFG::GenericDesiredWatchpoints::addLazily):
+        (JSC::DFG::GenericDesiredWatchpoints::reallyAdd):
+        (JSC::DFG::GenericDesiredWatchpoints::areStillValid):
+        (JSC::DFG::GenericDesiredWatchpoints::isWatched):
+        (JSC::DFG::DesiredWatchpoints::isWatched):
+
+2015-07-10  Filip Pizlo  <[email protected]>
+
         Watchpoints should be allocated with FastMalloc
         https://bugs.webkit.org/show_bug.cgi?id=146874
 

Modified: trunk/Source/_javascript_Core/dfg/DFGDesiredWatchpoints.h (186705 => 186706)


--- trunk/Source/_javascript_Core/dfg/DFGDesiredWatchpoints.h	2015-07-11 05:52:37 UTC (rev 186705)
+++ trunk/Source/_javascript_Core/dfg/DFGDesiredWatchpoints.h	2015-07-11 06:41:25 UTC (rev 186706)
@@ -33,10 +33,7 @@
 #include "InferredValue.h"
 #include "JSArrayBufferView.h"
 #include "Watchpoint.h"
-#include <wtf/HashMap.h>
 #include <wtf/HashSet.h>
-#include <wtf/Noncopyable.h>
-#include <wtf/Vector.h>
 
 namespace JSC { namespace DFG {
 
@@ -44,11 +41,11 @@
 
 template<typename T>
 struct GenericSetAdaptor {
-    static void add(CodeBlock*, T* set, Watchpoint* watchpoint)
+    static void add(CodeBlock*, T set, Watchpoint* watchpoint)
     {
         return set->add(watchpoint);
     }
-    static bool hasBeenInvalidated(T* set) { return set->hasBeenInvalidated(); }
+    static bool hasBeenInvalidated(T set) { return set->hasBeenInvalidated(); }
 };
 
 struct InferredValueAdaptor {
@@ -72,7 +69,7 @@
 template<typename WatchpointSetType, typename Adaptor = GenericSetAdaptor<WatchpointSetType>>
 class GenericDesiredWatchpoints {
 #if !ASSERT_DISABLED
-    typedef HashMap<WatchpointSetType*, bool> StateMap;
+    typedef HashMap<WatchpointSetType, bool> StateMap;
 #endif
 public:
     GenericDesiredWatchpoints()
@@ -80,7 +77,7 @@
     {
     }
     
-    void addLazily(WatchpointSetType* set)
+    void addLazily(const WatchpointSetType& set)
     {
         m_sets.add(set);
     }
@@ -89,33 +86,29 @@
     {
         RELEASE_ASSERT(!m_reallyAdded);
         
-        typename HashSet<WatchpointSetType*>::iterator iter = m_sets.begin();
-        typename HashSet<WatchpointSetType*>::iterator end = m_sets.end();
-        for (; iter != end; ++iter)
-            Adaptor::add(codeBlock, *iter, common.watchpoints.add(codeBlock));
+        for (auto& set : m_sets)
+            Adaptor::add(codeBlock, set, common.watchpoints.add(codeBlock));
         
         m_reallyAdded = true;
     }
     
     bool areStillValid() const
     {
-        typename HashSet<WatchpointSetType*>::iterator iter = m_sets.begin();
-        typename HashSet<WatchpointSetType*>::iterator end = m_sets.end();
-        for (; iter != end; ++iter) {
-            if (Adaptor::hasBeenInvalidated(*iter))
+        for (auto& set : m_sets) {
+            if (Adaptor::hasBeenInvalidated(set))
                 return false;
         }
         
         return true;
     }
     
-    bool isWatched(WatchpointSetType* set) const
+    bool isWatched(const WatchpointSetType& set) const
     {
         return m_sets.contains(set);
     }
 
 private:
-    HashSet<WatchpointSetType*> m_sets;
+    HashSet<WatchpointSetType> m_sets;
     bool m_reallyAdded;
 };
 
@@ -153,10 +146,10 @@
     }
     
 private:
-    GenericDesiredWatchpoints<WatchpointSet> m_sets;
-    GenericDesiredWatchpoints<InlineWatchpointSet> m_inlineSets;
-    GenericDesiredWatchpoints<InferredValue, InferredValueAdaptor> m_inferredValues;
-    GenericDesiredWatchpoints<JSArrayBufferView, ArrayBufferViewWatchpointAdaptor> m_bufferViews;
+    GenericDesiredWatchpoints<WatchpointSet*> m_sets;
+    GenericDesiredWatchpoints<InlineWatchpointSet*> m_inlineSets;
+    GenericDesiredWatchpoints<InferredValue*, InferredValueAdaptor> m_inferredValues;
+    GenericDesiredWatchpoints<JSArrayBufferView*, ArrayBufferViewWatchpointAdaptor> m_bufferViews;
 };
 
 } } // namespace JSC::DFG
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to