Skip to content

Commit

Permalink
Implement NameInHeapSnapshot for all TraceWrapperBase objects.
Browse files Browse the repository at this point in the history
Currently some DOM objects in DevTools heap snapshot show up as
"UnknownNode" because the corresponding TraceWrapperBase objects do
not implement the NameInHeapSnapshot method. This patch fixes it.

The patch also makes NameInHeapSnapshot pure.

Bug: 811925
Cq-Include-Trybots: luci.chromium.try:linux_optional_gpu_tests_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I495a75c5ee0c9f765a6d94daed62cf34c345d124
Reviewed-on: https://chromium-review.googlesource.com/966423
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#543717}
  • Loading branch information
ulan authored and Commit Bot committed Mar 16, 2018
1 parent 50905e9 commit 3fbb232
Show file tree
Hide file tree
Showing 53 changed files with 172 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,7 @@ class HandleContainer
void TraceWrappers(const ScriptWrappableVisitor* visitor) const {
visitor->TraceWrappers(handle_.Cast<v8::Value>());
}
const char* NameInHeapSnapshot() const override { return "HandleContainer"; }

void SetValue(v8::Isolate* isolate, v8::Local<v8::String> string) {
handle_.Set(isolate, string);
Expand Down Expand Up @@ -472,11 +473,13 @@ class Base : public blink::GarbageCollected<Base>,
return new Base(wrapper_in_base, wrapper_in_mixin);
}

virtual void TraceWrappers(const ScriptWrappableVisitor* visitor) const {
void TraceWrappers(const ScriptWrappableVisitor* visitor) const override {
visitor->TraceWrappers(wrapper_in_base_);
Mixin::TraceWrappers(visitor);
}

const char* NameInHeapSnapshot() const override { return "HandleContainer"; }

protected:
Base(DeathAwareScriptWrappable* wrapper_in_base,
DeathAwareScriptWrappable* wrapper_in_mixin)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,10 @@ class V8NodeFilterCondition final

~V8NodeFilterCondition();
virtual void Trace(blink::Visitor* visitor) {}
void TraceWrappers(const ScriptWrappableVisitor*) const;
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override {
return "V8NodeFilterCondition";
}

unsigned acceptNode(Node*, ExceptionState&);
v8::Local<v8::Value> Callback(v8::Isolate* isolate) const {
Expand Down
3 changes: 2 additions & 1 deletion third_party/WebKit/Source/core/css/StyleEngine.h
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,8 @@ class CORE_EXPORT StyleEngine final
const AtomicString& animation_name);

virtual void Trace(blink::Visitor*);
void TraceWrappers(const ScriptWrappableVisitor*) const;
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override { return "StyleEngine"; }

private:
// FontSelectorClient implementation.
Expand Down
5 changes: 4 additions & 1 deletion third_party/WebKit/Source/core/css/StyleSheetCollection.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,10 @@ class CORE_EXPORT StyleSheetCollection
void MarkSheetListDirty() { sheet_list_dirty_ = true; }

virtual void Trace(blink::Visitor*);
virtual void TraceWrappers(const ScriptWrappableVisitor*) const;
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override {
return "StyleSheetCollection";
}

void Dispose();

Expand Down
1 change: 1 addition & 0 deletions third_party/WebKit/Source/core/dom/DocumentParser.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ class CORE_EXPORT DocumentParser
virtual ~DocumentParser();
virtual void Trace(blink::Visitor*);
void TraceWrappers(const ScriptWrappableVisitor*) const override {}
const char* NameInHeapSnapshot() const override { return "DocumentParser"; }

virtual ScriptableDocumentParser* AsScriptableDocumentParser() {
return nullptr;
Expand Down
3 changes: 2 additions & 1 deletion third_party/WebKit/Source/core/dom/ElementShadow.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ class CORE_EXPORT ElementShadow final : public GarbageCollected<ElementShadow>,
}

void Trace(blink::Visitor*);
void TraceWrappers(const ScriptWrappableVisitor*) const;
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override { return "ElementShadow"; }

private:
ElementShadow();
Expand Down
3 changes: 2 additions & 1 deletion third_party/WebKit/Source/core/dom/ElementShadowV0.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ class CORE_EXPORT ElementShadowV0 final
void ClearDistribution();

void Trace(blink::Visitor*);
void TraceWrappers(const ScriptWrappableVisitor*) const;
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override { return "ElementShadowV0"; }

private:
explicit ElementShadowV0(ElementShadow&);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ class CORE_EXPORT FrameRequestCallbackCollection final
public TraceWrapperBase {
public:
virtual void Trace(blink::Visitor* visitor) {}
virtual void TraceWrappers(const ScriptWrappableVisitor* visitor) const {}
void TraceWrappers(const ScriptWrappableVisitor* visitor) const override {}
const char* NameInHeapSnapshot() const override { return "FrameCallback"; }
virtual ~FrameCallback() = default;
virtual void Invoke(double) = 0;

Expand Down Expand Up @@ -61,7 +62,10 @@ class CORE_EXPORT FrameRequestCallbackCollection final
return new V8FrameCallback(callback);
}
void Trace(blink::Visitor*);
void TraceWrappers(const ScriptWrappableVisitor*) const;
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override {
return "V8FrameCallback";
}
~V8FrameCallback() override = default;
void Invoke(double) override;

Expand All @@ -77,7 +81,10 @@ class CORE_EXPORT FrameRequestCallbackCollection final
bool IsEmpty() const { return !callbacks_.size(); }

void Trace(blink::Visitor*);
void TraceWrappers(const ScriptWrappableVisitor*) const;
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override {
return "FrameRequestCallbackCollection";
}

private:
using CallbackList = HeapVector<TraceWrapperMember<FrameCallback>>;
Expand Down
5 changes: 4 additions & 1 deletion third_party/WebKit/Source/core/dom/MutationObserver.h
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,10 @@ class CORE_EXPORT MutationObserver final
virtual void Deliver(const MutationRecordVector& records,
MutationObserver&) = 0;
virtual void Trace(blink::Visitor* visitor) {}
virtual void TraceWrappers(const ScriptWrappableVisitor* visitor) const {}
void TraceWrappers(const ScriptWrappableVisitor* visitor) const override {}
const char* NameInHeapSnapshot() const override {
return "MutationObserver::Delegate";
}
};

