Title: [132564] trunk/Source/WebCore
Revision
132564
Author
[email protected]
Date
2012-10-25 20:11:50 -0700 (Thu, 25 Oct 2012)

Log Message

[V8] We can merge ActiveDOMObjectPrologueVisitor with ObjectVisitor
https://bugs.webkit.org/show_bug.cgi?id=100430

Reviewed by Eric Seidel.

There's no reason for these visitors to be separate objects anymore.

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

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (132563 => 132564)


--- trunk/Source/WebCore/ChangeLog	2012-10-26 03:09:51 UTC (rev 132563)
+++ trunk/Source/WebCore/ChangeLog	2012-10-26 03:11:50 UTC (rev 132564)
@@ -1,3 +1,17 @@
+2012-10-25  Adam Barth  <[email protected]>
+
+        [V8] We can merge ActiveDOMObjectPrologueVisitor with ObjectVisitor
+        https://bugs.webkit.org/show_bug.cgi?id=100430
+
+        Reviewed by Eric Seidel.
+
+        There's no reason for these visitors to be separate objects anymore.
+
+        * bindings/v8/V8GCController.cpp:
+        (WebCore::ObjectVisitor::ObjectVisitor):
+        (WebCore::ObjectVisitor::visitDOMWrapper):
+        (WebCore::V8GCController::majorGCPrologue):
+
 2012-10-25  Tony Chang  <[email protected]>
 
         Remove unused static methods from DOMTimer.h

Modified: trunk/Source/WebCore/bindings/v8/V8GCController.cpp (132563 => 132564)


--- trunk/Source/WebCore/bindings/v8/V8GCController.cpp	2012-10-26 03:09:51 UTC (rev 132563)
+++ trunk/Source/WebCore/bindings/v8/V8GCController.cpp	2012-10-26 03:11:50 UTC (rev 132564)
@@ -67,16 +67,16 @@
 
 namespace WebCore {
 
-class ActiveDOMObjectPrologueVisitor : public DOMWrapperVisitor<void> {
+class ObjectVisitor : public DOMWrapperVisitor<void> {
 public:
-    explicit ActiveDOMObjectPrologueVisitor(Vector<v8::Persistent<v8::Value> >* liveObjects)
+    explicit ObjectVisitor(Vector<v8::Persistent<v8::Value> >* liveObjects)
         : m_liveObjects(liveObjects)
     {
     }
 
-    void visitDOMWrapper(DOMDataStore*, void* object, v8::Persistent<v8::Object> wrapper)
+    void visitDOMWrapper(DOMDataStore* store, void* object, v8::Persistent<v8::Object> wrapper)
     {
-        WrapperTypeInfo* type = V8DOMWrapper::domWrapperType(wrapper);  
+        WrapperTypeInfo* type = V8DOMWrapper::domWrapperType(wrapper);
 
         if (V8MessagePort::info.equals(type)) {
             // Mark each port as in-use if it's entangled. For simplicity's sake,
@@ -85,26 +85,19 @@
             MessagePort* port = static_cast<MessagePort*>(object);
             if (port->isEntangled() || port->hasPendingActivity())
                 m_liveObjects->append(wrapper);
-            return;
+        } else {
+            ActiveDOMObject* activeDOMObject = type->toActiveDOMObject(wrapper);
+            if (activeDOMObject && activeDOMObject->hasPendingActivity())
+                m_liveObjects->append(wrapper);
         }
 
-        ActiveDOMObject* activeDOMObject = type->toActiveDOMObject(wrapper);
-        if (activeDOMObject && activeDOMObject->hasPendingActivity())
-            m_liveObjects->append(wrapper);
+        type->visitDOMWrapper(store, object, wrapper);
     }
 
 private:
     Vector<v8::Persistent<v8::Value> >* m_liveObjects;
 };
 
-class ObjectVisitor : public DOMWrapperVisitor<void> {
-public:
-    void visitDOMWrapper(DOMDataStore* store, void* object, v8::Persistent<v8::Object> wrapper)
-    {
-        V8DOMWrapper::domWrapperType(wrapper)->visitDOMWrapper(store, object, wrapper);
-    }
-};
-
 static void addImplicitReferencesForNodeWithEventListeners(Node* node, v8::Persistent<v8::Object> wrapper)
 {
     ASSERT(node->hasEventListeners());
@@ -234,18 +227,16 @@
     Vector<v8::Persistent<v8::Value> > liveObjects;
     liveObjects.append(V8PerIsolateData::current()->ensureLiveRoot());
 
-    ActiveDOMObjectPrologueVisitor activeObjectVisitor(&liveObjects);
-    visitActiveDOMObjects(&activeObjectVisitor);
-
     NodeVisitor nodeVisitor(&liveObjects);
     visitAllDOMNodes(&nodeVisitor);
     nodeVisitor.applyGrouping();
 
-    v8::V8::AddObjectGroup(liveObjects.data(), liveObjects.size());
-
-    ObjectVisitor objectVisitor;
+    ObjectVisitor objectVisitor(&liveObjects);
     visitDOMObjects(&objectVisitor);
+    visitActiveDOMObjects(&objectVisitor);
 
+    v8::V8::AddObjectGroup(liveObjects.data(), liveObjects.size());
+
     V8PerIsolateData* data = ""
     data->stringCache()->clearOnGC();
 }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to