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
10namespace blink {
11
12class HeapObject : public GarbageCollected<HeapObject> { };
13
14class OffHeapObject {
15public:
16    void trace(Visitor*);
17private:
18    Member<HeapObject> m_obj; // Must not contain Member.
19    Persistent<HeapVector<Member<HeapObject> > > m_objs; // OK
20};
21
22class StackObject {
23    STACK_ALLOCATED();
24private:
25    Member<HeapObject> m_obj; // OK
26};
27
28class PartObject {
29    DISALLOW_ALLOCATION();
30public:
31    void trace(Visitor*);
32private:
33    Member<HeapObject> m_obj; // OK
34};
35
36class InlineObject {
37    ALLOW_ONLY_INLINE_ALLOCATION();
38public:
39    void trace(Visitor*);
40private:
41    Member<HeapObject> m_obj; // OK
42};
43
44}
45
46#endif
47