Home | History | Annotate | Download | only in tests
      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 WebCore {
     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