Class gc fix: integrate with the finalization logic
I was noticing that classes were getting freed a few collections after they were seen to be not-marked; the issue with the old keep-classes-alive implementation is that it assumed that !isMarked() implies that the object will be freed in the sweep phase. With the finalization ordering, this isn't true. We could move the ordering before the keep-classes-alive behavior, but then the finalization ordering might get things wrong since it wouldn't see the final set of mark bits. So I think we need to integrate the two phases. I think it ends up working to just say that type objects have ordered finalizers, even though they typically don't; I think this gets us the guarantees we need.
Showing
Please register or sign in to comment