This makes sure that we find the right tools in the right msys2
environment in case we get called from another msys2 env.
Differential Revision: https://phabricator.services.mozilla.com/D162753
CLDR 42 replaced plain ASCII space U+0020 with U+202F when formatting dates.
This change requires to update the expected results for more tests than usual.
Differential Revision: https://phabricator.services.mozilla.com/D160189
CLDR 42 replaced plain ASCII space U+0020 with U+202F when formatting dates.
For backward-compatibility reasons we want to ensure that
`Date.parse(date.toLocaleString())` works when the default locale is English,
therefore we have to normalise U+202F to U+0020.
Differential Revision: https://phabricator.services.mozilla.com/D160188
Remove the patch for bug 1766220 because the local patch was just a backport
from the ICU development branch.
And update the local patches for Sorbian and WASI integration to apply cleanly
on ICU 72.
Differential Revision: https://phabricator.services.mozilla.com/D160179
This class has become pretty complicated. I've tried to reorder the methods in
a way that groups related methods together and to make methods private where
possible.
Differential Revision: https://phabricator.services.mozilla.com/D162397
As a further optimisation we can move the flag update into
GCMarker::markAndTraverse so we don't set the flag for thing we've already
marked.
Differential Revision: https://phabricator.services.mozilla.com/D162396
This adds a new marking mode for root marking and templates MarkingTracer on a
options bitmask. The GCMarker's tracer becomes a variant and we change the
constructed variant when the mode changes.
The templating allows us to make parts of the marking path conditional using if
constexpr on the marking options.
Differential Revision: https://phabricator.services.mozilla.com/D162395
Previously GCMarker was a JSTracer. This separates out the impelmentation of
the tracer interface into another class.
The idea here is that we will change the tracer class used in different phases
of the GC. This will allow us to skip setting this compartment flag outside
root marker, and later allow us to select a different way of accessing the mark
bits for parallel marking.
Differential Revision: https://phabricator.services.mozilla.com/D162394
This implements the emitter for DecoratorContext objects. The implementations of
the DecoratorAccess object and addInitializer are postponed to follow up bugs.
Differential Revision: https://phabricator.services.mozilla.com/D162143
This is a basic implementation of applying a decorator to a method, leaving
many details to subsequent patches and bugs.
Differential Revision: https://phabricator.services.mozilla.com/D162141
This is solving a particular problem for us in media land. libxul depends on
libmoz{avcodec,format,util}, but not the opposite. We can't use the profiler
functions (thread registration, markers, etc.) there.
Unfortunately those libraries contain most of the interesting part for a few
codecs, including their own thread pool, so we really want to register those
threads and add markers to their innards so that we can figure out what's going
on and how to use them in the most efficient way.
Another problem is that those libraries are in C, and the markers API is in
C++.
The trick here is that when those libraries are being called into, the functions
in MicroGeckoProfiler.h (that exposes a C API for the profiler) are available in
the address space (it's never too early), so we can fetch them and start using
them, without having libmoz{avcodec,format,util} link to libxul.
This let us write temporary patches over vendored dependencies to diagnose
locally, and/or carry small and easily rebaseable patches to register important
threads that are otherwise invisible to the profiler.
Differential Revision: https://phabricator.services.mozilla.com/D149543
It doesn't do much now that we're not using XUL layout, and it's
unnecessary because the tab throbber animation uses CSS transforms
nowadays anyways.
Depends on D162850
Differential Revision: https://phabricator.services.mozilla.com/D162851
Some debug infrastructure like MOZ_WEAKPTR_INIT_THREAD_SAFETY_CHECK that can apparently be triggered by nsComponentManagerImpl::gComponentManager->FreeService() seem to rely on the existence of a serial event target even if they do not post any events. So it seems sound to keep a representation of the main thread as nsThread object until after final XPCOM shutdown.
But nsThreadManager::ShutdownMainThread() does more, it processes the last round of events, removes the thread's observer and closes down the background event target. We do not want to move these operations to happen later than before, such that we split the nsThread release into a separate function and move that together with AbstractThread::ShutdownMainThread() behind FreeService().
Depends on D160628
Differential Revision: https://phabricator.services.mozilla.com/D162497
This change will effectively anticipate the fast shutdown by half a phase, making it more coherent with the phase it is defined to happen.
Depends on D160250
Differential Revision: https://phabricator.services.mozilla.com/D160628