Index: tools/clang/blink_gc_plugin/tests/cycle_sub.h |
diff --git a/tools/clang/blink_gc_plugin/tests/base_requires_tracing.h b/tools/clang/blink_gc_plugin/tests/cycle_sub.h |
similarity index 53% |
copy from tools/clang/blink_gc_plugin/tests/base_requires_tracing.h |
copy to tools/clang/blink_gc_plugin/tests/cycle_sub.h |
index de3f186e3a96e72c5454efeaa285b15e8d7916c5..5137e498a9079f12c0b67c9fe9d95d98cee9efc8 100644 |
--- a/tools/clang/blink_gc_plugin/tests/base_requires_tracing.h |
+++ b/tools/clang/blink_gc_plugin/tests/cycle_sub.h |
@@ -2,34 +2,33 @@ |
// 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_SUB_H_ |
+#define CYCLE_SUB_H_ |
#include "heap/stubs.h" |
namespace WebCore { |
-class A : public GarbageCollected<A> { |
+class C; |
+ |
+// This contains a leaking cycle: |
+// C -per-> A -sub-> B -ref-> C |
+ |
+class A : public GarbageCollectedFinalized<A> { |
public: |
- virtual void trace(Visitor*); |
+ virtual void trace(Visitor*) {} |
}; |
class B : public A { |
- // Does not need trace |
-}; |
- |
-class C : public B { |
public: |
- void trace(Visitor*); |
+ virtual void trace(Visitor*); |
private: |
- Member<A> m_a; |
+ RefPtr<C> m_c; |
}; |
-class D : public C { |
-public: |
- void trace(Visitor*); |
+class C : public RefCounted<C> { |
private: |
- Member<A> m_a; |
+ Persistent<A> m_a; |
}; |
} |