RFR: JDK-8077842 - Remove the level parameter passed around in GenCollectedHeap
Kim Barrett
kim.barrett at oracle.com
Mon Jun 1 17:38:55 UTC 2015
On May 28, 2015, at 11:57 AM, Jesper Wilhelmsson <jesper.wilhelmsson at oracle.com> wrote:
>
> Hi,
>
> Another non-trivial merge later the webrev looks like this:
>
> http://cr.openjdk.java.net/~jwilhelm/8077842/webrev.04
>
> I reran all the tests and it turned out that the new assert in defNewGeneration.cpp was assuming that the generations were set up, which was not true at startup. So I have changed the assert to:
>
> +DefNewGeneration::IsAliveClosure::IsAliveClosure(Generation* young_gen) : _young_gen(young_gen) {
> + assert(_young_gen->kind() == Generation::ParNew ||
> + _young_gen->kind() == Generation::DefNew, "Expected the young generation here");
>
> This is more like the old assert that also looked at the properties of the generation itself:
>
> -DefNewGeneration::IsAliveClosure::IsAliveClosure(Generation* g) : _g(g) {
> - assert(g->level() == 0, "Optimized for youngest gen.");
>
> Compared to the other webrevs this is the only change modulo some code that was removed by recent changes and didn't need to be changed any more.
>
> Still need a Reviewer to have a look at this.
>
> Thanks,
> /Jesper
------------------------------------------------------------------------------
src/share/vm/gc/cms/concurrentMarkSweepGeneration.cpp
Much of the reformatting around lines 804-814 will collide with Bill's
addition of spaces around xxx_FORMAT macros. It might be simpler for
which ever of you pushes second if unrelated reformatting were not
part of this change set.
------------------------------------------------------------------------------
src/share/vm/gc/cms/concurrentMarkSweepGeneration.cpp
5645 bool current_is_young = (current_generation == GenCollectedHeap::heap()->young_gen());
Mikael suggested using the Generation::Type enum here. There are
quite a few expressions like this; maybe there should be is_young_gen
and is_old_gen predicates? To be similar in behavior they should
perhaps be heap functions, e.g. heap->is_young_gen(generation). But
since old/young gens are each singletons, could instead be intrinsic
to the generation, e.g. generation->is_young_gen(). I don't see
anything that directly allows determination of the Generation::Type of
a generation though. And maybe that's intentional, as part of moving
away from anything like "level"?
------------------------------------------------------------------------------
More information about the hotspot-gc-dev
mailing list