Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8274972

[lworld] TestLWorld.test151() fails with IR verification errors

XMLWordPrintable

      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.

            roland Roland Westrelin
            roland Roland Westrelin
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: