Malte Ubl
a360250b38
Treat a choice between string literals as an interned literal
...
A ternary whose arms are string literals (`i === 0 ? '' : ','`) produced
an owned frame temp, so every evaluation ended with a scr_str_release call
on an immortal string. tsc-ts made 3.3M such calls (2.1M in typeListKey).
The result is an interned literal like a strLit operand: it is now marked
immortal instead of owned, so it is neither retained nor released wherever
it goes. Immortal temps are recorded per block builder, since temp names
are only unique within one.
Corpus 4564 stores, returns, captures, compares and concatenates such
choices, nested ones included.
tsc-ts self-check (two 11-run interleaved benches): 1.864 -> 1.803 s and
1.736 -> 1.706 s (-1.7..-3.3%), check -0.6% and -2.4%.
2026-10-09 10:10:26 -07:00
..
2026-10-08 11:00:13 -05:00
2026-10-09 10:10:26 -07:00
2026-10-06 01:05:40 -05:00
2026-10-07 04:21:51 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-06 22:19:41 -05:00
2026-10-06 22:19:41 -05:00
2026-10-08 11:00:13 -05:00
2026-10-09 11:59:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-08 11:00:13 -05:00
2026-10-08 11:00:13 -05:00
2026-10-07 13:55:11 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-06 01:05:40 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-08 11:00:13 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-08 11:00:13 -05:00
2026-10-08 11:00:13 -05:00
2026-10-07 11:47:54 -05:00
2026-10-08 15:44:26 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-09 11:59:28 -05:00
2026-10-05 17:51:24 -05:00
2026-09-29 20:54:09 -05:00
2026-10-08 11:00:13 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-08 15:05:00 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-08 11:00:13 -05:00
2026-10-09 11:59:28 -05:00
2026-10-08 15:36:07 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-08 11:00:13 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-08 11:00:13 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-07 15:39:05 -05:00
2026-10-05 17:51:24 -05:00
2026-10-09 10:33:07 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-07 08:15:08 -05:00
2026-10-07 01:57:01 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-08 11:00:13 -05:00
2026-10-09 11:59:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-07 04:21:51 -05:00
2026-10-05 17:51:24 -05:00
2026-10-05 17:51:24 -05:00
2026-10-09 10:01:27 -05:00