This patch adds an initial implementation, along with test cases, for the
memory.fill and memory.copy instructions that form part of the
bulk-memory-operations proposal at
https://github.com/WebAssembly/bulk-memory-operations/blob/master/proposals/bulk-memory-operations/Overview.md.
This covers code generation for the baseline and optimising compilers, as
well as supporting infrastructure for conversion to/from binary and text
representations.
The implementation is simple in the sense that -- for both compilers -- it
is done by a call to a helper function, which eventually devolves to a call
to memset/memmove respectively.
Per subsequent clarification requests:
* https://github.com/WebAssembly/bulk-memory-operations/issues/8
The arguments to these instructions are all interpreted as unsigned 32 bit
ints.
* https://github.com/WebAssembly/bulk-memory-operations/issues/11
Zero length fills/copies that have starting point offsets out of bounds
trap rather than are treated as no-ops.
--HG--
extra : rebase_source : 79c74cbe467905f03b796428ee80b643c105ca72
When a transform thinks it's animated we should abandon screen rasterization
and instead favour local rasterization. This produces a more visually
pleasant rendering, as pixel-snapping "wobbles" the text between
frames.
The float scale of GlyphRasterSpace::Local is currently unused, but this
PR tries its best to set it to a reasonable value, based on discussion
with glennw about the intended semantics. We agreed it should specify
the scale *relative* to the parent stacking context, which means it's
just whatever scaling the stacking context's transform applies. It's
possible we'll need to clamp this value or make it properly 2-dimensional
later on.
Some book-keeping is added to StackingContextHelper to ensure that
GlyphRasterSpace::Screen is never requested by a descendent
of a stacking context using GlyphRasterSpace::Local.
nsDisplayMask is changed to use a StackingContextHelper to ensure
rasterSpace is properly propagated.
In addition, this is the first commit making use of cbindgen's new support
for bridging Rust enums natively into C++! This bumps our minimum cbindgen
to 6.0.0 (just released).
MozReview-Commit-ID: 9AlsB6nUheB
--HG--
extra : rebase_source : 247e5b197e998682cb4bb74f6f9319a9a4dd3264
The main thing to have into account is that the styleset to use is either
mLastStyleSheetSet, or mPreferredStyleSheetSet.
This last one gets set from Loader::IsAlternateSheet, which is quite nasty and
what I'm trying to remove.
MozReview-Commit-ID: BI4P1Chqtli
The patches in this bug makes layout get more accurate values. That apparently
is confusing WebRender, which renders one more pixel height in some of the
rectangles.
I have no idea why and I couldn't repro out of the reftest harness. I suspect
something something blob invalidation, but...
MozReview-Commit-ID: A2slTJLfJBx
The original code was added in bug 385263 for fixing bug 279032 that a
single font provides zero for max ascent / descent in its HHEA table
which caused Firefox to crash.
Unconditionally picking the maximum of max ascent / descent and their
em correspondents doesn't seem to be essential for working around that
case, so this patch changes it to just use the em ascent / descent when
both max ascent and descent are zero.
This fixes a webcompat problem related to Roboto font on Linux (and
presumably also Android given it uses FreeType backend as well).
MozReview-Commit-ID: EpKrfiOwnZt
--HG--
extra : rebase_source : 0619abf992fb1e1a1f3068ab172880913ebff1f1