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

Simplify processing of hidden class names

XMLWordPrintable

    • jfr
    • b13

        The name symbol for hidden (anonymous) classes has evolved. Initially, it consisted of only a base class name, e.g., "java/lang/invoke/LambdaForm$BMH", so JFR had to introduce a scheme for disambiguating one anonymous class from another.

        The scheme (which still exists in JFR) appends the Java class mirror's hashcode to the base class name, e.g., "java/lang/invoke/LambdaForm$BMH/22626602".

        With JDK-8238358, the disambiguation of hidden class names is now intrinsic to the processing by the ClassFileParser. This is done by appending the InstanceKlass address to the base class name, e.g., "java/lang/invoke/LambdaForm$BMH+0x000000001d190000".

        An argument can be made that JFR specialization for hidden (anonymous) classes may no longer be necessary. Indeed, the result now involves a "double" disambiguation: e.g., "java/lang/invoke/LambdaForm$BMH+0x000000001d190000/231202600".

        It is now possible to simplify the handling of hidden (anonymous) class names, which avoids using the Java mirror oop. We might want to keep the "/" construct as that might be an implicit invariant on users' expectations (quickly done by replacing "+" with "/").

              mgronlun Markus Grönlund
              mgronlun Markus Grönlund
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated:
                Resolved: