瀏覽代碼

LibWeb: Remove separate Token::m_unit field

Dimension tokens don't make use of the m_value string for anything else,
so we can sneak the unit string in there.

- Token goes from 72 to 64 bytes
- StyleComponentValueRule goes from 80 to 72 bytes
Sam Atkins 3 年之前
父節點
當前提交
13e1232d79
共有 2 個文件被更改,包括 3 次插入3 次删除
  1. 1 2
      Userland/Libraries/LibWeb/CSS/Parser/Token.h
  2. 2 1
      Userland/Libraries/LibWeb/CSS/Parser/Tokenizer.cpp

+ 1 - 2
Userland/Libraries/LibWeb/CSS/Parser/Token.h

@@ -126,7 +126,7 @@ public:
     StringView dimension_unit() const
     {
         VERIFY(m_type == Type::Dimension);
-        return m_unit.view();
+        return m_value.view();
     }
     float dimension_value() const
     {
@@ -155,7 +155,6 @@ private:
     Type m_type { Type::Invalid };
 
     FlyString m_value;
-    FlyString m_unit;
     Number m_number_value;
     HashType m_hash_type { HashType::Unrestricted };
 

+ 2 - 1
Userland/Libraries/LibWeb/CSS/Parser/Tokenizer.cpp

@@ -845,7 +845,8 @@ Token Tokenizer::consume_a_numeric_token()
         // 2. Consume a name. Set the <dimension-token>’s unit to the returned value.
         auto unit = consume_a_name();
         VERIFY(!unit.is_empty());
-        token.m_unit = move(unit);
+        // NOTE: We intentionally store this in the `value`, to save space.
+        token.m_value = move(unit);
 
         // 3. Return the <dimension-token>.
         return token;