Barista is a Java [dis]assembler and class file manipulation library. It is part of the OCaml-Java project.
| Implementation | OCaml Java |
|---|
Recent releases


Release Notes: Java 1.7 is now used by default. A syntax extension for both 'exception pattern' (BARISTA_ERROR) and Unicode literals (@"string" and @'c') has been introduced. Bugs #73 (uniform handling of dependencies) and #83 (correct construction of constant pool w.r.t. LDC instructions) were fixed.


Release Notes: An update was made for Objective Caml 3.12.1 and Camomile 0.8.3. The "src" directory was reorganized. A major refactoring of the code was made (with an impact on the API). Executable names were changed to "barista.byte" and "barista.native". Peephole optimizations were made. Optimization of stack frames, exception tables, and "transitive" jumps was done. Full support for Java 1.7 was added. The manual was improved. The Java API has been removed.


Release Notes: This version introduces the "StackState" (for stack/locals manipulation), "ControlFlow" (for control flow information as a graph), and "Code" (for computation of stack/locals from instructions) modules. It also introduces "-flow" (to generate flow graph for a method) and "-generate-stack-infos" (to generate stack elements) command-line switches. Several bugs were fixed regarding support for ocamlfind, invalid padding size for switch instructions, and invalid handling of "@LineNumber".


Release Notes: This release has a new 'Traversal' module (mappers and iterators over class definitions). It includes handling of class file format versions.


Release Notes: This release has a bugfix for LDC, LDC_W, and INVOKEVIRTUAL instructions (which results in a change in the definition of the Instruction.t type). There are various fixes in Java sources (both code and documentation), enhanced tests, and the ability to load all classes from JDK 1.6.