[sgen] Split mark/clean phase of sgen-toggle processing to account for transitive...
authorRodrigo Kumpera <kumpera@gmail.com>
Mon, 24 Feb 2014 23:25:04 +0000 (18:25 -0500)
committerRodrigo Kumpera <kumpera@gmail.com>
Mon, 24 Feb 2014 23:35:05 +0000 (18:35 -0500)
commit362b3cc059254744f55543ffc9427143f79692c9
tree88800058efbfe37d7567d19e7b209ffa6edd5376
parent93f3bdf944f0d47a79d39b65af9dd151618a4fd0
[sgen] Split mark/clean phase of sgen-toggle processing to account for transitive liveness.

Given two TG objects A and B. A is strong, B is weak, A points to B. B should remain registered
for TG processing since it's reachable thru A.

This means we have to split processing in multiple steps. Phase one marks all strong refs that should
happen before finalizer processing and phase two that happens after finalizers that cleanup those
that turned unreachable.
mono/metadata/sgen-gc.c
mono/metadata/sgen-gc.h
mono/metadata/sgen-toggleref.c