||We implement the default operators new/delete as part of
libmozalloc, replacing their definitions in libstdc++. The
operator new* definitions in libmozalloc will never return a NULL
Each operator new immediately below returns a pointer to memory
that can be delete'd by any of
(1) the matching infallible operator delete immediately below
(2) the matching system |operator delete(void*, std::nothrow)|
(3) the matching system |operator delete(void*) noexcept(false)|
NB: these are declared |noexcept(false)|, though they will never
throw that exception. This declaration is consistent with the rule
that |::operator new() noexcept(false)| will never return NULL.
NB: mozilla::fallible can be used instead of std::nothrow.
||On Android, we often don't have reliable backtrace when crashing inside
abort(). Therefore, we try to find out who is calling abort() and add
that to the message.
||Terminate this process in such a way that breakpad is triggered, if
at all possible.
Note: MOZ_NORETURN seems to break crash stacks on ARM, so we don't
use that annotation there.
||Called when memory is critically low. Returns iff it was able to
remedy the critical memory situation; if not, it will abort().