Skip to content

Commit

Permalink
perf(html/ast): Use Atom for raw (#6210)
Browse files Browse the repository at this point in the history
  • Loading branch information
alexander-akait committed Oct 19, 2022
1 parent 8ab10f6 commit 420ba32
Show file tree
Hide file tree
Showing 6 changed files with 170 additions and 141 deletions.
12 changes: 6 additions & 6 deletions crates/swc_html_ast/src/base.rs
@@ -1,6 +1,6 @@
use is_macro::Is;
use string_enum::StringEnum;
use swc_atoms::JsWord;
use swc_atoms::{Atom, JsWord};
use swc_common::{ast_node, EqIgnoreSpan, Span};

#[ast_node("Document")]
Expand Down Expand Up @@ -64,7 +64,7 @@ pub struct DocumentType {
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
pub system_id: Option<JsWord>,
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
pub raw: Option<JsWord>,
pub raw: Option<Atom>,
}

impl EqIgnoreSpan for DocumentType {
Expand Down Expand Up @@ -127,11 +127,11 @@ pub struct Attribute {
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
pub name: JsWord,
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
pub raw_name: Option<JsWord>,
pub raw_name: Option<Atom>,
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
pub value: Option<JsWord>,
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
pub raw_value: Option<JsWord>,
pub raw_value: Option<Atom>,
}

impl EqIgnoreSpan for Attribute {
Expand All @@ -150,7 +150,7 @@ pub struct Text {
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
pub data: JsWord,
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
pub raw: Option<JsWord>,
pub raw: Option<Atom>,
}

impl EqIgnoreSpan for Text {
Expand All @@ -166,7 +166,7 @@ pub struct Comment {
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
pub data: JsWord,
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
pub raw: Option<JsWord>,
pub raw: Option<Atom>,
}

impl EqIgnoreSpan for Comment {
Expand Down
34 changes: 26 additions & 8 deletions crates/swc_html_ast/src/token.rs
@@ -1,4 +1,4 @@
use swc_atoms::JsWord;
use swc_atoms::{Atom, JsWord};
use swc_common::{ast_node, EqIgnoreSpan, Span};

#[ast_node("TokenAndSpan")]
Expand All @@ -15,11 +15,29 @@ pub struct AttributeToken {
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
pub name: JsWord,
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
pub raw_name: Option<JsWord>,
pub raw_name: Option<Atom>,
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
pub value: Option<JsWord>,
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
pub raw_value: Option<JsWord>,
pub raw_value: Option<Atom>,
}

#[derive(Debug, Clone, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize, EqIgnoreSpan)]
#[cfg_attr(
feature = "rkyv",
derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)
)]
#[cfg_attr(
feature = "rkyv",
archive(bound(
serialize = "__S: rkyv::ser::Serializer + rkyv::ser::ScratchSpace + \
rkyv::ser::SharedSerializeRegistry",
deserialize = "__D: rkyv::de::SharedDeserializeRegistry"
))
)]
pub enum Raw {
Same,
Atom(Atom),
}

#[derive(Debug, Clone, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize, EqIgnoreSpan)]
Expand Down Expand Up @@ -50,34 +68,34 @@ pub enum Token {
system_id: Option<JsWord>,
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
// Raw value
raw: Option<JsWord>,
raw: Option<Atom>,
},
StartTag {
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
tag_name: JsWord,
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
raw_tag_name: Option<JsWord>,
raw_tag_name: Option<Atom>,
is_self_closing: bool,
attributes: Vec<AttributeToken>,
},
EndTag {
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
tag_name: JsWord,
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
raw_tag_name: Option<JsWord>,
raw_tag_name: Option<Atom>,
is_self_closing: bool,
attributes: Vec<AttributeToken>,
},
Comment {
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
data: JsWord,
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
raw: Option<JsWord>,
raw: Option<Atom>,
},
Character {
value: char,
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
raw: Option<JsWord>,
raw: Option<Raw>,
},
Eof,
}

0 comments on commit 420ba32

Please sign in to comment.