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 MEMBER_IN_OFFHEAP_CLASS_H_ 6 #define MEMBER_IN_OFFHEAP_CLASS_H_ 7 8 #include "heap/stubs.h" 9 10 namespace blink { 11 12 class HeapObject : public GarbageCollected<HeapObject> { }; 13 14 class OffHeapObject { 15 public: 16 void Trace(Visitor*); 17 private: 18 Member<HeapObject> m_obj; // Must not contain Member. 19 WeakMember<HeapObject> m_weak; // Must not contain WeakMember. 20 Persistent<HeapVector<Member<HeapObject> > > m_objs; // OK 21 }; 22 23 class StackObject { 24 STACK_ALLOCATED(); 25 private: 26 Member<HeapObject> m_obj; // OK 27 Member<OffHeapObject> m_memberOff; // NOT OK 28 HeapVector<Member<OffHeapObject>> m_heapVectorMemberOff; // NOT OK 29 }; 30 31 class PartObject { 32 DISALLOW_NEW(); 33 public: 34 void Trace(Visitor*); 35 private: 36 Member<HeapObject> m_obj; // OK 37 }; 38 39 class InlineObject { 40 DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); 41 public: 42 void Trace(Visitor*); 43 private: 44 Member<HeapObject> m_obj; // OK 45 }; 46 47 } 48 49 #endif 50