-
Bug
-
Resolution: Fixed
-
P4
-
repo-valhalla
The test failure is caused by this:
bool LateInlineVirtualCallGenerator::do_late_inline_check(Compile* C, JVMState* jvms) {
// Method handle linker case is handled in CallDynamicJavaNode::Ideal().
// Unless inlining is performed, _override_symbolic_info bit will be set in DirectCallGenerator::generate().
// Implicit receiver null checks introduce problems when exception states are combined.
Node* receiver = jvms->map()->argument(jvms, 0);
const Type* recv_type = C->initial_gvn()->type(receiver);
if (recv_type->maybe_null()) {
return false;
}
That's new code with the upcoming merge. receiver should be not null (it's a InlineTypePtrNode) I think but that type is lost on the way. The InlineTypePtrNode is created when pushed down through Phis. The oop input of that InlineTypePtrNode is a Phi. That Phi is not created with type NotNull. It's actually a chain of Phis with all non Phi inputs NotNull but because it's a loop, IGVN doesn't prove that the Phis are NotNull.
bool LateInlineVirtualCallGenerator::do_late_inline_check(Compile* C, JVMState* jvms) {
// Method handle linker case is handled in CallDynamicJavaNode::Ideal().
// Unless inlining is performed, _override_symbolic_info bit will be set in DirectCallGenerator::generate().
// Implicit receiver null checks introduce problems when exception states are combined.
Node* receiver = jvms->map()->argument(jvms, 0);
const Type* recv_type = C->initial_gvn()->type(receiver);
if (recv_type->maybe_null()) {
return false;
}
That's new code with the upcoming merge. receiver should be not null (it's a InlineTypePtrNode) I think but that type is lost on the way. The InlineTypePtrNode is created when pushed down through Phis. The oop input of that InlineTypePtrNode is a Phi. That Phi is not created with type NotNull. It's actually a chain of Phis with all non Phi inputs NotNull but because it's a loop, IGVN doesn't prove that the Phis are NotNull.
- relates to
-
JDK-8275400 [lworld] "Phi not null but a possible null was seen" assert failures
- Closed