| // Copyright 2014 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef FIELDS_REQUIRE_TRACING_H_ |
| #define FIELDS_REQUIRE_TRACING_H_ |
| |
| #include "heap/stubs.h" |
| |
| namespace blink { |
| |
| class HeapObject; |
| class PartObject; |
| |
| class PartBObject { |
| DISALLOW_NEW(); |
| public: |
| void Trace(Visitor*) const; |
| |
| private: |
| HeapHashSet<PartBObject> m_set; |
| HeapVector<PartBObject> m_vector; |
| }; |
| |
| class PartObject { |
| DISALLOW_NEW(); |
| public: |
| void Trace(Visitor*) const; |
| |
| private: |
| Member<HeapObject> m_obj1; |
| Member<HeapObject> m_obj2; |
| Member<HeapObject> m_obj3; |
| |
| HeapVector<PartBObject> m_parts; |
| }; |
| |
| class HeapObject : public GarbageCollected<HeapObject> { |
| static constexpr int array_size = 2; |
| public: |
| void Trace(Visitor*) const; |
| |
| private: |
| PartObject m_part; |
| Member<HeapObject> m_array1[array_size]; |
| std::array<Member<HeapObject>, array_size> m_array2; |
| Member<HeapObject> m_traced_array1[array_size]; |
| Member<HeapObject> m_traced_array2[array_size]; |
| std::array<Member<HeapObject>, array_size> m_traced_array3; |
| std::array<Member<HeapObject>, array_size> m_traced_array4; |
| Member<HeapObject> m_obj; |
| }; |
| |
| } |
| |
| #endif |