Commit graph

31174 commits

Author SHA1 Message Date
Xidorn Quan
d0fd92221c Optimize selector matching for some common cases. 2018-01-17 09:46:57 +11:00
bors-servo
7de87c487b Auto merge of #19779 - bholley:avoid_rule_debug_hooks, r=emilio
Avoid debug serialization of PropertyDeclaration & co in release builds

In total, this PR saves ~60k.

The conditional compilation on the _Debug FFI function eliminates one
of the ToCss variants, eliminating 54.4k, as well as a bunch of other
<1k functions. Removing the public trait implementation of Debug for the
font metrics provider eliminates the last Debug impl from stylo.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19779)
<!-- Reviewable:end -->
2018-01-15 19:24:59 -06:00
Bobby Holley
9a8821a1b0 Avoid debug serialization of PropertyDeclaration & co in release builds.
In total, this PR saves ~60k.

The conditional compilation on the _Debug FFI function eliminates one
of the ToCss variants, eliminating 54.4k, as well as a bunch of other
<1k functions. Removing the public trait implementation of Debug for the
font metrics provider eliminates the last Debug impl from stylo.

MozReview-Commit-ID: nIfQ3sy4OW
2018-01-15 17:24:27 -08:00
bors-servo
2ff3e119fa Auto merge of #19749 - gootorov:move_-moz-context-properties_from_mako, r=emilio
style: Move -moz-context-properties outside of mako.

<!-- Please describe your changes on the following line: -->
Sub-PR of #19015

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix #19742  (github issue number if applicable).

<!-- Either: -->
- [ ] There are tests for these changes OR
- [x] These changes do not require tests

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19749)
<!-- Reviewable:end -->
2018-01-15 06:04:30 -06:00
bors-servo
f2036e7661 Auto merge of #19757 - emilio:bye-custom-cascade, r=nox
style: Remove -servo-text-decorations-in-effect

It is bogus, because it depends on the display property as it's cascaded, but
the display property can change afterwards, for example, if we get blockified
because we're the root element or a flex item.

Replace it with a normal field instead.

Also, it carries some weight, because it's the last property that uses this
concept of "derived" property, and "custom cascade". So we can remove some code
after this.

Compute it after the cascade process in StyleAdjuster.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19757)
<!-- Reviewable:end -->
2018-01-15 05:14:49 -06:00
bors-servo
032fd388e4 Auto merge of #19769 - emilio:simplify-layout-construct, r=nox
layout: Simplify the pseudo-element setup.

It's kind of a mess. See individual commits for details.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19769)
<!-- Reviewable:end -->
2018-01-15 04:14:13 -06:00
bors-servo
f866e1aacb Auto merge of #19772 - ferjm:performance.wpt, r=nox
Do not fire pending callbacks on disconnected performance observer

Implement this change in the Performance Timeline API https://github.com/w3c/performance-timeline/issues/66

- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] There are tests for these changes

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19772)
<!-- Reviewable:end -->
2018-01-15 03:20:57 -06:00
Fernando Jiménez Moreno
d600f246f4 Do not fire pending callbacks on disconnected performance observer 2018-01-15 09:42:31 +01:00
Emilio Cobos Álvarez
95edda93c4
layout: Add a FIXME for #19771. 2018-01-15 03:12:22 +01:00
Emilio Cobos Álvarez
ecf538ff04
layout: Avoid doing stupid calls to Node::style. 2018-01-15 03:09:13 +01:00
bors-servo
eb1634b56b Auto merge of #19768 - glennw:update-wr-fixes1, r=jdm
Update WR (overlap radii fix, subpixel AA in fast text shadows).

<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19768)
<!-- Reviewable:end -->
2018-01-14 20:00:59 -06:00
bors-servo
ec34023d7a Auto merge of #19766 - jonleighton:issue-19765, r=emilio
Move image-orientation property outside of mako

Fixes https://github.com/servo/servo/issues/19765

r? emilio

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19766)
<!-- Reviewable:end -->
2018-01-14 16:55:15 -06:00
Glenn Watson
89837e6641 Update WR (overlap radii fix, subpixel AA in fast text shadows). 2018-01-15 06:56:08 +10:00
Emilio Cobos Álvarez
bc29a16285
layout: Deduplicate Node::fragment_type and FragmentDisplayListBuilding::fragment_type. 2018-01-14 21:45:39 +01:00
Emilio Cobos Álvarez
e32d6f6adf
layout: Remove type parameter from PseudoElementType.
Everyone uses () now.
2018-01-14 21:45:39 +01:00
Emilio Cobos Álvarez
cb2bba8777
style: Remove unused optional display from PseudoElementType definition.
Everyone passes None now.
2018-01-14 21:45:38 +01:00
Emilio Cobos Álvarez
55174991b6
layout: Stop overriding display of the ::-servo-details-content pseudo-element.
We only override it when there's no "open" attribute. But a display: none
pseudo-element is the same as no pseudo-element at all.

