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

Replacement API for Unsafe::ensureClassInitialized

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Fixed
    • Icon: P3 P3
    • 15
    • None
    • core-libs
    • None

      A class may also be initialized as a result of execution of other bytecodes such as getstatic, new, putstatic, invokestatic etc as specified in JVMS 5.5.

      `Class::forName` and `Unsafe::ensureClassInitialized` are existing workaround to initialize a Class. It's cumbersome to use Class::forName to initialize a class and many JDK classes use `Unsafe::ensureClassInitialized` rather than Class::forName to initialize a class.

      One typical use of `Unsafe::ensureClassInitialized` to force class initialization is to enable JIT inlining as well as the method handle can avoid the class initialization barrier.

      The other use of `Unsafe::ensureClassInitialized` to force class initialization is to ensure that private static members are initialized and published to other classes (outside its nest) to access, e.g. shared secrets.

            mchung Mandy Chung (Inactive)
            mchung Mandy Chung (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: