1 // Copyright 2015 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 DESTRUCTOR_EAGERLY_FINALIZED_H_ 6 #define DESTRUCTOR_EAGERLY_FINALIZED_H_ 7 8 #include "heap/stubs.h" 9 10 namespace blink { 11 12 class HeapObject : public GarbageCollected<HeapObject> { 13 public: trace(Visitor *)14 void trace(Visitor*) { } foo()15 void foo() { } 16 }; 17 18 class HeapObjectEagerFinalized 19 : public GarbageCollectedFinalized<HeapObjectEagerFinalized> { 20 public: 21 EAGERLY_FINALIZED(); 22 ~HeapObjectEagerFinalized(); 23 void trace(Visitor*); 24 foo()25 void foo() { } 26 27 private: 28 Member<HeapObject> m_obj; 29 }; 30 31 // Accessing other eagerly finalized objects during finalization is not allowed. 32 class HeapObjectEagerFinalizedAlso 33 : public GarbageCollectedFinalized<HeapObjectEagerFinalizedAlso> { 34 public: 35 EAGERLY_FINALIZED(); 36 ~HeapObjectEagerFinalizedAlso(); 37 void trace(Visitor*); 38 39 private: 40 Member<HeapObject> m_heapObject; 41 Member<HeapObjectEagerFinalized> m_heapObjectFinalized; 42 HeapVector<Member<HeapObjectEagerFinalized>> m_heapVector; 43 }; 44 45 } // namespace blink 46 47 #endif // DESTRUCTOR_EAGERLY_FINALIZED_H_ 48