Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(158)

Unified Diff: third_party/WebKit/Source/bindings/core/v8/V8GCController.cpp

Issue 2387373002: Create retainment infos from handles, even for tracing (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/bindings/core/v8/V8GCController.cpp
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8GCController.cpp b/third_party/WebKit/Source/bindings/core/v8/V8GCController.cpp
index ba550a28e76deadff04231bc8ef97f5af452c36b..4a18f5f36f2f619450cafe6d96cecb15378d6a1d 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8GCController.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/V8GCController.cpp
@@ -151,11 +151,16 @@ class MinorGCUnmodifiedWrapperVisitor : public v8::PersistentHandleVisitor {
class MajorGCWrapperVisitor : public v8::PersistentHandleVisitor {
public:
explicit MajorGCWrapperVisitor(v8::Isolate* isolate,
- bool constructRetainedObjectInfos)
+ bool constructRetainedObjectInfos,
+ bool constructImplicitReferenceGroups)
: m_isolate(isolate),
m_domObjectsWithPendingActivity(0),
m_liveRootGroupIdSet(false),
- m_constructRetainedObjectInfos(constructRetainedObjectInfos) {}
+ m_constructRetainedObjectInfos(constructRetainedObjectInfos),
+ m_constructImplicitReferenceGroups(constructImplicitReferenceGroups) {
+ DCHECK(m_constructRetainedObjectInfos ||
+ m_constructImplicitReferenceGroups);
+ }
void VisitPersistentHandle(v8::Persistent<v8::Value>* value,
uint16_t classId) override {
@@ -202,8 +207,10 @@ class MajorGCWrapperVisitor : public v8::PersistentHandleVisitor {
if (m_constructRetainedObjectInfos)
m_groupsWhichNeedRetainerInfo.append(root);
} else if (classId == WrapperTypeInfo::ObjectClassId) {
- type->visitDOMWrapper(m_isolate, toScriptWrappable(wrapper),
- v8::Persistent<v8::Object>::Cast(*value));
+ if (m_constructImplicitReferenceGroups) {
haraken 2016/10/04 11:24:48 I'd directly use !RuntimeEnabledFeatures::traceWra
Michael Lippautz 2016/10/04 11:31:02 Done.
+ type->visitDOMWrapper(m_isolate, toScriptWrappable(wrapper),
+ v8::Persistent<v8::Object>::Cast(*value));
+ }
} else {
NOTREACHED();
}
@@ -253,6 +260,7 @@ class MajorGCWrapperVisitor : public v8::PersistentHandleVisitor {
int m_domObjectsWithPendingActivity;
bool m_liveRootGroupIdSet;
bool m_constructRetainedObjectInfos;
+ bool m_constructImplicitReferenceGroups;
};
static unsigned long long usedHeapSize(v8::Isolate* isolate) {
@@ -269,17 +277,21 @@ void visitWeakHandlesForMinorGC(v8::Isolate* isolate) {
}
void objectGroupingForMajorGC(v8::Isolate* isolate,
- bool constructRetainedObjectInfos) {
- MajorGCWrapperVisitor visitor(isolate, constructRetainedObjectInfos);
+ bool constructRetainedObjectInfos,
+ bool constructImplicitReferenceGroups) {
haraken 2016/10/04 11:24:48 constructImplicitReferenceGroups is unused.
Michael Lippautz 2016/10/04 11:31:02 Done.
+ MajorGCWrapperVisitor visitor(
+ isolate, constructRetainedObjectInfos,
+ !RuntimeEnabledFeatures::traceWrappablesEnabled());
isolate->VisitHandlesWithClassIds(&visitor);
visitor.notifyFinished();
}
void gcPrologueForMajorGC(v8::Isolate* isolate,
bool constructRetainedObjectInfos) {
- // TODO(hlopko): Collect retained object infos for heap profiler
- if (!RuntimeEnabledFeatures::traceWrappablesEnabled()) {
- objectGroupingForMajorGC(isolate, constructRetainedObjectInfos);
+ const bool objectGrouping = !RuntimeEnabledFeatures::traceWrappablesEnabled();
+ if (objectGrouping || constructRetainedObjectInfos) {
+ objectGroupingForMajorGC(isolate, constructRetainedObjectInfos,
+ objectGrouping);
}
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698