1010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// found in the LICENSE file.
4010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
5010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "weak_fields_require_tracing.h"
6010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace blink {
8010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
9010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void HeapObject::trace(Visitor* visitor)
10010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles){
11010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    // Missing visitor->trace(m_obj1);
12010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    // Missing visitor->trace(m_obj2);
13010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    // visitor->trace(m_obj3) in callback.
14010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    // Missing visitor->trace(m_set1);
15010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    visitor->trace(m_set2);
16010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    visitor->registerWeakMembers<HeapObject,
17010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)                                 &HeapObject::clearWeakMembers>(this);
18010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
19010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
20010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void HeapObject::clearWeakMembers(Visitor* visitor)
21010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles){
22010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    visitor->trace(m_obj1);  // Does not count.
23010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    // Missing visitor->trace(m_obj2);
24010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    visitor->trace(m_obj3);  // OK.
25010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    visitor->trace(m_set1);  // Does not count.
26010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
27010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
28010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
29