File tree 1 file changed +24
-0
lines changed
1 file changed +24
-0
lines changed Original file line number Diff line number Diff line change @@ -3503,3 +3503,27 @@ let
3503
3503
finalize (obj)
3504
3504
@test finalized == 1
3505
3505
end
3506
+
3507
+ # check if finalizers for the old gen can be triggered manually
3508
+ # PR #14181
3509
+ let
3510
+ # The following three `gc(false)` clears the `finalizer_list`. It is
3511
+ # not strictly necessary to make the test pass but should make the failure
3512
+ # more repeatable if something breaks.
3513
+ gc (false )
3514
+ # At least: GC_CLEAN; age = 1
3515
+ gc (false )
3516
+ # At least: GC_QUEUED; age = 1
3517
+ gc (false )
3518
+ # all objects in `finalizer_list` are now moved to `finalizer_list_marked`
3519
+
3520
+ obj1 = Ref (1 )
3521
+ obj2 = Ref (1 )
3522
+ finalized = 0
3523
+ finalizer (obj1, (obj) -> (finalized += 1 ))
3524
+ finalizer (obj1, (obj) -> (finalized += 1 ))
3525
+ finalizer (obj2, (obj) -> (finalized += 1 ; finalize (obj1)))
3526
+ finalizer (obj2, (obj) -> (finalized += 1 ; finalize (obj1)))
3527
+ finalize (obj2)
3528
+ @test finalized == 4
3529
+ end
You can’t perform that action at this time.
0 commit comments