CompiledIC requires invokeinterface fix for virtual java.lang.Object method

XMLWordPrintable

    • Type: Bug
    • Resolution: Fixed
    • Priority: P2
    • 1.4.2
    • Affects Version/s: 1.4.2
    • Component/s: hotspot
    • b16
    • generic
    • generic

      4364955 describes a case where an invokeinterface is being performed on an
      interface class but for a method which is declared on java.lang.Object. These
      methods are not in the itables and using invokeinterface behavior on them is
      not correct. Apple Computer has provided a test case which causes a compiled
      inline cache for such a method (toString) to become megamorphic; in debug mode
      an assertion failure fires during the inline cache update. The calling code in
      C1 and C2 needs to be able to detect this case and tell
      CompiledIC::set_to_megamorphic that the current call site is for an
      invokevirtual instead of an invokeinterface.

      A test case is attached. To reproduce the failure, unpack the tar file, cd to
      the jl1 directory, and run "lint inf/src src/main". Many exceptions are thrown
      before the crash occurs; these appear to be normal. At least with C1 the
      following CompileOnly flag may be used:

      -XX:CompileOnly=com/jutils/javalint/checks/CheckDebuggingOutput.visitStaticFieldAccess

            Assignee:
            Kenneth Russell (Inactive)
            Reporter:
            Kenneth Russell (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: