public final class sun.font.SunLayoutEngine implements sun.font.GlyphLayout$LayoutEngine, sun.font.GlyphLayout$LayoutEngineFactory
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: sun.font.SunLayoutEngine
super_class: java.lang.Object
{
private sun.font.GlyphLayout$LayoutEngineKey key;
descriptor: Lsun/font/GlyphLayout$LayoutEngineKey;
flags: (0x0002) ACC_PRIVATE
private static sun.font.GlyphLayout$LayoutEngineFactory instance;
descriptor: Lsun/font/GlyphLayout$LayoutEngineFactory;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private java.lang.ref.SoftReference<java.util.concurrent.ConcurrentHashMap<sun.font.GlyphLayout$LayoutEngineKey, sun.font.GlyphLayout$LayoutEngine>> cacheref;
descriptor: Ljava/lang/ref/SoftReference;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/lang/ref/SoftReference<Ljava/util/concurrent/ConcurrentHashMap<Lsun/font/GlyphLayout$LayoutEngineKey;Lsun/font/GlyphLayout$LayoutEngine;>;>;
static java.util.WeakHashMap<sun.font.Font2D, java.lang.Boolean> aatInfo;
descriptor: Ljava/util/WeakHashMap;
flags: (0x0008) ACC_STATIC
Signature: Ljava/util/WeakHashMap<Lsun/font/Font2D;Ljava/lang/Boolean;>;
private static final java.util.WeakHashMap<sun.font.Font2D, sun.font.SunLayoutEngine$FaceRef> facePtr;
descriptor: Ljava/util/WeakHashMap;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/WeakHashMap<Lsun/font/Font2D;Lsun/font/SunLayoutEngine$FaceRef;>;
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: invokestatic sun.font.FontManagerNativeLibrary.load:()V
1: new java.util.WeakHashMap
dup
invokespecial java.util.WeakHashMap.<init>:()V
putstatic sun.font.SunLayoutEngine.aatInfo:Ljava/util/WeakHashMap;
2: new java.util.WeakHashMap
dup
invokespecial java.util.WeakHashMap.<init>:()V
3: putstatic sun.font.SunLayoutEngine.facePtr:Ljava/util/WeakHashMap;
4: return
LocalVariableTable:
Start End Slot Name Signature
public static sun.font.GlyphLayout$LayoutEngineFactory instance();
descriptor: ()Lsun/font/GlyphLayout$LayoutEngineFactory;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: getstatic sun.font.SunLayoutEngine.instance:Lsun/font/GlyphLayout$LayoutEngineFactory;
ifnonnull 2
1: new sun.font.SunLayoutEngine
dup
invokespecial sun.font.SunLayoutEngine.<init>:()V
putstatic sun.font.SunLayoutEngine.instance:Lsun/font/GlyphLayout$LayoutEngineFactory;
2: StackMap locals:
StackMap stack:
getstatic sun.font.SunLayoutEngine.instance:Lsun/font/GlyphLayout$LayoutEngineFactory;
areturn
LocalVariableTable:
Start End Slot Name Signature
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
2: new java.lang.ref.SoftReference
dup
aconst_null
invokespecial java.lang.ref.SoftReference.<init>:(Ljava/lang/Object;)V
putfield sun.font.SunLayoutEngine.cacheref:Ljava/lang/ref/SoftReference;
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/font/SunLayoutEngine;
public sun.font.GlyphLayout$LayoutEngine getEngine(sun.font.Font2D, int, int);
descriptor: (Lsun/font/Font2D;II)Lsun/font/GlyphLayout$LayoutEngine;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
new sun.font.GlyphLayout$LayoutEngineKey
dup
aload 1
iload 2
iload 3
invokespecial sun.font.GlyphLayout$LayoutEngineKey.<init>:(Lsun/font/Font2D;II)V
invokevirtual sun.font.SunLayoutEngine.getEngine:(Lsun/font/GlyphLayout$LayoutEngineKey;)Lsun/font/GlyphLayout$LayoutEngine;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/font/SunLayoutEngine;
0 1 1 font Lsun/font/Font2D;
0 1 2 script I
0 1 3 lang I
MethodParameters:
Name Flags
font
script
lang
public sun.font.GlyphLayout$LayoutEngine getEngine(sun.font.GlyphLayout$LayoutEngineKey);
descriptor: (Lsun/font/GlyphLayout$LayoutEngineKey;)Lsun/font/GlyphLayout$LayoutEngine;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.font.SunLayoutEngine.cacheref:Ljava/lang/ref/SoftReference;
invokevirtual java.lang.ref.SoftReference.get:()Ljava/lang/Object;
checkcast java.util.concurrent.ConcurrentHashMap
astore 2
start local 2 1: aload 2
ifnonnull 4
2: new java.util.concurrent.ConcurrentHashMap
dup
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
astore 2
3: aload 0
new java.lang.ref.SoftReference
dup
aload 2
invokespecial java.lang.ref.SoftReference.<init>:(Ljava/lang/Object;)V
putfield sun.font.SunLayoutEngine.cacheref:Ljava/lang/ref/SoftReference;
4: StackMap locals: java.util.concurrent.ConcurrentHashMap
StackMap stack:
aload 2
aload 1
invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast sun.font.GlyphLayout$LayoutEngine
astore 3
start local 3 5: aload 3
ifnonnull 9
6: aload 1
invokevirtual sun.font.GlyphLayout$LayoutEngineKey.copy:()Lsun/font/GlyphLayout$LayoutEngineKey;
astore 4
start local 4 7: new sun.font.SunLayoutEngine
dup
aload 4
invokespecial sun.font.SunLayoutEngine.<init>:(Lsun/font/GlyphLayout$LayoutEngineKey;)V
astore 3
8: aload 2
aload 4
aload 3
invokevirtual java.util.concurrent.ConcurrentHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 4 9: StackMap locals: sun.font.GlyphLayout$LayoutEngine
StackMap stack:
aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lsun/font/SunLayoutEngine;
0 10 1 key Lsun/font/GlyphLayout$LayoutEngineKey;
1 10 2 cache Ljava/util/concurrent/ConcurrentHashMap<Lsun/font/GlyphLayout$LayoutEngineKey;Lsun/font/GlyphLayout$LayoutEngine;>;
5 10 3 e Lsun/font/GlyphLayout$LayoutEngine;
7 9 4 copy Lsun/font/GlyphLayout$LayoutEngineKey;
MethodParameters:
Name Flags
key
private void <init>(sun.font.GlyphLayout$LayoutEngineKey);
descriptor: (Lsun/font/GlyphLayout$LayoutEngineKey;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
2: new java.lang.ref.SoftReference
dup
aconst_null
invokespecial java.lang.ref.SoftReference.<init>:(Ljava/lang/Object;)V
putfield sun.font.SunLayoutEngine.cacheref:Ljava/lang/ref/SoftReference;
3: aload 0
aload 1
putfield sun.font.SunLayoutEngine.key:Lsun/font/GlyphLayout$LayoutEngineKey;
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/font/SunLayoutEngine;
0 5 1 key Lsun/font/GlyphLayout$LayoutEngineKey;
MethodParameters:
Name Flags
key
private static boolean isAAT(sun.font.Font2D);
descriptor: (Lsun/font/Font2D;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=4, args_size=1
start local 0 0: getstatic sun.font.SunLayoutEngine.aatInfo:Ljava/util/WeakHashMap;
dup
astore 2
monitorenter
1: getstatic sun.font.SunLayoutEngine.aatInfo:Ljava/util/WeakHashMap;
aload 0
invokevirtual java.util.WeakHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Boolean
astore 1
start local 1 2: aload 2
monitorexit
3: goto 6
end local 1 StackMap locals: sun.font.Font2D top java.util.WeakHashMap
StackMap stack: java.lang.Throwable
4: aload 2
monitorexit
5: athrow
start local 1 6: StackMap locals: sun.font.Font2D java.lang.Boolean
StackMap stack:
aload 1
ifnull 8
7: aload 1
invokevirtual java.lang.Boolean.booleanValue:()Z
ireturn
8: StackMap locals:
StackMap stack:
iconst_0
istore 2
start local 2 9: aload 0
instanceof sun.font.TrueTypeFont
ifeq 17
10: aload 0
checkcast sun.font.TrueTypeFont
astore 3
start local 3 11: aload 3
ldc 1836020344
invokevirtual sun.font.TrueTypeFont.getDirectoryEntry:(I)Lsun/font/TrueTypeFont$DirectoryEntry;
ifnonnull 14
12: aload 3
ldc 1836020340
invokevirtual sun.font.TrueTypeFont.getDirectoryEntry:(I)Lsun/font/TrueTypeFont$DirectoryEntry;
ifnonnull 14
13: iconst_0
goto 15
StackMap locals: int sun.font.TrueTypeFont
StackMap stack:
14: iconst_1
StackMap locals:
StackMap stack: int
15: istore 2
end local 3 16: goto 24
StackMap locals:
StackMap stack:
17: aload 0
instanceof sun.font.PhysicalFont
ifeq 24
18: aload 0
checkcast sun.font.PhysicalFont
astore 3
start local 3 19: aload 3
ldc 1836020344
invokevirtual sun.font.PhysicalFont.getTableBytes:(I)[B
ifnonnull 22
20: aload 3
ldc 1836020340
invokevirtual sun.font.PhysicalFont.getTableBytes:(I)[B
ifnonnull 22
21: iconst_0
goto 23
StackMap locals: sun.font.PhysicalFont
StackMap stack:
22: iconst_1
StackMap locals:
StackMap stack: int
23: istore 2
end local 3 24: StackMap locals:
StackMap stack:
getstatic sun.font.SunLayoutEngine.aatInfo:Ljava/util/WeakHashMap;
dup
astore 3
monitorenter
25: getstatic sun.font.SunLayoutEngine.aatInfo:Ljava/util/WeakHashMap;
aload 0
iload 2
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
invokevirtual java.util.WeakHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
26: aload 3
monitorexit
27: goto 30
StackMap locals: sun.font.Font2D java.lang.Boolean int java.util.WeakHashMap
StackMap stack: java.lang.Throwable
28: aload 3
monitorexit
29: athrow
30: StackMap locals:
StackMap stack:
iload 2
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 31 0 font Lsun/font/Font2D;
2 4 1 aatObj Ljava/lang/Boolean;
6 31 1 aatObj Ljava/lang/Boolean;
9 31 2 aat Z
11 16 3 ttf Lsun/font/TrueTypeFont;
19 24 3 pf Lsun/font/PhysicalFont;
Exception table:
from to target type
1 3 4 any
4 5 4 any
25 27 28 any
28 29 28 any
MethodParameters:
Name Flags
font
private long getFacePtr(sun.font.Font2D);
descriptor: (Lsun/font/Font2D;)J
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: getstatic sun.font.SunLayoutEngine.facePtr:Ljava/util/WeakHashMap;
dup
astore 3
monitorenter
1: getstatic sun.font.SunLayoutEngine.facePtr:Ljava/util/WeakHashMap;
aload 1
invokedynamic apply()Ljava/util/function/Function;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)Ljava/lang/Object;
sun/font/SunLayoutEngine.lambda$0(Lsun/font/Font2D;)Lsun/font/SunLayoutEngine$FaceRef; (6)
(Lsun/font/Font2D;)Lsun/font/SunLayoutEngine$FaceRef;
invokevirtual java.util.WeakHashMap.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
checkcast sun.font.SunLayoutEngine$FaceRef
astore 2
start local 2 2: aload 3
monitorexit
3: goto 6
end local 2 StackMap locals: sun.font.SunLayoutEngine sun.font.Font2D top java.util.WeakHashMap
StackMap stack: java.lang.Throwable
4: aload 3
monitorexit
5: athrow
start local 2 6: StackMap locals: sun.font.SunLayoutEngine sun.font.Font2D sun.font.SunLayoutEngine$FaceRef
StackMap stack:
aload 2
invokevirtual sun.font.SunLayoutEngine$FaceRef.getNativePtr:()J
lreturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lsun/font/SunLayoutEngine;
0 7 1 font2D Lsun/font/Font2D;
2 4 2 ref Lsun/font/SunLayoutEngine$FaceRef;
6 7 2 ref Lsun/font/SunLayoutEngine$FaceRef;
Exception table:
from to target type
1 3 4 any
4 5 4 any
MethodParameters:
Name Flags
font2D
public void layout(sun.font.FontStrikeDesc, float[], float, int, int, sun.font.TextRecord, int, java.awt.geom.Point2D$Float, sun.font.GlyphLayout$GVData);
descriptor: (Lsun/font/FontStrikeDesc;[FFIILsun/font/TextRecord;ILjava/awt/geom/Point2D$Float;Lsun/font/GlyphLayout$GVData;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=18, locals=16, args_size=10
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 start local 7 start local 8 start local 9 0: aload 0
getfield sun.font.SunLayoutEngine.key:Lsun/font/GlyphLayout$LayoutEngineKey;
invokevirtual sun.font.GlyphLayout$LayoutEngineKey.font:()Lsun/font/Font2D;
astore 10
start local 10 1: aload 10
aload 1
invokevirtual sun.font.Font2D.getStrike:(Lsun/font/FontStrikeDesc;)Lsun/font/FontStrike;
astore 11
start local 11 2: aload 10
invokevirtual sun.font.Font2D.getPlatformNativeFontPtr:()J
lstore 12
start local 12 3: aload 0
aload 10
invokevirtual sun.font.SunLayoutEngine.getFacePtr:(Lsun/font/Font2D;)J
lstore 14
start local 14 4: lload 14
lconst_0
lcmp
ifeq 11
5: aload 10
aload 11
fload 3
aload 2
lload 12
6: lload 14
aload 10
invokestatic sun.font.SunLayoutEngine.isAAT:(Lsun/font/Font2D;)Z
7: aload 6
getfield sun.font.TextRecord.text:[C
aload 9
aload 0
getfield sun.font.SunLayoutEngine.key:Lsun/font/GlyphLayout$LayoutEngineKey;
invokevirtual sun.font.GlyphLayout$LayoutEngineKey.script:()I
8: aload 6
getfield sun.font.TextRecord.start:I
aload 6
getfield sun.font.TextRecord.limit:I
iload 5
aload 8
9: iload 7
iload 4
10: invokestatic sun.font.SunLayoutEngine.shape:(Lsun/font/Font2D;Lsun/font/FontStrike;F[FJJZ[CLsun/font/GlyphLayout$GVData;IIIILjava/awt/geom/Point2D$Float;II)Z
pop
11: StackMap locals: sun.font.SunLayoutEngine sun.font.FontStrikeDesc float[] float int int sun.font.TextRecord int java.awt.geom.Point2D$Float sun.font.GlyphLayout$GVData sun.font.Font2D sun.font.FontStrike long long
StackMap stack:
return
end local 14 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 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 12 0 this Lsun/font/SunLayoutEngine;
0 12 1 desc Lsun/font/FontStrikeDesc;
0 12 2 mat [F
0 12 3 ptSize F
0 12 4 gmask I
0 12 5 baseIndex I
0 12 6 tr Lsun/font/TextRecord;
0 12 7 typo_flags I
0 12 8 pt Ljava/awt/geom/Point2D$Float;
0 12 9 data Lsun/font/GlyphLayout$GVData;
1 12 10 font Lsun/font/Font2D;
2 12 11 strike Lsun/font/FontStrike;
3 12 12 pNativeFont J
4 12 14 pFace J
MethodParameters:
Name Flags
desc
mat
ptSize
gmask
baseIndex
tr
typo_flags
pt
data
private static native boolean shape(sun.font.Font2D, sun.font.FontStrike, float, float[], long, long, boolean, char[], sun.font.GlyphLayout$GVData, int, int, int, int, java.awt.geom.Point2D$Float, int, int);
descriptor: (Lsun/font/Font2D;Lsun/font/FontStrike;F[FJJZ[CLsun/font/GlyphLayout$GVData;IIIILjava/awt/geom/Point2D$Float;II)Z
flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
MethodParameters:
Name Flags
font
strike
ptSize
mat
pNativeFont
pFace
aat
chars
data
script
offset
limit
baseIndex
pt
typo_flags
slot
private static native long createFace(sun.font.Font2D, boolean, long);
descriptor: (Lsun/font/Font2D;ZJ)J
flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
MethodParameters:
Name Flags
font
aat
platformNativeFontPtr
private static native void disposeFace(long);
descriptor: (J)V
flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
MethodParameters:
Name Flags
facePtr
private static sun.font.SunLayoutEngine$FaceRef lambda$0(sun.font.Font2D);
descriptor: (Lsun/font/Font2D;)Lsun/font/SunLayoutEngine$FaceRef;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=1, args_size=1
0: new sun.font.SunLayoutEngine$FaceRef
dup
aload 0
invokespecial sun.font.SunLayoutEngine$FaceRef.<init>:(Lsun/font/Font2D;)V
areturn
LocalVariableTable:
Start End Slot Name Signature
}
SourceFile: "SunLayoutEngine.java"
NestMembers:
sun.font.SunLayoutEngine$FaceRef
InnerClasses:
public Float = java.awt.geom.Point2D$Float of java.awt.geom.Point2D
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
public final GVData = sun.font.GlyphLayout$GVData of sun.font.GlyphLayout
public abstract LayoutEngine = sun.font.GlyphLayout$LayoutEngine of sun.font.GlyphLayout
public abstract LayoutEngineFactory = sun.font.GlyphLayout$LayoutEngineFactory of sun.font.GlyphLayout
public final LayoutEngineKey = sun.font.GlyphLayout$LayoutEngineKey of sun.font.GlyphLayout
private FaceRef = sun.font.SunLayoutEngine$FaceRef of sun.font.SunLayoutEngine
DirectoryEntry = sun.font.TrueTypeFont$DirectoryEntry of sun.font.TrueTypeFont