Speaking of JIT compilers, we should start testing our assumptions against Graal in addition to the normal JIT compiler setup in OpenJDK. We could get better ideas of how small methods need to be to get inlined more efficiently.
On Mon, 16 Jul 2018 at 09:45, Gary Gregory <[email protected]> wrote: > I am -1 to this and this kind of change. Please revert. > > The JVM will in-line small methods for you. > > We have actually had work in the other direction: Making sure heavily used > methods a tiny so that the JVM will in-line them. I think the limit is.. 35 > bytes? > > Gary > > On Mon, Jul 16, 2018 at 8:39 AM <[email protected]> wrote: > > > Repository: logging-log4j2 > > Updated Branches: > > refs/heads/master 1d474bf63 -> ac0bf4bbe > > > > > > Inline private StringBuilders.escapeAndDecrement > > > > > > Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo > > Commit: > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/ac0bf4bb > > Tree: > http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/ac0bf4bb > > Diff: > http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/ac0bf4bb > > > > Branch: refs/heads/master > > Commit: ac0bf4bbe85cd4a07af195b3b001717a72888794 > > Parents: 1d474bf > > Author: Carter Kozak <[email protected]> > > Authored: Mon Jul 16 07:10:13 2018 -0400 > > Committer: Carter Kozak <[email protected]> > > Committed: Mon Jul 16 07:10:13 2018 -0400 > > > > ---------------------------------------------------------------------- > > .../logging/log4j/util/StringBuilders.java | 28 > +++++++++----------- > > 1 file changed, 13 insertions(+), 15 deletions(-) > > ---------------------------------------------------------------------- > > > > > > > > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ac0bf4bb/log4j-api/src/main/java/org/apache/logging/log4j/util/StringBuilders.java > > ---------------------------------------------------------------------- > > diff --git > > > a/log4j-api/src/main/java/org/apache/logging/log4j/util/StringBuilders.java > > > b/log4j-api/src/main/java/org/apache/logging/log4j/util/StringBuilders.java > > index 2a83b24..505abf1 100644 > > --- > > > a/log4j-api/src/main/java/org/apache/logging/log4j/util/StringBuilders.java > > +++ > > > b/log4j-api/src/main/java/org/apache/logging/log4j/util/StringBuilders.java > > @@ -197,28 +197,33 @@ public final class StringBuilders { > > final char c = toAppendTo.charAt(i); > > switch (c) { > > case '\b': > > - lastPos = escapeAndDecrement(toAppendTo, lastPos, > > 'b'); > > + toAppendTo.setCharAt(lastPos--, 'b'); > > + toAppendTo.setCharAt(lastPos--, '\\'); > > break; > > - > > case '\t': > > - lastPos = escapeAndDecrement(toAppendTo, lastPos, > > 't'); > > + toAppendTo.setCharAt(lastPos--, 't'); > > + toAppendTo.setCharAt(lastPos--, '\\'); > > break; > > > > case '\f': > > - lastPos = escapeAndDecrement(toAppendTo, lastPos, > > 'f'); > > + toAppendTo.setCharAt(lastPos--, 'f'); > > + toAppendTo.setCharAt(lastPos--, '\\'); > > break; > > > > case '\n': > > - lastPos = escapeAndDecrement(toAppendTo, lastPos, > > 'n'); > > + toAppendTo.setCharAt(lastPos--, 'n'); > > + toAppendTo.setCharAt(lastPos--, '\\'); > > break; > > > > case '\r': > > - lastPos = escapeAndDecrement(toAppendTo, lastPos, > > 'r'); > > + toAppendTo.setCharAt(lastPos--, 'r'); > > + toAppendTo.setCharAt(lastPos--, '\\'); > > break; > > > > case '"': > > case '\\': > > - lastPos = escapeAndDecrement(toAppendTo, lastPos, > c); > > + toAppendTo.setCharAt(lastPos--, c); > > + toAppendTo.setCharAt(lastPos--, '\\'); > > break; > > > > default: > > @@ -231,19 +236,12 @@ public final class StringBuilders { > > toAppendTo.setCharAt(lastPos--, 'u'); > > toAppendTo.setCharAt(lastPos--, '\\'); > > } else { > > - toAppendTo.setCharAt(lastPos, c); > > - lastPos--; > > + toAppendTo.setCharAt(lastPos--, c); > > } > > } > > } > > } > > > > - private static int escapeAndDecrement(StringBuilder toAppendTo, int > > lastPos, char c) { > > - toAppendTo.setCharAt(lastPos--, c); > > - toAppendTo.setCharAt(lastPos--, '\\'); > > - return lastPos; > > - } > > - > > public static void escapeXml(final StringBuilder toAppendTo, final > > int start) { > > for (int i = toAppendTo.length() - 1; i >= start; i--) { // > > backwards: length may change > > final char c = toAppendTo.charAt(i); > > > > > -- Matt Sicker <[email protected]>
