final class sun.font.GlyphLayout$SDCache
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.font.GlyphLayout$SDCache
super_class: java.lang.Object
{
public java.awt.Font key_font;
descriptor: Ljava/awt/Font;
flags: (0x0001) ACC_PUBLIC
public java.awt.font.FontRenderContext key_frc;
descriptor: Ljava/awt/font/FontRenderContext;
flags: (0x0001) ACC_PUBLIC
public java.awt.geom.AffineTransform dtx;
descriptor: Ljava/awt/geom/AffineTransform;
flags: (0x0001) ACC_PUBLIC
public java.awt.geom.AffineTransform invdtx;
descriptor: Ljava/awt/geom/AffineTransform;
flags: (0x0001) ACC_PUBLIC
public java.awt.geom.AffineTransform gtx;
descriptor: Ljava/awt/geom/AffineTransform;
flags: (0x0001) ACC_PUBLIC
public java.awt.geom.Point2D$Float delta;
descriptor: Ljava/awt/geom/Point2D$Float;
flags: (0x0001) ACC_PUBLIC
public sun.font.FontStrikeDesc sd;
descriptor: Lsun/font/FontStrikeDesc;
flags: (0x0001) ACC_PUBLIC
private static final java.awt.geom.Point2D$Float ZERO_DELTA;
descriptor: Ljava/awt/geom/Point2D$Float;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static java.lang.ref.SoftReference<java.util.concurrent.ConcurrentHashMap<sun.font.GlyphLayout$SDCache$SDKey, sun.font.GlyphLayout$SDCache>> cacheRef;
descriptor: Ljava/lang/ref/SoftReference;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Signature: Ljava/lang/ref/SoftReference<Ljava/util/concurrent/ConcurrentHashMap<Lsun/font/GlyphLayout$SDCache$SDKey;Lsun/font/GlyphLayout$SDCache;>;>;
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: new java.awt.geom.Point2D$Float
dup
invokespecial java.awt.geom.Point2D$Float.<init>:()V
putstatic sun.font.GlyphLayout$SDCache.ZERO_DELTA:Ljava/awt/geom/Point2D$Float;
1: return
LocalVariableTable:
Start End Slot Name Signature
private void <init>(java.awt.Font, java.awt.font.FontRenderContext);
descriptor: (Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=13, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield sun.font.GlyphLayout$SDCache.key_font:Ljava/awt/Font;
2: aload 0
aload 2
putfield sun.font.GlyphLayout$SDCache.key_frc:Ljava/awt/font/FontRenderContext;
3: aload 0
aload 2
invokevirtual java.awt.font.FontRenderContext.getTransform:()Ljava/awt/geom/AffineTransform;
putfield sun.font.GlyphLayout$SDCache.dtx:Ljava/awt/geom/AffineTransform;
4: aload 0
getfield sun.font.GlyphLayout$SDCache.dtx:Ljava/awt/geom/AffineTransform;
aload 0
getfield sun.font.GlyphLayout$SDCache.dtx:Ljava/awt/geom/AffineTransform;
invokevirtual java.awt.geom.AffineTransform.getScaleX:()D
aload 0
getfield sun.font.GlyphLayout$SDCache.dtx:Ljava/awt/geom/AffineTransform;
invokevirtual java.awt.geom.AffineTransform.getShearY:()D
5: aload 0
getfield sun.font.GlyphLayout$SDCache.dtx:Ljava/awt/geom/AffineTransform;
invokevirtual java.awt.geom.AffineTransform.getShearX:()D
aload 0
getfield sun.font.GlyphLayout$SDCache.dtx:Ljava/awt/geom/AffineTransform;
invokevirtual java.awt.geom.AffineTransform.getScaleY:()D
6: dconst_0
dconst_0
7: invokevirtual java.awt.geom.AffineTransform.setTransform:(DDDDDD)V
8: aload 0
getfield sun.font.GlyphLayout$SDCache.dtx:Ljava/awt/geom/AffineTransform;
invokevirtual java.awt.geom.AffineTransform.isIdentity:()Z
ifne 13
9: aload 0
aload 0
getfield sun.font.GlyphLayout$SDCache.dtx:Ljava/awt/geom/AffineTransform;
invokevirtual java.awt.geom.AffineTransform.createInverse:()Ljava/awt/geom/AffineTransform;
putfield sun.font.GlyphLayout$SDCache.invdtx:Ljava/awt/geom/AffineTransform;
10: goto 13
11: StackMap locals: sun.font.GlyphLayout$SDCache java.awt.Font java.awt.font.FontRenderContext
StackMap stack: java.awt.geom.NoninvertibleTransformException
pop
12: new java.lang.InternalError
dup
invokespecial java.lang.InternalError.<init>:()V
athrow
13: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.awt.Font.getSize2D:()F
fstore 3
start local 3 14: aload 1
invokevirtual java.awt.Font.isTransformed:()Z
ifeq 26
15: aload 0
aload 1
invokevirtual java.awt.Font.getTransform:()Ljava/awt/geom/AffineTransform;
putfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
16: aload 0
getfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
fload 3
f2d
fload 3
f2d
invokevirtual java.awt.geom.AffineTransform.scale:(DD)V
17: aload 0
new java.awt.geom.Point2D$Float
dup
aload 0
getfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
invokevirtual java.awt.geom.AffineTransform.getTranslateX:()D
d2f
18: aload 0
getfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
invokevirtual java.awt.geom.AffineTransform.getTranslateY:()D
d2f
invokespecial java.awt.geom.Point2D$Float.<init>:(FF)V
19: putfield sun.font.GlyphLayout$SDCache.delta:Ljava/awt/geom/Point2D$Float;
20: aload 0
getfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
aload 0
getfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
invokevirtual java.awt.geom.AffineTransform.getScaleX:()D
aload 0
getfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
invokevirtual java.awt.geom.AffineTransform.getShearY:()D
21: aload 0
getfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
invokevirtual java.awt.geom.AffineTransform.getShearX:()D
aload 0
getfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
invokevirtual java.awt.geom.AffineTransform.getScaleY:()D
22: dconst_0
dconst_0
23: invokevirtual java.awt.geom.AffineTransform.setTransform:(DDDDDD)V
24: aload 0
getfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
aload 0
getfield sun.font.GlyphLayout$SDCache.dtx:Ljava/awt/geom/AffineTransform;
invokevirtual java.awt.geom.AffineTransform.preConcatenate:(Ljava/awt/geom/AffineTransform;)V
25: goto 29
26: StackMap locals: float
StackMap stack:
aload 0
getstatic sun.font.GlyphLayout$SDCache.ZERO_DELTA:Ljava/awt/geom/Point2D$Float;
putfield sun.font.GlyphLayout$SDCache.delta:Ljava/awt/geom/Point2D$Float;
27: aload 0
new java.awt.geom.AffineTransform
dup
aload 0
getfield sun.font.GlyphLayout$SDCache.dtx:Ljava/awt/geom/AffineTransform;
invokespecial java.awt.geom.AffineTransform.<init>:(Ljava/awt/geom/AffineTransform;)V
putfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
28: aload 0
getfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
fload 3
f2d
fload 3
f2d
invokevirtual java.awt.geom.AffineTransform.scale:(DD)V
29: StackMap locals:
StackMap stack:
aload 2
invokevirtual java.awt.font.FontRenderContext.getAntiAliasingHint:()Ljava/lang/Object;
30: aload 1
invokestatic sun.font.FontUtilities.getFont2D:(Ljava/awt/Font;)Lsun/font/Font2D;
31: fload 3
invokestatic java.lang.Math.abs:(F)F
f2i
32: invokestatic sun.font.FontStrikeDesc.getAAHintIntVal:(Ljava/lang/Object;Lsun/font/Font2D;I)I
33: istore 4
start local 4 34: aload 2
invokevirtual java.awt.font.FontRenderContext.getFractionalMetricsHint:()Ljava/lang/Object;
35: invokestatic sun.font.FontStrikeDesc.getFMHintIntVal:(Ljava/lang/Object;)I
istore 5
start local 5 36: aload 0
new sun.font.FontStrikeDesc
dup
aload 0
getfield sun.font.GlyphLayout$SDCache.dtx:Ljava/awt/geom/AffineTransform;
aload 0
getfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
aload 1
invokevirtual java.awt.Font.getStyle:()I
iload 4
iload 5
invokespecial sun.font.FontStrikeDesc.<init>:(Ljava/awt/geom/AffineTransform;Ljava/awt/geom/AffineTransform;III)V
putfield sun.font.GlyphLayout$SDCache.sd:Lsun/font/FontStrikeDesc;
37: return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 38 0 this Lsun/font/GlyphLayout$SDCache;
0 38 1 font Ljava/awt/Font;
0 38 2 frc Ljava/awt/font/FontRenderContext;
14 38 3 ptSize F
34 38 4 aa I
36 38 5 fm I
Exception table:
from to target type
9 10 11 Class java.awt.geom.NoninvertibleTransformException
MethodParameters:
Name Flags
font
frc
public static sun.font.GlyphLayout$SDCache get(java.awt.Font, java.awt.font.FontRenderContext);
descriptor: (Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)Lsun/font/GlyphLayout$SDCache;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=14, locals=5, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual java.awt.font.FontRenderContext.isTransformed:()Z
ifeq 14
1: aload 1
invokevirtual java.awt.font.FontRenderContext.getTransform:()Ljava/awt/geom/AffineTransform;
astore 2
start local 2 2: aload 2
invokevirtual java.awt.geom.AffineTransform.getTranslateX:()D
dconst_0
dcmpl
ifne 4
3: aload 2
invokevirtual java.awt.geom.AffineTransform.getTranslateY:()D
dconst_0
dcmpl
ifeq 14
4: StackMap locals: java.awt.geom.AffineTransform
StackMap stack:
new java.awt.geom.AffineTransform
dup
aload 2
invokevirtual java.awt.geom.AffineTransform.getScaleX:()D
5: aload 2
invokevirtual java.awt.geom.AffineTransform.getShearY:()D
6: aload 2
invokevirtual java.awt.geom.AffineTransform.getShearX:()D
7: aload 2
invokevirtual java.awt.geom.AffineTransform.getScaleY:()D
8: dconst_0
dconst_0
9: invokespecial java.awt.geom.AffineTransform.<init>:(DDDDDD)V
astore 2
10: new java.awt.font.FontRenderContext
dup
aload 2
11: aload 1
invokevirtual java.awt.font.FontRenderContext.getAntiAliasingHint:()Ljava/lang/Object;
12: aload 1
invokevirtual java.awt.font.FontRenderContext.getFractionalMetricsHint:()Ljava/lang/Object;
13: invokespecial java.awt.font.FontRenderContext.<init>:(Ljava/awt/geom/AffineTransform;Ljava/lang/Object;Ljava/lang/Object;)V
astore 1
end local 2 14: StackMap locals:
StackMap stack:
new sun.font.GlyphLayout$SDCache$SDKey
dup
aload 0
aload 1
invokespecial sun.font.GlyphLayout$SDCache$SDKey.<init>:(Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)V
astore 2
start local 2 15: aconst_null
astore 3
start local 3 16: aconst_null
astore 4
start local 4 17: getstatic sun.font.GlyphLayout$SDCache.cacheRef:Ljava/lang/ref/SoftReference;
ifnull 21
18: getstatic sun.font.GlyphLayout$SDCache.cacheRef:Ljava/lang/ref/SoftReference;
invokevirtual java.lang.ref.SoftReference.get:()Ljava/lang/Object;
checkcast java.util.concurrent.ConcurrentHashMap
astore 3
19: aload 3
ifnull 21
20: aload 3
aload 2
invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast sun.font.GlyphLayout$SDCache
astore 4
21: StackMap locals: sun.font.GlyphLayout$SDCache$SDKey java.util.concurrent.ConcurrentHashMap sun.font.GlyphLayout$SDCache
StackMap stack:
aload 4
ifnonnull 31
22: new sun.font.GlyphLayout$SDCache
dup
aload 0
aload 1
invokespecial sun.font.GlyphLayout$SDCache.<init>:(Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)V
astore 4
23: aload 3
ifnonnull 28
24: new java.util.concurrent.ConcurrentHashMap
dup
bipush 10
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(I)V
astore 3
25: new java.lang.ref.SoftReference
dup
aload 3
26: invokespecial java.lang.ref.SoftReference.<init>:(Ljava/lang/Object;)V
putstatic sun.font.GlyphLayout$SDCache.cacheRef:Ljava/lang/ref/SoftReference;
27: goto 30
StackMap locals:
StackMap stack:
28: aload 3
invokevirtual java.util.concurrent.ConcurrentHashMap.size:()I
sipush 512
if_icmplt 30
29: aload 3
invokevirtual java.util.concurrent.ConcurrentHashMap.clear:()V
30: StackMap locals:
StackMap stack:
aload 3
aload 2
aload 4
invokevirtual java.util.concurrent.ConcurrentHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
31: StackMap locals:
StackMap stack:
aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 32 0 font Ljava/awt/Font;
0 32 1 frc Ljava/awt/font/FontRenderContext;
2 14 2 transform Ljava/awt/geom/AffineTransform;
15 32 2 key Lsun/font/GlyphLayout$SDCache$SDKey;
16 32 3 cache Ljava/util/concurrent/ConcurrentHashMap<Lsun/font/GlyphLayout$SDCache$SDKey;Lsun/font/GlyphLayout$SDCache;>;
17 32 4 res Lsun/font/GlyphLayout$SDCache;
MethodParameters:
Name Flags
font
frc
}
SourceFile: "GlyphLayout.java"
NestHost: sun.font.GlyphLayout
InnerClasses:
public Float = java.awt.geom.Point2D$Float of java.awt.geom.Point2D
private final SDCache = sun.font.GlyphLayout$SDCache of sun.font.GlyphLayout
private final SDKey = sun.font.GlyphLayout$SDCache$SDKey of sun.font.GlyphLayout$SDCache