mirror of
https://github.com/servo/servo.git
synced 2025-08-07 22:45:34 +01:00
style: Make Rust static atoms able to be used in const contexts.
I see atom dropping code generated in release builds for stuff like dropping the "class" atom here: https://searchfox.org/mozilla-central/rev/4df8821c1b824db5f40f381f48432f219d99ae36/servo/components/style/gecko/wrapper.rs#592 That is silly, and I hope making Atom be able to be used in const context will help the compiler see that yeah, we're not doing anything interesting and the atom shouldn't get dropped. It also allows us to get rid of a few lazy_static!s, so we should do it anyway. In order to accomplish this, compute the offset into gGkAtoms manually instead of going through the static_atoms() array and then back to the byte offset. Differential Revision: https://phabricator.services.mozilla.com/D55039
This commit is contained in:
parent
001c511f9c
commit
31837a1efa
3 changed files with 45 additions and 46 deletions
|
@ -63,43 +63,38 @@ where
|
|||
{
|
||||
use crate::Atom;
|
||||
|
||||
// FIXME(emilio): This should be an actual static.
|
||||
lazy_static! {
|
||||
static ref SPECIAL_HTML_ELEMENTS: [Atom; 16] = [
|
||||
atom!("br"),
|
||||
atom!("wbr"),
|
||||
atom!("meter"),
|
||||
atom!("progress"),
|
||||
atom!("canvas"),
|
||||
atom!("embed"),
|
||||
atom!("object"),
|
||||
atom!("audio"),
|
||||
atom!("iframe"),
|
||||
atom!("img"),
|
||||
atom!("video"),
|
||||
atom!("frame"),
|
||||
atom!("frameset"),
|
||||
atom!("input"),
|
||||
atom!("textarea"),
|
||||
atom!("select"),
|
||||
];
|
||||
}
|
||||
const SPECIAL_HTML_ELEMENTS: [Atom; 16] = [
|
||||
atom!("br"),
|
||||
atom!("wbr"),
|
||||
atom!("meter"),
|
||||
atom!("progress"),
|
||||
atom!("canvas"),
|
||||
atom!("embed"),
|
||||
atom!("object"),
|
||||
atom!("audio"),
|
||||
atom!("iframe"),
|
||||
atom!("img"),
|
||||
atom!("video"),
|
||||
atom!("frame"),
|
||||
atom!("frameset"),
|
||||
atom!("input"),
|
||||
atom!("textarea"),
|
||||
atom!("select"),
|
||||
];
|
||||
|
||||
// https://drafts.csswg.org/css-display/#unbox-svg
|
||||
//
|
||||
// There's a note about "Unknown elements", but there's not a good way to
|
||||
// know what that means, or to get that information from here, and no other
|
||||
// UA implements this either.
|
||||
lazy_static! {
|
||||
static ref SPECIAL_SVG_ELEMENTS: [Atom; 6] = [
|
||||
atom!("svg"),
|
||||
atom!("a"),
|
||||
atom!("g"),
|
||||
atom!("use"),
|
||||
atom!("tspan"),
|
||||
atom!("textPath"),
|
||||
];
|
||||
}
|
||||
const SPECIAL_SVG_ELEMENTS: [Atom; 6] = [
|
||||
atom!("svg"),
|
||||
atom!("a"),
|
||||
atom!("g"),
|
||||
atom!("use"),
|
||||
atom!("tspan"),
|
||||
atom!("textPath"),
|
||||
];
|
||||
|
||||
// https://drafts.csswg.org/css-display/#unbox-html
|
||||
if element.is_html_element() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue