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

NPG: move method annotations

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P3
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: hs25
    • Component/s: hotspot
    • Subcomponent:
    • Resolved In Build:
      b19

      Backports

        Description


        This is related to 8003419. The annotations are allocated in Metaspace during class file parsing and pointers to them are carried around through the parser. In order to clean these up, you'd have to have collect these pointers somewhere so they can be cleaned up if the parse fails.

        Instead, attach method annotations to the constMethod so that they can be cleaned up if/when the ConstMethod is cleaned up.

        If any annotations exists for any method, an Array<u1> is created for that method, but it's put into an Array<Array<u1>*> (an array of these arrays) where there's an entry for each method in the klass, so the other methods would have a pointer allocated for it whether needed or not. There are 3 of these array of arrays in the type Annotations, and an Annotations* object for type annotations, which are so far created infrequently.

        The fix is to move the 4 types of method annotations to embedded pointers in the ConstMethod if they are needed and add a flag to indicate whether they are present. You could embed the annotations directly, but the length has to be pulled out as an 'int' from unaligned storage, and the bit math is getting to be too fragile without a redesign.

        The real purpose of this change is to make the annotations allocated in Metaspace easier to find and clean up if class file parsing fails.

          Attachments

            Issue Links

              Activity

                People

                Assignee:
                coleenp Coleen Phillimore
                Reporter:
                coleenp Coleen Phillimore
                Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                  Dates

                  Created:
                  Updated:
                  Resolved: