Aliaksandr Kalenik
bfbc3352b5
LibJS: Extend Array.prototype.shift() fast path to holey arrays
...
indexed_take_first() already memmoves elements down for both Packed and
Holey storage, but the caller at ArrayPrototype::shift() only entered
the fast path for Packed arrays. Holey arrays fell through to the
spec-literal per-element loop (has_property / get / set /
delete_property_or_throw), which is substantially slower.
Add a separate Holey predicate with the additional safety checks the
spec semantics require: default_prototype_chain_intact() (so
HasProperty on a hole doesn't escape to a poisoned prototype) and
extensible() (so set() on a hole slot doesn't create a new own
property on a non-extensible object). The existing Packed predicate
is left unchanged -- packed arrays don't need these checks because
every index in [0, size) is already an own data property.
Allows us to fail at Cloudflare Turnstile way much faster!
2026-04-23 21:47:21 +02:00
..
2026-04-11 00:35:36 +02:00
2025-11-30 11:54:54 +01:00
2026-04-14 18:12:31 -04:00
2026-04-15 15:57:48 +02:00
2026-03-19 21:55:10 -05:00
2025-07-22 11:51:29 -04:00
2025-04-25 14:07:51 +02:00
2025-07-22 11:51:29 -04:00
2025-07-22 11:51:29 -04:00
2025-09-17 12:44:44 +02:00
2025-07-22 11:51:29 -04:00
2025-07-22 11:51:29 -04:00
2026-04-15 15:57:48 +02:00
2025-12-10 17:40:57 -06:00
2026-04-22 19:12:54 +02:00
2026-03-17 22:28:35 -05:00
2026-04-20 09:43:08 +02:00
2026-04-20 09:43:08 +02:00
2026-02-28 10:24:37 -05:00
2025-07-22 11:51:29 -04:00
2026-02-27 17:19:33 +01:00
2025-07-22 11:51:29 -04:00
2025-12-09 21:44:13 -06:00
2025-11-30 11:54:54 +01:00
2026-03-17 22:28:35 -05:00
2025-11-02 20:05:47 +01:00
2025-06-02 00:15:36 +02:00
2025-07-22 11:51:29 -04:00
2026-04-23 21:47:21 +02:00
2025-07-22 11:51:29 -04:00
2025-01-17 20:46:32 +01:00
2025-07-22 11:51:29 -04:00
2025-01-17 20:46:32 +01:00
2025-07-22 11:51:29 -04:00
2026-02-27 17:19:33 +01:00
2025-07-22 11:51:29 -04:00
2025-07-22 11:51:29 -04:00
2025-11-02 20:05:47 +01:00
2025-11-02 20:05:47 +01:00
2026-03-11 13:33:47 +01:00
2025-07-22 11:51:29 -04:00
2026-03-16 19:15:03 -05:00
2026-04-13 18:29:43 +02:00
2025-07-22 11:51:29 -04:00
2026-04-13 18:29:43 +02:00
2026-04-13 18:29:43 +02:00
2026-03-11 13:33:47 +01:00
2025-07-22 11:51:29 -04:00
2025-07-22 11:51:29 -04:00
2026-02-27 17:19:33 +01:00
2025-07-22 11:51:29 -04:00
2025-07-22 11:51:29 -04:00
2025-12-03 12:08:40 +01:00
2025-07-22 11:51:29 -04:00
2025-08-14 10:27:08 +02:00
2025-08-14 10:27:08 +02:00
2025-05-23 11:57:21 +02:00
2025-07-22 11:51:29 -04:00
2025-07-22 11:51:29 -04:00
2026-02-27 17:19:33 +01:00
2025-07-22 11:51:29 -04:00
2025-07-22 11:51:29 -04:00
2025-07-22 11:51:29 -04:00
2026-02-27 17:19:33 +01:00
2025-07-22 11:51:29 -04:00
2026-03-29 13:44:06 +02:00
2026-03-29 13:44:06 +02:00
2026-02-27 17:19:33 +01:00
2026-02-11 23:57:41 +01:00
2026-01-07 12:48:58 +01:00
2026-01-07 12:48:58 +01:00
2026-02-26 13:54:35 -05:00
2025-08-23 16:04:36 -06:00
2026-03-20 12:03:36 +01:00
2025-04-05 11:20:26 +02:00
2025-07-22 11:51:29 -04:00
2025-08-17 07:28:56 -04:00
2025-08-23 16:04:36 -06:00
2025-07-22 11:51:29 -04:00
2025-07-22 11:51:29 -04:00
2026-02-27 17:19:33 +01:00
2025-07-22 11:51:29 -04:00
2025-04-29 07:33:08 -04:00
2025-07-22 11:51:29 -04:00
2026-03-20 14:46:46 +01:00
2026-04-11 18:28:56 +02:00
2026-02-27 17:19:33 +01:00
2025-07-22 11:51:29 -04:00
2025-05-26 18:48:09 +02:00
2026-02-27 17:19:33 +01:00
2025-07-22 11:51:29 -04:00
2026-02-11 23:57:41 +01:00
2026-02-11 23:57:41 +01:00
2025-01-17 20:46:32 +01:00
2025-07-22 11:51:29 -04:00
2025-01-17 20:46:32 +01:00
2025-07-22 11:51:29 -04:00
2025-04-05 11:20:26 +02:00
2025-07-22 11:51:29 -04:00
2026-04-14 08:14:43 +02:00
2026-04-14 08:14:43 +02:00
2026-01-27 10:58:39 +01:00
2026-01-27 10:58:39 +01:00
2026-03-20 12:03:36 +01:00
2026-04-08 20:33:53 +02:00
2026-04-08 20:33:53 +02:00
2026-04-08 20:33:53 +02:00
2025-07-22 11:51:29 -04:00
2026-04-08 20:33:53 +02:00
2026-04-08 20:33:53 +02:00
2026-04-08 20:33:53 +02:00
2025-07-22 11:51:29 -04:00
2025-08-18 13:42:22 +02:00
2026-04-05 13:57:58 +02:00
2026-03-29 13:44:06 +02:00
2026-04-13 18:29:43 +02:00
2025-12-25 20:21:37 +01:00
2025-07-22 11:51:29 -04:00
2025-12-09 21:44:13 -06:00
2025-07-22 11:51:29 -04:00
2025-12-09 21:44:13 -06:00
2025-07-22 11:51:29 -04:00
2026-03-19 21:55:10 -05:00
2025-07-22 11:51:29 -04:00
2025-11-30 11:54:54 +01:00
2025-12-21 12:08:41 -06:00
2026-03-07 13:09:59 +01:00
2026-03-29 13:44:06 +02:00
2026-04-05 13:57:58 +02:00
2025-10-29 21:20:10 +01:00
2026-03-11 13:33:47 +01:00
2025-07-22 11:51:29 -04:00
2025-07-22 11:51:29 -04:00
2026-04-13 18:29:43 +02:00
2026-04-13 18:29:43 +02:00
2026-03-19 21:55:10 -05:00
2025-07-22 11:51:29 -04:00
2025-08-05 07:07:15 -04:00
2025-08-05 07:07:15 -04:00
2026-04-23 20:43:01 +01:00
2025-07-22 11:51:29 -04:00
2026-03-17 22:28:35 -05:00
2026-03-17 22:28:35 -05:00
2026-03-04 18:53:12 +01:00
2026-03-29 13:44:06 +02:00
2026-04-15 15:57:48 +02:00
2025-12-17 12:50:17 -06:00
2026-03-19 21:55:10 -05:00
2026-02-26 13:54:35 -05:00
2026-03-08 10:27:13 +01:00
2026-02-26 13:54:35 -05:00
2025-12-03 12:08:40 +01:00
2025-12-03 12:08:40 +01:00
2025-12-03 12:08:40 +01:00
2025-07-22 11:51:29 -04:00
2025-12-03 12:08:40 +01:00
2025-07-22 11:51:29 -04:00
2025-07-22 11:51:29 -04:00
2026-02-27 17:19:33 +01:00
2026-01-12 13:53:28 -05:00
2025-07-22 11:51:29 -04:00
2026-01-07 12:48:58 +01:00
2025-12-09 21:44:13 -06:00
2025-07-22 11:51:29 -04:00
2026-01-07 12:48:58 +01:00
2026-02-17 12:25:27 +00:00
2025-06-02 00:15:36 +02:00
2025-07-22 11:51:29 -04:00
2025-10-03 08:58:40 +02:00
2025-10-03 08:58:40 +02:00
2026-01-23 15:53:27 +01:00
2025-07-22 11:51:29 -04:00
2025-08-05 07:07:15 -04:00
2026-04-03 21:21:09 +02:00
2025-09-17 12:44:44 +02:00
2025-09-21 15:06:32 +02:00
2026-04-03 21:21:09 +02:00
2026-04-15 15:57:48 +02:00
2026-04-15 15:57:48 +02:00
2026-04-14 08:14:43 +02:00
2026-03-29 13:44:06 +02:00
2025-07-22 11:51:29 -04:00
2025-07-22 11:51:29 -04:00
2026-02-27 17:19:33 +01:00
2025-07-22 11:51:29 -04:00
2026-04-23 21:47:21 +02:00
2026-04-15 15:57:48 +02:00
2025-12-09 21:44:13 -06:00
2025-07-22 11:51:29 -04:00
2025-09-17 12:44:44 +02:00
2025-08-05 07:07:15 -04:00
2026-04-08 20:33:53 +02:00
2025-07-22 11:51:29 -04:00
2026-04-12 19:15:50 +02:00
2026-04-11 00:35:36 +02:00
2025-08-05 07:07:15 -04:00
2025-08-05 07:07:15 -04:00
2026-02-27 17:19:33 +01:00
2025-12-21 12:08:41 -06:00
2025-12-09 21:44:13 -06:00
2025-08-23 16:04:36 -06:00
2026-03-11 13:33:47 +01:00
2025-07-22 11:51:29 -04:00
2025-04-05 11:20:26 +02:00
2025-07-22 11:51:29 -04:00
2025-12-09 21:44:13 -06:00
2025-07-22 11:51:29 -04:00
2025-07-22 11:51:29 -04:00
2025-09-17 12:44:44 +02:00
2025-07-22 11:51:29 -04:00
2025-07-22 11:51:29 -04:00
2026-01-18 10:10:04 +01:00
2026-01-06 10:55:56 +01:00
2026-01-06 00:01:01 +01:00
2026-03-20 12:03:36 +01:00
2026-02-27 17:19:33 +01:00
2025-12-09 21:44:13 -06:00
2025-07-22 11:51:29 -04:00
2026-03-29 13:44:06 +02:00
2026-03-29 13:44:06 +02:00
2025-04-24 09:33:49 -04:00
2025-07-22 11:51:29 -04:00
2026-03-29 13:44:06 +02:00
2026-04-14 12:37:12 +02:00
2025-12-09 21:44:13 -06:00
2026-03-20 12:03:36 +01:00
2025-12-09 21:44:13 -06:00
2025-07-22 11:51:29 -04:00
2026-04-11 00:35:36 +02:00
2026-04-11 00:35:36 +02:00
2026-04-11 00:35:36 +02:00
2026-04-11 00:35:36 +02:00
2026-03-31 15:59:04 +02:00
2026-03-27 17:32:19 +01:00
2026-04-11 00:35:36 +02:00
2025-12-13 13:51:12 -06:00
2025-05-03 20:01:20 +02:00
2025-07-22 11:51:29 -04:00
2025-07-18 12:45:38 -04:00
2025-07-22 11:51:29 -04:00
2026-02-06 13:50:54 +01:00
2025-09-26 16:21:18 +02:00
2025-07-22 11:51:29 -04:00
2026-02-28 10:24:37 -05:00
2025-11-02 20:05:47 +01:00
2025-06-02 00:15:36 +02:00
2025-07-22 11:51:29 -04:00
2025-12-09 21:44:13 -06:00
2025-07-22 11:51:29 -04:00
2026-04-23 02:14:01 +02:00
2026-04-15 15:57:48 +02:00
2026-02-27 17:19:33 +01:00
2025-07-22 11:51:29 -04:00
2026-02-27 17:19:33 +01:00
2026-01-04 07:47:55 +01:00
2026-04-14 12:37:12 +02:00
2026-04-14 12:37:12 +02:00
2026-04-12 19:15:50 +02:00
2026-04-12 19:15:50 +02:00
2026-02-28 10:24:37 -05:00
2025-11-02 20:05:47 +01:00
2025-06-02 00:15:36 +02:00
2025-07-22 11:51:29 -04:00
2026-04-11 00:35:36 +02:00
2025-09-21 15:06:32 +02:00
2026-04-12 19:15:50 +02:00
2025-10-03 09:03:40 +02:00
2025-07-22 11:51:29 -04:00
2025-09-17 12:44:44 +02:00
2025-07-22 11:51:29 -04:00
2025-07-22 11:51:29 -04:00
2025-08-05 07:07:15 -04:00
2025-08-05 07:07:15 -04:00
2025-12-09 21:44:13 -06:00
2025-07-22 11:51:29 -04:00
2025-07-22 11:51:29 -04:00
2026-02-27 17:19:33 +01:00
2025-07-22 11:51:29 -04:00
2026-02-27 17:19:33 +01:00
2026-03-18 13:59:05 -05:00
2025-12-09 21:44:13 -06:00
2025-08-05 07:07:15 -04:00
2026-02-27 17:19:33 +01:00
2025-07-22 11:51:29 -04:00
2025-11-29 09:39:43 -05:00
2025-11-29 09:39:43 -05:00
2026-03-29 13:45:38 +02:00
2026-03-29 13:45:38 +02:00
2025-10-11 20:08:58 +02:00
2025-05-14 02:01:59 -06:00
2026-04-22 22:34:54 +02:00
2026-04-15 15:57:48 +02:00
2025-12-20 09:13:19 -06:00
2026-02-28 10:24:37 -05:00
2025-07-22 11:51:29 -04:00
2025-10-03 08:58:40 +02:00
2025-10-03 08:58:40 +02:00
2026-01-07 07:52:03 -05:00
2025-07-22 11:51:29 -04:00
2025-12-09 21:44:13 -06:00
2025-07-22 11:51:29 -04:00
2025-07-22 11:51:29 -04:00
2025-08-23 16:04:36 -06:00
2025-07-22 11:51:29 -04:00
2025-12-09 21:44:13 -06:00
2025-07-22 11:51:29 -04:00
2025-07-22 11:51:29 -04:00