| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
servo with layout-2020 segfaults when loading servo.org
in debug build, but works fine in release build.
It seems like the style pool threads seem to run
overrun allocated stack space more quickly than
in release mode.
Based on https://bugzilla.mozilla.org/show_bug.cgi?id=1376883
it seems the stack size was chosen base on several
experiments. It is possible the results of those experiments
are no longer valid.
This is a temporary workaround to avoid layout 2020
builds from crashing when servo.org is loaded, until
we can confirm the theory and implement a more robust
solution.
Signed-off-by: Mukilan Thiyagarajan <me@mukilan.in>
|
| |
|
|
|
|
|
|
| |
replace it with the new API
Differential Revision: https://phabricator.services.mozilla.com/D120795
|
|
|
|
|
|
|
|
| |
This is a backport of https://phabricator.services.mozilla.com/D157589,
by Emilio Cobos Álvarez, plus some additions so that Servo compiles,
and some parts from https://phabricator.services.mozilla.com/D144455.
Should have no change in behavior.
|
| |
|
|
|
|
| |
Differential Revision: https://phabricator.services.mozilla.com/D56044
|
|
|
|
| |
As a bonus this also removes one version of crossbeam-utils
|
|
|
|
| |
Differential Revision: https://phabricator.services.mozilla.com/D30869
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This was generated with:
./mach cargo fmt --package selectors &&
./mach cargo fmt --package servo_arc &&
./mach cargo fmt --package style
Using rustfmt 0.4.1-nightly (a4462d1 2018-03-26)
|
| |
|
|
|
|
| |
MozReview-Commit-ID: Fv9DttU20hM
|
|
|
|
| |
MozReview-Commit-ID: ILblsins91P
|
|
|
|
|
|
| |
unified adaptive driver.
MozReview-Commit-ID: ADVTNJntzmp
|
|
|
|
|
|
|
| |
We can't use a slice anymore, because the input might be the VecDeque from the
sequential traversal, which requires an iterator to handle the ring buffer.
MozReview-Commit-ID: JwH6MtRgMfY
|
|
|
|
| |
Reviewed in bug 1376883 by bholley.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The buggy animation handling isn't a regression, since currently we pass
UnstyledChildrenOnly in those cases, which blocks the animation traversal
in Servo_TraverseSubtree.
In general I really wanted to handle these two paths together. But there's
enough broken with the NewChildren path that I wanted to scope the buginess
as tightly as possible. And I really need to separate the handling here from
StyleDocument() to make the restyle root stuff work.
MozReview-Commit-ID: 9F0mcQl7AAX
|
|
|
|
|
|
|
| |
they're actually full.
This improves style sharing at the cost of a bit less parallelism. Fixes Gecko
bug 1385982. r=bholley
|
|
|
|
| |
MozReview-Commit-ID: DIHXaVNzbFM
|
|
|
|
| |
MozReview-Commit-ID: 7nzjMwOmszZ
|
|
|
|
| |
MozReview-Commit-ID: 5WTLuk323Ac
|
|
|
|
|
|
|
|
|
|
| |
r=bholley.
Whilst working with variants of the bloom-basic test for Stylo perf
profiling, I noticed that it is easy to cause Firefox to segfault on DOMs
with a depth of more than about 1500 elements. This fix limits the use of
tail recursion to 150 elements. This isn't externally observable to content
-- we're still completely correct, just not using tail recursion any more.
|
|
|
|
| |
MozReview-Commit-ID: 1tEZiPdp9WQ
|
|
|
|
| |
MozReview-Commit-ID: 4cleAH0JsKK
|
|
|
|
| |
MozReview-Commit-ID: 8JEdjqAIYmQ
|
|
|
|
|
|
|
|
|
|
|
|
| |
selector matching.
This patch renames TNode::parent_element to traversal_parent, since it returns
the parent from the perspective of traversal (which in Gecko uses the
flattened tree). It also renames TNode::children to traversal_children
for the saem reason.
We keep parent_element and children functions on TNode to use for selector
matching, which must be done on the real DOM tree structure.
|
|
|
|
|
| |
Still a lot of guesswork here, but this does seem to get us better sharing. See
https://bugzilla.mozilla.org/show_bug.cgi?id=1369621 for some data.
|
|
|
|
| |
The idea is to put the memmoving of the ThreadLocalContext out of line from the point of view of top_down_dom so we don't need to allocate a large chunk of stack space for it.
|
| |
|
|
|
|
|
| |
Still a lot of guesswork here, but this does seem to get us better sharing. See
https://bugzilla.mozilla.org/show_bug.cgi?id=1369621 for some data.
|
| |
|
|
|
|
|
| |
On Gecko, we get tons of console spam from 1-element traversals if we
don't do this.
|
|
|
|
|
|
|
|
| |
I wanted to add an environmental variable to disable the style sharing
cache for gecko, but the current pattern involves lazy_static!, which
involves an atomic operation on lookup, which is a bit hot to do each
time we try to share styles. This makes that work happen once per
process.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
While we're at it, we also eliminate the 'unknown' dom depth for the
bloom filter. Computing depth has negligible cost relative to the
amount of work we do setting up the bloom filter at a given depth.
Doing it once per traversal should be totally fine.
I originally separated the elimination of unknown dom depth from the
traversal changes, but I got bloom filter crashes on the intermediate
patch, presumably because I didn't properly fix the sequential traversal
for this case. Given that the final state is green, I just decided to
squash and move on.
|
| |
|
| |
|
| |
|
|
|
|
| |
This makes things more consistent between the parallel and sequential traversal drivers.
|
|
|
|
|
|
|
| |
This way we'll be able to take different paths for the sequential and parallel
traversals in some concrete cases.
This is a preliminar patch to fix bug 1332525.
|
|
|
|
| |
MozReview-Commit-ID: ECHZgYNA8nb
|
|
|
|
| |
r=emilio
|
|
|
|
|
|
| |
r=emilio
This works around the issue described in https://github.com/rust-lang/rust/issues/38917
|
| |
|
|
|
|
| |
\o/ \o/ \o/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It turns out that it's problematic to embed ThreadLocalStyleContext within
LayoutContext, because parameterizing the former on TElement (which we do
in the next patch) infects all the traversal stuff with the trait parameters,
which we don't really want.
In general, it probably makes sense to use separate scoped TLS types for
the separate DOM and Flow tree passes, so we can add a different ScopedTLS
type for the Flow pass if we ever need it.
We also reorder the |scope| and |shared| parameters in parallel.rs, because
it aligns more with the order in style/parallel.rs. I did this when I was
adding a TLS parameter to all these functions, which I realized we don't need
for now.
|
|
|
|
|
|
|
|
|
|
| |
immutably across the traversal.
This allows us to get rid of a bunch of lifetimes and simplify a lot of code. It
also lets us get rid of that nasty lifetime transmute, which is awesome.
The situation with thread-local contexts is still suboptimal, but we fix that in
subsequent patches.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
StyleNewChildren in more places. r=heycam
I noticed that our current behavior in ContentRangeInserted is incorrect. Unlike
ContentInserted (where this code lived originally), ContentRangeInserted takes a
start and end element. I'm not sure if we ever take that path for new content that
needs style, but it seemed sketchy. And generally, it seems nice to just always
style new content the same way (though we still need to style NAC by the subtree
root, since it hasn't been attached to the parent yet).
For situations where there is indeed only one unstyled child, the traversal
overhead should be neglible, since we special-case the single-element in
parallel.rs to avoid calling into rayon.
Being more explicit about what we want here also makes us more robust against
the other handful of callpaths that can take us into
nsCSSFrameConstructor::{ContentRangeInserted,ContentAppended}. Currently we
can call StyleNewSubtree on an already-styled element via RecreateFramesForContent,
which triggers an assertion in the servo traversal.
MozReview-Commit-ID: DqCGh90deHH
|