<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <br>
    <blockquote type="cite" cite="mid:CANSoFxudWhphg05rBBQ_ptL=yRZ=eC0S=V0R-TLpR17wcCDHHg@mail.gmail.com">
      <div dir="ltr">
        <div>
          <div class="gmail_quote">
            <div> </div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
              0.8ex;border-left:1px solid
              rgb(204,204,204);padding-left:1ex">
              <div>We can exclude final instance methods declared in the
                same class if the same analysis of the method
                (recursively) shows no escape of `this` (this is the *
                in the first bullet above.)<br>
              </div>
            </blockquote>
            <div>
              <div> </div>
              <div>
                <div>Neat.</div>
                <div><br>
                  <div>You could also analyze static methods in the
                    class to verify non-escape if they were invoked with
                    'this' as a parameter... it's more or less the same
                    situation.</div>
                  <div><br>
                  </div>
                  <div>Any code in the compilation unit that is directly
                    invoked by the constructor and that can't possibly
                    be overridden could in theory be fair game for this
                    non-escape analysis.</div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    Right, more of the same trick.  The key is not crossing source
    files, since that is over the analysis horizon.  <br>
    <br>
    <br>
    <blockquote type="cite" cite="mid:CANSoFxudWhphg05rBBQ_ptL=yRZ=eC0S=V0R-TLpR17wcCDHHg@mail.gmail.com">
      <div dir="ltr">
        <div>
          <div class="gmail_quote">
            <div>
              <div>
                <div>
                  <div><br>
                  </div>
                </div>
              </div>
              <blockquote class="gmail_quote" style="margin:0px 0px 0px
                0.8ex;border-left:1px solid
                rgb(204,204,204);padding-left:1ex">
                <div> Inner class creation is a similar story as calling
                  final methods in the same class; we can do a similar
                  analysis of the inner class constructor to verify
                  non-escape.<br>
                </div>
              </blockquote>
            </div>
            <br>
            <div>
              <div>But the inner class <span style="font-family:monospace">Outer.Inner</span>'s
                constructor is going to say <span style="font-family:monospace">this.$0 = Outer.this</span>,
                which is an escape for <span style="font-family:monospace">Outer.this</span>,
                right?<br>
              </div>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    Only if the inner class instance escapes.  But we're definitely
    getting into the "advanced analysis tricks" territory now.<br>
    <br>
    <br>
  </body>
</html>