| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Implementing the CSSOM requires giving the script task access to the
computed style for a node. Moving it into a new SharedLayoutData struct
member of LayoutDataRef seems to be the best way to achieve this.
This is the first step towards #1721.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
overflow correctly, and opportunistically lay out blocks in parallel
even if floats are present.
This commit fixes the `inline-height-test` in Acid2 by implementing
proper overflow as well as the inline "strut". (See CSS 2.1 § 10.8.1.)
Acid2 was accidentally being rendered properly before because tables'
descendant flows were not being laid out properly.
Display list building is now parallel and is done by bubbling up display
items and layers from parent to child. Speedups of around 60%-70% are
observed on Wikipedia with a 4-core HyperThreaded Core i7. More
optimizations are possible; this is just a start.
To minimize the amount of data that needs to be bubbled up, as well as
to make proper handling of `overflow: hidden` clipping easier, the
`StackingContext` abstraction is now purely internal to the display
list. That is, instead of placing items into a stacking context
directly, display items are placed into display lists alongside a
stacking level. When a stacking context is complete, it is flattened
with the the `flatten` method, which shuffles the display items that
make up the context into their proper order while handling clipping
properly.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
from `Flow`s; in the process, remove `InlineInfo` in favor of the
range-based design that was originally planned and halfway implemented.
Now, the DOM tree structure for inline flows is reflected not by a
series of arrays but instead by a flat list of ranges into the list of
boxes. As part of this, the `border` and `padding` fields, which were
incorrect in the case of inlines and necessitated separate
`noncontent_inline_foo` methods, have been merged into a single
`border_padding` field that is always guaranteed to be correct after
width assignment, even for inlines.
|
|
|
|
|
|
| |
April 10, 2014. The main changes are to privacy, to work around the
issues with incorrect bounds on the libstd `Arc<Mutex<T>>`, and the
various API changes strewn throughout the libraries.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
If the cache is hit, then we can only compute inherited properties. This
is a WebKit optimization.
|
|
|
|
|
|
| |
data.
9% improvement in style recalc on the rainbow page.
|
|
|
|
| |
PR, will make partial reflow.
|
|
|
|
| |
Closes #1584.
|
|\
| |
| |
| |
| |
| |
| |
| |
| | |
construction.
This will be very slow until we have the concurrent hash table, but we
might as well get it in.
r? @metajack
|
| |
| |
| |
| |
| |
| |
| | |
construction.
This will be very slow until we have the concurrent hash table, but we
might as well get it in.
|
|/ |
|
|
|
|
| |
Speeds up the cascade by 3x.
|
|
|
|
|
|
|
| |
Pointers to DOM nodes from layout could go stale if incremental reflow
does not correctly destroy dead nodes. Therefore, we ask the JavaScript
garbage collector to verify that each DOM node is indeed a valid pointer
before calling event handlers on it, and fail otherwise.
|
| |
|
| |
|
| |
|
|
|
|
| |
them into evil places.
|
|
|
|
|
|
|
| |
that layout can safely call.
This is simpler. Currently, the set of methods is not safe, but I plan
to lock it down more soon.
|
| |
|
|
|
|
|
| |
These were stored in inline flows. This was caught by my WIP changes to
harden layout (yay for Rust!)
|
|
|
|
| |
DOM access during reflow.
|
|
|
|
|
| |
This has no difference in CSS selector matching performance and results
in a 31% speedup in constraint solving on the rainbow page.
|
|
|
|
| |
63% improvement in box building on the rainbow page.
|
| |
|
|
|
|
| |
`@`-free layout
|
|
|
|
|
|
|
|
| |
preparation for removing its `@`-ness.
Also removes a few text copies that were taking place.
This sure does remove a lot of code!
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This replaces flow construction with a strict bottom-up tree traversal,
allowing for parallelism. Each step of the traversal creates a flow or
a `ConstructionItem`, similar to how Gecko works. {ib} splits are
handled by not creating `InlineFlow`s until the containing block is
reached.
This should be able to be incrementalized by storing the `Flow` from
layout to layout, and performing fixups during flow construction
and/or wiping containing blocks in a previous pass.
|
|
|
|
| |
Breaks the dependency between `gfx` and `script`, which is nice.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Except util/tree.rs (see next commit).
|
| |
|
| |
|
|
|