A green-hand in Java.
I'm using Azul System's Falcon JIT compiler. Is it possible to dump decision of choosing what optimization passes to run on the hotspot code?
Moreover, in Oracle's JVM, is it possible to add option to java
to show what optimizaiton passes are chosen to optimize the hotspot code?
I'm not familiar with java's toolchain and infrastructure literally.
edit:
Here optimization passes I mean are Transforming passes like function inlining, dead code elimination, constant propogation and some Analysis passes like callgraph analysis for interprocedure optimization and escape analysis for allocating objects in stack and eliminating synchronization operation.
My purpose is to learn some transformations Falcon compiler does in the LLVM IR. By using java -XX:FalconIRDumpRoot=./falcon-ir/ -XX:FalconDumpIRToDiskOf=* myClassName
, Falcon compiler can dump .ll
and .opt.ll
if hotspots are observed. The former LLVM IR is not optimized while the latter IR is optimized using some intrinsics introduced by Azul's LLVM fork which is called "Orca" to replace the init
call for object initilization. Since I can use -debug-pass-manager
(for new pass manager) or --debug-pass=Structure
(for legacy pass manager) in LLVM to print what optimization passes are used during the compilation, I wonder whether Falcon compiler or Azul JVM also provide such options to show what optimization Falcon decide to use for hotspot code.
the documentation of Falcon compiler only provide some option to dump IR for Azul Support to assist in analyzing performance issues. It's a blackbox. And I have just find some technique reports for some passes, like Escape Analysis and VM callbacks to acquire information from VM. Is there any other JIT compiler like Falcon whose backend is also based on LLVM and using GC to manage memory and most importantly able to print optimization decision when running? Language is not limited to Java.
Printing compilation levels and tracing particular compilation phases are both wanted, since I'm now using Falcon as a blackbox.