class CORE_EXPORT V8DelegateImpl;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,10 @@ class CORE_EXPORT MutationObserverRegistration final
void Dispose();

void Trace(blink::Visitor*);
virtual void TraceWrappers(const ScriptWrappableVisitor*) const;
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override {
return "MutationObserverRegistration";
}

private:
MutationObserverRegistration(MutationObserver&,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,10 @@ class CORE_EXPORT ScriptedAnimationController
virtual ~ScriptedAnimationController() = default;

void Trace(blink::Visitor*);
void TraceWrappers(const ScriptWrappableVisitor*) const;
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override {
return "ScriptedAnimationController";
}
void ClearDocumentPointer() { document_ = nullptr; }

// Animation frame callbacks are used for requestAnimationFrame().
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,10 @@ class CORE_EXPORT ScriptedIdleTaskController
~ScriptedIdleTaskController();

void Trace(blink::Visitor*);
void TraceWrappers(const ScriptWrappableVisitor*) const;
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override {
return "ScriptedIdleTaskController";
}

using CallbackId = int;

Expand All @@ -45,6 +48,7 @@ class CORE_EXPORT ScriptedIdleTaskController
public:
virtual void Trace(blink::Visitor* visitor) {}
virtual void TraceWrappers(const ScriptWrappableVisitor* visitor) const {}
const char* NameInHeapSnapshot() const override { return "IdleTask"; }
virtual ~IdleTask() = default;
virtual void invoke(IdleDeadline*) = 0;
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,10 @@ class CORE_EXPORT CustomElementDefinition
virtual ~CustomElementDefinition();

virtual void Trace(blink::Visitor*);
virtual void TraceWrappers(const ScriptWrappableVisitor* visitor) const {}
void TraceWrappers(const ScriptWrappableVisitor* visitor) const override {}
const char* NameInHeapSnapshot() const override {
return "CustomElementDefinition";
}

const CustomElementDescriptor& Descriptor() { return descriptor_; }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,10 @@ class CORE_EXPORT CustomElementReactionStack final
CustomElementReactionStack();

void Trace(blink::Visitor*);
virtual void TraceWrappers(const ScriptWrappableVisitor*) const;
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override {
return "CustomElementReactionStack";
}

void Push();
void PopInvokingReactions();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,10 @@ class HTMLImportTreeRoot final : public HTMLImport, public TraceWrapperBase {
HTMLImportChild* Find(const KURL&) const;

virtual void Trace(blink::Visitor*);
virtual void TraceWrappers(const ScriptWrappableVisitor*) const;
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override {
return "HTMLImportTreeRoot";
}

private:
explicit HTMLImportTreeRoot(Document*);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,9 @@ class HTMLImportsController final
void Dispose();

void TraceWrappers(const ScriptWrappableVisitor*) const;
const char* NameInHeapSnapshot() const override {
return "HTMLImportsController";
}

private:
explicit HTMLImportsController(Document&);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,9 @@ class ImageBitmapFactories final

void Trace(blink::Visitor*);
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override {
return "ImageBitmapLoader";
}

private:
class ImageBitmapLoader final
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,10 @@ class ElementIntersectionObserverData
void DeactivateAllIntersectionObservers(Node&);

void Trace(blink::Visitor*);
void TraceWrappers(const ScriptWrappableVisitor*) const;
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override {
return "ElementIntersectionObserverData";
}

private:
// IntersectionObservers for which the Node owning this data is root.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@ class IntersectionObserverController

void Trace(blink::Visitor*);
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override {
return "IntersectionObserverController";
}

private:
explicit IntersectionObserverController(Document*);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,10 @@ class IntersectionObserverDelegate
IntersectionObserver&) = 0;
virtual ExecutionContext* GetExecutionContext() const = 0;
virtual void Trace(blink::Visitor* visitor) {}
virtual void TraceWrappers(const ScriptWrappableVisitor* visitor) const {}
void TraceWrappers(const ScriptWrappableVisitor* visitor) const override {}
const char* NameInHeapSnapshot() const override {
return "IntersectionObserverDelegate";
}
};

} // namespace blink
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,9 @@ class CSSLayoutDefinition final

