public class sun.instrument.TransformerManager
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: sun.instrument.TransformerManager
super_class: java.lang.Object
{
private sun.instrument.TransformerManager$TransformerInfo[] mTransformerList;
descriptor: [Lsun/instrument/TransformerManager$TransformerInfo;
flags: (0x0002) ACC_PRIVATE
private boolean mIsRetransformable;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
void <init>(boolean);
descriptor: (Z)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 // sun.instrument.TransformerManager this
start local 1 // boolean isRetransformable
0: .line 84
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
1: .line 85
aload 0 /* this */
iconst_0
anewarray sun.instrument.TransformerManager$TransformerInfo
putfield sun.instrument.TransformerManager.mTransformerList:[Lsun/instrument/TransformerManager$TransformerInfo;
2: .line 86
aload 0 /* this */
iload 1 /* isRetransformable */
putfield sun.instrument.TransformerManager.mIsRetransformable:Z
3: .line 87
return
end local 1 // boolean isRetransformable
end local 0 // sun.instrument.TransformerManager this
LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/instrument/TransformerManager;
0 4 1 isRetransformable Z
MethodParameters:
Name Flags
isRetransformable
boolean isRetransformable();
descriptor: ()Z
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 // sun.instrument.TransformerManager this
0: .line 90
aload 0 /* this */
getfield sun.instrument.TransformerManager.mIsRetransformable:Z
ireturn
end local 0 // sun.instrument.TransformerManager this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/instrument/TransformerManager;
public synchronized void addTransformer(java.lang.instrument.ClassFileTransformer);
descriptor: (Ljava/lang/instrument/ClassFileTransformer;)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=6, locals=4, args_size=2
start local 0 // sun.instrument.TransformerManager this
start local 1 // java.lang.instrument.ClassFileTransformer transformer
0: .line 95
aload 0 /* this */
getfield sun.instrument.TransformerManager.mTransformerList:[Lsun/instrument/TransformerManager$TransformerInfo;
astore 2 /* oldList */
start local 2 // sun.instrument.TransformerManager$TransformerInfo[] oldList
1: .line 96
aload 2 /* oldList */
arraylength
iconst_1
iadd
anewarray sun.instrument.TransformerManager$TransformerInfo
astore 3 /* newList */
start local 3 // sun.instrument.TransformerManager$TransformerInfo[] newList
2: .line 97
aload 2 /* oldList */
3: .line 98
iconst_0
4: .line 99
aload 3 /* newList */
5: .line 100
iconst_0
6: .line 101
aload 2 /* oldList */
arraylength
7: .line 97
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
8: .line 102
aload 3 /* newList */
aload 2 /* oldList */
arraylength
new sun.instrument.TransformerManager$TransformerInfo
dup
aload 0 /* this */
aload 1 /* transformer */
invokespecial sun.instrument.TransformerManager$TransformerInfo.<init>:(Lsun/instrument/TransformerManager;Ljava/lang/instrument/ClassFileTransformer;)V
aastore
9: .line 103
aload 0 /* this */
aload 3 /* newList */
putfield sun.instrument.TransformerManager.mTransformerList:[Lsun/instrument/TransformerManager$TransformerInfo;
10: .line 104
return
end local 3 // sun.instrument.TransformerManager$TransformerInfo[] newList
end local 2 // sun.instrument.TransformerManager$TransformerInfo[] oldList
end local 1 // java.lang.instrument.ClassFileTransformer transformer
end local 0 // sun.instrument.TransformerManager this
LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/instrument/TransformerManager;
0 11 1 transformer Ljava/lang/instrument/ClassFileTransformer;
1 11 2 oldList [Lsun/instrument/TransformerManager$TransformerInfo;
2 11 3 newList [Lsun/instrument/TransformerManager$TransformerInfo;
MethodParameters:
Name Flags
transformer
public synchronized boolean removeTransformer(java.lang.instrument.ClassFileTransformer);
descriptor: (Ljava/lang/instrument/ClassFileTransformer;)Z
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=6, locals=8, args_size=2
start local 0 // sun.instrument.TransformerManager this
start local 1 // java.lang.instrument.ClassFileTransformer transformer
0: .line 108
iconst_0
istore 2 /* found */
start local 2 // boolean found
1: .line 109
aload 0 /* this */
getfield sun.instrument.TransformerManager.mTransformerList:[Lsun/instrument/TransformerManager$TransformerInfo;
astore 3 /* oldList */
start local 3 // sun.instrument.TransformerManager$TransformerInfo[] oldList
2: .line 110
aload 3 /* oldList */
arraylength
istore 4 /* oldLength */
start local 4 // int oldLength
3: .line 111
iload 4 /* oldLength */
iconst_1
isub
istore 5 /* newLength */
start local 5 // int newLength
4: .line 115
iconst_0
istore 6 /* matchingIndex */
start local 6 // int matchingIndex
5: .line 116
iload 4 /* oldLength */
iconst_1
isub
istore 7 /* x */
start local 7 // int x
6: goto 12
7: .line 117
StackMap locals: sun.instrument.TransformerManager java.lang.instrument.ClassFileTransformer int sun.instrument.TransformerManager$TransformerInfo[] int int int int
StackMap stack:
aload 3 /* oldList */
iload 7 /* x */
aaload
invokevirtual sun.instrument.TransformerManager$TransformerInfo.transformer:()Ljava/lang/instrument/ClassFileTransformer;
aload 1 /* transformer */
if_acmpne 11
8: .line 118
iconst_1
istore 2 /* found */
9: .line 119
iload 7 /* x */
istore 6 /* matchingIndex */
10: .line 120
goto 13
11: .line 116
StackMap locals:
StackMap stack:
iinc 7 /* x */ -1
StackMap locals:
StackMap stack:
12: iload 7 /* x */
ifge 7
end local 7 // int x
13: .line 125
StackMap locals:
StackMap stack:
iload 2 /* found */
ifeq 30
14: .line 126
iload 5 /* newLength */
anewarray sun.instrument.TransformerManager$TransformerInfo
astore 7 /* newList */
start local 7 // sun.instrument.TransformerManager$TransformerInfo[] newList
15: .line 129
iload 6 /* matchingIndex */
ifle 22
16: .line 130
aload 3 /* oldList */
17: .line 131
iconst_0
18: .line 132
aload 7 /* newList */
19: .line 133
iconst_0
20: .line 134
iload 6 /* matchingIndex */
21: .line 130
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
22: .line 138
StackMap locals: sun.instrument.TransformerManager$TransformerInfo[]
StackMap stack:
iload 6 /* matchingIndex */
iload 5 /* newLength */
if_icmpge 29
23: .line 139
aload 3 /* oldList */
24: .line 140
iload 6 /* matchingIndex */
iconst_1
iadd
25: .line 141
aload 7 /* newList */
26: .line 142
iload 6 /* matchingIndex */
27: .line 143
iload 5 /* newLength */
iload 6 /* matchingIndex */
isub
28: .line 139
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
29: .line 145
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 7 /* newList */
putfield sun.instrument.TransformerManager.mTransformerList:[Lsun/instrument/TransformerManager$TransformerInfo;
end local 7 // sun.instrument.TransformerManager$TransformerInfo[] newList
30: .line 147
StackMap locals:
StackMap stack:
iload 2 /* found */
ireturn
end local 6 // int matchingIndex
end local 5 // int newLength
end local 4 // int oldLength
end local 3 // sun.instrument.TransformerManager$TransformerInfo[] oldList
end local 2 // boolean found
end local 1 // java.lang.instrument.ClassFileTransformer transformer
end local 0 // sun.instrument.TransformerManager this
LocalVariableTable:
Start End Slot Name Signature
0 31 0 this Lsun/instrument/TransformerManager;
0 31 1 transformer Ljava/lang/instrument/ClassFileTransformer;
1 31 2 found Z
2 31 3 oldList [Lsun/instrument/TransformerManager$TransformerInfo;
3 31 4 oldLength I
4 31 5 newLength I
5 31 6 matchingIndex I
6 13 7 x I
15 30 7 newList [Lsun/instrument/TransformerManager$TransformerInfo;
MethodParameters:
Name Flags
transformer
synchronized boolean includesTransformer(java.lang.instrument.ClassFileTransformer);
descriptor: (Ljava/lang/instrument/ClassFileTransformer;)Z
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=2, locals=6, args_size=2
start local 0 // sun.instrument.TransformerManager this
start local 1 // java.lang.instrument.ClassFileTransformer transformer
0: .line 152
aload 0 /* this */
getfield sun.instrument.TransformerManager.mTransformerList:[Lsun/instrument/TransformerManager$TransformerInfo;
dup
astore 5
arraylength
istore 4
iconst_0
istore 3
goto 5
StackMap locals: sun.instrument.TransformerManager java.lang.instrument.ClassFileTransformer top int int sun.instrument.TransformerManager$TransformerInfo[]
StackMap stack:
1: aload 5
iload 3
aaload
astore 2 /* info */
start local 2 // sun.instrument.TransformerManager$TransformerInfo info
2: .line 153
aload 2 /* info */
invokevirtual sun.instrument.TransformerManager$TransformerInfo.transformer:()Ljava/lang/instrument/ClassFileTransformer;
aload 1 /* transformer */
if_acmpne 4
3: .line 154
iconst_1
ireturn
end local 2 // sun.instrument.TransformerManager$TransformerInfo info
4: .line 152
StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
5: iload 3
iload 4
if_icmplt 1
6: .line 157
iconst_0
ireturn
end local 1 // java.lang.instrument.ClassFileTransformer transformer
end local 0 // sun.instrument.TransformerManager this
LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lsun/instrument/TransformerManager;
0 7 1 transformer Ljava/lang/instrument/ClassFileTransformer;
2 4 2 info Lsun/instrument/TransformerManager$TransformerInfo;
MethodParameters:
Name Flags
transformer
private sun.instrument.TransformerManager$TransformerInfo[] getSnapshotTransformerList();
descriptor: ()[Lsun/instrument/TransformerManager$TransformerInfo;
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 // sun.instrument.TransformerManager this
0: .line 166
aload 0 /* this */
getfield sun.instrument.TransformerManager.mTransformerList:[Lsun/instrument/TransformerManager$TransformerInfo;
areturn
end local 0 // sun.instrument.TransformerManager this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/instrument/TransformerManager;
public byte[] transform(java.lang.ClassLoader, java.lang.String, java.lang.Class, java.security.ProtectionDomain, byte[]);
descriptor: (Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/Class;Ljava/security/ProtectionDomain;[B)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=13, args_size=6
start local 0 // sun.instrument.TransformerManager this
start local 1 // java.lang.ClassLoader loader
start local 2 // java.lang.String classname
start local 3 // java.lang.Class classBeingRedefined
start local 4 // java.security.ProtectionDomain protectionDomain
start local 5 // byte[] classfileBuffer
0: .line 175
iconst_0
istore 6 /* someoneTouchedTheBytecode */
start local 6 // boolean someoneTouchedTheBytecode
1: .line 177
aload 0 /* this */
invokevirtual sun.instrument.TransformerManager.getSnapshotTransformerList:()[Lsun/instrument/TransformerManager$TransformerInfo;
astore 7 /* transformerList */
start local 7 // sun.instrument.TransformerManager$TransformerInfo[] transformerList
2: .line 179
aload 5 /* classfileBuffer */
astore 8 /* bufferToUse */
start local 8 // byte[] bufferToUse
3: .line 182
iconst_0
istore 9 /* x */
start local 9 // int x
4: goto 20
5: .line 183
StackMap locals: sun.instrument.TransformerManager java.lang.ClassLoader java.lang.String java.lang.Class java.security.ProtectionDomain byte[] int sun.instrument.TransformerManager$TransformerInfo[] byte[] int
StackMap stack:
aload 7 /* transformerList */
iload 9 /* x */
aaload
astore 10 /* transformerInfo */
start local 10 // sun.instrument.TransformerManager$TransformerInfo transformerInfo
6: .line 184
aload 10 /* transformerInfo */
invokevirtual sun.instrument.TransformerManager$TransformerInfo.transformer:()Ljava/lang/instrument/ClassFileTransformer;
astore 11 /* transformer */
start local 11 // java.lang.instrument.ClassFileTransformer transformer
7: .line 185
aconst_null
astore 12 /* transformedBytes */
start local 12 // byte[] transformedBytes
8: .line 188
aload 11 /* transformer */
aload 1 /* loader */
9: .line 189
aload 2 /* classname */
10: .line 190
aload 3 /* classBeingRedefined */
11: .line 191
aload 4 /* protectionDomain */
12: .line 192
aload 8 /* bufferToUse */
13: .line 188
invokeinterface java.lang.instrument.ClassFileTransformer.transform:(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/Class;Ljava/security/ProtectionDomain;[B)[B
astore 12 /* transformedBytes */
14: .line 193
goto 16
15: .line 194
StackMap locals: sun.instrument.TransformerManager java.lang.ClassLoader java.lang.String java.lang.Class java.security.ProtectionDomain byte[] int sun.instrument.TransformerManager$TransformerInfo[] byte[] int sun.instrument.TransformerManager$TransformerInfo java.lang.instrument.ClassFileTransformer byte[]
StackMap stack: java.lang.Throwable
pop
16: .line 199
StackMap locals:
StackMap stack:
aload 12 /* transformedBytes */
ifnull 19
17: .line 200
iconst_1
istore 6 /* someoneTouchedTheBytecode */
18: .line 201
aload 12 /* transformedBytes */
astore 8 /* bufferToUse */
end local 12 // byte[] transformedBytes
end local 11 // java.lang.instrument.ClassFileTransformer transformer
end local 10 // sun.instrument.TransformerManager$TransformerInfo transformerInfo
19: .line 182
StackMap locals:
StackMap stack:
iinc 9 /* x */ 1
StackMap locals:
StackMap stack:
20: iload 9 /* x */
aload 7 /* transformerList */
arraylength
if_icmplt 5
end local 9 // int x
21: .line 208
iload 6 /* someoneTouchedTheBytecode */
ifeq 24
22: .line 209
aload 8 /* bufferToUse */
astore 9 /* result */
start local 9 // byte[] result
23: .line 210
goto 25
end local 9 // byte[] result
24: .line 212
StackMap locals:
StackMap stack:
aconst_null
astore 9 /* result */
start local 9 // byte[] result
25: .line 215
StackMap locals: byte[]
StackMap stack:
aload 9 /* result */
areturn
end local 9 // byte[] result
end local 8 // byte[] bufferToUse
end local 7 // sun.instrument.TransformerManager$TransformerInfo[] transformerList
end local 6 // boolean someoneTouchedTheBytecode
end local 5 // byte[] classfileBuffer
end local 4 // java.security.ProtectionDomain protectionDomain
end local 3 // java.lang.Class classBeingRedefined
end local 2 // java.lang.String classname
end local 1 // java.lang.ClassLoader loader
end local 0 // sun.instrument.TransformerManager this
LocalVariableTable:
Start End Slot Name Signature
0 26 0 this Lsun/instrument/TransformerManager;
0 26 1 loader Ljava/lang/ClassLoader;
0 26 2 classname Ljava/lang/String;
0 26 3 classBeingRedefined Ljava/lang/Class;
0 26 4 protectionDomain Ljava/security/ProtectionDomain;
0 26 5 classfileBuffer [B
1 26 6 someoneTouchedTheBytecode Z
2 26 7 transformerList [Lsun/instrument/TransformerManager$TransformerInfo;
3 26 8 bufferToUse [B
4 21 9 x I
6 19 10 transformerInfo Lsun/instrument/TransformerManager$TransformerInfo;
7 19 11 transformer Ljava/lang/instrument/ClassFileTransformer;
8 19 12 transformedBytes [B
23 24 9 result [B
25 26 9 result [B
Exception table:
from to target type
8 14 15 Class java.lang.Throwable
MethodParameters:
Name Flags
loader
classname
classBeingRedefined
protectionDomain
classfileBuffer
int getTransformerCount();
descriptor: ()I
flags: (0x0000)
Code:
stack=1, locals=2, args_size=1
start local 0 // sun.instrument.TransformerManager this
0: .line 221
aload 0 /* this */
invokevirtual sun.instrument.TransformerManager.getSnapshotTransformerList:()[Lsun/instrument/TransformerManager$TransformerInfo;
astore 1 /* transformerList */
start local 1 // sun.instrument.TransformerManager$TransformerInfo[] transformerList
1: .line 222
aload 1 /* transformerList */
arraylength
ireturn
end local 1 // sun.instrument.TransformerManager$TransformerInfo[] transformerList
end local 0 // sun.instrument.TransformerManager this
LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/instrument/TransformerManager;
1 2 1 transformerList [Lsun/instrument/TransformerManager$TransformerInfo;
boolean setNativeMethodPrefix(java.lang.instrument.ClassFileTransformer, java.lang.String);
descriptor: (Ljava/lang/instrument/ClassFileTransformer;Ljava/lang/String;)Z
flags: (0x0000)
Code:
stack=2, locals=7, args_size=3
start local 0 // sun.instrument.TransformerManager this
start local 1 // java.lang.instrument.ClassFileTransformer transformer
start local 2 // java.lang.String prefix
0: .line 227
aload 0 /* this */
invokevirtual sun.instrument.TransformerManager.getSnapshotTransformerList:()[Lsun/instrument/TransformerManager$TransformerInfo;
astore 3 /* transformerList */
start local 3 // sun.instrument.TransformerManager$TransformerInfo[] transformerList
1: .line 229
iconst_0
istore 4 /* x */
start local 4 // int x
2: goto 9
3: .line 230
StackMap locals: sun.instrument.TransformerManager$TransformerInfo[] int
StackMap stack:
aload 3 /* transformerList */
iload 4 /* x */
aaload
astore 5 /* transformerInfo */
start local 5 // sun.instrument.TransformerManager$TransformerInfo transformerInfo
4: .line 231
aload 5 /* transformerInfo */
invokevirtual sun.instrument.TransformerManager$TransformerInfo.transformer:()Ljava/lang/instrument/ClassFileTransformer;
astore 6 /* aTransformer */
start local 6 // java.lang.instrument.ClassFileTransformer aTransformer
5: .line 233
aload 6 /* aTransformer */
aload 1 /* transformer */
if_acmpne 8
6: .line 234
aload 5 /* transformerInfo */
aload 2 /* prefix */
invokevirtual sun.instrument.TransformerManager$TransformerInfo.setPrefix:(Ljava/lang/String;)V
7: .line 235
iconst_1
ireturn
end local 6 // java.lang.instrument.ClassFileTransformer aTransformer
end local 5 // sun.instrument.TransformerManager$TransformerInfo transformerInfo
8: .line 229
StackMap locals:
StackMap stack:
iinc 4 /* x */ 1
StackMap locals:
StackMap stack:
9: iload 4 /* x */
aload 3 /* transformerList */
arraylength
if_icmplt 3
end local 4 // int x
10: .line 238
iconst_0
ireturn
end local 3 // sun.instrument.TransformerManager$TransformerInfo[] transformerList
end local 2 // java.lang.String prefix
end local 1 // java.lang.instrument.ClassFileTransformer transformer
end local 0 // sun.instrument.TransformerManager this
LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/instrument/TransformerManager;
0 11 1 transformer Ljava/lang/instrument/ClassFileTransformer;
0 11 2 prefix Ljava/lang/String;
1 11 3 transformerList [Lsun/instrument/TransformerManager$TransformerInfo;
2 10 4 x I
4 8 5 transformerInfo Lsun/instrument/TransformerManager$TransformerInfo;
5 8 6 aTransformer Ljava/lang/instrument/ClassFileTransformer;
MethodParameters:
Name Flags
transformer
prefix
java.lang.String[] getNativeMethodPrefixes();
descriptor: ()[Ljava/lang/String;
flags: (0x0000)
Code:
stack=3, locals=5, args_size=1
start local 0 // sun.instrument.TransformerManager this
0: .line 244
aload 0 /* this */
invokevirtual sun.instrument.TransformerManager.getSnapshotTransformerList:()[Lsun/instrument/TransformerManager$TransformerInfo;
astore 1 /* transformerList */
start local 1 // sun.instrument.TransformerManager$TransformerInfo[] transformerList
1: .line 245
aload 1 /* transformerList */
arraylength
anewarray java.lang.String
astore 2 /* prefixes */
start local 2 // java.lang.String[] prefixes
2: .line 247
iconst_0
istore 3 /* x */
start local 3 // int x
3: goto 7
4: .line 248
StackMap locals: sun.instrument.TransformerManager$TransformerInfo[] java.lang.String[] int
StackMap stack:
aload 1 /* transformerList */
iload 3 /* x */
aaload
astore 4 /* transformerInfo */
start local 4 // sun.instrument.TransformerManager$TransformerInfo transformerInfo
5: .line 249
aload 2 /* prefixes */
iload 3 /* x */
aload 4 /* transformerInfo */
invokevirtual sun.instrument.TransformerManager$TransformerInfo.getPrefix:()Ljava/lang/String;
aastore
end local 4 // sun.instrument.TransformerManager$TransformerInfo transformerInfo
6: .line 247
iinc 3 /* x */ 1
StackMap locals:
StackMap stack:
7: iload 3 /* x */
aload 1 /* transformerList */
arraylength
if_icmplt 4
end local 3 // int x
8: .line 251
aload 2 /* prefixes */
areturn
end local 2 // java.lang.String[] prefixes
end local 1 // sun.instrument.TransformerManager$TransformerInfo[] transformerList
end local 0 // sun.instrument.TransformerManager this
LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lsun/instrument/TransformerManager;
1 9 1 transformerList [Lsun/instrument/TransformerManager$TransformerInfo;
2 9 2 prefixes [Ljava/lang/String;
3 8 3 x I
5 6 4 transformerInfo Lsun/instrument/TransformerManager$TransformerInfo;
}
SourceFile: "TransformerManager.java"
NestMembers:
sun.instrument.TransformerManager$TransformerInfo
InnerClasses:
private TransformerInfo = sun.instrument.TransformerManager$TransformerInfo of sun.instrument.TransformerManager