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: invokestatic sun.misc.Unsafe.getUnsafe:()Lsun/misc/Unsafe;
putstatic sun.font.StrikeCache.unsafe:Lsun/misc/Unsafe;
1: invokestatic sun.java2d.Disposer.getQueue:()Ljava/lang/ref/ReferenceQueue;
putstatic sun.font.StrikeCache.refQueue:Ljava/lang/ref/ReferenceQueue;
2: bipush 8
putstatic sun.font.StrikeCache.MINSTRIKES:I
3: iconst_0
putstatic sun.font.StrikeCache.recentStrikeIndex:I
4: bipush 11
newarray 11
astore 0
start local 0 5: aload 0
invokestatic sun.font.StrikeCache.getGlyphCacheDescription:([J)V
6: aload 0
iconst_0
laload
l2i
putstatic sun.font.StrikeCache.nativeAddressSize:I
7: aload 0
iconst_1
laload
l2i
putstatic sun.font.StrikeCache.glyphInfoSize:I
8: aload 0
iconst_2
laload
l2i
putstatic sun.font.StrikeCache.xAdvanceOffset:I
9: aload 0
iconst_3
laload
l2i
putstatic sun.font.StrikeCache.yAdvanceOffset:I
10: aload 0
iconst_4
laload
l2i
putstatic sun.font.StrikeCache.widthOffset:I
11: aload 0
iconst_5
laload
l2i
putstatic sun.font.StrikeCache.heightOffset:I
12: aload 0
bipush 6
laload
l2i
putstatic sun.font.StrikeCache.rowBytesOffset:I
13: aload 0
bipush 7
laload
l2i
putstatic sun.font.StrikeCache.topLeftXOffset:I
14: aload 0
bipush 8
laload
l2i
putstatic sun.font.StrikeCache.topLeftYOffset:I
15: aload 0
bipush 9
laload
l2i
putstatic sun.font.StrikeCache.pixelDataOffset:I
16: aload 0
bipush 10
laload
putstatic sun.font.StrikeCache.invisibleGlyphPtr:J
17: getstatic sun.font.StrikeCache.nativeAddressSize:I
iconst_4
if_icmpge 21
18: 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: getstatic sun.font.StrikeCache.nativeAddressSize:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
20: invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;)V
athrow
21: StackMap locals: long[]
StackMap stack:
new sun.font.StrikeCache$1
dup
invokespecial sun.font.StrikeCache$1.<init>:()V
22: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
pop
end local 0 23: 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 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 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 0: getstatic sun.font.StrikeCache.recentStrikeIndex:I
istore 1
start local 1 1: getstatic sun.font.StrikeCache.recentStrikes:[Lsun/font/FontStrike;
iload 1
aload 0
aastore
2: iinc 1 1
3: iload 1
getstatic sun.font.StrikeCache.MINSTRIKES:I
if_icmpne 5
4: iconst_0
istore 1
5: StackMap locals: int
StackMap stack:
iload 1
putstatic sun.font.StrikeCache.recentStrikeIndex:I
6: return
end local 1 end local 0 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 0: aload 0
getfield sun.font.FontStrikeDisposer.intGlyphImages:[I
ifnull 5
1: aload 0
getfield sun.font.FontStrikeDisposer.intGlyphImages:[I
2: aload 0
getfield sun.font.FontStrikeDisposer.pScalerContext:J
3: invokestatic sun.font.StrikeCache.freeIntMemory:([IJ)V
4: goto 37
StackMap locals:
StackMap stack:
5: aload 0
getfield sun.font.FontStrikeDisposer.longGlyphImages:[J
ifnull 10
6: aload 0
getfield sun.font.FontStrikeDisposer.longGlyphImages:[J
7: aload 0
getfield sun.font.FontStrikeDisposer.pScalerContext:J
8: invokestatic sun.font.StrikeCache.freeLongMemory:([JJ)V
9: goto 37
StackMap locals:
StackMap stack:
10: aload 0
getfield sun.font.FontStrikeDisposer.segIntGlyphImages:[[I
ifnull 24
11: iconst_0
istore 1
start local 1 12: goto 20
13: StackMap locals: int
StackMap stack:
aload 0
getfield sun.font.FontStrikeDisposer.segIntGlyphImages:[[I
iload 1
aaload
ifnull 19
14: aload 0
getfield sun.font.FontStrikeDisposer.segIntGlyphImages:[[I
iload 1
aaload
15: aload 0
getfield sun.font.FontStrikeDisposer.pScalerContext:J
16: invokestatic sun.font.StrikeCache.freeIntMemory:([IJ)V
17: aload 0
lconst_0
putfield sun.font.FontStrikeDisposer.pScalerContext:J
18: aload 0
getfield sun.font.FontStrikeDisposer.segIntGlyphImages:[[I
iload 1
aconst_null
aastore
19: StackMap locals:
StackMap stack:
iinc 1 1
StackMap locals:
StackMap stack:
20: iload 1
aload 0
getfield sun.font.FontStrikeDisposer.segIntGlyphImages:[[I
arraylength
if_icmplt 13
end local 1 21: aload 0
getfield sun.font.FontStrikeDisposer.pScalerContext:J
lconst_0
lcmp
ifeq 37
22: iconst_0
newarray 10
aload 0
getfield sun.font.FontStrikeDisposer.pScalerContext:J
invokestatic sun.font.StrikeCache.freeIntMemory:([IJ)V
23: goto 37
StackMap locals:
StackMap stack:
24: aload 0
getfield sun.font.FontStrikeDisposer.segLongGlyphImages:[[J
ifnull 37
25: iconst_0
istore 1
start local 1 26: goto 34
27: StackMap locals: int
StackMap stack:
aload 0
getfield sun.font.FontStrikeDisposer.segLongGlyphImages:[[J
iload 1
aaload
ifnull 33
28: aload 0
getfield sun.font.FontStrikeDisposer.segLongGlyphImages:[[J
iload 1
aaload
29: aload 0
getfield sun.font.FontStrikeDisposer.pScalerContext:J
30: invokestatic sun.font.StrikeCache.freeLongMemory:([JJ)V
31: aload 0
lconst_0
putfield sun.font.FontStrikeDisposer.pScalerContext:J
32: aload 0
getfield sun.font.FontStrikeDisposer.segLongGlyphImages:[[J
iload 1
aconst_null
aastore
33: StackMap locals:
StackMap stack:
iinc 1 1
StackMap locals:
StackMap stack:
34: iload 1
aload 0
getfield sun.font.FontStrikeDisposer.segLongGlyphImages:[[J
arraylength
if_icmplt 27
end local 1 35: aload 0
getfield sun.font.FontStrikeDisposer.pScalerContext:J
lconst_0
lcmp
ifeq 37
36: iconst_0
newarray 11
aload 0
getfield sun.font.FontStrikeDisposer.pScalerContext:J
invokestatic sun.font.StrikeCache.freeLongMemory:([JJ)V
37: StackMap locals:
StackMap stack:
return
end local 0 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 0: aconst_null
astore 1
start local 1 1: invokestatic java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment:()Ljava/awt/GraphicsEnvironment;
2: astore 2
start local 2 3: invokestatic java.awt.GraphicsEnvironment.isHeadless:()Z
ifne 11
4: aload 2
invokevirtual java.awt.GraphicsEnvironment.getDefaultScreenDevice:()Ljava/awt/GraphicsDevice;
invokevirtual java.awt.GraphicsDevice.getDefaultConfiguration:()Ljava/awt/GraphicsConfiguration;
5: astore 3
start local 3 6: aload 3
instanceof sun.java2d.pipe.hw.AccelGraphicsConfig
ifeq 11
7: aload 3
checkcast sun.java2d.pipe.hw.AccelGraphicsConfig
astore 4
start local 4 8: aload 4
invokeinterface sun.java2d.pipe.hw.AccelGraphicsConfig.getContext:()Lsun/java2d/pipe/BufferedContext;
astore 5
start local 5 9: aload 5
ifnull 11
10: aload 5
invokevirtual sun.java2d.pipe.BufferedContext.getRenderQueue:()Lsun/java2d/pipe/RenderQueue;
astore 1
end local 5 end local 4 end local 3 11: StackMap locals: sun.java2d.pipe.RenderQueue java.awt.GraphicsEnvironment
StackMap stack:
aload 1
ifnull 20
12: aload 1
invokevirtual sun.java2d.pipe.RenderQueue.lock:()V
13: aload 1
new sun.font.StrikeCache$2
dup
aload 0
invokespecial sun.font.StrikeCache$2.<init>:(Lsun/font/FontStrikeDisposer;)V
invokevirtual sun.java2d.pipe.RenderQueue.flushAndInvokeNow:(Ljava/lang/Runnable;)V
14: goto 18
StackMap locals:
StackMap stack: java.lang.Throwable
15: astore 3
16: aload 1
invokevirtual sun.java2d.pipe.RenderQueue.unlock:()V
17: aload 3
athrow
18: StackMap locals:
StackMap stack:
aload 1
invokevirtual sun.java2d.pipe.RenderQueue.unlock:()V
19: goto 21
20: StackMap locals:
StackMap stack:
aload 0
invokestatic sun.font.StrikeCache.doDispose:(Lsun/font/FontStrikeDisposer;)V
21: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 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 0: aload 0
getstatic sun.font.StrikeCache.cacheRefTypeWeak:Z
invokestatic sun.font.StrikeCache.getStrikeRef:(Lsun/font/FontStrike;Z)Ljava/lang/ref/Reference;
areturn
end local 0 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 start local 1 0: aload 0
getfield sun.font.FontStrike.disposer:Lsun/font/FontStrikeDisposer;
ifnonnull 4
1: iload 1
ifeq 3
2: new java.lang.ref.WeakReference
dup
aload 0
invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;)V
areturn
3: StackMap locals:
StackMap stack:
new java.lang.ref.SoftReference
dup
aload 0
invokespecial java.lang.ref.SoftReference.<init>:(Ljava/lang/Object;)V
areturn
4: StackMap locals:
StackMap stack:
iload 1
ifeq 6
5: new sun.font.StrikeCache$WeakDisposerRef
dup
aload 0
invokespecial sun.font.StrikeCache$WeakDisposerRef.<init>:(Lsun/font/FontStrike;)V
areturn
6: StackMap locals:
StackMap stack:
new sun.font.StrikeCache$SoftDisposerRef
dup
aload 0
invokespecial sun.font.StrikeCache$SoftDisposerRef.<init>:(Lsun/font/FontStrike;)V
areturn
end local 1 end local 0 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