1. 29 Dec, 2017 1 commit
    • Eric Bruneton's avatar
      Improve the memory benchmarks by using the JMH framework. · 7a4f0045
      Eric Bruneton authored
      Results:
      Benchmark                                          Mode  Cnt        Score      Error  Units
      MemoryBenchmark.newClassNode_asm4_0               thrpt    5      196,689 ±  123,711  ops/s
      MemoryBenchmark.newClassNode_asm4_0:+memory.used  thrpt    5  2798238,715 ± 3602,377  bytes
      MemoryBenchmark.newClassNode_asm5_0               thrpt    5      158,445 ±  111,103  ops/s
      MemoryBenchmark.newClassNode_asm5_0:+memory.used  thrpt    5  2693396,799 ± 4985,178  bytes
      MemoryBenchmark.newClassNode_asm6_0               thrpt    5      140,053 ±   95,105  ops/s
      MemoryBenchmark.newClassNode_asm6_0:+memory.used  thrpt    5  2688716,368 ± 5513,428  bytes
      MemoryBenchmark.newClassNode_asm6_1               thrpt    5      165,112 ±   94,423  ops/s
      MemoryBenchmark.newClassNode_asm6_1:+memory.used  thrpt    5  2690737,112 ± 4993,252  bytes
      MemoryBenchmark.newClass_asm4_0                   thrpt    5      236,938 ±  183,190  ops/s
      MemoryBenchmark.newClass_asm4_0:+memory.used      thrpt    5  1823050,423 ± 2051,755  bytes
      MemoryBenchmark.newClass_asm5_0                   thrpt    5      266,850 ±    3,303  ops/s
      MemoryBenchmark.newClass_asm5_0:+memory.used      thrpt    5  1847376,794 ± 1919,159  bytes
      MemoryBenchmark.newClass_asm6_0                   thrpt    5      238,714 ±  197,099  ops/s
      MemoryBenchmark.newClass_asm6_0:+memory.used      thrpt    5  1848268,051 ± 2092,874  bytes
      MemoryBenchmark.newClass_asm6_1                   thrpt    5      245,291 ±  163,061  ops/s
      MemoryBenchmark.newClass_asm6_1:+memory.used      thrpt    5  1844124,244 ± 2064,886  bytes
      7a4f0045
  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