<div dir="ltr"><div dir="ltr">Following up on the discussion below with some more concrete data...<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Dec 15, 2022 at 11:00 AM Archie Cobbs <<a href="mailto:archie.cobbs@gmail.com" target="_blank">archie.cobbs@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">On Wed, Nov 9, 2022 at 12:06 PM Archie Cobbs <<a href="mailto:archie.cobbs@gmail.com" target="_blank">archie.cobbs@gmail.com</a>> wrote:</div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">I'll try to come up with a concrete but simple starting point.</div></blockquote><div><br></div><div>It's taken me a little while, but I finally have a prototype for 'this' escape warnings ready to play with.</div></div></div></blockquote><div><br></div>Here are some more precise stats on what happens when you enable the 'this' escape warning for the openjdk build.</div><div class="gmail_quote"><br></div><div class="gmail_quote">The table below shows the number of new 'this' escape warnings generated, and the total number of Java files, in each module:<br></div><div class="gmail_quote"><br></div><div class="gmail_quote" style="margin-left:40px"><span style="font-family:monospace">#WARNINGS #FILES    MODULE<br>161       3168      java.base<br>0         127       java.compiler<br>0         18        java.datatransfer<br>62        1848      java.xml<br>0         18        java.prefs<br>160       2740      java.desktop<br>0         10        java.instrument<br>0         35        java.logging<br>25        330       java.management<br>0         30        java.security.sasl<br>14        106       java.rmi<br>5         199       java.naming<br>0         16        java.management.rmi<br>21        142       java.net.http<br>0         15        java.scripting<br>0         5         java.transaction.xa<br>0         212       java.security.jgss<br>0         271       java.xml.crypto<br>0         77        java.sql<br>7         56        java.sql.rowset<br>0         1         <a href="http://java.se" target="_blank">java.se</a><br>0         22        java.smartcardio<br>3         18        jdk.accessibility<br>0         60        jdk.internal.jvmstat<br>0         15        jdk.attach<br>0         147       jdk.charsets<br>2         14        jdk.zipfs<br>55        355       jdk.compiler<br>0         35        <a href="http://jdk.crypto.ec" target="_blank">jdk.crypto.ec</a><br>0         76        jdk.crypto.cryptoki<br>4         68        jdk.dynalink<br>0         3         jdk.internal.ed<br>0         3         jdk.editpad<br>19        940       jdk.hotspot.agent<br>7         59        jdk.httpserver<br>0         5         jdk.incubator.concurrent<br>0         50        jdk.incubator.vector<br>3         104       jdk.internal.le<br>0         52        jdk.internal.opt<br>11        209       <a href="http://jdk.internal.vm.ci" target="_blank">jdk.internal.vm.ci</a><br>0         1         jdk.internal.vm.compiler<br>0         1         jdk.internal.vm.compiler.management<br>0         30        jdk.jartool<br>5         245       jdk.javadoc<br>0         40        jdk.jcmd<br>0         24        jdk.management<br>0         30        jdk.management.agent<br>30        64        jdk.jconsole<br>10        139       jdk.jdeps<br>0         1         jdk.jdwp.agent<br>24        254       jdk.jdi<br>0         263       jdk.jfr<br>0         89        jdk.jlink<br>0         56        jdk.jpackage<br>6         97        jdk.jshell<br>0         4         jdk.jsobject<br>3         11        jdk.jstatd<br>0         1873      jdk.localedata<br>0         15        jdk.management.jfr<br>0         16        jdk.naming.dns<br>0         8         jdk.naming.rmi<br>0         9         <a href="http://jdk.net" target="_blank">jdk.net</a><br>0         2         jdk.nio.mapmode<br>0         11        jdk.random<br>0         26        jdk.sctp<br>0         30        jdk.security.auth<br>0         16        jdk.security.jgss<br>0         9         jdk.unsupported<br>0         8         jdk.unsupported.desktop<br>0         94        jdk.xml.dom</span></div><div class="gmail_quote"><br></div><div class="gmail_quote">So fortunately it looks feasible to address these with @SuppressWarnings("this-escape") annotations.</div><div class="gmail_quote"><br><div>Adding them is probably a good thing in its own right, 
because they would serve as new "Heads up for possible 'this' escape" 
markers in the code where there were none before, especially because this gotcha can be pretty hard to spot.<font color="#888888"><br></font></div></div><div><br></div><div>I'll work on refining the 'this' escape patch to use @SuppressWarnings instead of build flags, and then update this thread when that's done.<br></div><div><br></div><div>-Archie<br></div><div><br></div>-- <br><div dir="ltr">Archie L. Cobbs<br></div></div>