public final class sun.font.StrikeCache
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: sun.font.StrikeCache
  super_class: java.lang.Object
{
  static final sun.misc.Unsafe unsafe;
    descriptor: Lsun/misc/Unsafe;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static java.lang.ref.ReferenceQueue refQueue;
    descriptor: Ljava/lang/ref/ReferenceQueue;
    flags: (0x0008) ACC_STATIC

  static int MINSTRIKES;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int recentStrikeIndex;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static sun.font.FontStrike[] recentStrikes;
    descriptor: [Lsun/font/FontStrike;
    flags: (0x0008) ACC_STATIC

  static boolean cacheRefTypeWeak;
    descriptor: Z
    flags: (0x0008) ACC_STATIC

  static int nativeAddressSize;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int glyphInfoSize;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int xAdvanceOffset;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int yAdvanceOffset;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int boundsOffset;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int widthOffset;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int heightOffset;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int rowBytesOffset;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int topLeftXOffset;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int topLeftYOffset;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int pixelDataOffset;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static long invisibleGlyphPtr;
    descriptor: J
    flags: (0x0008) ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=1, args_size=0
         0: .line 65
            invokestatic sun.misc.Unsafe.getUnsafe:()Lsun/misc/Unsafe;
            putstatic sun.font.StrikeCache.unsafe:Lsun/misc/Unsafe;
         1: .line 67
            invokestatic sun.java2d.Disposer.getQueue:()Ljava/lang/ref/ReferenceQueue;
            putstatic sun.font.StrikeCache.refQueue:Ljava/lang/ref/ReferenceQueue;
         2: .line 91
            bipush 8
            putstatic sun.font.StrikeCache.MINSTRIKES:I
         3: .line 92
            iconst_0
            putstatic sun.font.StrikeCache.recentStrikeIndex:I
         4: .line 132
            bipush 11
            newarray 11
            astore 0 /* nativeInfo */
        start local 0 // long[] nativeInfo
         5: .line 133
            aload 0 /* nativeInfo */
            invokestatic sun.font.StrikeCache.getGlyphCacheDescription:([J)V
         6: .line 136
            aload 0 /* nativeInfo */
            iconst_0
            laload
            l2i
            putstatic sun.font.StrikeCache.nativeAddressSize:I
         7: .line 137
            aload 0 /* nativeInfo */
            iconst_1
            laload
            l2i
            putstatic sun.font.StrikeCache.glyphInfoSize:I
         8: .line 138
            aload 0 /* nativeInfo */
            iconst_2
            laload
            l2i
            putstatic sun.font.StrikeCache.xAdvanceOffset:I
         9: .line 139
            aload 0 /* nativeInfo */
            iconst_3
            laload
            l2i
            putstatic sun.font.StrikeCache.yAdvanceOffset:I
        10: .line 140
            aload 0 /* nativeInfo */
            iconst_4
            laload
            l2i
            putstatic sun.font.StrikeCache.widthOffset:I
        11: .line 141
            aload 0 /* nativeInfo */
            iconst_5
            laload
            l2i
            putstatic sun.font.StrikeCache.heightOffset:I
        12: .line 142
            aload 0 /* nativeInfo */
            bipush 6
            laload
            l2i
            putstatic sun.font.StrikeCache.rowBytesOffset:I
        13: .line 143
            aload 0 /* nativeInfo */
            bipush 7
            laload
            l2i
            putstatic sun.font.StrikeCache.topLeftXOffset:I
        14: .line 144
            aload 0 /* nativeInfo */
            bipush 8
            laload
            l2i
            putstatic sun.font.StrikeCache.topLeftYOffset:I
        15: .line 145
            aload 0 /* nativeInfo */
            bipush 9
            laload
            l2i
            putstatic sun.font.StrikeCache.pixelDataOffset:I
        16: .line 146
            aload 0 /* nativeInfo */
            bipush 10
            laload
            putstatic sun.font.StrikeCache.invisibleGlyphPtr:J
        17: .line 147
            getstatic sun.font.StrikeCache.nativeAddressSize:I
            iconst_4
            if_icmpge 21
        18: .line 148
            new java.lang.InternalError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unexpected address size for font data: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        19: .line 149
            getstatic sun.font.StrikeCache.nativeAddressSize:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        20: .line 148
            invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;)V
            athrow
        21: .line 153
      StackMap locals: long[]
      StackMap stack:
            new sun.font.StrikeCache$1
            dup
            invokespecial sun.font.StrikeCache$1.<init>:()V
        22: .line 152
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            pop
        end local 0 // long[] nativeInfo
        23: .line 183
            return
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            5   23     0  nativeInfo  [J

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.font.StrikeCache this
         0: .line 63
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // sun.font.StrikeCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/font/StrikeCache;

  static native void getGlyphCacheDescription(long[]);
    descriptor: ([J)V
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    MethodParameters:
           Name  Flags
      infoArray  

  static void refStrike(sun.font.FontStrike);
    descriptor: (Lsun/font/FontStrike;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // sun.font.FontStrike strike
         0: .line 187
            getstatic sun.font.StrikeCache.recentStrikeIndex:I
            istore 1 /* index */
        start local 1 // int index
         1: .line 188
            getstatic sun.font.StrikeCache.recentStrikes:[Lsun/font/FontStrike;
            iload 1 /* index */
            aload 0 /* strike */
            aastore
         2: .line 189
            iinc 1 /* index */ 1
         3: .line 190
            iload 1 /* index */
            getstatic sun.font.StrikeCache.MINSTRIKES:I
            if_icmpne 5
         4: .line 191
            iconst_0
            istore 1 /* index */
         5: .line 193
      StackMap locals: int
      StackMap stack:
            iload 1 /* index */
            putstatic sun.font.StrikeCache.recentStrikeIndex:I
         6: .line 194
            return
        end local 1 // int index
        end local 0 // sun.font.FontStrike strike
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0  strike  Lsun/font/FontStrike;
            1    7     1   index  I
    MethodParameters:
        Name  Flags
      strike  

  private static final void doDispose(sun.font.FontStrikeDisposer);
    descriptor: (Lsun/font/FontStrikeDisposer;)V
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // sun.font.FontStrikeDisposer disposer
         0: .line 197
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.intGlyphImages:[I
            ifnull 5
         1: .line 198
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.intGlyphImages:[I
         2: .line 199
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.pScalerContext:J
         3: .line 198
            invokestatic sun.font.StrikeCache.freeIntMemory:([IJ)V
         4: .line 200
            goto 37
      StackMap locals:
      StackMap stack:
         5: aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.longGlyphImages:[J
            ifnull 10
         6: .line 201
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.longGlyphImages:[J
         7: .line 202
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.pScalerContext:J
         8: .line 201
            invokestatic sun.font.StrikeCache.freeLongMemory:([JJ)V
         9: .line 203
            goto 37
      StackMap locals:
      StackMap stack:
        10: aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.segIntGlyphImages:[[I
            ifnull 24
        11: .line 208
            iconst_0
            istore 1 /* i */
        start local 1 // int i
        12: goto 20
        13: .line 209
      StackMap locals: int
      StackMap stack:
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.segIntGlyphImages:[[I
            iload 1 /* i */
            aaload
            ifnull 19
        14: .line 210
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.segIntGlyphImages:[[I
            iload 1 /* i */
            aaload
        15: .line 211
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.pScalerContext:J
        16: .line 210
            invokestatic sun.font.StrikeCache.freeIntMemory:([IJ)V
        17: .line 213
            aload 0 /* disposer */
            lconst_0
            putfield sun.font.FontStrikeDisposer.pScalerContext:J
        18: .line 214
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.segIntGlyphImages:[[I
            iload 1 /* i */
            aconst_null
            aastore
        19: .line 208
      StackMap locals:
      StackMap stack:
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
        20: iload 1 /* i */
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.segIntGlyphImages:[[I
            arraylength
            if_icmplt 13
        end local 1 // int i
        21: .line 220
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.pScalerContext:J
            lconst_0
            lcmp
            ifeq 37
        22: .line 221
            iconst_0
            newarray 10
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.pScalerContext:J
            invokestatic sun.font.StrikeCache.freeIntMemory:([IJ)V
        23: .line 223
            goto 37
      StackMap locals:
      StackMap stack:
        24: aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.segLongGlyphImages:[[J
            ifnull 37
        25: .line 224
            iconst_0
            istore 1 /* i */
        start local 1 // int i
        26: goto 34
        27: .line 225
      StackMap locals: int
      StackMap stack:
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.segLongGlyphImages:[[J
            iload 1 /* i */
            aaload
            ifnull 33
        28: .line 226
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.segLongGlyphImages:[[J
            iload 1 /* i */
            aaload
        29: .line 227
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.pScalerContext:J
        30: .line 226
            invokestatic sun.font.StrikeCache.freeLongMemory:([JJ)V
        31: .line 228
            aload 0 /* disposer */
            lconst_0
            putfield sun.font.FontStrikeDisposer.pScalerContext:J
        32: .line 229
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.segLongGlyphImages:[[J
            iload 1 /* i */
            aconst_null
            aastore
        33: .line 224
      StackMap locals:
      StackMap stack:
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
        34: iload 1 /* i */
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.segLongGlyphImages:[[J
            arraylength
            if_icmplt 27
        end local 1 // int i
        35: .line 232
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.pScalerContext:J
            lconst_0
            lcmp
            ifeq 37
        36: .line 233
            iconst_0
            newarray 11
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.pScalerContext:J
            invokestatic sun.font.StrikeCache.freeLongMemory:([JJ)V
        37: .line 236
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.font.FontStrikeDisposer disposer
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   38     0  disposer  Lsun/font/FontStrikeDisposer;
           12   21     1         i  I
           26   35     1         i  I
    MethodParameters:
          Name  Flags
      disposer  

  static void disposeStrike(sun.font.FontStrikeDisposer);
    descriptor: (Lsun/font/FontStrikeDisposer;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // sun.font.FontStrikeDisposer disposer
         0: .line 246
            aconst_null
            astore 1 /* rq */
        start local 1 // sun.java2d.pipe.RenderQueue rq
         1: .line 248
            invokestatic java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment:()Ljava/awt/GraphicsEnvironment;
         2: .line 247
            astore 2 /* ge */
        start local 2 // java.awt.GraphicsEnvironment ge
         3: .line 249
            invokestatic java.awt.GraphicsEnvironment.isHeadless:()Z
            ifne 11
         4: .line 251
            aload 2 /* ge */
            invokevirtual java.awt.GraphicsEnvironment.getDefaultScreenDevice:()Ljava/awt/GraphicsDevice;
            invokevirtual java.awt.GraphicsDevice.getDefaultConfiguration:()Ljava/awt/GraphicsConfiguration;
         5: .line 250
            astore 3 /* gc */
        start local 3 // java.awt.GraphicsConfiguration gc
         6: .line 252
            aload 3 /* gc */
            instanceof sun.java2d.pipe.hw.AccelGraphicsConfig
            ifeq 11
         7: .line 253
            aload 3 /* gc */
            checkcast sun.java2d.pipe.hw.AccelGraphicsConfig
            astore 4 /* agc */
        start local 4 // sun.java2d.pipe.hw.AccelGraphicsConfig agc
         8: .line 254
            aload 4 /* agc */
            invokeinterface sun.java2d.pipe.hw.AccelGraphicsConfig.getContext:()Lsun/java2d/pipe/BufferedContext;
            astore 5 /* bc */
        start local 5 // sun.java2d.pipe.BufferedContext bc
         9: .line 255
            aload 5 /* bc */
            ifnull 11
        10: .line 256
            aload 5 /* bc */
            invokevirtual sun.java2d.pipe.BufferedContext.getRenderQueue:()Lsun/java2d/pipe/RenderQueue;
            astore 1 /* rq */
        end local 5 // sun.java2d.pipe.BufferedContext bc
        end local 4 // sun.java2d.pipe.hw.AccelGraphicsConfig agc
        end local 3 // java.awt.GraphicsConfiguration gc
        11: .line 260
      StackMap locals: sun.java2d.pipe.RenderQueue java.awt.GraphicsEnvironment
      StackMap stack:
            aload 1 /* rq */
            ifnull 20
        12: .line 261
            aload 1 /* rq */
            invokevirtual sun.java2d.pipe.RenderQueue.lock:()V
        13: .line 263
            aload 1 /* rq */
            new sun.font.StrikeCache$2
            dup
            aload 0 /* disposer */
            invokespecial sun.font.StrikeCache$2.<init>:(Lsun/font/FontStrikeDisposer;)V
            invokevirtual sun.java2d.pipe.RenderQueue.flushAndInvokeNow:(Ljava/lang/Runnable;)V
        14: .line 268
            goto 18
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: astore 3
        16: .line 269
            aload 1 /* rq */
            invokevirtual sun.java2d.pipe.RenderQueue.unlock:()V
        17: .line 270
            aload 3
            athrow
        18: .line 269
      StackMap locals:
      StackMap stack:
            aload 1 /* rq */
            invokevirtual sun.java2d.pipe.RenderQueue.unlock:()V
        19: .line 271
            goto 21
        20: .line 272
      StackMap locals:
      StackMap stack:
            aload 0 /* disposer */
            invokestatic sun.font.StrikeCache.doDispose:(Lsun/font/FontStrikeDisposer;)V
        21: .line 274
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.awt.GraphicsEnvironment ge
        end local 1 // sun.java2d.pipe.RenderQueue rq
        end local 0 // sun.font.FontStrikeDisposer disposer
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   22     0  disposer  Lsun/font/FontStrikeDisposer;
            1   22     1        rq  Lsun/java2d/pipe/RenderQueue;
            3   22     2        ge  Ljava/awt/GraphicsEnvironment;
            6   11     3        gc  Ljava/awt/GraphicsConfiguration;
            8   11     4       agc  Lsun/java2d/pipe/hw/AccelGraphicsConfig;
            9   11     5        bc  Lsun/java2d/pipe/BufferedContext;
      Exception table:
        from    to  target  type
          13    15      15  any
    MethodParameters:
          Name  Flags
      disposer  final

  static native void freeIntPointer(int);
    descriptor: (I)V
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    MethodParameters:
      Name  Flags
      ptr   

  static native void freeLongPointer(long);
    descriptor: (J)V
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    MethodParameters:
      Name  Flags
      ptr   

  private static native void freeIntMemory(int[], long);
    descriptor: ([IJ)V
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    MethodParameters:
           Name  Flags
      glyphPtrs  
      pContext   

  private static native void freeLongMemory(long[], long);
    descriptor: ([JJ)V
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    MethodParameters:
           Name  Flags
      glyphPtrs  
      pContext   

  public static java.lang.ref.Reference getStrikeRef(sun.font.FontStrike);
    descriptor: (Lsun/font/FontStrike;)Ljava/lang/ref/Reference;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.font.FontStrike strike
         0: .line 283
            aload 0 /* strike */
            getstatic sun.font.StrikeCache.cacheRefTypeWeak:Z
            invokestatic sun.font.StrikeCache.getStrikeRef:(Lsun/font/FontStrike;Z)Ljava/lang/ref/Reference;
            areturn
        end local 0 // sun.font.FontStrike strike
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  strike  Lsun/font/FontStrike;
    MethodParameters:
        Name  Flags
      strike  

  public static java.lang.ref.Reference getStrikeRef(sun.font.FontStrike, boolean);
    descriptor: (Lsun/font/FontStrike;Z)Ljava/lang/ref/Reference;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.font.FontStrike strike
        start local 1 // boolean weak
         0: .line 294
            aload 0 /* strike */
            getfield sun.font.FontStrike.disposer:Lsun/font/FontStrikeDisposer;
            ifnonnull 4
         1: .line 295
            iload 1 /* weak */
            ifeq 3
         2: .line 296
            new java.lang.ref.WeakReference
            dup
            aload 0 /* strike */
            invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;)V
            areturn
         3: .line 298
      StackMap locals:
      StackMap stack:
            new java.lang.ref.SoftReference
            dup
            aload 0 /* strike */
            invokespecial java.lang.ref.SoftReference.<init>:(Ljava/lang/Object;)V
            areturn
         4: .line 302
      StackMap locals:
      StackMap stack:
            iload 1 /* weak */
            ifeq 6
         5: .line 303
            new sun.font.StrikeCache$WeakDisposerRef
            dup
            aload 0 /* strike */
            invokespecial sun.font.StrikeCache$WeakDisposerRef.<init>:(Lsun/font/FontStrike;)V
            areturn
         6: .line 305
      StackMap locals:
      StackMap stack:
            new sun.font.StrikeCache$SoftDisposerRef
            dup
            aload 0 /* strike */
            invokespecial sun.font.StrikeCache$SoftDisposerRef.<init>:(Lsun/font/FontStrike;)V
            areturn
        end local 1 // boolean weak
        end local 0 // sun.font.FontStrike strike
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0  strike  Lsun/font/FontStrike;
            0    7     1    weak  Z
    MethodParameters:
        Name  Flags
      strike  
      weak    
}
SourceFile: "StrikeCache.java"
NestMembers:
  sun.font.StrikeCache$1  sun.font.StrikeCache$2  sun.font.StrikeCache$DisposableStrike  sun.font.StrikeCache$SoftDisposerRef  sun.font.StrikeCache$WeakDisposerRef
InnerClasses:
  sun.font.StrikeCache$1
  sun.font.StrikeCache$2
  abstract DisposableStrike = sun.font.StrikeCache$DisposableStrike of sun.font.StrikeCache
  SoftDisposerRef = sun.font.StrikeCache$SoftDisposerRef of sun.font.StrikeCache
  WeakDisposerRef = sun.font.StrikeCache$WeakDisposerRef of sun.font.StrikeCache