gecko-dev/xpcom/base/nsCycleCollectionNoteRootCallback.h
Andrew McCreight 5eecb0df0a Bug 1385474 - Avoid QIing for NoteXPCOMRoot. r=smaug
This callback is only used in very limited ways, so just require that
the caller pass in the canonical supports pointer, plus the
participant. This probably won't affect performance much.

MozReview-Commit-ID: CsThzFsKyYx

--HG--
extra : rebase_source : 9595b1d75fc45bc5ee6d932a840e98b5d760cb78
2017-07-28 16:11:03 -07:00

35 lines
1.3 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef nsCycleCollectionNoteRootCallback_h__
#define nsCycleCollectionNoteRootCallback_h__
class nsCycleCollectionParticipant;
class nsISupports;
class nsCycleCollectionNoteRootCallback
{
public:
// aRoot must be canonical (ie the result of QIing to nsCycleCollectionISupports).
NS_IMETHOD_(void) NoteXPCOMRoot(nsISupports* aRoot,
nsCycleCollectionParticipant* aParticipant) = 0;
NS_IMETHOD_(void) NoteJSRoot(JSObject* aRoot) = 0;
NS_IMETHOD_(void) NoteNativeRoot(void* aRoot,
nsCycleCollectionParticipant* aParticipant) = 0;
NS_IMETHOD_(void) NoteWeakMapping(JSObject* aMap, JS::GCCellPtr aKey,
JSObject* aKeyDelegate, JS::GCCellPtr aVal) = 0;
bool WantAllTraces() const { return mWantAllTraces; }
protected:
nsCycleCollectionNoteRootCallback() : mWantAllTraces(false) {}
bool mWantAllTraces;
};
#endif // nsCycleCollectionNoteRootCallback_h__