Title: [131863] trunk/Source/WebCore
Revision
131863
Author
[email protected]
Date
2012-10-18 23:40:47 -0700 (Thu, 18 Oct 2012)

Log Message

[V8] GrouperVisitor is secretly two entirely separate objects
https://bugs.webkit.org/show_bug.cgi?id=99810

Reviewed by Kentaro Hara.

We can separate out the two things that GrouperVisitor is trying to do
because they have nothing to do with each other.

* bindings/v8/V8GCController.cpp:
(ObjectVisitor):
(WebCore::ObjectVisitor::visitDOMWrapper):
(WebCore):
(WebCore::V8GCController::gcPrologue):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (131862 => 131863)


--- trunk/Source/WebCore/ChangeLog	2012-10-19 06:34:29 UTC (rev 131862)
+++ trunk/Source/WebCore/ChangeLog	2012-10-19 06:40:47 UTC (rev 131863)
@@ -1,3 +1,19 @@
+2012-10-18  Adam Barth  <[email protected]>
+
+        [V8] GrouperVisitor is secretly two entirely separate objects
+        https://bugs.webkit.org/show_bug.cgi?id=99810
+
+        Reviewed by Kentaro Hara.
+
+        We can separate out the two things that GrouperVisitor is trying to do
+        because they have nothing to do with each other.
+
+        * bindings/v8/V8GCController.cpp:
+        (ObjectVisitor):
+        (WebCore::ObjectVisitor::visitDOMWrapper):
+        (WebCore):
+        (WebCore::V8GCController::gcPrologue):
+
 2012-10-18  Kiran Muppala  <[email protected]>
 
         Automatically start plugins created within a user gesture, skipping snapshotting

Modified: trunk/Source/WebCore/bindings/v8/V8GCController.cpp (131862 => 131863)


--- trunk/Source/WebCore/bindings/v8/V8GCController.cpp	2012-10-19 06:34:29 UTC (rev 131862)
+++ trunk/Source/WebCore/bindings/v8/V8GCController.cpp	2012-10-19 06:40:47 UTC (rev 131863)
@@ -257,8 +257,16 @@
     return GroupId(root);
 }
 
-class GrouperVisitor : public DOMWrapperMap<Node>::Visitor, public DOMWrapperMap<void>::Visitor {
+class ObjectVisitor : public DOMWrapperMap<void>::Visitor {
 public:
+    void visitDOMWrapper(DOMDataStore* store, void* object, v8::Persistent<v8::Object> wrapper)
+    {
+        V8DOMWrapper::domWrapperType(wrapper)->visitDOMWrapper(store, object, wrapper);
+    }
+};
+
+class NodeVisitor : public DOMWrapperMap<Node>::Visitor {
+public:
     void visitDOMWrapper(DOMDataStore* store, Node* node, v8::Persistent<v8::Object> wrapper)
     {
         if (node->hasEventListeners()) {
@@ -282,12 +290,6 @@
         m_grouper.append(GrouperItem(groupId, wrapper));
     }
 
-    void visitDOMWrapper(DOMDataStore* store, void* object, v8::Persistent<v8::Object> wrapper)
-    {
-        WrapperTypeInfo* info = V8DOMWrapper::domWrapperType(wrapper);
-        info->visitDOMWrapper(store, object, wrapper);
-    }
-
     void applyGrouping()
     {
         // Group by sorting by the group id.
@@ -338,9 +340,7 @@
 {
     v8::HandleScope scope;
 
-#if PLATFORM(CHROMIUM)
     TRACE_EVENT_BEGIN0("v8", "GC");
-#endif
 
 #ifndef NDEBUG
     DOMObjectVisitor domObjectVisitor;
@@ -354,14 +354,14 @@
     GCPrologueVisitor<Node, SpecialCasePrologueNodeHandler> prologueNodeVisitor;
     visitActiveDOMNodes(&prologueNodeVisitor);
 
-    // Create object groups.
-    GrouperVisitor grouperVisitor;
-    visitDOMNodes(&grouperVisitor);
-    visitActiveDOMNodes(&grouperVisitor);
-    visitDOMObjects(&grouperVisitor);
-    grouperVisitor.applyGrouping();
+    NodeVisitor nodeVisitor;
+    visitDOMNodes(&nodeVisitor);
+    visitActiveDOMNodes(&nodeVisitor);
+    nodeVisitor.applyGrouping();
 
-    // Clean single element cache for string conversions.
+    ObjectVisitor objectVisitor;
+    visitDOMObjects(&objectVisitor);
+
     V8PerIsolateData* data = ""
     data->stringCache()->clearOnGC();
 }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to