This change removes almost all the remaining uses of loadSubScript and
global scope pollution. The only remaining use is for common.js, which
is resolved by a later bug for evaluating scripts.
To simplify the dependency chain and reduce the number of duplicate
functions in Marionette, a number of functions have been removed from
interactions.js and added to elements.js. This makes them more easily
re-usable and works around a circular dependency issue.
Through some very clever hacking of the arguments to each of the atoms,
we are able to contain this in a JS module: Atoms normally extract their
arguments directly from the function scoped `arguments' variable, but
by explicitly naming `window' as the last argument in the functions'
prototype we are able to set the `window' variable used inside.
This is obviously a big hack, but it encapsulates the atoms and we are
moving away from atoms in the long term.
testing/marionette/sendkeys.js has been merged into the
new testing/marionette/event.js module, together with
testing/marionette/EventUtils.js.
There is a lot of functionality still left in this module that we can
probably remove, as it is not in use by Marionette.
Due to a previous programming error, error.isError only recognised
the base Error prototype. It must also test for the other built-in
prototypes, such as TypeError et al.
Previously displayport bases were computed as the intersection of the
scrollport with the dirtyrect. However the dirtyrect covers what is
rendered, and with displayports what we render can be much larger than
what is visible. With displayport bases intended to represent what was
visible, this was a problem. By restricting them to the root composition
size this makes them more closely match what is visible. To do this more
properly we'd want to intersect the dirtyrect with the scroll clip of
every ancestor scroll frame, not just the root composition bounds.
This commit adds gc zeal mode 12 to force the use of the individual elements
edges barrier regardless of the size of the elements. It also adds a jit-test
which uses the zeal option. Hopefully, this will let the fuzzers go to town with
the new barrier type.
This commit teaches IonMonkey how to put individual array elements' edges in the
store buffer, rather than using the whole cell buffer. This alleviates
perfomance cliffs where there are very large arrays in the tenured heap and then
the mutator adds a relatively small number of edges from this array into the
nursery. With the whole cell buffer, which was used previously, a nursery
collection would need to trace the whole large array. With this patch, only
the modified edges need by traced.