Alexey Varlamov wrote: >> > My proposal already argued that vtable bit/byte/word marking is >> > unnecessary for "nursery allocations". You only need to mark the >> vtable >> > of objects that survive collection and pretenured objects. > > > I may have missed it, but I only recall you argued that we just need > to collect mature space for the *final unloading* as CL and classes > are unlikely to die young, which I agree. But chances that a live > object of a candidate class appeared in the nursery are higher. > Otherwise I just do not grok how this algorithm can be proven for > correctness. >
OK. My latest proposal (a few messages ago) was assuming that the nursery was empty when the "end of epoch collection" is launched. If it is not, you can do 2 things: a) do a minor collection to empty it, or b) i - use a finalization-like list of references to class loader objects ii - launch gc, which might mark a previously unmarked vtable iii- do a finalization-like rescuing for resuscitated class loaders "b)" should really have a minimal performance impact. As for its "apparent complexity", I would say that this is a non-issue; similar code must already exist in drlvm for implementing finalization. Etienne -- Etienne M. Gagnon, Ph.D. http://www.info2.uqam.ca/~egagnon/ SableVM: http://www.sablevm.org/ SableCC: http://www.sablecc.org/
signature.asc
Description: OpenPGP digital signature