void Trace(blink::Visitor*);
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override {
return "CSSLayoutDefinition::Instance";
}

private:
Member<CSSLayoutDefinition> definition_;
Expand Down Expand Up @@ -81,6 +84,9 @@ class CSSLayoutDefinition final

void Trace(blink::Visitor* visitor) {}
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override {
return "CSSLayoutDefinition";
}

private:
scoped_refptr<ScriptState> script_state_;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ class CORE_EXPORT ModuleTreeLinkerRegistry
}
void Trace(blink::Visitor*);
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override {
return "ModuleTreeLinkerRegistry";
}

ModuleTreeLinker* Fetch(const ModuleScriptFetchRequest&,
Modulator*,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,9 @@ class HTMLParserScriptRunner final

void Trace(blink::Visitor*) override;
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override {
return "HTMLParserScriptRunner";
}

private:
HTMLParserScriptRunner(HTMLParserReentryPermit*,
Expand Down
5 changes: 5 additions & 0 deletions third_party/WebKit/Source/core/script/Modulator.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ class CORE_EXPORT SingleModuleClient
virtual ~SingleModuleClient() = default;
virtual void Trace(blink::Visitor* visitor) {}
void TraceWrappers(const ScriptWrappableVisitor*) const override {}
const char* NameInHeapSnapshot() const override {
return "SingleModuleClient";
}

virtual void NotifyModuleLoadFinished(ModuleScript*) = 0;
};
Expand All @@ -56,6 +59,7 @@ class CORE_EXPORT ModuleTreeClient
virtual ~ModuleTreeClient() = default;
virtual void Trace(blink::Visitor* visitor) {}
void TraceWrappers(const ScriptWrappableVisitor*) const override {}
const char* NameInHeapSnapshot() const override { return "ModuleTreeClient"; }

virtual void NotifyModuleTreeLoadFinished(ModuleScript*) = 0;
};
Expand Down Expand Up @@ -83,6 +87,7 @@ class CORE_EXPORT Modulator : public GarbageCollectedFinalized<Modulator>,