This should get the same behavior when iterating children in dom_wrapper.rs
2018-01-14 21:45:37 +01:00
Jon Leighton
bd55639d01 Move image-orientation property outside of mako
Fixes https://github.com/servo/servo/issues/19765
2018-01-14 21:19:12 +01:00
Emilio Cobos Álvarez
9dc25ed214
style: Remove "derived" properties and the concept of "custom cascade". 2018-01-14 17:10:44 +01:00
Emilio Cobos Álvarez
8732a1d7de
style: Remove -servo-text-decorations-in-effect.
It is bogus, because it depends on the display property as it's cascaded, but
the display property can change afterwards, for example, if we get blockified
because we're the root element or a flex item.

Replace it with a normal field instead.

Also, it carries some weight, because it's the last property that uses this
concept of "derived" property, and "custom cascade". So we can remove some code
after this.

Compute it after the cascade process in StyleAdjuster.
2018-01-14 17:10:44 +01:00
bors-servo
1b46e2e759 Auto merge of #19709 - CYBAI:servo-display-out-of-mako, r=emilio
style: Remove -servo-display-for-hypothetical-box from longhand

This is a sub-PR of #19015
r? emilio

For the `fn set_original_display` inside `properties.mako.rs`, I removed `is_item_or_root` first to see how the tests result is. If it's needed, I'll add it back.

---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #19697
- [x] These changes do not require tests

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19709)
<!-- Reviewable:end -->
2018-01-14 08:27:14 -06:00
bors-servo
73cb6d415e Auto merge of #19764 - servo:rustup, r=SimonSapin
Upgrade to rustc 1.25.0-nightly (e6072a7b3 2018-01-13)

CC #19762
2018-01-14 03:10:13 -06:00
Simon Sapin
fbc048aa68 Upgrade to rustc 1.25.0-nightly (e6072a7b3 2018-01-13)
CC #19762
2018-01-14 10:08:44 +01:00
Igor Gutorov
90978c1777 Make MozContextProperties a different type 2018-01-13 22:29:52 +02:00
bors-servo
7b92eb932b Auto merge of #19760 - emilio:ruby-display-adjust, r=upsuper
style: Ruby style adjustments shouldn't reset mOriginalDisplay.

This matches what Gecko does:

  https://searchfox.org/mozilla-central/rev/7476b71e0010ab3277b77cc0ae4d998c4b1d2b64/layout/style/GeckoStyleContext.cpp#992

And it's conceptually more right, since we ideally shouldn't mutate
mOriginalDisplay from StyleAdjuster.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19760)
<!-- Reviewable:end -->
2018-01-13 13:16:06 -06:00
bors-servo
08fc9f190d Auto merge of #19756 - bholley:avoid_debug_impls_in_release, r=emilio
Avoid entraining various Debug impls in release builds

See https://bugzilla.mozilla.org/show_bug.cgi?id=1351737#c29

This patch saves more than 80k of code size.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19756)
<!-- Reviewable:end -->
2018-01-13 11:52:15 -06:00
Bobby Holley
f858ce91e8 Avoid entraining various Debug impls in release builds.
MozReview-Commit-ID: Lp9i9EI5qdU
2018-01-13 09:51:46 -08:00
CYBAI
0291a75b3c style: Remove -servo-display-for-hypothetical-box from longhand 2018-01-13 20:54:50 +08:00
Emilio Cobos Álvarez
72e62fe308
style: Ruby style adjustments shouldn't reset mOriginalDisplay.
This matches what Gecko does:

  https://searchfox.org/mozilla-central/rev/7476b71e0010ab3277b77cc0ae4d998c4b1d2b64/layout/style/GeckoStyleContext.cpp#992

And it's conceptually more right, since we ideally shouldn't mutate
mOriginalDisplay from StyleAdjuster.
2018-01-13 13:21:58 +01:00
bors-servo
e81193c5c9 Auto merge of #19758 - emilio:adjust-display-right, r=emilio
style: Adjust the writing-mode fixup to call set_adjusted_display on Servo.

This is functionally equivalent right now (set_adjusted_display will just do
set_display), but won't be after #19709.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19758)
<!-- Reviewable:end -->
2018-01-13 06:00:45 -06:00
Emilio Cobos Álvarez
76f22adccc
style: Adjust the writing-mode fixup to call set_adjusted_display on Servo.
This is functionally equivalent right now (set_adjusted_display will just do
set_display), but won't be after #19709.
2018-01-13 12:57:02 +01:00
bors-servo
6ca651c0c8 Auto merge of #19751 - servo:selectors, r=bholley
Clean up the selectors crate for a new crates.io release

