From 6e45d8ba6cc33a43cb8e380010e1d6b9cdf9d5ad Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Mon, 19 May 2025 12:51:01 +0100 Subject: [PATCH] LibWeb/CSS: Set enum sizes for PropertyID and Keyword The effect of this is hard to measure, but reducing them from 4 bytes each to 2 bytes can't hurt. :^) --- Libraries/LibWeb/CSS/StyleProperty.h | 2 +- Libraries/LibWeb/Forward.h | 4 ++-- Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEnums.cpp | 3 +-- Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSKeyword.cpp | 3 ++- .../Tools/CodeGenerators/LibWeb/GenerateCSSPropertyID.cpp | 3 ++- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Libraries/LibWeb/CSS/StyleProperty.h b/Libraries/LibWeb/CSS/StyleProperty.h index 781605f25bf..12964bb75ff 100644 --- a/Libraries/LibWeb/CSS/StyleProperty.h +++ b/Libraries/LibWeb/CSS/StyleProperty.h @@ -11,7 +11,7 @@ namespace Web::CSS { -enum class Important { +enum class Important : u8 { No, Yes, }; diff --git a/Libraries/LibWeb/Forward.h b/Libraries/LibWeb/Forward.h index 3d863ee4790..687c69e13d6 100644 --- a/Libraries/LibWeb/Forward.h +++ b/Libraries/LibWeb/Forward.h @@ -309,9 +309,9 @@ class URL; class URLStyleValue; class VisualViewport; -enum class Keyword; +enum class Keyword : u16; enum class MediaFeatureID : u8; -enum class PropertyID; +enum class PropertyID : u16; struct BackgroundLayerData; struct CSSStyleSheetInit; diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEnums.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEnums.cpp index 7e642982a50..70acfde8a0b 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEnums.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEnums.cpp @@ -47,11 +47,10 @@ ErrorOr generate_header_file(JsonObject& enums_data, Core::File& file) #pragma once #include +#include namespace Web::CSS { -enum class Keyword; - )~~~"); enums_data.for_each_member([&](auto& name, auto& value) { diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSKeyword.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSKeyword.cpp index b183cec3981..14e9a7fe284 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSKeyword.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSKeyword.cpp @@ -50,6 +50,7 @@ ErrorOr generate_header_file(JsonArray& keyword_data, Core::File& file) { StringBuilder builder; SourceGenerator generator { builder }; + generator.set("keyword_underlying_type", underlying_type_for_enum(keyword_data.size())); generator.append(R"~~~( #pragma once @@ -58,7 +59,7 @@ ErrorOr generate_header_file(JsonArray& keyword_data, Core::File& file) namespace Web::CSS { -enum class Keyword { +enum class Keyword : @keyword_underlying_type@ { Invalid, )~~~"); diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSPropertyID.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSPropertyID.cpp index a963bdc2bec..a5bf48d5548 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSPropertyID.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSPropertyID.cpp @@ -126,6 +126,7 @@ ErrorOr generate_header_file(JsonObject& properties, Core::File& file) { StringBuilder builder; SourceGenerator generator { builder }; + generator.set("property_id_underlying_type", underlying_type_for_enum(properties.size())); generator.append(R"~~~( #pragma once @@ -137,7 +138,7 @@ ErrorOr generate_header_file(JsonObject& properties, Core::File& file) namespace Web::CSS { -enum class PropertyID { +enum class PropertyID : @property_id_underlying_type@ { Invalid, Custom, All,