Currently, the IGV printing uses the command-line option PrintIdealGraphLevel to determine what to print during compilation. The option allows the specification of increasingly verbose print levels, ranging from 0 (print nothing) to 5 (print all).
It could be beneficial to make the IGV printing more modular by not only having print levels, but also print groups. The motivation for print groups is that you, when debugging or working on some feature, often want verbose printing only for a specific compiler phase. For example, after every analysis step in CCP, after every effective IGVN step (current level 4), and after parsing every bytecode (current level 5). The command line for doing basic level 1 printing and also print every step in the CCP analysis could, e.g., look like
-XX:PrintIdealGraph=1,ccp
The scope of this issue is to (1) investigate what we can do and what the command-line format should look like, and (2) to implement it. Some potential features for the command-line format, just to give an idea:
- Allow specifying a combination of levels and one or more groups (set union, example above with 1,ccp).
- Allow removing parts of the previously specified levels/groups (set difference). For example, -XX:PrintIdealGraph=5,~ccp to print everything at level 5 except the parts for the CCP analysis (assuming ccp ⊆ 5).