Relates :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
JDK-8241214 :
|
|
JDK-8241807 :
|
|
JDK-8242237 :
|
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.
|