Android logging functions append newlines to all output. Layout debugging
(and perhaps other areas) relies on being able to print partial lines, making
its output almost unreadable. This change adds manual buffering between
newlines, making the output readable again.
Android logging functions append newlines to all output. Layout debugging
(and perhaps other areas) relies on being able to print partial lines, making
its output almost unreadable. This change adds manual buffering between
newlines, making the output readable again.
Generally, if you want a decltype(nullptr)-based overload, you should use SFINAE and IsNullPointer. (Examples are provided in NullPtr.h comments.) The problem is NullptrT matches far more than just __null as emulated nullptr for gcc 4.4/4.5 overloading purposes. This problem is unavoidable without true nullptr. Currently, the only valid use for NullptrT is believed to be in operator overloads. All existing nullptr-overloading code has been rewritten to use the appropriate technique for the situation, and MOZ_HAVE_CXX11_NULLPTR is no longer an API.
--HG--
extra : rebase_source : 01abfcb66ae569db7b04a7b53f5cd5fd8151bffd
For register-rich ABIs (e.g. x86-64 and ARM), QueryInterface's incoming
registers are going to look like:
arg register 1: |this|
arg register 2: the IID of interest
arg register 3: the outparam instance pointer
Most of our QI implementations call NS_TableDrivenQI, which expects
arguments like so:
arg register 1: |this|
arg register 2: the QITableEntry table
arg register 3: the IID of interest
arg register 4: the outparam instance pointer
So we're going to have to do a register shuffle of the IID and the
outparam to be able to load the QITableEntry pointer before calling into
NS_TableDrivenQI.
This patch reorders the argument list of NS_TableDrivenQI so that the
first three arguments match the order that QueryInterface receives them
in. Then your typical QueryInterface implementation becomes:
- load local |table|
- tail-call NS_TableDrivenQI
Eliminating the register shuffling reduces text size by 12K on an
Android ARM build.
ICC uses this to track objects that have been AddRef'd during ICC graph building.
For those objects, we may not have the proper information for them, so treat them
as live.
ICC uses this to track objects that have been AddRef'd during ICC graph building.
For those objects, we may not have the proper information for them, so treat them
as live.
The existing deadlock detector code uses the trace-malloc stack walking
facilities, which is problematic for a few reasons.
1. It is only available in builds with --enable-trace-malloc, which is
not in the default build configuration.
2. It tries to capture a symbolicated stack trace every time that a lock
is acquired or released, which is really slow.
This patch changes the deadlock detector to use the XPCOM stack walking
and symbolification facilities, and avoids the symbolification until the
point where we need to print out the call stack, which makes the
deadlock detector a lot faster than it currently is in trace-malloc
builds.