]> source.dussan.org Git - jgit.git/commit
[performance] Remove synthetic access$ methods in dfs, diff and merge 74/59174/1
authorAndrey Loskutov <loskutov@gmx.de>
Wed, 28 Oct 2015 20:17:43 +0000 (21:17 +0100)
committerAndrey Loskutov <loskutov@gmx.de>
Wed, 28 Oct 2015 20:18:23 +0000 (21:18 +0100)
commit3afdaf0b3de90f4eec2933cd6f33e285d820984b
treec8e3d0f185967af89962945bdd27cd51cfb6929c
parent260e092e7966e15a8778af1d5e6bec89689f7377
[performance] Remove synthetic access$ methods in dfs, diff and merge

Java compiler must generate synthetic access methods for private methods
and fields of the enclosing class if they are accessed from inner
classes and vice versa.

While invisible in the code, those synthetic access methods exist in the
bytecode and seem to produce some extra execution overhead at runtime
(compared with the direct access to this fields or methods), see
https://git.eclipse.org/r/58948/.

By removing the "private" access modifier from affected methods and
fields we help compiler to avoid generation of synthetic access methods
and hope to improve execution performance.

To validate changes, one can either use javap or use Bytecode Outline
plugin in Eclipse. In both cases one should look for "synthetic
access$<number>" methods at the end of the class and inner class files
in question - there should be none.

NB: don't mix this "synthetic access$" methods up with "public synthetic
bridge" methods generated to allow generic method override return types.

Change-Id: I94fb481b68c84841c1db1a5ebe678b13e13c962b
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
org.eclipse.jgit/src/org/eclipse/jgit/diff/ContentSource.java
org.eclipse.jgit/src/org/eclipse/jgit/diff/HistogramDiff.java
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsInserter.java
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/InMemoryRepository.java
org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeResult.java