public class sun.tools.attach.AttachProviderImpl extends sun.tools.attach.HotSpotAttachProvider
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: sun.tools.attach.AttachProviderImpl
super_class: sun.tools.attach.HotSpotAttachProvider
{
private static final long FS_PERSISTENT_ACLS;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 8
private static volatile boolean wasTempPathChecked;
descriptor: Z
flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE
private static boolean isTempPathSecure;
descriptor: Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc "attach"
invokestatic java.lang.System.loadLibrary:(Ljava/lang/String;)V
1: return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=1
start local 0 0: aload 0
invokespecial sun.tools.attach.HotSpotAttachProvider.<init>:()V
1: ldc "os.name"
invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
astore 1
start local 1 2: aload 1
ldc "Windows 9"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifne 3
aload 1
ldc "Windows Me"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 6
3: StackMap locals: sun.tools.attach.AttachProviderImpl java.lang.String
StackMap stack:
new java.lang.RuntimeException
dup
4: ldc "This provider is not supported on this version of Windows"
5: invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
ldc "os.arch"
invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
astore 2
start local 2 7: aload 2
ldc "x86"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 11
aload 2
ldc "amd64"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 11
aload 2
ldc "aarch64"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 11
8: new java.lang.RuntimeException
dup
9: ldc "This provider is not supported on this processor architecture"
10: invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
11: StackMap locals: java.lang.String
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lsun/tools/attach/AttachProviderImpl;
2 12 1 os Ljava/lang/String;
7 12 2 arch Ljava/lang/String;
public java.lang.String name();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: ldc "sun"
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/tools/attach/AttachProviderImpl;
public java.lang.String type();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: ldc "windows"
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/tools/attach/AttachProviderImpl;
public com.sun.tools.attach.VirtualMachine attachVirtualMachine(java.lang.String);
descriptor: (Ljava/lang/String;)Lcom/sun/tools/attach/VirtualMachine;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual sun.tools.attach.AttachProviderImpl.checkAttachPermission:()V
1: aload 0
aload 1
invokevirtual sun.tools.attach.AttachProviderImpl.testAttachable:(Ljava/lang/String;)V
2: new sun.tools.attach.VirtualMachineImpl
dup
aload 0
aload 1
invokespecial sun.tools.attach.VirtualMachineImpl.<init>:(Lcom/sun/tools/attach/spi/AttachProvider;Ljava/lang/String;)V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/tools/attach/AttachProviderImpl;
0 3 1 vmid Ljava/lang/String;
Exceptions:
throws com.sun.tools.attach.AttachNotSupportedException, java.io.IOException
MethodParameters:
Name Flags
vmid
public java.util.List<com.sun.tools.attach.VirtualMachineDescriptor> listVirtualMachines();
descriptor: ()Ljava/util/List;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: invokestatic sun.tools.attach.AttachProviderImpl.isTempPathSecure:()Z
ifeq 2
1: aload 0
invokespecial sun.tools.attach.HotSpotAttachProvider.listVirtualMachines:()Ljava/util/List;
areturn
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.tools.attach.AttachProviderImpl.listJavaProcesses:()Ljava/util/List;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/tools/attach/AttachProviderImpl;
Signature: ()Ljava/util/List<Lcom/sun/tools/attach/VirtualMachineDescriptor;>;
private static boolean isTempPathSecure();
descriptor: ()Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=4, args_size=0
0: getstatic sun.tools.attach.AttachProviderImpl.wasTempPathChecked:Z
ifne 15
1: ldc Lsun/tools/attach/AttachProviderImpl;
dup
astore 0
monitorenter
2: getstatic sun.tools.attach.AttachProviderImpl.wasTempPathChecked:Z
ifne 11
3: invokestatic sun.tools.attach.AttachProviderImpl.tempPath:()Ljava/lang/String;
astore 1
start local 1 4: aload 1
ifnull 10
aload 1
invokevirtual java.lang.String.length:()I
iconst_3
if_icmplt 10
5: aload 1
iconst_1
invokevirtual java.lang.String.charAt:(I)C
bipush 58
if_icmpne 10
aload 1
iconst_2
invokevirtual java.lang.String.charAt:(I)C
bipush 92
if_icmpne 10
6: aload 1
iconst_0
iconst_3
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
invokestatic sun.tools.attach.AttachProviderImpl.volumeFlags:(Ljava/lang/String;)J
lstore 2
start local 2 7: lload 2
ldc 8
land
lconst_0
lcmp
ifeq 8
iconst_1
goto 9
StackMap locals: java.lang.Class java.lang.String long
StackMap stack:
8: iconst_0
StackMap locals:
StackMap stack: int
9: putstatic sun.tools.attach.AttachProviderImpl.isTempPathSecure:Z
end local 2 10: StackMap locals:
StackMap stack:
iconst_1
putstatic sun.tools.attach.AttachProviderImpl.wasTempPathChecked:Z
end local 1 11: StackMap locals:
StackMap stack:
aload 0
monitorexit
12: goto 15
StackMap locals:
StackMap stack: java.lang.Throwable
13: aload 0
monitorexit
14: athrow
15: StackMap locals:
StackMap stack:
getstatic sun.tools.attach.AttachProviderImpl.isTempPathSecure:Z
ireturn
LocalVariableTable:
Start End Slot Name Signature
4 11 1 temp Ljava/lang/String;
7 10 2 flags J
Exception table:
from to target type
2 12 13 any
13 14 13 any
private static native java.lang.String tempPath();
descriptor: ()Ljava/lang/String;
flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
private static native long volumeFlags(java.lang.String);
descriptor: (Ljava/lang/String;)J
flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
MethodParameters:
Name Flags
volume
private java.util.List<com.sun.tools.attach.VirtualMachineDescriptor> listJavaProcesses();
descriptor: ()Ljava/util/List;
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=8, args_size=1
start local 0 0: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
1: astore 1
start local 1 2: ldc "localhost"
astore 2
start local 2 3: invokestatic java.net.InetAddress.getLocalHost:()Ljava/net/InetAddress;
invokevirtual java.net.InetAddress.getHostName:()Ljava/lang/String;
astore 2
4: goto 6
StackMap locals: sun.tools.attach.AttachProviderImpl java.util.ArrayList java.lang.String
StackMap stack: java.net.UnknownHostException
5: pop
6: StackMap locals:
StackMap stack:
sipush 1024
newarray 10
astore 3
start local 3 7: aload 3
aload 3
arraylength
invokestatic sun.tools.attach.AttachProviderImpl.enumProcesses:([II)I
istore 4
start local 4 8: iconst_0
istore 5
start local 5 9: goto 19
10: StackMap locals: int[] int int
StackMap stack:
ldc "jvm.dll"
aload 3
iload 5
iaload
invokestatic sun.tools.attach.AttachProviderImpl.isLibraryLoadedByProcess:(Ljava/lang/String;I)Z
ifeq 18
11: aload 3
iload 5
iaload
invokestatic java.lang.Integer.toString:(I)Ljava/lang/String;
astore 6
start local 6 12: new sun.tools.attach.VirtualMachineImpl
dup
aload 0
aload 6
invokespecial sun.tools.attach.VirtualMachineImpl.<init>:(Lcom/sun/tools/attach/spi/AttachProvider;Ljava/lang/String;)V
invokevirtual sun.tools.attach.VirtualMachineImpl.detach:()V
13: new java.lang.StringBuilder
dup
aload 6
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "@"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 7
start local 7 14: aload 1
new sun.tools.attach.HotSpotAttachProvider$HotSpotVirtualMachineDescriptor
dup
aload 0
aload 6
aload 7
invokespecial sun.tools.attach.HotSpotAttachProvider$HotSpotVirtualMachineDescriptor.<init>:(Lcom/sun/tools/attach/spi/AttachProvider;Ljava/lang/String;Ljava/lang/String;)V
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
end local 7 15: goto 18
StackMap locals: sun.tools.attach.AttachProviderImpl java.util.ArrayList java.lang.String int[] int int java.lang.String
StackMap stack: com.sun.tools.attach.AttachNotSupportedException
16: pop
goto 18
17: StackMap locals:
StackMap stack: java.io.IOException
pop
end local 6 18: StackMap locals:
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
19: iload 5
iload 4
if_icmplt 10
end local 5 20: aload 1
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lsun/tools/attach/AttachProviderImpl;
2 21 1 list Ljava/util/ArrayList<Lcom/sun/tools/attach/VirtualMachineDescriptor;>;
3 21 2 host Ljava/lang/String;
7 21 3 processes [I
8 21 4 count I
9 20 5 i I
12 18 6 pid Ljava/lang/String;
14 15 7 name Ljava/lang/String;
Exception table:
from to target type
3 4 5 Class java.net.UnknownHostException
12 15 16 Class com.sun.tools.attach.AttachNotSupportedException
12 15 17 Class java.io.IOException
Signature: ()Ljava/util/List<Lcom/sun/tools/attach/VirtualMachineDescriptor;>;
private static native int enumProcesses(int[], int);
descriptor: ([II)I
flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
MethodParameters:
Name Flags
processes
max
private static native boolean isLibraryLoadedByProcess(java.lang.String, int);
descriptor: (Ljava/lang/String;I)Z
flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
MethodParameters:
Name Flags
library
processId
}
SourceFile: "AttachProviderImpl.java"
InnerClasses:
HotSpotVirtualMachineDescriptor = sun.tools.attach.HotSpotAttachProvider$HotSpotVirtualMachineDescriptor of sun.tools.attach.HotSpotAttachProvider