<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19751)
<!-- Reviewable:end -->
2018-01-12 16:55:12 -06:00
bors-servo
1a8366598a Auto merge of #19753 - bholley:notedirtyelement_optimizations, r=emilio
NoteDirtyElement optimizations

https://bugzilla.mozilla.org/show_bug.cgi?id=1398119
2018-01-12 12:22:10 -06:00
Bobby Holley
2b1c1d7b68 Avoid atomic overhead in Servo_Element_IsDisplayNone.
This reduces time spent in NoteDirtyElement by about 15% in the testcase. Even
though the subsequent patch will cause us to call Servo_Element_IsDisplayNone less
for this particular testcase, it could still be hot on other testcases, and so
it's worth optimizing.

MozReview-Commit-ID: 3F3Zfp48dDW
2018-01-12 10:19:07 -08:00
Bobby Holley
ac74cf7a60 Add machinery to assert single-threadedness from geckolib.
MozReview-Commit-ID: 9LBNm2h5Ct3
2018-01-12 10:19:06 -08:00
CYBAI
a061f2a89f Use Python's True instead of string for arbitrary Python code in mako 2018-01-12 10:17:37 -08:00
Simon Sapin
befadc563a Prepare to publish selectors 0.19.0 to crates.io 2018-01-12 18:13:50 +01:00
bors-servo
865181b6e6 Auto merge of #19752 - CYBAI:fix-mako-true, r=nox
style: Use Python's True instead of string for arbitrary Python code in mako

As discussion in IRC with @nox and @gootorov , it's more correct to use Python's `True` for `${arbitrary Python code}` in mako.

Following is related IRC logs

```
15:39 nox
As I said, that's because there are 2 ways to invoke the things with Mako.

15:40 nox
${arbitrary Python code} vs <%named_helper ..>...</%named_helper>

15:40 nox
IIRC <%foo bar=True></%foo> is not valid Mako syntax,

15:40 nox
but with bar="True" it is.

15:42 cybai
gootorov: I did meet some issues when moving makos if I set "True" instead of Python's `True`. Thus, like nox mentioned above, it's related to how the code works

15:44 gootorov
nox: Alright, I got it now, thanks. There are a couple ${function} blocks that still use `boxed="True" though. They aren't <%named_helpers>, shouldn't they use Python's True too, then?

15:45 nox
gootorov: I think there is an issue because this specific attribute is also used as a string through other <%helpers>,

15:46 nox
gootorov: Seems like it's not an issue anymore because the boxed attribute is passed to arg_to_bool,

15:46 nox
which either returns the boolean as is or check whether it's a "True" or "False" string.

15:47 nox
gootorov: So indeed, you can probably make those use booleans now.

15:47 gootorov
nox: Okay, got it, thanks for the explanation :)
```

---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes do not require tests

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19752)
<!-- Reviewable:end -->
2018-01-12 10:56:30 -06:00
CYBAI
3f6a613bea Use Python's True instead of string for arbitrary Python code in mako 2018-01-13 00:23:30 +08:00
Igor Gutorov
c72066af2d style: Move -moz-context-properties outside of mako 2018-01-12 17:46:02 +02:00
Simon Sapin
358bac953d Move Visit trait bounds to where they’re needed 2018-01-12 15:44:07 +01:00
Simon Sapin
1a6010f19f Document selectors::Visit 2018-01-12 15:40:16 +01:00
Simon Sapin
c14b766ff5 Rename SelectorMethods to Visit, after its one method. 2018-01-12 15:26:56 +01:00
bors-servo
75f39b42ab Auto merge of #19750 - glennw:update-wr-api, r=jdm
Update WR (new transaction API).

In the future we'll want to start making use of this in Servo
to get atomic updates of resources with display list changes etc.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19750)
<!-- Reviewable:end -->
2018-01-12 08:20:59 -06:00
Simon Sapin
79f93cfb5b The selectors crate has had many contributors 2018-01-12 15:11:00 +01:00
Simon Sapin
116a6de59c Make OpaqueElement’s field private.
It’s not used anywhere, and this reduces the public API surface.
2018-01-12 15:11:00 +01:00
Simon Sapin
7d1dc7286a Move selectors size_of tests to Stylo tests 2018-01-12 15:10:56 +01:00
Simon Sapin
5d920df460 Move PrecomputedHash bounds to where they’re actually needed. 2018-01-12 15:10:47 +01:00
Simon Sapin
b0003f77e4 Prepare servo_arc for publication on crates.io 2018-01-12 15:10:44 +01:00
Simon Sapin
5a82a1d455 Reverse the dependency between selectors and malloc_size_of 2018-01-12 15:10:04 +01:00