1. 28 Dec, 2017 1 commit
    • Eric Bruneton's avatar
      Improve the class generation benchmark by using the JMH framework. · fd883951
      Eric Bruneton authored
      Results:
      Benchmark                             Mode  Cnt       Score      Error  Units
      GeneratorBenchmark.asm4_0            thrpt   20  753119,277 ± 1890,328  ops/s
      GeneratorBenchmark.asm5_0            thrpt   20  729869,073 ± 2328,108  ops/s
      GeneratorBenchmark.asm6_0            thrpt   20  728330,694 ± 2244,506  ops/s
      GeneratorBenchmark.asm6_1            thrpt   20  847886,985 ± 2767,943  ops/s
      GeneratorBenchmark.aspectJBcel       thrpt   20  274363,976 ± 1171,862  ops/s
      GeneratorBenchmark.bcel              thrpt   20  196715,573 ±  797,970  ops/s
      GeneratorBenchmark.cojen             thrpt   20  191329,604 ±  898,662  ops/s
      GeneratorBenchmark.csgBytecode       thrpt   20  325157,840 ± 1065,897  ops/s
      GeneratorBenchmark.gnuByteCode       thrpt   20  245634,219 ± 1061,192  ops/s
      GeneratorBenchmark.jclassLib         thrpt   20  280383,253 ±  973,727  ops/s
      GeneratorBenchmark.jiapi             thrpt   20   75012,298 ±  325,473  ops/s
      GeneratorBenchmark.mozillaClassFile  thrpt   20  303011,386 ± 1629,259  ops/s
      fd883951
  2. 26 Dec, 2017 1 commit
  3. 23 Dec, 2017 1 commit
  4. 22 Dec, 2017 3 commits
  5. 20 Dec, 2017 2 commits
  6. 19 Dec, 2017 1 commit
  7. 18 Dec, 2017 4 commits
  8. 17 Dec, 2017 3 commits
  9. 16 Dec, 2017 4 commits
  10. 10 Dec, 2017 7 commits
  11. 09 Dec, 2017 2 commits
    • Eric Bruneton's avatar
    • Eric Bruneton's avatar
      Improve the code quality of Label and add a Constants interface for internal constants. · 617f4f38
      Eric Bruneton authored
      In more details:
      - add a Constants interface to avoid some magic constants in the code
      - remove the INSTRUCTION_TYPES indirection in ClassReader, and use (table)switch statements on raw opcode values instead
      - remove unnecessary flags BASIC_BLOCK_CHANGED, VISITED and VISITED2 in Label (replaced with a simpler algorithm using an EMPTY_LIST sentinel), as well as the redundant STORE flag
      - add an otherLineNumbers field in Label to store line numbers in a cleaner way than with nextChangedBlock
      - remove the inputStackTop field in Label, which was used to store different values depending on the compute options or basic block types. Replace it with new inputStackSize and outputStackSize fields in Label, and a new (private) outputStackStart field in Frame.
      - use 'short' fields when possible in Frame and Label. Object size in memory with OpenJDK 1.8.0, measured with https://www.javaworld.com/article/2077496/testing-debugging/java-tip-130--do-you-know-your-data-size-.html, decreased from 64 to 56 bytes for Label (despite the added fields), and stayed unchanged (48 bytes) for Frame (despite the added field outputStackStart).
      - split the large visitMaxs method in two smaller methods.
      - performance is unchanged or improved: 1.02-1.04 speedup for ClassReader, no change for ClassReader+ClassWriter, 1.11 speedup for CR+CW with compute maxs, 1.05 speedup for CR+CW with compute frames.
      617f4f38
  12. 03 Dec, 2017 2 commits
  13. 26 Nov, 2017 4 commits
  14. 25 Nov, 2017 5 commits