diff options
Diffstat (limited to 'tools/clang/blink_gc_plugin/tests/legacy_naming/stack_allocated.h')
-rw-r--r-- | tools/clang/blink_gc_plugin/tests/legacy_naming/stack_allocated.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/tools/clang/blink_gc_plugin/tests/legacy_naming/stack_allocated.h b/tools/clang/blink_gc_plugin/tests/legacy_naming/stack_allocated.h new file mode 100644 index 00000000..10d8f41d --- /dev/null +++ b/tools/clang/blink_gc_plugin/tests/legacy_naming/stack_allocated.h @@ -0,0 +1,50 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef STACK_ALLOCATED_H_ +#define STACK_ALLOCATED_H_ + +#include "heap/stubs.h" + +namespace blink { + +class HeapObject; + +class PartObject { + DISALLOW_NEW(); +private: + Member<HeapObject> m_obj; // Needs tracing. +}; + +class StackObject { + STACK_ALLOCATED(); +private: + Member<HeapObject> m_obj; // Does not need tracing. +}; + +class HeapObject : public GarbageCollected<HeapObject> { +public: + void trace(Visitor*); +private: + StackObject m_part; // Cannot embed a stack allocated object. +}; + +// Cannot derive from both heap- and stack-allocated objects. +class DerivedHeapObject : public HeapObject, public StackObject { +}; + +// Cannot be stack-allocated and derive from a heap-allocated object. +class DerivedHeapObject2 : public HeapObject { + STACK_ALLOCATED(); +}; + +// STACK_ALLOCATED is inherited. +class DerivedStackObject : public StackObject { +private: + StackObject m_anotherPart; // Also fine. +}; + +} + +#endif |