AppShutdown.cpp |
|
16232 |
AppShutdown.h |
Returns the current exit code that the process will be terminated with.
|
4206 |
AutoRestore.h |
functions for restoring saved values at the end of a C++ scope |
1181 |
AvailableMemoryTracker.cpp |
This runnable is executed in response to a memory-pressure event; we spin
the event-loop when receiving the memory-pressure event in the hope that
other observers will synchronously free some memory that we'll be able to
purge here.
|
5193 |
AvailableMemoryTracker.h |
|
939 |
AvailableMemoryWatcher.cpp |
static |
5516 |
AvailableMemoryWatcher.h |
|
2859 |
AvailableMemoryWatcherLinux.cpp |
static |
9145 |
AvailableMemoryWatcherMac.cpp |
The Mac AvailableMemoryWatcher works as follows. When the OS memory pressure
level changes on macOS, nsAvailableMemoryWatcher::OnMemoryPressureChanged()
is called with the new memory pressure level. The level is represented in
Gecko by a MacMemoryPressureLevel instance and represents the states of
normal, warning, or critical which correspond to the native levels. When the
browser launches, the initial level is determined using a sysctl. Which
actions are taken in the browser in response to memory pressure, and the
level (warning or critical) which trigger the reponse is configurable with
prefs to make it easier to perform experiments to study how the response
affects the user experience.
By default, the browser responds by attempting to reduce memory use when the
OS transitions to the critical level and while it stays in the critical
level. i.e., "critical" OS memory pressure is the default threshold for the
low memory response. Setting pref "browser.lowMemoryResponseOnWarn" to true
changes the memory response to occur at the "warning" level which is less
severe than "critical". When entering the critical level, we begin polling
the memory pressure level every 'n' milliseconds (specified via the pref
"browser.lowMemoryPollingIntervalMS"). Each time the poller wakes up and
finds the OS still under memory pressure, the low memory response is
executed.
By default, the memory pressure response is, in order, to
1) call nsITabUnloader::UnloadTabAsync(),
2) if no tabs could be unloaded, issue a Gecko
MemoryPressureState::LowMemory notification.
The response can be changed via the pref "browser.lowMemoryResponseMask" to
limit the actions to only tab unloading or Gecko memory pressure
notifications.
Polling occurs on the main thread because, at each polling interval, we
call into the tab unloader which requires being on the main thread.
Polling only occurs while under OS memory pressure at the critical (by
default) level.
|
22855 |
AvailableMemoryWatcherUtils.h |
The first few lines of meminfo look something like this:
MemTotal: 65663448 kB
MemFree: 57368112 kB
MemAvailable: 61852700 kB
We mostly care about the available versus the total. We calculate our
memory thresholds using this, and when memory drops below 5% we consider
this to be a memory pressure event. In practice these lines aren't
necessarily in order, but we can simply search for MemTotal
and MemAvailable.
|
1827 |
AvailableMemoryWatcherWin.cpp |
|
13440 |
CFTypeRefPtr.h |
|
5304 |
ClearOnShutdown.cpp |
|
2423 |
ClearOnShutdown.h |
This header exports two public methods in the mozilla namespace:
template<class SmartPtr>
void ClearOnShutdown(SmartPtr *aPtr,
aPhase=ShutdownPhase::XPCOMShutdownFinal)
This function takes a pointer to a smart pointer and nulls the smart pointer
on shutdown (and a particular phase of shutdown as needed). If a phase
is specified, the ptr will be cleared at the start of that phase. Also,
if a phase has already occurred when ClearOnShutdown() is called it will
cause a MOZ_ASSERT. In case a phase is not explicitly cleared we will
clear it on the next phase that occurs.
This is useful if you have a global smart pointer object which you don't
want to "leak" on shutdown.
Although ClearOnShutdown will work with any smart pointer (i.e., nsCOMPtr,
RefPtr, StaticRefPtr, and StaticAutoPtr), you probably want to
use it only with StaticRefPtr and StaticAutoPtr. There is no way to undo a
call to ClearOnShutdown, so you can call it only on smart pointers which you
know will live until the program shuts down. In practice, these are likely
global variables, which should be Static{Ref,Auto}Ptr.
template <typename CallableT>
void RunOnShutdown(CallableT&& aCallable,
aPhase = ShutdownPhase::XPCOMShutdownFinal)
This function takes a callable and executes it upon shutdown at the start of
the specified phase. If the phase has already occurred when RunOnShutdown()
is called, it will cause a MOZ_ASSERT. In case a phase is not explicitly
cleared, we will clear it on the next phase that occurs.
ClearOnShutdown and RunOnShutdown are both currently main-thread only because
we don't want to accidentally free an object from a different thread than the
one it was created on.
|
4775 |
CodeAddressService.h |
|
8584 |
components.conf |
|
1016 |
CountingAllocatorBase.h |
|
5385 |
CycleCollectedJSContext.cpp |
static |
34968 |
CycleCollectedJSContext.h |
|
14037 |
CycleCollectedJSRuntime.cpp |
|
70114 |
CycleCollectedJSRuntime.h |
|
17564 |
CycleCollectorStats.cpp |
|
6778 |
CycleCollectorStats.h |
|
2900 |
DarwinObjectPtr.h |
Copyright (C) 2014-2021 Apple Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
|
4148 |
Debug.cpp |
|
542 |
Debug.h |
|
576 |
DebuggerOnGCRunnable.cpp |
static |
1262 |
DebuggerOnGCRunnable.h |
|
1102 |
DeferredFinalize.cpp |
|
1007 |
DeferredFinalize.h |
|
1348 |
EnumeratedArrayCycleCollection.h |
|
1233 |
ErrorList.py |
A nserror module. When used with a `with` statement, binds the itself to
Mod.active.
|
64836 |
ErrorNames.cpp |
|
2389 |
ErrorNames.h |
|
1053 |
GkRustUtils.cpp |
static |
669 |
GkRustUtils.h |
|
599 |
HoldDropJSObjects.cpp |
|
1909 |
HoldDropJSObjects.h |
Classes that hold strong references to JS GC things such as `JSObjects` and
`JS::Values` (e.g. `JS::Heap<JSObject*> mFoo;`) must use these, generally by
calling `HoldJSObjects(this)` and `DropJSObjects(this)` in the ctor and dtor
respectively.
For classes that are wrapper cached and hold no other strong references to JS
GC things, there's no need to call these; it will be taken care of
automatically by nsWrapperCache.
|
2924 |
IntentionalCrash.h |
|
1882 |
JSObjectHolder.cpp |
|
412 |
JSObjectHolder.h |
|
1365 |
JSONStringWriteFuncs.h |
|
1487 |
LogCommandLineHandler.cpp |
|
2466 |
LogCommandLineHandler.h |
A helper function parsing provided command line arguments and handling two
specific args:
-MOZ_LOG=modulelist
-MOZ_LOG_FILE=file/path
both expecting an argument, and corresponding to the same-name environment
variables we use for logging setup.
When an argument is found in the proper form, the consumer callback is called
with a string in a follwing form, note that we do this for every occurence,
and not just at the end of the parsing:
"MOZ_LOG=modulelist" or "MOZ_LOG_FILE=file/path"
All the following forms of arguments of the application are possible:
--MOZ_LOG modulelist
-MOZ_LOG modulelist
--MOZ_LOG=modulelist
-MOZ_LOG=modulelist
The motivation for a separte function and not implementing a command line
handler interface is that we need to process this very early during the
application startup. Command line handlers are proccessed way later
after logging has already been set up.
|
1606 |
Logging.cpp |
A helper class providing reference counting for FILE*.
It encapsulates the following:
- the FILE handle
- the order number it was created for when rotating (actual path)
- number of active references
|
32711 |
Logging.h |
Retrieves the module with the given name. If it does not already exist
it will be created.
@param aName The name of the module.
@return A log module for the given name. This may be shared.
|
11123 |
LogModulePrefWatcher.cpp |
Resets all the preferences in the logging. branch
This is needed because we may crash while logging, and this would cause us
to log after restarting as well.
If logging after restart is desired, set the logging.config.clear_on_startup
pref to false, or use the MOZ_LOG_FILE and MOZ_LOG_MODULES env vars.
|
7013 |
LogModulePrefWatcher.h |
Watches for changes to "logging.*" prefs and then updates the appropriate
LogModule's log level. Both the integer and string versions of the LogLevel
enum are supported.
For example setting the pref "logging.Foo" to "Verbose" will set the
LogModule for "Foo" to the LogLevel::Verbose level. Setting "logging.Bar" to
4 would set the LogModule for "Bar" to the LogLevel::Debug level.
|
1187 |
MacHelpers.h |
|
518 |
MacHelpers.mm |
|
1009 |
MacStringHelpers.h |
|
698 |
MacStringHelpers.mm |
|
1635 |
MemoryInfo.cpp |
static |
3012 |
MemoryInfo.h |
MemoryInfo is a helper class which describes the attributes and sizes of a
particular region of VM memory on Windows. It roughtly corresponds to the
values in a MEMORY_BASIC_INFORMATION struct, summed over an entire region or
memory.
|
2137 |
MemoryMapping.cpp |
|
6829 |
MemoryMapping.h |
MemoryMapping is a helper class which describes an entry in the Linux
/proc/<pid>/smaps file. See procfs(5) for details on the entry format.
The GetMemoryMappings() function returns an array of such entries, sorted by
start address, one for each entry in the current process's address space.
|
6253 |
MemoryPressureLevelMac.h |
|
2265 |
MemoryReportingProcess.h |
|
1395 |
MemoryTelemetry.cpp |
static |
18487 |
MemoryTelemetry.h |
Periodically gathers memory usage metrics after cycle collection, and
populates telemetry histograms with their values.
|
1999 |
moz.build |
|
7000 |
nsAlgorithm.h |
|
957 |
nsAutoRef.h |
template <class T> class nsAutoRef
A class that holds a handle to a resource that must be released.
No reference is added on construction.
No copy constructor nor copy assignment operators are available, so the
resource will be held until released on destruction or explicitly
|reset()| or transferred through provided methods.
The publicly available methods are the public methods on this class and its
public base classes |nsAutoRefBase<T>| and |nsSimpleRef<T>|.
For function return values see |nsReturnRef<T>|.
For each class |T|, |nsAutoRefTraits<T>| or |nsSimpleRef<T>| must be
specialized to use |nsAutoRef<T>|.
@param T A class identifying the type of reference held by the
|nsAutoRef<T>| and the unique set methods for managing references
to the resource (defined by |nsAutoRefTraits<T>| or
|nsSimpleRef<T>|).
Often this is the class representing the resource. Sometimes a
new possibly-incomplete class may need to be declared.
Example: An Automatically closing file descriptor
// References that are simple integral types (as file-descriptors are)
// usually need a new class to represent the resource and how to handle its
// references.
class nsRawFD;
// Specializing nsAutoRefTraits<nsRawFD> describes how to manage file
// descriptors, so that nsAutoRef<nsRawFD> provides automatic closing of
// its file descriptor on destruction.
template <>
class nsAutoRefTraits<nsRawFD> {
public:
// The file descriptor is held in an int.
typedef int RawRef;
// -1 means that there is no file associated with the handle.
static int Void() { return -1; }
// The file associated with a file descriptor is released with close().
static void Release(RawRef aFD) { close(aFD); }
};
// A function returning a file descriptor that must be closed.
nsReturnRef<nsRawFD> get_file(const char *filename) {
// Constructing from a raw file descriptor assumes ownership.
nsAutoRef<nsRawFD> fd(open(filename, O_RDONLY));
fcntl(fd, F_SETFD, FD_CLOEXEC);
return fd.out();
}
void f() {
unsigned char buf[1024];
// Hold a file descriptor for /etc/hosts in fd1.
nsAutoRef<nsRawFD> fd1(get_file("/etc/hosts"));
nsAutoRef<nsRawFD> fd2;
fd2.steal(fd1); // fd2 takes the file descriptor from fd1
ssize_t count = read(fd1, buf, 1024); // error fd1 has no file
count = read(fd2, buf, 1024); // reads from /etc/hosts
// If the file descriptor is not stored then it is closed.
get_file("/etc/login.defs"); // login.defs is closed
// Now use fd1 to hold a file descriptor for /etc/passwd.
fd1 = get_file("/etc/passwd");
// The nsAutoRef<nsRawFD> can give up the file descriptor if explicitly
// instructed, but the caller must then ensure that the file is closed.
int rawfd = fd1.disown();
// Assume ownership of another file descriptor.
fd1.own(open("/proc/1/maps");
// On destruction, fd1 closes /proc/1/maps and fd2 closes /etc/hosts,
// but /etc/passwd is not closed.
}
|
17223 |
nsClassInfoImpl.cpp |
|
1661 |
nsCom.h |
|
390 |
nsCOMPtr.cpp |
|
1011 |
nsCOMPtr.h |
Having problems?
See the documentation at:
https://firefox-source-docs.mozilla.org/xpcom/refptr.html
nsCOMPtr
better than a raw pointer
for owning objects
-- scc
|
36928 |
nsConsoleMessage.cpp |
Base implementation for console messages.
|
1756 |
nsConsoleMessage.h |
__nsconsolemessage_h__ |
860 |
nsConsoleService.cpp |
Maintains a circular buffer of recent messages, and notifies
listeners when new messages are logged.
|
15941 |
nsConsoleService.h |
nsConsoleService class declaration.
|
3185 |
nscore.h |
Definitions of functions and operators that allocate memory. |
8182 |
nsCrashOnException.cpp |
|
1128 |
nsCrashOnException.h |
|
745 |
nsCRTGlue.cpp |
|
6500 |
nsCRTGlue.h |
Scan a string for the first character that is *not* in a set of
delimiters. If the string is only delimiter characters, the end of the
string is returned.
@param aDelims The set of delimiters (null-terminated)
@param aStr The string to search (null-terminated)
|
5291 |
nsCycleCollectionNoteChild.h |
|
3099 |
nsCycleCollectionNoteRootCallback.h |
|
1317 |
nsCycleCollectionParticipant.cpp |
|
1260 |
nsCycleCollectionParticipant.h |
Note: the following two IIDs only differ in one bit in the last byte. This
is a hack and is intentional in order to speed up the comparison inside
NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED.
|
56695 |
nsCycleCollectionTraversalCallback.h |
|
2411 |
nsCycleCollector.cpp |
|
136310 |
nsCycleCollector.h |
|
2798 |
nsCycleCollectorTraceJSHelpers.cpp |
|
3103 |
nsDebug.h |
Warn if the given condition is true. The condition is evaluated in both
release and debug builds, and the result is an expression which can be
used in subsequent expressions, such as:
if (NS_WARN_IF(NS_FAILED(rv)) {
return rv;
}
This explicit warning and return is preferred to the NS_ENSURE_* macros
which hide the warning and the return control flow.
This macro can also be used outside of conditions just to issue a warning,
like so:
Unused << NS_WARN_IF(NS_FAILED(FnWithSideEffects());
(The |Unused <<| is necessary because of the [[nodiscard]] annotation.)
However, note that the argument to this macro is evaluated in all builds. If
you just want a warning assertion, it is better to use NS_WARNING_ASSERTION
(which evaluates the condition only in debug builds) like so:
NS_WARNING_ASSERTION(NS_SUCCEEDED(rv), "operation failed");
@note This is C++-only
|
12487 |
nsDebugImpl.cpp |
for getenv() |
18388 |
nsDebugImpl.h |
If we are in multiprocess mode, return the process name.
|
1315 |
nsDumpUtils.cpp |
The following code supports triggering a registered callback upon
receiving a specific signal.
Take about:memory for example, we register
1. doGCCCDump for doMemoryReport
2. doMemoryReport for sDumpAboutMemorySignum(SIGRTMIN)
and sDumpAboutMemoryAfterMMUSignum(SIGRTMIN+1).
When we receive one of these signals, we write the signal number to a pipe.
The IO thread then notices that the pipe has been written to, and kicks off
the appropriate task on the main thread.
This scheme is similar to using signalfd(), except it's portable and it
doesn't require the use of sigprocmask, which is problematic because it
masks signals received by child processes.
In theory, we could use Chromium's MessageLoopForIO::CatchSignal() for this.
But that uses libevent, which does not handle the realtime signals (bug
794074).
|
14323 |
nsDumpUtils.h |
Abstract base class for something which watches an fd and takes action when
we can read from it without blocking.
|
5216 |
nsError.h |
@name Standard Error Handling Macros
@return 0 or 1 (false/true with bool type for C++)
|
3080 |
nsGZFileWriter.cpp |
gzip encoding |
3724 |
nsGZFileWriter.h |
A simple class for writing to a .gz file.
Note that the file that this interface produces has a different format than
what you'd get if you compressed your data as a gzip stream and dumped the
result to a file.
The standard gunzip tool cannot decompress a raw gzip stream, but can handle
the files produced by this interface.
|
2259 |
nsIAvailableMemoryWatcherBase.idl |
nsITabUnloader: interface to represent TabUnloader
nsIAvailableMemoryWatcherBase: interface to watch the system's memory
status and invoke a registered TabUnloader when it detected a low-memory
and high-memory situation. The logic to detect such a memory situation
is defined per platform.
|
1385 |
nsIClassInfoImpl.h |
This header file provides macros which help you make your class implement
nsIClassInfo. Implementing nsIClassInfo is particularly helpful if you have
a C++ class which implements multiple interfaces and which you access from
JavaScript. If that class implements nsIClassInfo, the JavaScript code
won't have to call QueryInterface on instances of the class; all methods
from all interfaces returned by GetInterfaces() will be available
automagically.
Here's all you need to do. Given a class
class nsFooBar : public nsIFoo, public nsIBar { };
you should already have the following nsISupports implementation in its cpp
file:
NS_IMPL_ISUPPORTS(nsFooBar, nsIFoo, nsIBar).
Change this to
NS_IMPL_CLASSINFO(nsFooBar, nullptr, 0, NS_FOOBAR_CID)
NS_IMPL_ISUPPORTS_CI(nsFooBar, nsIFoo, nsIBar)
If nsFooBar is threadsafe, change the 0 above to nsIClassInfo::THREADSAFE.
If it's a singleton, use nsIClassInfo::SINGLETON. The full list of flags is
in nsIClassInfo.idl.
The nullptr parameter is there so you can pass a function for converting
from an XPCOM object to a scriptable helper. Unless you're doing
specialized JS work, you can probably leave this as nullptr.
This file also defines the NS_IMPL_QUERY_INTERFACE_CI macro, which you can
use to replace NS_IMPL_QUERY_INTERFACE, if you use that instead of
NS_IMPL_ISUPPORTS.
That's it! The rest is gory details.
Notice that nsFooBar didn't need to inherit from nsIClassInfo in order to
"implement" it. However, after adding these macros to nsFooBar, you you can
QueryInterface an instance of nsFooBar to nsIClassInfo. How can this be?
The answer lies in the NS_IMPL_ISUPPORTS_CI macro. It modifies nsFooBar's
QueryInterface implementation such that, if we ask to QI to nsIClassInfo, it
returns a singleton object associated with the class. (That singleton is
defined by NS_IMPL_CLASSINFO.) So all nsFooBar instances will return the
same object when QI'ed to nsIClassInfo. (You can see this in
NS_IMPL_QUERY_CLASSINFO below.)
This hack breaks XPCOM's rules, since if you take an instance of nsFooBar,
QI it to nsIClassInfo, and then try to QI to nsIFoo, that will fail. On the
upside, implementing nsIClassInfo doesn't add a vtable pointer to instances
of your class.
In principal, you can also implement nsIClassInfo by inheriting from the
interface. But some code expects that when it QI's an object to
nsIClassInfo, it gets back a singleton which isn't attached to any
particular object. If a class were to implement nsIClassInfo through
inheritance, that code might QI to nsIClassInfo and keep the resulting
object alive, thinking it was only keeping alive the classinfo singleton,
but in fact keeping a whole instance of the class alive. See, e.g., bug
658632.
Unless you specifically need to have a different nsIClassInfo instance for
each instance of your class, you should probably just implement nsIClassInfo
as a singleton.
|
8722 |
nsIConsoleListener.idl |
Used by the console service to notify listeners of new console messages.
|
592 |
nsIConsoleMessage.idl |
This is intended as a base interface; implementations may want to
provide an object that can be qi'ed to provide more specific
message information.
|
1594 |
nsIConsoleService.idl |
Convenience method for logging simple messages.
|
2754 |
nsICycleCollectorListener.idl |
A set of interfaces for recording the cycle collector's work. An instance
of nsICycleCollectorListener can be configured to enable various
options, then passed to the cycle collector when it runs.
Note that additional logging options are available by setting environment
variables, as described at the top of nsCycleCollector.cpp.
|
7022 |
nsID.cpp |
Multiplies the_int_var with 16 (0x10) and adds the value of the
hexadecimal digit the_char. If it fails it returns false from
the function it's used in.
|
7417 |
nsID.h |
A "unique identifier". This is modeled after OSF DCE UUIDs.
|
5034 |
nsIDebug2.idl |
interface to expose information about calls to NS_DebugBreak |
2871 |
nsIDUtils.h |
Trims the brackets around the nsID string, since it wraps its ID with
brackets: {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}.
|
1120 |
nsIException.idl |
Interfaces for representing cross-language exceptions and stack traces.
|
3484 |
nsIInterfaceRequestor.idl |
The nsIInterfaceRequestor interface defines a generic interface for
requesting interfaces that a given object might provide access to.
This is very similar to QueryInterface found in nsISupports.
The main difference is that interfaces returned from GetInterface()
are not required to provide a way back to the object implementing this
interface. The semantics of QI() dictate that given an interface A that
you QI() on to get to interface B, you must be able to QI on B to get back
to A. This interface however allows you to obtain an interface C from A
that may or most likely will not have the ability to get back to A.
|
1534 |
nsIInterfaceRequestorUtils.cpp |
|
950 |
nsIInterfaceRequestorUtils.h |
|
1495 |
nsIMacPreferencesReader.idl |
This interface is designed to provide scriptable access to the macOS
preferences system.
This interface is highly macOS specific.
|
955 |
nsIMemoryInfoDumper.idl |
Callback interface for |dumpGCAndCCLogsToFile|, below. Note that
these method calls can occur before |dumpGCAndCCLogsToFile|
returns.
|
6877 |
nsIMemoryReporter.idl |
Memory reporters measure Firefox's memory usage. They are primarily used to
generate the about:memory page. You should read
https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Memory_reporting
before writing a memory reporter.
|
25526 |
nsINIParser.cpp |
|
8027 |
nsINIParser.h |
Initialize the INIParser with a nsIFile. If this method fails, no
other methods should be called. This method reads and parses the file,
the class does not hold a file handle open. An instance must only be
initialized once.
|
4683 |
nsInterfaceRequestorAgg.cpp |
|
2615 |
nsInterfaceRequestorAgg.h |
This function returns an instance of nsIInterfaceRequestor that aggregates
two nsIInterfaceRequestor instances. Its GetInterface method queries
aFirst for the requested interface and will query aSecond only if aFirst
failed to supply the requested interface. Both aFirst and aSecond may
be null, and will be released on the main thread when the aggregator is
destroyed.
|
1377 |
nsISecurityConsoleMessage.idl |
Holds localization message tag and message category
for security related console messages.
|
592 |
nsISizeOf.h |
Measures the size of the things pointed to by the object.
|
1257 |
nsISupports.idl |
The mother of all xpcom interfaces.
|
2017 |
nsISupportsImpl.cpp |
|
4288 |
nsISupportsImpl.h |
needed for cargo-culting headers |
70908 |
nsISupportsUtils.h |
Macro for adding a reference to an interface.
@param _ptr The interface pointer.
|
4740 |
nsIUUIDGenerator.idl |
nsIUUIDGenerator is implemented by a service that can generate
universally unique identifiers, ideally using any platform-native
method for generating UUIDs.
|
1421 |
nsIVersionComparator.idl |
Version strings are dot-separated sequences of version-parts.
A version-part consists of up to four parts, all of which are optional:
<number-a><string-b><number-c><string-d (everything else)>
A version-part may also consist of a single asterisk "*" which indicates
"infinity".
Numbers are base-10, and are zero if left out.
Strings are compared bytewise.
For additional backwards compatibility, if "string-b" is "+" then
"number-a" is incremented by 1 and "string-b" becomes "pre".
1.0pre1
< 1.0pre2
< 1.0 == 1.0.0 == 1.0.0.0
< 1.1pre == 1.1pre0 == 1.0+
< 1.1pre1a
< 1.1pre1
< 1.1pre10a
< 1.1pre10
Although not required by this interface, it is recommended that
numbers remain within the limits of a signed char, i.e. -127 to 128.
|
1541 |
nsIWeakReference.idl |
An instance of |nsIWeakReference| is a proxy object that cooperates with
its referent to give clients a non-owning, non-dangling reference. Clients
own the proxy, and should generally manage it with an |nsCOMPtr| (see the
type |nsWeakPtr| for a |typedef| name that stands out) as they would any
other XPCOM object. The |QueryReferent| member function provides a
(hopefully short-lived) owning reference on demand, through which clients
can get useful access to the referent, while it still exists.
@version 1.0
@see nsISupportsWeakReference
@see nsWeakReference
@see nsWeakPtr
|
3705 |
nsIWeakReferenceUtils.h |
/
// a type-safe shortcut for calling the |QueryReferent()| member function
// T must inherit from nsIWeakReference, but the cast may be ambiguous.
template <class T, class DestinationType>
inline nsresult CallQueryReferent(T* aSource, DestinationType** aDestination) {
MOZ_ASSERT(aSource, "null parameter");
MOZ_ASSERT(aDestination, "null parameter");
return aSource->QueryReferent(NS_GET_TEMPLATE_IID(DestinationType),
reinterpret_cast<void**>(aDestination));
}
inline const nsQueryReferent do_QueryReferent(nsIWeakReference* aRawPtr,
nsresult* aError = 0) {
return nsQueryReferent(aRawPtr, aError);
}
/**
Deprecated, use |do_GetWeakReference| instead.
|
3286 |
nsMacPreferencesReader.h |
|
1099 |
nsMacPreferencesReader.mm |
|
3041 |
nsMacUtilsImpl.cpp |
MOZ_SANDBOX || __aarch64__ |
16576 |
nsMacUtilsImpl.h |
MOZ_SANDBOX || __aarch64__ |
1913 |
nsMaybeWeakPtr.h |
|
4798 |
nsMemory.h |
A client that wishes to be notified of low memory situations (for
example, because the client maintains a large memory cache that
could be released when memory is tight) should register with the
observer service (see nsIObserverService) using the topic
"memory-pressure". There are specific types of notifications
that can occur. These types will be passed as the |aData|
parameter of the of the "memory-pressure" notification:
"low-memory"
This will be passed as the extra data when the pressure
observer is being asked to flush for low-memory conditions.
"low-memory-ongoing"
This will be passed when we continue to be in a low-memory
condition and we want to flush caches and do other cheap
forms of memory minimization, but heavy handed approaches like
a GC are unlikely to succeed.
"heap-minimize"
This will be passed as the extra data when the pressure
observer is being asked to flush because of a heap minimize
call.
|
2240 |
nsMemoryImpl.cpp |
|
3736 |
nsMemoryInfoDumper.cpp |
The following code supports dumping about:memory upon receiving a signal.
We listen for the following signals:
- SIGRTMIN: Dump our memory reporters (and those of our child
processes),
- SIGRTMIN + 1: Dump our memory reporters (and those of our child
processes) after minimizing memory usage, and
- SIGRTMIN + 2: Dump the GC and CC logs in this and our child processes.
When we receive one of these signals, we write the signal number to a pipe.
The IO thread then notices that the pipe has been written to, and kicks off
the appropriate task on the main thread.
This scheme is similar to using signalfd(), except it's portable and it
doesn't require the use of sigprocmask, which is problematic because it
masks signals received by child processes.
In theory, we could use Chromium's MessageLoopForIO::CatchSignal() for this.
But that uses libevent, which does not handle the realtime signals (bug
794074).
|
25262 |
nsMemoryInfoDumper.h |
This class facilitates dumping information about our memory usage to disk.
Its cpp file also has Linux-only code which watches various OS signals and
dumps memory info upon receiving a signal. You can activate these listeners
by calling Initialize().
|
1578 |
nsMemoryReporterManager.cpp |
|
95751 |
nsMemoryReporterManager.h |
|
13364 |
nsObjCExceptions.h |
|
2037 |
nsObjCExceptions.mm |
|
1488 |
NSPRLogModulesParser.cpp |
|
2163 |
NSPRLogModulesParser.h |
Helper function that parses the legacy NSPR_LOG_MODULES env var format
for specifying log levels and logging options.
@param aLogModules The log modules configuration string.
@param aCallback The callback to invoke for each log module config entry.
|
829 |
nsQueryObject.h |
/
template <class T>
class MOZ_STACK_CLASS nsQueryObject final : public nsCOMPtr_helper {
public:
explicit nsQueryObject(T* aRawPtr) : mRawPtr(aRawPtr) {}
virtual nsresult NS_FASTCALL operator()(const nsIID& aIID,
void** aResult) const override {
nsresult status = mRawPtr ? mRawPtr->QueryInterface(aIID, aResult)
: NS_ERROR_NULL_POINTER;
return status;
}
private:
T* MOZ_NON_OWNING_REF mRawPtr;
};
template <class T>
class MOZ_STACK_CLASS nsQueryObjectWithError final : public nsCOMPtr_helper {
public:
nsQueryObjectWithError(T* aRawPtr, nsresult* aErrorPtr)
: mRawPtr(aRawPtr), mErrorPtr(aErrorPtr) {}
virtual nsresult NS_FASTCALL operator()(const nsIID& aIID,
void** aResult) const override {
nsresult status = mRawPtr ? mRawPtr->QueryInterface(aIID, aResult)
: NS_ERROR_NULL_POINTER;
if (mErrorPtr) {
mErrorPtr = status;
}
return status;
}
private:
T* MOZ_NON_OWNING_REF mRawPtr;
nsresult* mErrorPtr;
};
/**************************************************************************** |
2956 |
nsrootidl.idl |
Root idl declarations to be used by all.
|
2503 |
nsSecurityConsoleMessage.cpp |
|
1020 |
nsSecurityConsoleMessage.h |
|
1050 |
nsSystemInfo.cpp |
|
68456 |
nsSystemInfo.h |
IsExclusive |
3903 |
nsTraceRefcnt.cpp |
|
36856 |
nsTraceRefcnt.h |
Tell nsTraceRefcnt whether refcounting, allocation, and destruction
activity is legal. This is used to trigger assertions for any such
activity that occurs because of static constructors or destructors.
|
1284 |
nsUUIDGenerator.cpp |
|
815 |
nsUUIDGenerator.h |
_NSUUIDGENERATOR_H_ |
958 |
nsVersionComparator.cpp |
Parse a version part into a number and "extra text".
@returns A pointer to the next versionpart, or null if none.
|
7899 |
nsVersionComparator.h |
In order to compare version numbers in Mozilla, you need to use the
mozilla::Version class. You can construct an object of this type by passing
in a string version number to the constructor. Objects of this type can be
compared using the standard comparison operators.
For example, let's say that you want to make sure that a given version
number is not older than 15.a2. Here's how you would write a function to
do that.
bool IsVersionValid(const char* version) {
return mozilla::Version("15.a2") <= mozilla::Version(version);
}
Or, since Version's constructor is implicit, you can simplify this code:
bool IsVersionValid(const char* version) {
return mozilla::Version("15.a2") <= version;
}
|
3474 |
nsVersionComparatorImpl.cpp |
|
798 |
nsVersionComparatorImpl.h |
|
974 |
nsWeakReference.cpp |
|
3698 |
nsWeakReference.h |
|
2367 |
nsWindowsHelpers.h |
|
8742 |
OwningNonNull.h |
A class for non-null strong pointers to reference-counted objects. |
6252 |
PHCManager.cpp |
|
4442 |
PHCManager.h |
|
646 |
RLBoxSandboxPool.cpp |
32-bit wasm memory |
3464 |
RLBoxSandboxPool.h |
|
3792 |
RLBoxUtils.h |
The RLBoxTransferBufferToSandbox class is used to copy (or directly expose in
the noop-sandbox case) buffers into the sandbox that are automatically freed
when the RLBoxTransferBufferToSandbox is out of scope. NOTE: The sandbox
lifetime must outlive all of its RLBoxTransferBufferToSandbox.
|
2323 |
ShutdownPhase.h |
|
885 |
SizeOfState.h |
|
2446 |
StaticLocalPtr.h |
StaticLocalAutoPtr and StaticLocalRefPtr are like UniquePtr and RefPtr,
except they are suitable for use as "magic static" local variables -- that
is, they are able to take advantage of C++11's guarantee of thread safety
during initialization by atomically constructing both the smart pointer
itself as well as the object being pointed to.
A static local instance of StaticLocal{Auto,Ref}Ptr does not cause the
compiler to emit any atexit calls. In order to accomplish this,
StaticLocal{Auto,Ref}Ptr must have a trivial destructor. As a consequence,
it does not delete/release its raw pointer upon destruction.
The clang plugin, run as part of our "static analysis" builds, makes it a
compile-time error to use StaticLocal{Auto,Ref}Ptr as anything except a
static local variable.
StaticLocal{Auto,Ref}Ptr have a limited interface as compared to
ns{Auto,Ref}Ptr; this is intentional, since their range of acceptable uses is
smaller.
|
7995 |
StaticMonitor.h |
|
3298 |
StaticMutex.h |
StaticMutex is a Mutex that can (and in fact, must) be used as a
global/static variable.
The main reason to use StaticMutex as opposed to
StaticAutoPtr<OffTheBooksMutex> is that we instantiate the StaticMutex in a
thread-safe manner the first time it's used.
The same caveats that apply to StaticAutoPtr apply to StaticMutex. In
particular, do not use StaticMutex as a stack variable or a class instance
variable, because this class relies on the fact that global variablies are
initialized to 0 in order to initialize mMutex. It is only safe to use
StaticMutex as a global or static variable.
|
2798 |
StaticPtr.h |
StaticAutoPtr and StaticRefPtr are like UniquePtr and RefPtr, except they
are suitable for use as global variables.
In particular, a global instance of Static{Auto,Ref}Ptr doesn't cause the
compiler to emit a static initializer.
Since the compiler guarantees that all global variables are initialized to
0, the default constexpr constructors will result in no actual code being
generated. Since we rely on this, the clang plugin, run as part of our
"static analysis" builds, makes it a compile-time error to use
Static{Auto,Ref}Ptr as anything except a global variable.
Static{Auto,Ref}Ptr have a limited interface as compared to ns{Auto,Ref}Ptr;
this is intentional, since their range of acceptable uses is smaller.
|
6917 |