https://codereview.chromium.org/794583003/diff/60001/src/heap/mark-compact.cc
File src/heap/mark-compact.cc (right):
https://codereview.chromium.org/794583003/diff/60001/src/heap/mark-compact.cc#newcode2159
src/heap/mark-compact.cc:2159: ProcessMarkingDeque();
Can't we just process the marking deque at the end, instead of inside
the loop? By doing it here you may mark maps live that you haven't got
to yet, and they won't age, even though they are only reachable through
maps that are ageing.
https://codereview.chromium.org/794583003/diff/60001/src/heap/mark-compact.cc#newcode2269
src/heap/mark-compact.cc:2269: RetainMaps(&root_visitor);
On 2014/12/16 16:35:23, ulan wrote:
On 2014/12/16 16:16:33, Erik Corry wrote:
> This should be after the ephemeral stuff. Maps that are kept alive
by
> ephemerally-alive objects should not age.
>
> But even better would be to put it inside ClearNonLiveReferences.
That already
> iterates over the map space. It is better for the cache not to
iterate
multiple
> times.
It should not be after ephemeral marking, because a resurrected map
could mark
the key of an ephemeron, which would require marking the value of the
ephemeron.
The most precise would be to put RetainMaps inside the loop in
ProcessEphemeralMarking, but that would be prohibitively expensive. So
I had to
use imprecise (some live maps will age) but faster approach.
OK that makes sense in a sort of sad way.
https://codereview.chromium.org/794583003/
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.