15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef REF_PTR_TO_GC_MANAGED_CLASS_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define REF_PTR_TO_GC_MANAGED_CLASS_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "heap/stubs.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace blink {
1146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class HeapObject;
1346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PartObject {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    DISALLOW_ALLOCATION();
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)private:
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    RefPtr<HeapObject> m_obj;
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class HeapObject : public GarbageCollectedFinalized<HeapObject> {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)public:
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void trace(Visitor*);
23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)private:
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PartObject m_part;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    Vector<RefPtr<HeapObject> > m_objs;
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)