Commit 52ed45b
fix: keep live weak closure arguments callable
DBIx::Class::Storage::BlockRunner weakens a fresh closure argument copy
before invoking it. Perl keeps the caller's strong lexical alive, but
PerlOnJava's CODE weak-ref sweep cleared the weak copy immediately when
the closure had no counted owners.
Teach the CODE weak-ref cleanup path to preserve weak CODE refs while a
current live scalar still points at the same RuntimeCode, without
preserving stale deleted stash slots used by Sub::Quote cleanup.
Generated with Codex (https://openai.com/codex)
Co-Authored-By: Codex <codex@openai.com>1 parent 7716b53 commit 52ed45b
3 files changed
Lines changed: 51 additions & 1 deletion
File tree
- src
- main/java/org/perlonjava/runtime/runtimetypes
- test/resources/unit/refcount
Lines changed: 20 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
522 | 522 | | |
523 | 523 | | |
524 | 524 | | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
525 | 545 | | |
526 | 546 | | |
527 | 547 | | |
| |||
Lines changed: 9 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
188 | 188 | | |
189 | 189 | | |
190 | 190 | | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
191 | 194 | | |
192 | 195 | | |
193 | 196 | | |
194 | | - | |
| 197 | + | |
195 | 198 | | |
196 | 199 | | |
197 | 200 | | |
| |||
205 | 208 | | |
206 | 209 | | |
207 | 210 | | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
208 | 215 | | |
209 | 216 | | |
210 | 217 | | |
| |||
295 | 302 | | |
296 | 303 | | |
297 | 304 | | |
| 305 | + | |
298 | 306 | | |
299 | 307 | | |
300 | 308 | | |
| |||
Lines changed: 22 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
0 commit comments