Title: [126690] trunk/Source/WebCore
Revision
126690
Author
[email protected]
Date
2012-08-25 16:06:24 -0700 (Sat, 25 Aug 2012)

Log Message

[V8] V8NodeFilterCondition should use ScopedPersistent
https://bugs.webkit.org/show_bug.cgi?id=95010

Reviewed by Eric Seidel.

V8NodeFilterCondition just re-implements ScopedPersistent by hand.

* bindings/v8/V8NodeFilterCondition.cpp:
(WebCore::V8NodeFilterCondition::V8NodeFilterCondition):
(WebCore::V8NodeFilterCondition::~V8NodeFilterCondition):
(WebCore::V8NodeFilterCondition::acceptNode):
* bindings/v8/V8NodeFilterCondition.h:
(WebCore):
(V8NodeFilterCondition):
(WebCore::V8NodeFilterCondition::create):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (126689 => 126690)


--- trunk/Source/WebCore/ChangeLog	2012-08-25 22:34:43 UTC (rev 126689)
+++ trunk/Source/WebCore/ChangeLog	2012-08-25 23:06:24 UTC (rev 126690)
@@ -1,3 +1,21 @@
+2012-08-25  Adam Barth  <[email protected]>
+
+        [V8] V8NodeFilterCondition should use ScopedPersistent
+        https://bugs.webkit.org/show_bug.cgi?id=95010
+
+        Reviewed by Eric Seidel.
+
+        V8NodeFilterCondition just re-implements ScopedPersistent by hand.
+
+        * bindings/v8/V8NodeFilterCondition.cpp:
+        (WebCore::V8NodeFilterCondition::V8NodeFilterCondition):
+        (WebCore::V8NodeFilterCondition::~V8NodeFilterCondition):
+        (WebCore::V8NodeFilterCondition::acceptNode):
+        * bindings/v8/V8NodeFilterCondition.h:
+        (WebCore):
+        (V8NodeFilterCondition):
+        (WebCore::V8NodeFilterCondition::create):
+
 2012-07-18  Robert Hogan  <[email protected]>
 
         Tables with just border-style set on the cells do not get a grid

Modified: trunk/Source/WebCore/bindings/v8/V8NodeFilterCondition.cpp (126689 => 126690)


--- trunk/Source/WebCore/bindings/v8/V8NodeFilterCondition.cpp	2012-08-25 22:34:43 UTC (rev 126689)
+++ trunk/Source/WebCore/bindings/v8/V8NodeFilterCondition.cpp	2012-08-25 23:06:24 UTC (rev 126690)
@@ -36,26 +36,17 @@
 #include "ScriptController.h"
 #include "ScriptState.h"
 #include "V8Node.h"
-
 #include <wtf/OwnArrayPtr.h>
 
 namespace WebCore {
 
 V8NodeFilterCondition::V8NodeFilterCondition(v8::Handle<v8::Value> filter)
-    : m_filter(v8::Persistent<v8::Value>::New(filter))
+    : m_filter(filter)
 {
-#ifndef NDEBUG
-    V8GCController::registerGlobalHandle(NODE_FILTER, this, m_filter);
-#endif
 }
 
 V8NodeFilterCondition::~V8NodeFilterCondition()
 {
-#ifndef NDEBUG
-    V8GCController::unregisterGlobalHandle(this, m_filter);
-#endif
-    m_filter.Dispose();
-    m_filter.Clear();
 }
 
 short V8NodeFilterCondition::acceptNode(ScriptState* state, Node* node) const
@@ -69,7 +60,7 @@
 
     v8::Handle<v8::Function> callback;
     if (m_filter->IsFunction())
-        callback = v8::Handle<v8::Function>::Cast(m_filter);
+        callback = v8::Handle<v8::Function>::Cast(m_filter.get());
     else {
         v8::Local<v8::Value> value = m_filter->ToObject()->Get(v8::String::New("acceptNode"));
         if (!value->IsFunction()) {

Modified: trunk/Source/WebCore/bindings/v8/V8NodeFilterCondition.h (126689 => 126690)


--- trunk/Source/WebCore/bindings/v8/V8NodeFilterCondition.h	2012-08-25 22:34:43 UTC (rev 126689)
+++ trunk/Source/WebCore/bindings/v8/V8NodeFilterCondition.h	2012-08-25 23:06:24 UTC (rev 126690)
@@ -32,32 +32,31 @@
 #define V8NodeFilterCondition_h
 
 #include "NodeFilterCondition.h"
+#include "ScopedPersistent.h"
 #include <v8.h>
 #include <wtf/PassRefPtr.h>
 
-// NodeFilter is a _javascript_ function that takes a Node as parameter and returns a short (ACCEPT, SKIP, REJECT) as the result.
 namespace WebCore {
 
-    class Node;
-    class ScriptState;
+class Node;
+class ScriptState;
 
-    // NodeFilterCondition is a wrapper around a NodeFilter JS function.
-    class V8NodeFilterCondition : public NodeFilterCondition {
-    public:
-        static PassRefPtr<V8NodeFilterCondition> create(v8::Handle<v8::Value> filter)
-        {
-            return adoptRef(new V8NodeFilterCondition(filter));
-        }
+class V8NodeFilterCondition : public NodeFilterCondition {
+public:
+    static PassRefPtr<V8NodeFilterCondition> create(v8::Handle<v8::Value> filter)
+    {
+        return adoptRef(new V8NodeFilterCondition(filter));
+    }
 
-        virtual ~V8NodeFilterCondition();
+    virtual ~V8NodeFilterCondition();
 
-        virtual short acceptNode(ScriptState*, Node*) const;
+    virtual short acceptNode(ScriptState*, Node*) const;
 
-    private:
-        explicit V8NodeFilterCondition(v8::Handle<v8::Value> filter);
+private:
+    explicit V8NodeFilterCondition(v8::Handle<v8::Value> filter);
 
-        mutable v8::Persistent<v8::Value> m_filter;
-    };
+    ScopedPersistent<v8::Value> m_filter;
+};
 
 } // namespace WebCore
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to