-
Sub-task
-
Resolution: Fixed
-
P4
-
23
-
b14
`create_new_if_for_predicate()` calls `clone_nodes_with_same_ctrl()` which does some data graph cloning by using the following three steps/passes:
1. Collect data nodes to clone by using a node filter
2. Clone the collected nodes (their data inputs still point to the old nodes)
3. Fix the cloned data inputs pointing to the old nodes to the cloned inputs by using an old->new mapping. In this pass, also fix the control inputs of any pinned data from the old uncommon projection to the new one.
This RFE should now extract the data node cloning steps to a separate class in order to reuse that when refactoring and fixing `create_bool_from_template_assertion_predicate()` which is currently hard to understand and contains a bug of endless processing in edge cases (seeJDK-8327110).
The extracted data node cloning class should do the following core cloning in two steps:
1. Take a collection of data nodes (the collection step is different in `clone_nodes_with_same_ctrl()` compared to `create_bool_from_template_assertion_predicate()` and can thus not be shared) and clone them. [Same as step 2 above]
2. Fix the cloned data inputs pointing to the old nodes to the cloned inputs by using an old->new mapping. [Same as first part of step 3 above but drop the second part which is specific to `clone_nodes_with_same_ctrl()`]
1. Collect data nodes to clone by using a node filter
2. Clone the collected nodes (their data inputs still point to the old nodes)
3. Fix the cloned data inputs pointing to the old nodes to the cloned inputs by using an old->new mapping. In this pass, also fix the control inputs of any pinned data from the old uncommon projection to the new one.
This RFE should now extract the data node cloning steps to a separate class in order to reuse that when refactoring and fixing `create_bool_from_template_assertion_predicate()` which is currently hard to understand and contains a bug of endless processing in edge cases (see
The extracted data node cloning class should do the following core cloning in two steps:
1. Take a collection of data nodes (the collection step is different in `clone_nodes_with_same_ctrl()` compared to `create_bool_from_template_assertion_predicate()` and can thus not be shared) and clone them. [Same as step 2 above]
2. Fix the cloned data inputs pointing to the old nodes to the cloned inputs by using an old->new mapping. [Same as first part of step 3 above but drop the second part which is specific to `clone_nodes_with_same_ctrl()`]
- relates to
-
JDK-8327110 Refactor create_bool_from_template_assertion_predicate() to separate class and fix identical cloning cases used for Loop Unswitching and Split If
-
- Resolved
-
-
JDK-8305638 Renaming and small clean-ups around predicates
-
- Resolved
-
-
JDK-8327111 Replace remaining usage of create_bool_from_template_assertion_predicate() which requires additional OpaqueLoop*Nodes transformation strategies
-
- Resolved
-