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
