[16] RFR(S): 8251093: Improve C1 register allocator logging and debugging support
Christian Hagedorn
christian.hagedorn at oracle.com
Fri Aug 14 12:10:50 UTC 2020
Hi
Please review the following enhancement for C1:
https://bugs.openjdk.java.net/browse/JDK-8251093
http://cr.openjdk.java.net/~chagedorn/8251093/webrev.00/
While I was working on JDK-8249603 [1], I added some additional
debugging and logging code which helped to figure out what was going on.
I think it would be useful to have this code around for the analysis of
future C1 register allocator bugs.
This RFE adds (everything non-product code):
- find_interval(number): Can be called like that from gdb anywhere to
find an interval with the given number.
- Interval::print_children()/print_parent(): Useful when debugging with
gdb to quickly show the split children and parent.
- LinearScan::print_reg_num(number): Prints the register or stack
location for this register number. This is useful in some places
(logging with TraceLinearScanLevel set) where it just printed a number
which first had to be manually looked up in other logs.
I additionally did some cleanup of the touched code.
We could additionally split the TraceLinearScanLevel flag into separate
flags related to the different phases of the register allocation
algorithm. It currently just prints too much details on the higher
levels. You often find yourself being interested in a specific part of
the algorithm and only want to know more details there. To achieve that
you now you have to either handle all the noise or manually
disable/enable other logs. We could file an RFE to clean this up if it's
worth the effort - given that there are not many new issues filed for C1
register allocation today.
Thank you!
Best regards,
Christian
[1] https://bugs.openjdk.java.net/browse/JDK-8251093
More information about the hotspot-compiler-dev
mailing list