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