Details
-
Enhancement
-
Resolution: Fixed
-
P4
-
16
-
b13
Description
In the process of understanding and tracing back the problem of JDK-8249603, I used some additional debugging and logging code. In this RFE, I want to add this code and some additional enhancements to simplify the debugging of another C1 register allocator bug in the future.
Summary:
- 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.
Possible future work (not covered in this RFE):
- The TraceLinearScanLevel flag is too generic and prints a lot of things (especially at level 4). It would be useful to split it into separate flags to only print a subset of the entire linear scan register allocator algorithm or a specific part but with more details.
Summary:
- 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.
Possible future work (not covered in this RFE):
- The TraceLinearScanLevel flag is too generic and prints a lot of things (especially at level 4). It would be useful to split it into separate flags to only print a subset of the entire linear scan register allocator algorithm or a specific part but with more details.
Attachments
Issue Links
- relates to
-
JDK-8252404 compiler/c1/TestTraceLinearScanLevel.java fails with release VMs
-
- Resolved
-
-
JDK-8253588 C1: assert(false) failed: unknown register on x86_32 only with -XX:+TraceLinearScanLevel=4
-
- Resolved
-
-
JDK-8255245 C1: Fix output of -XX:+PrintCFGToFile to open it with visualizer
-
- Resolved
-
-
JDK-8249603 C1: assert(has_error == false) failed: register allocation invalid
-
- Resolved
-