Index: tools/clang/blink_gc_plugin/tests/cycle_super.h |
diff --git a/tools/clang/blink_gc_plugin/tests/base_requires_tracing.h b/tools/clang/blink_gc_plugin/tests/cycle_super.h |
similarity index 52% |
copy from tools/clang/blink_gc_plugin/tests/base_requires_tracing.h |
copy to tools/clang/blink_gc_plugin/tests/cycle_super.h |
index de3f186e3a96e72c5454efeaa285b15e8d7916c5..9e0a0aa985d9ccdd92ace0fd3fc69e8f63fd2f25 100644 |
--- a/tools/clang/blink_gc_plugin/tests/base_requires_tracing.h |
+++ b/tools/clang/blink_gc_plugin/tests/cycle_super.h |
@@ -2,34 +2,38 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#ifndef BASE_REQUIRES_TRACING_H_ |
-#define BASE_REQUIRES_TRACING_H_ |
+#ifndef CYCLE_SUPER_H_ |
+#define CYCLE_SUPER_H_ |
#include "heap/stubs.h" |
namespace WebCore { |
-class A : public GarbageCollected<A> { |
+class D; |
+ |
+// This contains a leaking cycle: |
+// D -per-> C -sup-> B -sup-> A -ref-> D |
+ |
+class A : public GarbageCollectedFinalized<A> { |
public: |
virtual void trace(Visitor*); |
+private: |
+ RefPtr<D> m_d; |
}; |
class B : public A { |
- // Does not need trace |
+public: |
+ virtual void trace(Visitor*); |
}; |
class C : public B { |
public: |
- void trace(Visitor*); |
-private: |
- Member<A> m_a; |
+ virtual void trace(Visitor*); |
}; |
-class D : public C { |
-public: |
- void trace(Visitor*); |
+class D : public RefCounted<C> { |
private: |
- Member<A> m_a; |
+ Persistent<C> m_c; |
}; |
} |