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 FIELDS_REQUIRE_TRACING_H_ 6 #define FIELDS_REQUIRE_TRACING_H_ 7 8 #include "heap/stubs.h" 9 10 namespace blink { 11 12 class HeapObject; 13 class PartObject; 14 15 class PartBObject { 16 DISALLOW_NEW(); 17 public: 18 void Trace(Visitor*); 19 private: 20 HeapHashSet<PartBObject> m_set; 21 HeapVector<PartBObject> m_vector; 22 }; 23 24 class PartObject { 25 DISALLOW_NEW(); 26 public: 27 void Trace(Visitor*); 28 private: 29 Member<HeapObject> m_obj1; 30 Member<HeapObject> m_obj2; 31 Member<HeapObject> m_obj3; 32 33 HeapVector<PartBObject> m_parts; 34 }; 35 36 class HeapObject : public GarbageCollected<HeapObject> { 37 public: 38 void Trace(Visitor*); 39 private: 40 PartObject m_part; 41 Member<HeapObject> m_obj; 42 }; 43 44 } 45 46 #endif 47