Commit b4654ac
fix(gc): clear the raw-handle debt regression and ratchet 1006 → 1003 (Layer 3) (#7455)
* fix(gc): clear the raw-handle debt regression and ratchet to 1003
The Layer 3 debt ratchet has been RED on main since #7424, which added
two get_raw_mut_ptr reads to the proxy splice path: 1006 -> 1008, and the
baseline may only move DOWN, so the gate could not be satisfied by
re-pinning.
Both #7424 sites are correct — they re-derive the receiver after a trap
that can move it. The ratchet counts them because they spell that as a
manual call/re-read pair rather than the combinator the RFC prescribes.
One converts exactly; the other is a terminal read with no allocating
call to wrap.
Converted five call/re-read pairs to across_{mut,const}:
array/push_pop.rs proxy splice: trap then re-derive
promise/then.rs (x2) js_promise_new_with_parent then re-read
object/async_generator_queue.rs js_promise_new then re-read
string/append.rs js_string_from_bytes_with_capacity then re-read
Each is semantically identical — across_* runs the call and returns the
post-collection address — but the ordering becomes structural instead of
conventional, which is the whole point of #7341: every fix in that family
was an ordering bug, not a missing root.
1008 -> 1003; baseline locked at 1003. 1705 lib tests pass.
* docs: changelog fragment for #7455
---------
Co-authored-by: Ralph Küpper <ralph@skelpo.com>1 parent c060070 commit b4654ac
6 files changed
Lines changed: 27 additions & 13 deletions
File tree
- changelog.d
- crates/perry-runtime/src
- array
- object
- promise
- string
- scripts
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
443 | 443 | | |
444 | 444 | | |
445 | 445 | | |
446 | | - | |
447 | | - | |
448 | | - | |
449 | | - | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
450 | 454 | | |
451 | 455 | | |
452 | 456 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
268 | 268 | | |
269 | 269 | | |
270 | 270 | | |
271 | | - | |
272 | | - | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
273 | 275 | | |
274 | 276 | | |
275 | 277 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
488 | 488 | | |
489 | 489 | | |
490 | 490 | | |
491 | | - | |
492 | | - | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
493 | 495 | | |
494 | 496 | | |
495 | 497 | | |
| |||
764 | 766 | | |
765 | 767 | | |
766 | 768 | | |
767 | | - | |
768 | | - | |
| 769 | + | |
| 770 | + | |
| 771 | + | |
| 772 | + | |
769 | 773 | | |
770 | 774 | | |
771 | 775 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
42 | | - | |
43 | | - | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
44 | 47 | | |
45 | 48 | | |
46 | 49 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
0 commit comments