<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    I talked to a few people about this issue during the offsite, but I
    wanted to broadcast this before renaming in earnest. Usually
    everyone has opinions about names :-)<br>
    <br>
    <a href="https://bugs.openjdk.java.net/browse/JDK-8139930">JDK-8139930
      Rename G1 state variable to be meaningful</a> <br>
    <blockquote>
      Some of the core G1 state variables in G1CollectorState are
      ambiguously named:
      <br>
      <br>
      gcs_are_young, last_young_gc, last_gc_was_young <br>
      <br>
      Problems:
      <br>
      <ul>
        <li>All gcs include the young gen, so taken literally "young"
          doesn't add any information.
        </li>
        <li>"young" is shorthand for one of:</li>
        <ul>
          <li>"fully young" (which confusing with "full gc")</li>
          <li>"young only", but the "only" is both silent and invisible.
          </li>
        </ul>
        <li>
          "last" is used in one variable to mean "previous", and in
          another to mean "ultimate, maybe".</li>
        <ul>
          <li>"last_gc_was_young" vs. "last_young_gc".
          </li>
        </ul>
      </ul>
    </blockquote>
    This issue is a general cleanup on its own, but is also a
    prerequisite for
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <a href="https://bugs.openjdk.java.net/browse/JDK-8080226" title="
      G1: Replace collector state booleans with explicit state
      variable(s)" class="issue-link" data-issue-key="JDK-8080226">JDK-8080226</a>
    (Replace collector state booleans with explicit state variable(s)?)
    <br>
    <br>
    I'm working on two options:<br>
    <b>Simple version:</b><br>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <blockquote>gcs_are_young       => mixed_mode
      <br>
      last_young_gc        => consider_mixed_mode
      <br>
      last_gc_was_young => was_mixed_mode <br>
    </blockquote>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    There is some indication that "last_gc_was_young" !=
    (!"was_mixed_mode"). After a full GC, "last_gc_was_young" is set to
    false. So it might make more sense to use an enum (Normal, Mixed,
    Full) for "g1_mode" and "prev_g1_mode" variables.<br>
    <br>
    <b>Enum version:</b><br>
    <blockquote>gcs_are_young        => (g1_mode == NormalGC)        
          // can add helper predicate functions <br>
      last_young_gc         => consider_mixed_mode<br>
      last_gc_was_young  => (prev_g1_mode == NormalGC)<br>
      full_collection          => (g1_mode == FullGC)<br>
    </blockquote>
    Any opinions on this before I spin up jprt runs and webrevs?<br>
    <br>
    Thanks!<br>
    <br>
     - Derek<br>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </body>
</html>