cycle_ptrs.h revision effb81e5f8246d0db0270817048dc992db66e9fb
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_PTRS_H_ 6#define CYCLE_PTRS_H_ 7 8#include "heap/stubs.h" 9 10namespace WebCore { 11 12class B; 13class C; 14class D; 15class E; 16 17// This contains a leaking cycle: 18// E -per-> A -mem-> B -ref-> C -own-> D -own-vec-> E 19 20// The traced cycle from A -> B -> A does not leak. 21 22class A : public GarbageCollected<A> { 23public: 24 virtual void trace(Visitor*); 25private: 26 Member<B> m_b; 27}; 28 29class B : public GarbageCollectedFinalized<B> { 30public: 31 virtual void trace(Visitor*); 32private: 33 Member<A> m_a; 34 RefPtr<C> m_c; 35}; 36 37class C : public RefCounted<C> { 38private: 39 OwnPtr<D> m_d; 40}; 41 42class D { 43private: 44 Vector<OwnPtr<E> > m_es; 45}; 46 47class E { 48private: 49 Persistent<A> m_a; 50}; 51 52} 53 54#endif 55