virtual void Trace(blink::Visitor* visitor) {}
void TraceWrappers(const ScriptWrappableVisitor*) const override {}
const char* NameInHeapSnapshot() const override { return "Modulator"; }

virtual ScriptModuleResolver* GetScriptModuleResolver() = 0;
virtual base::SingleThreadTaskRunner* TaskRunner() = 0;
Expand Down
3 changes: 2 additions & 1 deletion third_party/WebKit/Source/core/script/ModuleMap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ class ModuleMap::Entry final : public GarbageCollectedFinalized<Entry>,
~Entry() override {}

void Trace(blink::Visitor*);
void TraceWrappers(const ScriptWrappableVisitor*) const;
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override { return "ModuleMap::Entry"; }

// Notify fetched |m_moduleScript| to the client asynchronously.
void AddClient(SingleModuleClient*);
Expand Down
3 changes: 2 additions & 1 deletion third_party/WebKit/Source/core/script/ModuleMap.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ class CORE_EXPORT ModuleMap final : public GarbageCollected<ModuleMap>,
return new ModuleMap(modulator);
}
void Trace(blink::Visitor*);
void TraceWrappers(const ScriptWrappableVisitor*) const;
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override { return "ModuleMap"; }

// https://html.spec.whatwg.org/multipage/webappapis.html#fetch-a-single-module-script
void FetchSingleModuleScript(const ModuleScriptFetchRequest&,
Expand Down
3 changes: 2 additions & 1 deletion third_party/WebKit/Source/core/script/ModuleScript.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@ class CORE_EXPORT ModuleScript final : public Script, public TraceWrapperBase {
String* failure_reason = nullptr);

void Trace(blink::Visitor*);
void TraceWrappers(const ScriptWrappableVisitor*) const;
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override { return "ModuleScript"; }

private:
ModuleScript(Modulator* settings_object,
Expand Down
1 change: 1 addition & 0 deletions third_party/WebKit/Source/core/script/PendingScript.h
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ class CORE_EXPORT PendingScript

virtual void Trace(blink::Visitor*);
void TraceWrappers(const ScriptWrappableVisitor*) const override {}
const char* NameInHeapSnapshot() const override { return "PendingScript"; }

// Returns false if the script should not be run due to MIME type check.
// Should be called just before GetSource().
Expand Down
3 changes: 2 additions & 1 deletion third_party/WebKit/Source/core/script/ScriptLoader.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@ class CORE_EXPORT ScriptLoader : public GarbageCollectedFinalized<ScriptLoader>,

~ScriptLoader() override;
virtual void Trace(blink::Visitor*);
void TraceWrappers(const ScriptWrappableVisitor*) const;
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override { return "ScriptLoader"; }

enum LegacyTypeSupport {
kDisallowLegacyTypeInTypeAttribute,
Expand Down
3 changes: 2 additions & 1 deletion third_party/WebKit/Source/core/script/ScriptRunner.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,8 @@ class CORE_EXPORT ScriptRunner final
static void MovePendingScript(Document&, Document&, ScriptLoader*);

void Trace(blink::Visitor*);
void TraceWrappers(const ScriptWrappableVisitor*) const;
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override { return "ScriptRunner"; }

private:
class Task;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,8 @@ class XMLHttpRequest final : public XMLHttpRequestEventTarget,
DEFINE_ATTRIBUTE_EVENT_LISTENER(readystatechange);

virtual void Trace(blink::Visitor*);
void TraceWrappers(const ScriptWrappableVisitor*) const;
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override { return "XMLHttpRequest"; }

private:
class BlobLoader;
Expand Down
Loading

0 comments on commit 3fbb232

Please sign in to comment.