<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix"><br>
      Hi Jesper,<br>
      <br>
      On 31/03/16 20:08, Jesper Wilhelmsson wrote:<br>
    </div>
    <blockquote cite="mid:56FD67A9.2020401@oracle.com" type="cite">Hi
      Bengt,
      <br>
      <br>
      Nice cleanup!
      <br>
    </blockquote>
    <br>
    Thanks! And thanks for looking at this!<br>
    <br>
    <blockquote cite="mid:56FD67A9.2020401@oracle.com" type="cite">
      <br>
      The comment in psMarkSweepDecorator.cpp:294 is slightly confusing:
      "The first dead object should contain a pointer to the first live
      object"
      <br>
      <br>
      Does it mean "The first object is dead and should contain a
      pointer to the first live object"?
      <br>
    </blockquote>
    <br>
    It actually means that the first dead object is no longer an object.
    Instead, at that memory address, there is just a pointer to the
    first live object that the previous phase found. So, I think the
    comment is correct, but I understand why it is confusing. "First
    dead" here, refers to the variable
    <meta charset="utf-8">
    _first_dead.<br>
    <br>
    Maybe this would be clearer:<br>
    <br>
    "The first dead object is no longer an object. At that memory
    address, there is a pointer to the first live object that the
    previous phase found."<br>
    <br>
    Thanks,<br>
    Bengt<br>
    <br>
    <blockquote cite="mid:56FD67A9.2020401@oracle.com" type="cite">
      <br>
      Besides that the change looks good.
      <br>
      /Jesper
      <br>
      <br>
      <br>
      Den 31/3/16 kl. 17:46, skrev Bengt Rutisson:
      <br>
      <blockquote type="cite">
        <br>
        Hi everyone,
        <br>
        <br>
        Could I have a couple of reviews for this change?
        <br>
        <br>
        <a class="moz-txt-link-freetext" href="http://cr.openjdk.java.net/~brutisso/8153203/webrev.00/">http://cr.openjdk.java.net/~brutisso/8153203/webrev.00/</a>
        <br>
        <a class="moz-txt-link-freetext" href="https://bugs.openjdk.java.net/browse/JDK-8153203">https://bugs.openjdk.java.net/browse/JDK-8153203</a>
        <br>
        <br>
        The methods CompactibleSpace::scan_and_forward() and
        <br>
        PSMarkSweepDecorator::precompact() are more or less copy-paste
        versions of each
        <br>
        other. Both these use the LiveRange class.
        <br>
        <br>
        The LiveRange class is used to write to the mark word of a dead
        object. But no
        <br>
        one really cares that the LiveRange class is used. Instead it
        just gives an
        <br>
        extra level of indirection to already complicated code. We also
        do unnecessary
        <br>
        work to keep track of the end of the range even though no one
        ever gets the end
        <br>
        value.
        <br>
        <br>
        We also do duplicate stores to _first_dead in these methods.
        <br>
        <br>
        The methods that consume the values from the LiveRange
        <br>
        (CompactibleSpace::scan_and_adjust_pointers() and
        <br>
        PSMarkSweepDecorator::adjust_pointers()) don't use the LiveRange
        class. Instead
        <br>
        they use oop()->mark()->decode_pointer(), which is kind of
        odd considering that
        <br>
        this is normally used for forwarded objects.
        <br>
        <br>
        The code would be simpler if we just store and load directly
        from the memory
        <br>
        addresses we are working with.
        <br>
        <br>
        Improving the assert at the end of the
        <br>
        CompactibleSpace::scan_and_adjust_pointers() and
        <br>
        PSMarkSweepDecorator::adjust_pointers() methods to log the
        values of q and
        <br>
        prev_q will hopefully improve the chances of understanding
        JDK-8073321 if that
        <br>
        ever happens again.
        <br>
        <br>
        Thanks,
        <br>
        Bengt
        <br>
      </blockquote>
    </blockquote>
    <br>
  </body>
</html>