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

Add support in JVM TI, JDI, and Instrumentation for hidden classes

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Delivered
    • Icon: P2 P2
    • 15
    • None
    • hotspot

      From JVM's point of view, a hidden class is a normal class except the following:

         1. A hidden class has no initiating class loader and is not registered in any dictionary.
         2. A hidden class has a name containing an illegal character
            `Class::getName` returns `p.Foo/0x1234` whereas `GetClassSignature` returns "Lp/Foo.0x1234;".
         3. A hidden class is not modifiable, i.e. cannot be redefined or retransformed.
            JVM TI (IsModifableClass)[https://download.java.net/java/early_access/jdk15/docs/specs/jvmti.html#IsModifiableClass] returns false on a hidden class and VM anonymous class.

      VM anonymous class vs Hidden class

         - VM anonymous class is not registered in any dictionary and is also not modifiable.
         - There is no specification for VM anonymous class and hence never specified
           it has or does not have an initiating loader.
         - GetClassSignature returns "Lp/Foo/0x1234;" on a VM anonymous class with no illegal character
           whereas GetClassSignature returns "Lp/Foo.0x1234;" for a hidden class.
           VM anonymous class might be incorrectly interpreted as a normal class and
           `p.Foo` as the package name.

      The proposal is that hidden classes are deemed as "loaded" classes, i.e. essentially all derived classes. Hidden classes are not "treated" specially.

        There are no Sub-Tasks for this issue.

            sspitsyn Serguei Spitsyn
            mchung Mandy Chung
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: