1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CYCLE_SUB_H_ 6 #define CYCLE_SUB_H_ 7 8 #include "heap/stubs.h" 9 10 namespace blink { 11 12 class C; 13 14 // This contains a leaking cycle: 15 // C -per-> A -sub-> B -ref-> C 16 17 class A : public GarbageCollectedFinalized<A> { 18 public: Trace(Visitor *)19 virtual void Trace(Visitor*) {} 20 }; 21 22 class B : public A { 23 public: 24 virtual void Trace(Visitor*); 25 private: 26 RefPtr<C> m_c; 27 }; 28 29 class C : public RefCounted<C> { 30 private: 31 Persistent<A> m_a; 32 }; 33 34 } 35 36 #endif 37