1f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Copyright 2016 The Chromium Authors. All rights reserved. 2f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// found in the LICENSE file. 4f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 5f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#ifndef FIELDS_ILLEGAL_TRACING_H_ 6f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define FIELDS_ILLEGAL_TRACING_H_ 7f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 8f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#include "heap/stubs.h" 9f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 10f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochnamespace blink { 11f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 12f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochnamespace bar { 13f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 14f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// check that (only) std::unique_ptr<> is reported 15f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// as an illegal smart pointer type. 16f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate<typename T> class unique_ptr { 17f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochpublic: 18f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch ~unique_ptr() { } 19f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch operator T*() const { return 0; } 20f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T* operator->() { return 0; } 21f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 2262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch void Trace(Visitor* visitor) 23f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch { 24f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 25f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 26f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 27f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} 28f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 29f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass HeapObject; 30f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass PartObject; 31f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 32f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass PartObject { 33f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch DISALLOW_NEW(); 34f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochpublic: 3562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch void Trace(Visitor*); 36f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochprivate: 37f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch OwnPtr<HeapObject> m_obj1; 38f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch RefPtr<HeapObject> m_obj2; 39f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch bar::unique_ptr<HeapObject> m_obj3; 40f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch std::unique_ptr<HeapObject> m_obj4; 4162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch Vector<int>::iterator m_iterator1; 4262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch HeapVector<Member<HeapObject>>::iterator m_iterator2; 4362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch HeapHashSet<PartObject>::const_iterator m_iterator3; 44f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 45f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 46f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass HeapObject : public GarbageCollectedFinalized<HeapObject> { 47f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochpublic: 4862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch void Trace(Visitor*); 49f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochprivate: 50f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch PartObject m_part; 51f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch OwnPtr<HeapObject> m_obj1; 52f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch RefPtr<HeapObject> m_obj2; 53f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch bar::unique_ptr<HeapObject> m_obj3; 54f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch std::unique_ptr<HeapObject> m_obj4; 5562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch HeapHashMap<int, Member<HeapObject>>::reverse_iterator m_iterator3; 5662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch HeapDeque<Member<HeapObject>>::const_reverse_iterator m_iterator4; 5762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch HeapListHashSet<Member<HeapObject>>::const_iterator m_iterator5; 5862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch HeapLinkedHashSet<Member<HeapObject>>::const_iterator m_iterator6; 59f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 60f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 61f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} 62f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 63f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#endif 64