Add test T17747
Closes issue #17747 Test that we can allocate ByteArray#s outside of the HEAP_ALLOCED() address space without upsetting the GC. To be extra sure we attach weak pointers with C finalizers to the ByteArray#s. We keep them alive and run a major GC so that the GC has to trace the live ByteArray#s. Prior to the first patch in this series, doing this would upset the GC because the GC does not expect heap objects with closure type ARR_WORDS to exist outside the GC heap. > internal error: evacuate(static): strange closure type 42 Finally we allow everything to be GC'd again, and check that the C finalizers did run. This feature also required a change to the isByteArrayPinned# which itself required a CMM implementation of the HEAP_ALLOCED system. So we also add a check that the CMM and C implementations of HEAP_ALLOCED agree with each other.
Showing
- testsuite/tests/rts/Makefile 6 additions, 0 deletionstestsuite/tests/rts/Makefile
- testsuite/tests/rts/T17747.hs 175 additions, 0 deletionstestsuite/tests/rts/T17747.hs
- testsuite/tests/rts/T17747.stdout 7 additions, 0 deletionstestsuite/tests/rts/T17747.stdout
- testsuite/tests/rts/T17747_c.c 29 additions, 0 deletionstestsuite/tests/rts/T17747_c.c
- testsuite/tests/rts/T17747_cmm.cmm 19 additions, 0 deletionstestsuite/tests/rts/T17747_cmm.cmm
- testsuite/tests/rts/all.T 1 addition, 0 deletionstestsuite/tests/rts/all.T
Loading
Please register or sign in to comment