Repository navigation
Commit 4e75b71
authored
stream: trim TransformStream construction costs
Constructing a TransformStream allocated five closures for the sink and
source algorithms of its two sides, and each side adopted the start
promise through a wrapper promise plus a thenable job, so a stream
without a start() left about three kilobytes pending in the microtask
queue until the started steps ran. Per-stream creation bursts spend
most of their time copying that graph through the scavenger.
The sink and source algorithms are now shared functions that reach the
transform stream through a field on their controller state (the
controller is passed to the close, abort and cancel algorithms for
that), and the post-start steps of both sides are delivered by one
reaction chain on a shared promise, taking the same microtask hops as
the spec's start promise adoption: three after construction for a
non-thenable start result, two after the adopting promise settles for a
thenable one. The readable and writable transfer state records are
materialized on first transfer instead of per stream.
Signed-off-by: Matteo Collina <hello@matteocollina.com>
PR-URL: #66643
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Mattias Buelens <mattias@buelens.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>1 parent 62ca1ba commit 4e75b71
4 files changed
Lines changed: 168 additions & 79 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
111 | 111 | | |
112 | 112 | | |
113 | 113 | | |
| 114 | + | |
114 | 115 | | |
115 | 116 | | |
116 | 117 | | |
| |||
521 | 522 | | |
522 | 523 | | |
523 | 524 | | |
| 525 | + | |
524 | 526 | | |
525 | | - | |
526 | | - | |
527 | | - | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
528 | 530 | | |
529 | 531 | | |
530 | 532 | | |
| |||
533 | 535 | | |
534 | 536 | | |
535 | 537 | | |
536 | | - | |
537 | | - | |
538 | | - | |
| 538 | + | |
539 | 539 | | |
540 | | - | |
541 | | - | |
| 540 | + | |
| 541 | + | |
542 | 542 | | |
543 | 543 | | |
544 | | - | |
| 544 | + | |
545 | 545 | | |
546 | 546 | | |
547 | 547 | | |
548 | 548 | | |
549 | 549 | | |
550 | 550 | | |
551 | 551 | | |
552 | | - | |
553 | | - | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
554 | 555 | | |
555 | 556 | | |
556 | 557 | | |
| |||
1415 | 1416 | | |
1416 | 1417 | | |
1417 | 1418 | | |
1418 | | - | |
| 1419 | + | |
| 1420 | + | |
1419 | 1421 | | |
1420 | 1422 | | |
1421 | 1423 | | |
| 1424 | + | |
| 1425 | + | |
| 1426 | + | |
| 1427 | + | |
1422 | 1428 | | |
1423 | 1429 | | |
1424 | 1430 | | |
| |||
2961 | 2967 | | |
2962 | 2968 | | |
2963 | 2969 | | |
2964 | | - | |
| 2970 | + | |
2965 | 2971 | | |
2966 | 2972 | | |
2967 | 2973 | | |
| |||
3019 | 3025 | | |
3020 | 3026 | | |
3021 | 3027 | | |
| 3028 | + | |
| 3029 | + | |
| 3030 | + | |
3022 | 3031 | | |
3023 | 3032 | | |
3024 | 3033 | | |
3025 | 3034 | | |
| 3035 | + | |
| 3036 | + | |
| 3037 | + | |
3026 | 3038 | | |
3027 | 3039 | | |
3028 | 3040 | | |
| |||
3036 | 3048 | | |
3037 | 3049 | | |
3038 | 3050 | | |
3039 | | - | |
3040 | | - | |
3041 | | - | |
3042 | | - | |
3043 | | - | |
3044 | | - | |
| 3051 | + | |
3045 | 3052 | | |
3046 | 3053 | | |
3047 | 3054 | | |
| |||
3058 | 3065 | | |
3059 | 3066 | | |
3060 | 3067 | | |
| 3068 | + | |
| 3069 | + | |
| 3070 | + | |
| 3071 | + | |
| 3072 | + | |
| 3073 | + | |
| 3074 | + | |
| 3075 | + | |
| 3076 | + | |
3061 | 3077 | | |
3062 | 3078 | | |
3063 | 3079 | | |
| |||
4033 | 4049 | | |
4034 | 4050 | | |
4035 | 4051 | | |
| 4052 | + | |
4036 | 4053 | | |
4037 | 4054 | | |
4038 | 4055 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
7 | 8 | | |
8 | 9 | | |
9 | 10 | | |
| |||
48 | 49 | | |
49 | 50 | | |
50 | 51 | | |
| 52 | + | |
51 | 53 | | |
52 | 54 | | |
53 | 55 | | |
| |||
68 | 70 | | |
69 | 71 | | |
70 | 72 | | |
| 73 | + | |
71 | 74 | | |
72 | 75 | | |
73 | 76 | | |
74 | 77 | | |
75 | 78 | | |
| 79 | + | |
| 80 | + | |
76 | 81 | | |
77 | 82 | | |
78 | 83 | | |
| |||
159 | 164 | | |
160 | 165 | | |
161 | 166 | | |
162 | | - | |
163 | | - | |
164 | | - | |
165 | | - | |
166 | | - | |
167 | 167 | | |
168 | 168 | | |
169 | | - | |
170 | 169 | | |
171 | 170 | | |
172 | 171 | | |
173 | 172 | | |
174 | 173 | | |
175 | 174 | | |
176 | 175 | | |
177 | | - | |
178 | | - | |
179 | | - | |
180 | | - | |
181 | | - | |
182 | | - | |
183 | | - | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
184 | 181 | | |
185 | 182 | | |
186 | 183 | | |
| |||
380 | 377 | | |
381 | 378 | | |
382 | 379 | | |
383 | | - | |
384 | | - | |
385 | | - | |
386 | | - | |
387 | 380 | | |
388 | 381 | | |
389 | | - | |
390 | 382 | | |
391 | 383 | | |
392 | 384 | | |
393 | 385 | | |
394 | 386 | | |
395 | | - | |
396 | | - | |
397 | | - | |
398 | | - | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
399 | 391 | | |
400 | | - | |
401 | | - | |
402 | | - | |
403 | | - | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
404 | 396 | | |
405 | 397 | | |
406 | 398 | | |
| 399 | + | |
407 | 400 | | |
408 | 401 | | |
409 | | - | |
410 | | - | |
411 | | - | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
412 | 405 | | |
413 | 406 | | |
414 | 407 | | |
| 408 | + | |
415 | 409 | | |
416 | 410 | | |
417 | 411 | | |
| |||
421 | 415 | | |
422 | 416 | | |
423 | 417 | | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
424 | 455 | | |
425 | 456 | | |
426 | 457 | | |
| |||
609 | 640 | | |
610 | 641 | | |
611 | 642 | | |
612 | | - | |
| 643 | + | |
| 644 | + | |
613 | 645 | | |
614 | 646 | | |
615 | 647 | | |
| |||
656 | 688 | | |
657 | 689 | | |
658 | 690 | | |
659 | | - | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
660 | 695 | | |
661 | 696 | | |
662 | 697 | | |
| |||
690 | 725 | | |
691 | 726 | | |
692 | 727 | | |
693 | | - | |
| 728 | + | |
| 729 | + | |
694 | 730 | | |
695 | 731 | | |
696 | 732 | | |
| |||
720 | 756 | | |
721 | 757 | | |
722 | 758 | | |
723 | | - | |
| 759 | + | |
| 760 | + | |
724 | 761 | | |
725 | 762 | | |
726 | 763 | | |
| |||
732 | 769 | | |
733 | 770 | | |
734 | 771 | | |
735 | | - | |
| 772 | + | |
| 773 | + | |
| 774 | + | |
| 775 | + | |
736 | 776 | | |
737 | 777 | | |
738 | 778 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
357 | 357 | | |
358 | 358 | | |
359 | 359 | | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
360 | 369 | | |
361 | 370 | | |
362 | 371 | | |
| |||
461 | 470 | | |
462 | 471 | | |
463 | 472 | | |
| 473 | + | |
464 | 474 | | |
465 | 475 | | |
466 | 476 | | |
467 | 477 | | |
468 | 478 | | |
469 | 479 | | |
470 | 480 | | |
| 481 | + | |
471 | 482 | | |
472 | 483 | | |
473 | 484 | | |
| |||
0 commit comments