class_requires_finalization_mixin.h revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
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 CLASS_REQUIRES_FINALIZATION_MIXIN_H_ 6#define CLASS_REQUIRES_FINALIZATION_MIXIN_H_ 7 8#include "heap/stubs.h" 9 10namespace WebCore { 11 12class OffHeap : public RefCounted<OffHeap> { }; 13class OnHeap : public GarbageCollected<OnHeap> { }; 14 15class Mixin : public GarbageCollectedMixin { 16public: 17 void trace(Visitor*); 18private: 19 RefPtr<OffHeap> m_offHeap; // Requires finalization 20 Member<OnHeap> m_onHeap; 21}; 22 23class NeedsFinalizer : public GarbageCollected<NeedsFinalizer>, public Mixin { 24 USING_GARBAGE_COLLECTED_MIXIN(NeedsFinalizer); 25public: 26 void trace(Visitor*); 27private: 28 Member<OnHeap> m_obj; 29}; 30 31class HasFinalizer : public GarbageCollectedFinalized<HasFinalizer>, 32 public Mixin { 33 USING_GARBAGE_COLLECTED_MIXIN(HasFinalizer); 34public: 35 void trace(Visitor*); 36private: 37 Member<OnHeap> m_obj; 38}; 39 40} 41 42#endif 43