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 cacheref;
descriptor: Ljava/lang/ref/SoftReference;
flags: (0x0002) ACC_PRIVATE
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=0, locals=0, args_size=0
0: invokestatic sun.font.FontManagerNativeLibrary.load:()V
1: invokestatic sun.font.SunLayoutEngine.initGVIDs:()V
2: return
LocalVariableTable:
Start End Slot Name Signature
private static native void initGVIDs();
descriptor: ()V
flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
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
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;
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 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;
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
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;
2: aload 0
aload 1
putfield sun.font.SunLayoutEngine.key:Lsun/font/GlyphLayout$LayoutEngineKey;
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/font/SunLayoutEngine;
0 4 1 key Lsun/font/GlyphLayout$LayoutEngineKey;
MethodParameters:
Name Flags
key
public void layout(sun.font.FontStrikeDesc, float[], int, int, sun.font.TextRecord, int, java.awt.geom.Point2D$Float, sun.font.GlyphLayout$GVData);
descriptor: (Lsun/font/FontStrikeDesc;[FIILsun/font/TextRecord;ILjava/awt/geom/Point2D$Float;Lsun/font/GlyphLayout$GVData;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=19, locals=13, args_size=9
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 0: aload 0
getfield sun.font.SunLayoutEngine.key:Lsun/font/GlyphLayout$LayoutEngineKey;
invokevirtual sun.font.GlyphLayout$LayoutEngineKey.font:()Lsun/font/Font2D;
astore 9
start local 9 1: aload 9
aload 1
invokevirtual sun.font.Font2D.getStrike:(Lsun/font/FontStrikeDesc;)Lsun/font/FontStrike;
astore 10
start local 10 2: lconst_0
lstore 11
start local 11 3: aload 9
instanceof sun.font.TrueTypeFont
ifeq 5
4: aload 9
checkcast sun.font.TrueTypeFont
invokevirtual sun.font.TrueTypeFont.getLayoutTableCache:()J
lstore 11
5: StackMap locals: sun.font.Font2D sun.font.FontStrike long
StackMap stack:
aload 9
aload 10
aload 2
iload 3
iload 4
6: aload 5
getfield sun.font.TextRecord.text:[C
aload 5
getfield sun.font.TextRecord.start:I
aload 5
getfield sun.font.TextRecord.limit:I
aload 5
getfield sun.font.TextRecord.min:I
aload 5
getfield sun.font.TextRecord.max:I
7: aload 0
getfield sun.font.SunLayoutEngine.key:Lsun/font/GlyphLayout$LayoutEngineKey;
invokevirtual sun.font.GlyphLayout$LayoutEngineKey.script:()I
aload 0
getfield sun.font.SunLayoutEngine.key:Lsun/font/GlyphLayout$LayoutEngineKey;
invokevirtual sun.font.GlyphLayout$LayoutEngineKey.lang:()I
iload 6
aload 7
aload 8
8: aload 9
invokevirtual sun.font.Font2D.getUnitsPerEm:()J
lload 11
9: invokestatic sun.font.SunLayoutEngine.nativeLayout:(Lsun/font/Font2D;Lsun/font/FontStrike;[FII[CIIIIIIILjava/awt/geom/Point2D$Float;Lsun/font/GlyphLayout$GVData;JJ)V
10: return
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 11 0 this Lsun/font/SunLayoutEngine;
0 11 1 desc Lsun/font/FontStrikeDesc;
0 11 2 mat [F
0 11 3 gmask I
0 11 4 baseIndex I
0 11 5 tr Lsun/font/TextRecord;
0 11 6 typo_flags I
0 11 7 pt Ljava/awt/geom/Point2D$Float;
0 11 8 data Lsun/font/GlyphLayout$GVData;
1 11 9 font Lsun/font/Font2D;
2 11 10 strike Lsun/font/FontStrike;
3 11 11 layoutTables J
MethodParameters:
Name Flags
desc
mat
gmask
baseIndex
tr
typo_flags
pt
data
private static native void nativeLayout(sun.font.Font2D, sun.font.FontStrike, float[], int, int, char[], int, int, int, int, int, int, int, java.awt.geom.Point2D$Float, sun.font.GlyphLayout$GVData, long, long);
descriptor: (Lsun/font/Font2D;Lsun/font/FontStrike;[FII[CIIIIIIILjava/awt/geom/Point2D$Float;Lsun/font/GlyphLayout$GVData;JJ)V
flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
MethodParameters:
Name Flags
font
strike
mat
gmask
baseIndex
chars
offset
limit
min
max
script
lang
typo_flags
pt
data
upem
layoutTables
}
SourceFile: "SunLayoutEngine.java"
InnerClasses:
public Float = java.awt.geom.Point2D$Float of java.awt.geom.Point2D
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