1
0
mirror of https://github.com/roytam1/UXP.git synced 2026-05-27 08:19:56 +00:00
Files
UXP/xpcom/glue/nsCycleCollectionNoteRootCallback.h
Moonchild 38daeffb9b Issue #2678 - Avoid QIing for NoteXPCOMRoot.
This callback is only used in very limited ways, so just require that the
caller passes in the canonical supports pointer plus the participant.

This probably won't affect performance much.
2025-01-20 21:07:45 +08:00

33 lines
1.2 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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__