[sgen] Scan pinned objects in nursery as part of concurrent mark
authorVlad Brezae <brezaevlad@gmail.com>
Wed, 23 Mar 2016 19:16:34 +0000 (21:16 +0200)
committerVlad Brezae <brezaevlad@gmail.com>
Thu, 14 Apr 2016 14:26:17 +0000 (17:26 +0300)
commita4f1baa3db1450cfcf746a48b9f5857e4c207e73
treef5b11f524ec31ae865bf4bcc3ba19859188fea07
parente097ce511153036b9146ee9ca32b766b260e6d1e
[sgen] Scan pinned objects in nursery as part of concurrent mark

Objects pinned in the nursery can hide behind them a large graph of objects in the heap which is never scanned because we don't follow references in the nursery. After precleaning, we scan the latest set of pinned objects (while locking in order to make sure that the set doesn't change, so none are moved).
mono/sgen/sgen-gc.c
mono/sgen/sgen-pinning.c
mono/sgen/sgen-pinning.h