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 Persistent<HeapVector<Member<HeapObject> > > m_objs; // OK 20 }; 21 22 class StackObject { 23 STACK_ALLOCATED(); 24 private: 25 Member<HeapObject> m_obj; // OK 26 }; 27 28 class PartObject { 29 DISALLOW_ALLOCATION(); 30 public: 31 void trace(Visitor*); 32 private: 33 Member<HeapObject> m_obj; // OK 34 }; 35 36 class InlineObject { 37 ALLOW_ONLY_INLINE_ALLOCATION(); 38 public: 39 void trace(Visitor*); 40 private: 41 Member<HeapObject> m_obj; // OK 42 }; 43 44 } 45 46 #endif 47