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_SUPER_H_ 6 #define CYCLE_SUPER_H_ 7 8 #include "heap/stubs.h" 9 10 namespace blink { 11 12 class D; 13 14 // This contains a leaking cycle: 15 // D -per-> C -sup-> B -sup-> A -ref-> D 16 17 class A : public GarbageCollectedFinalized<A> { 18 public: 19 virtual void Trace(Visitor*); 20 private: 21 RefPtr<D> m_d; 22 }; 23 24 class B : public A { 25 public: 26 virtual void Trace(Visitor*); 27 }; 28 29 class C : public B { 30 public: 31 virtual void Trace(Visitor*); 32 }; 33 34 class D : public RefCounted<C> { 35 private: 36 Persistent<C> m_c; 37 }; 38 39 } 40 41 #endif 42