Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(83)

Side by Side Diff: tools/clang/blink_gc_plugin/tests/cycle_sub.h

Issue 207913002: Global cycle detection analysis. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef BASE_REQUIRES_TRACING_H_ 5 #ifndef CYCLE_SUB_H_
6 #define BASE_REQUIRES_TRACING_H_ 6 #define CYCLE_SUB_H_
7 7
8 #include "heap/stubs.h" 8 #include "heap/stubs.h"
9 9
10 namespace WebCore { 10 namespace WebCore {
11 11
12 class A : public GarbageCollected<A> { 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> {
13 public: 18 public:
14 virtual void trace(Visitor*); 19 virtual void trace(Visitor*) {}
15 }; 20 };
16 21
17 class B : public A { 22 class B : public A {
18 // Does not need trace 23 public:
24 virtual void trace(Visitor*);
25 private:
26 RefPtr<C> m_c;
19 }; 27 };
20 28
21 class C : public B { 29 class C : public RefCounted<C> {
22 public:
23 void trace(Visitor*);
24 private: 30 private:
25 Member<A> m_a; 31 Persistent<A> m_a;
26 };
27
28 class D : public C {
29 public:
30 void trace(Visitor*);
31 private:
32 Member<A> m_a;
33 }; 32 };
34 33
35 } 34 }
36 35
37 #endif 36 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698