-
Enhancement
-
Resolution: Not an Issue
-
P4
-
9, 10
Parse::jump_switch_ranges takes a set of switch-range data derived from lookupswitch and tableswitch bytecodes, and generates a decision tree and/or jump tables for the switch.
It should also accept MethodData branch profile information (if available) and apply that profile information appropriately. At least it should use the data in each call to jump_if_true_fork to push an estimated branch frequency into the IfNode, as Parse::do_if does. Better yet, it should use frequency data (when uneven) to balance the decision tree, so that, along each likely trace, each test-and-branch produces as much of a bit of information as possible.
Note that low-tier code *produces* branch frequency information; this bug says that high-tier code does not *use* it.
It should also accept MethodData branch profile information (if available) and apply that profile information appropriately. At least it should use the data in each call to jump_if_true_fork to push an estimated branch frequency into the IfNode, as Parse::do_if does. Better yet, it should use frequency data (when uneven) to balance the decision tree, so that, along each likely trace, each test-and-branch produces as much of a bit of information as possible.
Note that low-tier code *produces* branch frequency information; this bug says that high-tier code does not *use* it.
- relates to
-
JDK-8143859 branch nests testing for intervals should be converted to internal switch ranges and rebalanced
- Open
-
JDK-8200303 C2 should leverage profiling for lookupswitch/tableswitch
- Resolved
-
JDK-8024327 Possible improvement of the Lookup Switch implementation in C2
- Closed