Andreas Kling
e2c72922f6
LibWeb: Make LayoutState use HashMap instead of potentially huge Vector
...
Before this change, LayoutState essentially had a Vector<UsedValues*>
resized to the exact number of layout nodes in the current document.
When a nested layout is performed (to calculate the intrinsic size of
something), we make a new LayoutState with its own Vector. If an entry
is missing in a nested LayoutState, we check the parent chain all the
way up to the root.
Because each nested LayoutState had to allocate a new Vector with space
for all layout nodes, this could get really nasty on very large pages
(such as the ECMA262 specification).
This patch replaces the Vector with a HashMap. There's now a small cost
to lookups, but what we get in return is the ability to handle huge
layout trees without spending eternity in page faults.
2023-05-23 09:24:08 +02:00
..
2023-02-18 00:52:47 +01:00
2023-02-18 00:52:47 +01:00
2023-04-07 22:41:01 +02:00
2023-02-18 00:52:47 +01:00
2023-04-30 06:04:33 +02:00
2023-03-15 08:48:49 +01:00
2023-05-23 06:31:37 +02:00
2023-04-06 11:36:56 +02:00
2023-05-23 06:31:37 +02:00
2023-03-06 13:05:43 +00:00
2023-04-14 12:30:43 +02:00
2023-04-14 12:30:43 +02:00
2023-04-07 22:41:01 +02:00
2023-04-07 22:41:01 +02:00
2023-04-07 22:41:01 +02:00
2023-05-23 09:24:08 +02:00
2023-05-23 09:24:08 +02:00
2023-04-06 11:36:56 +02:00
2023-02-18 00:52:47 +01:00
2023-02-18 00:52:47 +01:00
2023-05-15 16:28:16 +02:00
2023-05-03 09:39:49 +02:00
2023-05-04 16:48:10 +02:00
2023-05-04 16:48:10 +02:00
2023-02-18 00:52:47 +01:00
2023-02-18 00:52:47 +01:00
2023-04-30 06:04:33 +02:00
2023-04-30 06:04:33 +02:00
2023-04-06 11:36:56 +02:00
2023-03-15 08:48:49 +01:00
2023-03-06 13:05:43 +00:00
2023-03-06 13:05:43 +00:00
2023-05-23 06:06:55 +02:00
2023-05-23 06:06:55 +02:00
2023-04-06 11:36:56 +02:00
2023-05-04 16:50:01 +02:00
2023-04-06 11:36:56 +02:00
2023-04-07 22:41:01 +02:00
2023-04-07 22:41:01 +02:00
2023-04-07 22:41:01 +02:00
2023-04-09 17:27:27 +02:00
2023-05-04 16:12:40 +02:00
2023-05-04 16:12:40 +02:00
2023-05-04 16:12:40 +02:00
2023-04-13 18:24:18 +02:00
2023-02-28 12:36:14 +01:00
2023-04-13 14:29:42 +02:00
2023-02-22 09:55:33 +01:00
2023-02-18 00:52:47 +01:00
2023-02-18 00:52:47 +01:00
2023-03-15 08:48:49 +01:00
2023-03-06 23:46:35 +01:00
2023-03-18 19:50:45 +01:00
2023-03-18 19:50:45 +01:00
2023-03-18 19:50:45 +01:00
2023-03-18 19:50:45 +01:00
2023-03-10 14:56:29 +01:00
2023-03-10 14:56:29 +01:00
2023-05-23 06:31:37 +02:00
2023-05-23 06:31:37 +02:00
2023-04-06 11:36:56 +02:00
2023-04-13 14:29:42 +02:00
2023-03-15 08:48:49 +01:00
2023-02-18 00:52:47 +01:00
2023-02-18 00:52:47 +01:00
2023-02-28 12:36:14 +01:00
2023-02-28 12:36:14 +01:00
2023-03-06 13:05:43 +00:00
2023-03-21 10:45:19 +01:00
2023-03-01 14:24:01 +00:00
2023-03-01 14:24:01 +00:00
2023-04-06 11:36:56 +02:00
2023-04-06 11:36:56 +02:00
2023-03-10 14:58:55 +01:00
2023-03-10 14:58:55 +01:00
2023-03-10 14:58:55 +01:00
2023-04-06 11:36:56 +02:00
2023-03-15 08:48:49 +01:00
2023-03-15 08:48:49 +01:00
2023-02-18 00:52:47 +01:00
2023-02-18 00:52:47 +01:00
2023-02-18 00:52:47 +01:00
2023-02-18 00:52:47 +01:00
2023-04-21 07:59:50 +02:00
2023-04-21 07:59:50 +02:00
2023-04-21 07:59:50 +02:00