-
Sub-task
-
Resolution: Fixed
-
P4
-
23
-
b25
Currently, a Template Assertion Predicate and an Initialized Assertion Predicate both use an Opaque4 node. They could also both use a Halt Node on the uncommon proj. To distinguish them, one need to find the OpaqueLoop* nodes.
To simplify that, I introduce a new OpaqueInitializedAssertionPredicate node for Initialized Assertion Predicates. An additional benefit compared to Opaque4 nodes is that we do not need a second input to store the constant that's gonna be used for product builds - we implicitly know that the check is always true and can later replace it with a true constant.
I will not rename or refactor the usage of Opaque4 nodes here. I want to later replace the Template Assertion Predicate If nodes by a dedicated TemplateAssertionPredicateNode. Then we can get rid of the Opaque4 node for Assertion Predicates all together.
To simplify that, I introduce a new OpaqueInitializedAssertionPredicate node for Initialized Assertion Predicates. An additional benefit compared to Opaque4 nodes is that we do not need a second input to store the constant that's gonna be used for product builds - we implicitly know that the check is always true and can later replace it with a true constant.
I will not rename or refactor the usage of Opaque4 nodes here. I want to later replace the Template Assertion Predicate If nodes by a dedicated TemplateAssertionPredicateNode. Then we can get rid of the Opaque4 node for Assertion Predicates all together.
- relates to
-
JDK-8333644 C2: assert(is_Bool()) failed: invalid node class: Phi
- Resolved
-
JDK-8333252 C2: assert(assertion_predicate_has_loop_opaque_node(iff)) failed: must find OpaqueLoop* nodes
- Resolved
-
JDK-8333394 C2: assert(bol->is_Opaque4() || bol->is_OpaqueInitializedAssertionPredicate()) failed: Opaque node of non-null-check or of Initialized Assertion Predicate
- Resolved