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.
5 #ifndef CLASS_REQUIRES_FINALIZATION_H_
6 #define CLASS_REQUIRES_FINALIZATION_H_
8 #include "heap/stubs.h"
12 class A
: public GarbageCollected
<A
> {
14 virtual void trace(Visitor
*) { }
17 // Has a non-trivial dtor (user-declared).
21 void trace(Visitor
*) { };
24 // Has a trivial dtor.
27 void trace(Visitor
*) { };
35 struct VectorTraits
<blink::C
> {
36 static const bool needsDestruction
= false;
43 // Off-heap vectors always need to be finalized.
44 class NeedsFinalizer
: public A
, public ScriptWrappable
{
48 Vector
<Member
<A
> > m_as
;
51 // On-heap vectors with inlined objects that need destruction
52 // need to be finalized.
53 class AlsoNeedsFinalizer
: public A
{
57 HeapVector
<B
, 10> m_bs
;
60 // On-heap vectors with no inlined objects never need to be finalized.
61 class DoesNotNeedFinalizer
: public A
, public ScriptWrappable
{
68 // On-heap vectors with inlined objects that don't need destruction
69 // don't need to be finalized.
70 class AlsoDoesNotNeedFinalizer
: public A
, public ScriptWrappable
{
74 HeapVector
<Member
<A
>, 10> m_as
;
75 HeapVector
<C
, 10> m_cs
;