Commit 2680c3e0 authored by Keishi Hattori's avatar Keishi Hattori Committed by Commit Bot

Oilpan: Remove PersistentHeapCollection support from blink_gc_plugin

PersistentHeapCollection was removed from the code base. This removes support from blink_gc_plugin.

Bug: None
Change-Id: I7adfa680843f12a3fbd3040b7fae95c7826c9fe8
Reviewed-on: https://chromium-review.googlesource.com/1245082Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Commit-Queue: Keishi Hattori <keishi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#594285}
parent 688e5dd8
...@@ -56,7 +56,7 @@ void MightBeCollectedVisitor::VisitMember(Member* edge) { ...@@ -56,7 +56,7 @@ void MightBeCollectedVisitor::VisitMember(Member* edge) {
void MightBeCollectedVisitor::VisitCollection(Collection* edge) { void MightBeCollectedVisitor::VisitCollection(Collection* edge) {
if (edge->on_heap() && !is_eagerly_finalized_) { if (edge->on_heap() && !is_eagerly_finalized_) {
might_be_collected_ = !edge->is_root(); might_be_collected_ = true;
} else { } else {
edge->AcceptMembers(this); edge->AcceptMembers(this);
} }
......
...@@ -46,8 +46,3 @@ void CheckGCRootsVisitor::VisitValue(Value* edge) { ...@@ -46,8 +46,3 @@ void CheckGCRootsVisitor::VisitValue(Value* edge) {
void CheckGCRootsVisitor::VisitPersistent(Persistent* edge) { void CheckGCRootsVisitor::VisitPersistent(Persistent* edge) {
gc_roots_.push_back(current_); gc_roots_.push_back(current_);
} }
void CheckGCRootsVisitor::AtCollection(Collection* edge) {
if (edge->is_root())
gc_roots_.push_back(current_);
}
...@@ -27,7 +27,6 @@ class CheckGCRootsVisitor : public RecursiveEdgeVisitor { ...@@ -27,7 +27,6 @@ class CheckGCRootsVisitor : public RecursiveEdgeVisitor {
void VisitValue(Value* edge) override; void VisitValue(Value* edge) override;
void VisitPersistent(Persistent* edge) override; void VisitPersistent(Persistent* edge) override;
void AtCollection(Collection* edge) override;
private: private:
RootPath current_; RootPath current_;
......
...@@ -79,24 +79,10 @@ class Config { ...@@ -79,24 +79,10 @@ class Config {
} }
static bool IsGCCollection(const std::string& name) { static bool IsGCCollection(const std::string& name) {
return name == "HeapVector" || return name == "HeapVector" || name == "HeapDeque" ||
name == "HeapDeque" || name == "HeapHashSet" || name == "HeapListHashSet" ||
name == "HeapHashSet" || name == "HeapLinkedHashSet" || name == "HeapHashCountedSet" ||
name == "HeapListHashSet" || name == "HeapHashMap";
name == "HeapLinkedHashSet" ||
name == "HeapHashCountedSet" ||
name == "HeapHashMap" ||
IsPersistentGCCollection(name);
}
static bool IsPersistentGCCollection(const std::string& name) {
return name == "PersistentHeapVector" ||
name == "PersistentHeapDeque" ||
name == "PersistentHeapHashSet" ||
name == "PersistentHeapListHashSet" ||
name == "PersistentHeapLinkedHashSet" ||
name == "PersistentHeapHashCountedSet" ||
name == "PersistentHeapHashMap";
} }
static bool IsGCCollectionWithUnsafeIterator(const std::string& name) { static bool IsGCCollectionWithUnsafeIterator(const std::string& name) {
......
...@@ -226,10 +226,7 @@ class CrossThreadPersistent : public PtrEdge { ...@@ -226,10 +226,7 @@ class CrossThreadPersistent : public PtrEdge {
class Collection : public Edge { class Collection : public Edge {
public: public:
typedef std::vector<Edge*> Members; typedef std::vector<Edge*> Members;
Collection(RecordInfo* info, bool on_heap, bool is_root) Collection(RecordInfo* info, bool on_heap) : info_(info), on_heap_(on_heap) {}
: info_(info),
on_heap_(on_heap),
is_root_(is_root) {}
~Collection() { ~Collection() {
for (Members::iterator it = members_.begin(); it != members_.end(); ++it) { for (Members::iterator it = members_.begin(); it != members_.end(); ++it) {
assert(*it && "Collection-edge members must be non-null"); assert(*it && "Collection-edge members must be non-null");
...@@ -237,9 +234,8 @@ class Collection : public Edge { ...@@ -237,9 +234,8 @@ class Collection : public Edge {
} }
} }
bool IsCollection() override { return true; } bool IsCollection() override { return true; }
LivenessKind Kind() override { return is_root_ ? kRoot : kStrong; } LivenessKind Kind() override { return kStrong; }
bool on_heap() { return on_heap_; } bool on_heap() { return on_heap_; }
bool is_root() { return is_root_; }
Members& members() { return members_; } Members& members() { return members_; }
void Accept(EdgeVisitor* visitor) override { visitor->VisitCollection(this); } void Accept(EdgeVisitor* visitor) override { visitor->VisitCollection(this); }
void AcceptMembers(EdgeVisitor* visitor) { void AcceptMembers(EdgeVisitor* visitor) {
...@@ -248,8 +244,6 @@ class Collection : public Edge { ...@@ -248,8 +244,6 @@ class Collection : public Edge {
} }
bool NeedsFinalization() override; bool NeedsFinalization() override;
TracingStatus NeedsTracing(NeedsTracingOption) override { TracingStatus NeedsTracing(NeedsTracingOption) override {
if (is_root_)
return TracingStatus::Unneeded();
if (on_heap_) if (on_heap_)
return TracingStatus::Needed(); return TracingStatus::Needed();
// For off-heap collections, determine tracing status of members. // For off-heap collections, determine tracing status of members.
...@@ -265,7 +259,6 @@ class Collection : public Edge { ...@@ -265,7 +259,6 @@ class Collection : public Edge {
RecordInfo* info_; RecordInfo* info_;
Members members_; Members members_;
bool on_heap_; bool on_heap_;
bool is_root_;
}; };
// An iterator edge is a direct edge to some iterator type. // An iterator edge is a direct edge to some iterator type.
......
...@@ -703,12 +703,11 @@ Edge* RecordInfo::CreateEdge(const Type* type) { ...@@ -703,12 +703,11 @@ Edge* RecordInfo::CreateEdge(const Type* type) {
if (Config::IsGCCollection(info->name()) || if (Config::IsGCCollection(info->name()) ||
Config::IsWTFCollection(info->name())) { Config::IsWTFCollection(info->name())) {
bool is_root = Config::IsPersistentGCCollection(info->name()); bool on_heap = info->IsHeapAllocatedCollection();
bool on_heap = is_root || info->IsHeapAllocatedCollection();
size_t count = Config::CollectionDimension(info->name()); size_t count = Config::CollectionDimension(info->name());
if (!info->GetTemplateArgs(count, &args)) if (!info->GetTemplateArgs(count, &args))
return 0; return 0;
Collection* edge = new Collection(info, on_heap, is_root); Collection* edge = new Collection(info, on_heap);
for (TemplateArgs::iterator it = args.begin(); it != args.end(); ++it) { for (TemplateArgs::iterator it = args.begin(); it != args.end(); ++it) {
if (Edge* member = CreateEdge(*it)) { if (Edge* member = CreateEdge(*it)) {
edge->members().push_back(member); edge->members().push_back(member);
......
...@@ -277,9 +277,6 @@ class HeapHashCountedSet : public HashCountedSet<T, void, void, HeapAllocator> { ...@@ -277,9 +277,6 @@ class HeapHashCountedSet : public HashCountedSet<T, void, void, HeapAllocator> {
template<typename K, typename V> template<typename K, typename V>
class HeapHashMap : public HashMap<K, V, void, void, void, HeapAllocator> { }; class HeapHashMap : public HashMap<K, V, void, void, void, HeapAllocator> { };
template<typename T>
class PersistentHeapVector : public Vector<T, 0, HeapAllocator> { };
class Visitor { class Visitor {
public: public:
template <typename T, void (T::*method)(Visitor*)> template <typename T, void (T::*method)(Visitor*)>
......
...@@ -23,7 +23,7 @@ public: ...@@ -23,7 +23,7 @@ public:
private: private:
PartObject m_part; PartObject m_part;
HeapVector<PartObject> m_parts; HeapVector<PartObject> m_parts;
PersistentHeapVector<Member<HeapObject> > m_objs; Persistent<HeapVector<Member<HeapObject>>> m_objs;
WeakPersistent<HeapObject> m_weakPersistent; WeakPersistent<HeapObject> m_weakPersistent;
}; };
......
...@@ -21,7 +21,7 @@ class HeapObject : public GarbageCollected<HeapObject> { ...@@ -21,7 +21,7 @@ class HeapObject : public GarbageCollected<HeapObject> {
class HeapObject : public GarbageCollected<HeapObject> { class HeapObject : public GarbageCollected<HeapObject> {
^ ^
./persistent_field_in_gc_managed_class.h:26:5: note: [blink-gc] Field 'm_objs' defining a GC root declared here: ./persistent_field_in_gc_managed_class.h:26:5: note: [blink-gc] Field 'm_objs' defining a GC root declared here:
PersistentHeapVector<Member<HeapObject> > m_objs; Persistent<HeapVector<Member<HeapObject>>> m_objs;
^ ^
./persistent_field_in_gc_managed_class.h:20:1: warning: [blink-gc] Class 'HeapObject' contains GC root in field 'm_weakPersistent'. ./persistent_field_in_gc_managed_class.h:20:1: warning: [blink-gc] Class 'HeapObject' contains GC root in field 'm_weakPersistent'.
class HeapObject : public GarbageCollected<HeapObject> { class HeapObject : public GarbageCollected<HeapObject> {
...@@ -32,6 +32,9 @@ class HeapObject : public GarbageCollected<HeapObject> { ...@@ -32,6 +32,9 @@ class HeapObject : public GarbageCollected<HeapObject> {
./persistent_field_in_gc_managed_class.h:20:1: warning: [blink-gc] Class 'HeapObject' requires finalization. ./persistent_field_in_gc_managed_class.h:20:1: warning: [blink-gc] Class 'HeapObject' requires finalization.
class HeapObject : public GarbageCollected<HeapObject> { class HeapObject : public GarbageCollected<HeapObject> {
^ ^
./persistent_field_in_gc_managed_class.h:26:5: note: [blink-gc] Field 'm_objs' requiring finalization declared here:
Persistent<HeapVector<Member<HeapObject>>> m_objs;
^
./persistent_field_in_gc_managed_class.h:27:5: note: [blink-gc] Field 'm_weakPersistent' requiring finalization declared here: ./persistent_field_in_gc_managed_class.h:27:5: note: [blink-gc] Field 'm_weakPersistent' requiring finalization declared here:
WeakPersistent<HeapObject> m_weakPersistent; WeakPersistent<HeapObject> m_weakPersistent;
^ ^
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment