1 / 19

Readings on Instrumentation, Profiling, and Tracing

Readings on Instrumentation, Profiling, and Tracing. IPT. Seminar presentation by Alessandra Gorla University of Lugano December 7, 2006. Java Bytecode Analysis and Optimization. Soot BCEL JABA. Overview. Introduction Tools Soot - a Java Bytecode Optimization Framework

harlan
Download Presentation

Readings on Instrumentation, Profiling, and Tracing

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Readings on Instrumentation, Profiling, and Tracing IPT Seminar presentation by Alessandra Gorla University of Lugano December 7, 2006

  2. Java Bytecode Analysis and Optimization Soot BCEL JABA

  3. Overview • Introduction • Tools • Soot - a Java Bytecode Optimization Framework • BCEL - Byte Code Engineering Library • JABA - JAva Bytecode Analyzer

  4. Introduction • Java application are usually much slower than C and C++ applications. • Possible approaches to solve the problem • Bytecode optimizers • Significant optimizations. Create new classes • Bytecode annotators • Create new classes with annotations • Bytecode manipulation tools • Manipulate bytecode in its original form • Java application packagers • Compress and/or obfuscate code • Java native compilers • Compile Java to native executables

  5. Soot • Bytecode optimizer framework • Intraprocedural optimization • Whole program optimization • Three intermediate representations • Baf: streamlined representation of the bytecode • Jimple: typed 3-address representation • Grimp: Jimple aggregated version

  6. Baf • Constant pool abstraction • Give type to dup and swap instructions • Local vars are given explicit names

  7. Jimple • 3- address code representation (not for jsr) • Stack is replaced by additional local vars (prefixed by $)

  8. Grimp • Much easier to read than Baf of Jimple • Has a representation of the new operator • Aggregate expressions

  9. Optimization framework

  10. Optimizations • Intraprocedural optimizations • Constant propagation and folding • Conditional and unconditional branch elimination • Copy propagation • Dead assignment and unreachable code elimination • Expression aggregation • Whole program optimization (call graph) • Method inlining • (Devirtualization of method calls)

  11. Experiments

  12. BCEL • Bytecode manipulation library • Written in Java • Opensource • Offers capabilities to inspect, edit and create Java binary classes • Package to represent class • Package to dynamically generate and modify classes • Code examples, utilities

  13. BCEL Class representation

  14. BCEL Class editing

  15. BCEL - Optimization example • Push 0 or 1 to the stack to evaluate boolean expressions • Combination of boolean expressions: • Keep pushing 0s and 1s to the stack • Algorithm to apply: • Replace IfInstruction branch target with ifne branch target

  16. BCEL - Optimization example 5: aload_0 6: ifnull #13 9: iconst_0 10: goto #14 13: iconst_1 14: nop 15: ifne #36 18: iload_1 19: iconst_2 20: if_icmplt #27 23: iconst_0 24: goto #28 27: iconst_1 28: nop 29: ifne #36 32: iconst_0 33: goto #37 36: iconst_1 37: nop 38: ifeq #52 41: getstatic System.out 44: ldc "Ooops" 46: invokevirtual println 52: return 10: aload_0 11: ifnull #19 14: iload_1 15: iconst_2 16: if_icmpge #27 19: getstatic System.out 22: ldc "Ooops" 24: invokevirtual println 27: return if((a == null) || (i < 2)) System.out.println("Ooops");

  17. JABA • Bytecode analyzer library • Graphs representation • Control Flow Graph • Class Control Flow Graph • Interclass Control Flow Graph

  18. JABA - CFG public void metodo(){ int x = 2; int c = 3; while(x > 0) { c++; x--; } }

  19. JABA - ICFG

More Related