123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// found in the LICENSE file. 423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "finalize_after_dispatch.h" 623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace blink { 823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)static B* toB(A* a) { return static_cast<B*>(a); } 1023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void A::trace(Visitor* visitor) 1223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles){ 1323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) switch (m_type) { 1423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) case TB: 1523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) toB(this)->traceAfterDispatch(visitor); 1623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) break; 1723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) case TC: 1823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) static_cast<C*>(this)->traceAfterDispatch(visitor); 1923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) break; 2023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) case TD: 2123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) static_cast<D*>(this)->traceAfterDispatch(visitor); 2223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) break; 2323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 2423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 2523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 2623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void A::traceAfterDispatch(Visitor* visitor) 2723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles){ 2823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 2923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 3023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void A::finalizeGarbageCollectedObject() 3123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles){ 3223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) switch (m_type) { 3323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) case TB: 3423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) toB(this)->~B(); 3523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) break; 3623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) case TC: 3723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) static_cast<C*>(this)->~C(); 3823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) break; 3923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) case TD: 4023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // Missing static_cast<D*>(this)->~D(); 4123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) break; 4223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 4323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 4423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 4523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void B::traceAfterDispatch(Visitor* visitor) 4623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles){ 4723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) visitor->trace(m_a); 48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) A::traceAfterDispatch(visitor); 4923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 5023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 5123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void C::traceAfterDispatch(Visitor* visitor) 5223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles){ 5323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) visitor->trace(m_a); 54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) A::traceAfterDispatch(visitor); 5523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 5623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 5723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void D::traceAfterDispatch(Visitor* visitor) 5823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles){ 5923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) visitor->trace(m_a); 60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Abstract::traceAfterDispatch(visitor); 6123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 6223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 6323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 64