Fix GC for collectible array of pure value types (#21782)
authorJan Vorlicek <janvorli@microsoft.com>
Thu, 3 Jan 2019 20:20:59 +0000 (21:20 +0100)
committerGitHub <noreply@github.com>
Thu, 3 Jan 2019 20:20:59 +0000 (21:20 +0100)
commit03ab0ca0f81313319f30cfd75ee56dc59d71390c
treed30e3c5d096a99f9171c8c89617e148e52c023a8
parent88eb93abba27e97d5997ad2d6c04b54aeaff5e8f
Fix GC for collectible array of pure value types (#21782)

For collectible arrays, we enter the mark_object_simple1 method even if
the array contains no pointers so that the reference to LoaderAllocator
can be walked. But we were missing skipping the call to go_through_object
which is both not necessary and it also doesn't work correctly for
objects without pointers (the loop over the fields reports the first 8
bytes of each array element as if it was a pointer).
The fix is to skip the call to go_through_object for objects without
pointers in the mark_object_simple1 and background_mark_simple1.
src/gc/gc.cpp