Home | History | Annotate | Download | only in tests
      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