From 1695ea81d2f260b46622fc20898ca542cf7246b0 Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Thu, 19 Mar 2026 11:46:58 +0800 Subject: [PATCH] on rebuild, pre-size lookups based on previous sizes --- src/browser/StyleManager.zig | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/browser/StyleManager.zig b/src/browser/StyleManager.zig index 42813e34..5582d23a 100644 --- a/src/browser/StyleManager.zig +++ b/src/browser/StyleManager.zig @@ -100,16 +100,26 @@ fn rebuildIfDirty(self: *StyleManager) !void { self.dirty = false; errdefer self.dirty = true; + const id_rules_count = self.id_rules.count(); + const class_rules_count = self.class_rules.count(); + const tag_rules_count = self.tag_rules.count(); + const other_rules_count = self.other_rules.items.len; self.page._session.arena_pool.resetRetain(self.arena); - // Clear all buckets and reset document order - self.id_rules = .empty; - self.class_rules = .empty; - self.tag_rules = .empty; - self.other_rules = .empty; self.next_doc_order = 0; + self.id_rules = .empty; + try self.id_rules.ensureUnusedCapacity(self.arena, id_rules_count); + + self.class_rules = .empty; + try self.class_rules.ensureUnusedCapacity(self.arena, class_rules_count); + + self.tag_rules = .empty; + try self.tag_rules.ensureUnusedCapacity(self.arena, tag_rules_count); + + self.other_rules = try .initCapacity(self.arena, other_rules_count); + const sheets = self.page.document._style_sheets orelse return; for (sheets._sheets.items) |sheet| { self.sheetAdded(sheet) catch |err| {