Hi Claes, did you try instead of having a field 'internal' to inline the class check (this.getClass() == PrintStream.class) at every call site you are reading that field ?
for a method like println(), the VM has to do a class check (if CHA is defeated) before entering the method println so the JIT might be able to remove the check this.getClass() == PrintStream.class because it already know at that point that the current class is PrintStream. happy new year, Rémi ----- Mail original ----- > De: "Claes Redestad" <claes.redes...@oracle.com> > À: "Roger Riggs" <roger.ri...@oracle.com>, "core-libs-dev" > <core-libs-dev@openjdk.java.net> > Envoyé: Mercredi 2 Janvier 2019 09:44:20 > Objet: Re: RFR: 8215412: Optimize PrintStream.println methods > Hi, > > new webrev: > > http://cr.openjdk.java.net/~redestad/8215412/jdk.02/ > > - Adds a forgotten String.valueOf in println(String), making sure all > methods are semantically the same for > - Remove the isInternal method and use only exact match with > PrintStream.class to determine whether to use the optimized paths. > > As before: > > On 2018-12-14 21:22, Claes Redestad wrote: >> Same performance characteristics in the simple tests I've used to >> verify this, and no measurable regression (but no speed-up) for classes >> overriding PrintStream. > > I've withdrawn the related CSR, since it's not relevant for this > implementation as it doesn't observably alter behavior of types > inheriting from PrintStream. > > Thanks! > > /Claes