public class sun.jvm.hotspot.asm.Disassembler
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: sun.jvm.hotspot.asm.Disassembler
super_class: java.lang.Object
{
private static java.lang.String options;
descriptor: Ljava/lang/String;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static long decode_function;
descriptor: J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
protected long startPc;
descriptor: J
flags: (0x0004) ACC_PROTECTED
protected byte[] code;
descriptor: [B
flags: (0x0004) ACC_PROTECTED
private sun.jvm.hotspot.code.CodeBlob blob;
descriptor: Lsun/jvm/hotspot/code/CodeBlob;
flags: (0x0002) ACC_PRIVATE
private sun.jvm.hotspot.code.NMethod nmethod;
descriptor: Lsun/jvm/hotspot/code/NMethod;
flags: (0x0002) ACC_PRIVATE
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc ""
putstatic sun.jvm.hotspot.asm.Disassembler.options:Ljava/lang/String;
1: return
LocalVariableTable:
Start End Slot Name Signature
public static void decode(sun.jvm.hotspot.asm.InstructionVisitor, sun.jvm.hotspot.code.CodeBlob);
descriptor: (Lsun/jvm/hotspot/asm/InstructionVisitor;Lsun/jvm/hotspot/code/CodeBlob;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
aload 1
invokevirtual sun.jvm.hotspot.code.CodeBlob.codeBegin:()Lsun/jvm/hotspot/debugger/Address;
aload 1
invokevirtual sun.jvm.hotspot.code.CodeBlob.codeEnd:()Lsun/jvm/hotspot/debugger/Address;
invokestatic sun.jvm.hotspot.asm.Disassembler.decode:(Lsun/jvm/hotspot/asm/InstructionVisitor;Lsun/jvm/hotspot/code/CodeBlob;Lsun/jvm/hotspot/debugger/Address;Lsun/jvm/hotspot/debugger/Address;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 visitor Lsun/jvm/hotspot/asm/InstructionVisitor;
0 2 1 blob Lsun/jvm/hotspot/code/CodeBlob;
MethodParameters:
Name Flags
visitor
blob
public static void decode(sun.jvm.hotspot.asm.InstructionVisitor, sun.jvm.hotspot.code.CodeBlob, sun.jvm.hotspot.debugger.Address, sun.jvm.hotspot.debugger.Address);
descriptor: (Lsun/jvm/hotspot/asm/InstructionVisitor;Lsun/jvm/hotspot/code/CodeBlob;Lsun/jvm/hotspot/debugger/Address;Lsun/jvm/hotspot/debugger/Address;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 3
aload 2
invokeinterface sun.jvm.hotspot.debugger.Address.minus:(Lsun/jvm/hotspot/debugger/Address;)J
l2i
istore 4
start local 4 1: aload 2
invokestatic sun.jvm.hotspot.runtime.VM.getAddressValue:(Lsun/jvm/hotspot/debugger/Address;)J
lstore 5
start local 5 2: iload 4
newarray 8
astore 7
start local 7 3: iconst_0
istore 8
start local 8 4: goto 7
5: StackMap locals: sun.jvm.hotspot.asm.InstructionVisitor sun.jvm.hotspot.code.CodeBlob sun.jvm.hotspot.debugger.Address sun.jvm.hotspot.debugger.Address int long byte[] int
StackMap stack:
aload 7
iload 8
aload 2
iload 8
i2l
invokeinterface sun.jvm.hotspot.debugger.Address.getJByteAt:(J)B
bastore
6: iinc 8 1
StackMap locals:
StackMap stack:
7: iload 8
aload 7
arraylength
if_icmplt 5
end local 8 8: new sun.jvm.hotspot.asm.Disassembler
dup
lload 5
aload 7
invokespecial sun.jvm.hotspot.asm.Disassembler.<init>:(J[B)V
astore 8
start local 8 9: aload 8
aload 0
invokevirtual sun.jvm.hotspot.asm.Disassembler.decode:(Lsun/jvm/hotspot/asm/InstructionVisitor;)V
10: return
end local 8 end local 7 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 visitor Lsun/jvm/hotspot/asm/InstructionVisitor;
0 11 1 blob Lsun/jvm/hotspot/code/CodeBlob;
0 11 2 begin Lsun/jvm/hotspot/debugger/Address;
0 11 3 end Lsun/jvm/hotspot/debugger/Address;
1 11 4 codeSize I
2 11 5 startPc J
3 11 7 code [B
4 8 8 i I
9 11 8 dis Lsun/jvm/hotspot/asm/Disassembler;
MethodParameters:
Name Flags
visitor
blob
begin
end
private void <init>(long, byte[]);
descriptor: (J[B)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=14, args_size=3
start local 0 start local 1 start local 3 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
lload 1
putfield sun.jvm.hotspot.asm.Disassembler.startPc:J
2: aload 0
aload 3
putfield sun.jvm.hotspot.asm.Disassembler.code:[B
3: getstatic sun.jvm.hotspot.asm.Disassembler.decode_function:J
lconst_0
lcmp
ifne 38
4: invokestatic sun.jvm.hotspot.runtime.VM.getVM:()Lsun/jvm/hotspot/runtime/VM;
invokevirtual sun.jvm.hotspot.runtime.VM.getSystemProperties:()Ljava/util/Properties;
astore 4
start local 4 5: aload 4
ldc "os.name"
invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
astore 5
start local 5 6: ldc ".so"
astore 6
start local 6 7: aload 5
ldc "Windows"
invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
ifeq 10
8: ldc ".dll"
astore 6
9: goto 12
StackMap locals: sun.jvm.hotspot.asm.Disassembler long byte[] java.util.Properties java.lang.String java.lang.String
StackMap stack:
10: aload 5
ldc "Mac OS"
invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
ifeq 12
11: ldc ".dylib"
astore 6
12: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "^(lib)?jvm\\"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 6
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "$"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 7
start local 7 13: invokestatic sun.jvm.hotspot.runtime.VM.getVM:()Lsun/jvm/hotspot/runtime/VM;
14: invokevirtual sun.jvm.hotspot.runtime.VM.getDebugger:()Lsun/jvm/hotspot/debugger/JVMDebugger;
15: invokeinterface sun.jvm.hotspot.debugger.JVMDebugger.getCDebugger:()Lsun/jvm/hotspot/debugger/cdbg/CDebugger;
16: invokeinterface sun.jvm.hotspot.debugger.cdbg.CDebugger.getLoadObjectList:()Ljava/util/List;
17: invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
18: 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/jvm/hotspot/asm/Disassembler.lambda$0(Lsun/jvm/hotspot/debugger/cdbg/LoadObject;)Ljava/nio/file/Path; (6)
(Lsun/jvm/hotspot/debugger/cdbg/LoadObject;)Ljava/nio/file/Path;
invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
19: aload 7
invokedynamic test(Ljava/lang/String;)Ljava/util/function/Predicate;
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;)Z
sun/jvm/hotspot/asm/Disassembler.lambda$1(Ljava/lang/String;Ljava/nio/file/Path;)Z (6)
(Ljava/nio/file/Path;)Z
invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
20: invokeinterface java.util.stream.Stream.findAny:()Ljava/util/Optional;
21: invokevirtual java.util.Optional.get:()Ljava/lang/Object;
checkcast java.nio.file.Path
22: astore 8
start local 8 23: aload 4
ldc "os.arch"
invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
astore 9
start local 9 24: new java.lang.StringBuilder
dup
ldc "hsdis-"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 9
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 6
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 10
start local 10 25: aload 8
new java.lang.StringBuilder
dup
ldc "lib"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 10
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface java.nio.file.Path.resolveSibling:(Ljava/lang/String;)Ljava/nio/file/Path;
invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
26: aload 8
aload 10
invokeinterface java.nio.file.Path.resolveSibling:(Ljava/lang/String;)Ljava/nio/file/Path;
invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
27: aload 8
invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
aload 10
invokeinterface java.nio.file.Path.resolveSibling:(Ljava/lang/String;)Ljava/nio/file/Path;
invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
28: aload 10
29: invokestatic java.util.List.of:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/List;
astore 11
start local 11 30: aload 11
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 12
start local 12 31: goto 37
32: StackMap locals: sun.jvm.hotspot.asm.Disassembler long byte[] java.util.Properties java.lang.String java.lang.String java.lang.String java.nio.file.Path java.lang.String java.lang.String java.util.List java.util.Iterator
StackMap stack:
aload 12
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
invokestatic sun.jvm.hotspot.asm.Disassembler.load_library:(Ljava/lang/String;)J
putstatic sun.jvm.hotspot.asm.Disassembler.decode_function:J
33: goto 37
StackMap locals:
StackMap stack: sun.jvm.hotspot.debugger.DebuggerException
34: astore 13
start local 13 35: aload 12
invokeinterface java.util.Iterator.hasNext:()Z
ifne 37
36: aload 13
athrow
end local 13 37: StackMap locals:
StackMap stack:
aload 12
invokeinterface java.util.Iterator.hasNext:()Z
ifeq 38
getstatic sun.jvm.hotspot.asm.Disassembler.decode_function:J
lconst_0
lcmp
ifeq 32
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 38: StackMap locals: sun.jvm.hotspot.asm.Disassembler long byte[]
StackMap stack:
return
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 39 0 this Lsun/jvm/hotspot/asm/Disassembler;
0 39 1 startPc J
0 39 3 code [B
5 38 4 targetSysProps Ljava/util/Properties;
6 38 5 os Ljava/lang/String;
7 38 6 ext Ljava/lang/String;
13 38 7 jvmPattern Ljava/lang/String;
23 38 8 jvmPath Ljava/nio/file/Path;
24 38 9 arch Ljava/lang/String;
25 38 10 libname Ljava/lang/String;
30 38 11 libs Ljava/util/List<Ljava/lang/String;>;
31 38 12 itr Ljava/util/Iterator<Ljava/lang/String;>;
35 37 13 e Lsun/jvm/hotspot/debugger/DebuggerException;
Exception table:
from to target type
32 33 34 Class sun.jvm.hotspot.debugger.DebuggerException
MethodParameters:
Name Flags
startPc
code
private static native long load_library(java.lang.String);
descriptor: (Ljava/lang/String;)J
flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
MethodParameters:
Name Flags
hsdis_library_name
private native void decode(sun.jvm.hotspot.asm.InstructionVisitor, long, byte[], java.lang.String, long);
descriptor: (Lsun/jvm/hotspot/asm/InstructionVisitor;J[BLjava/lang/String;J)V
flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
MethodParameters:
Name Flags
visitor
pc
code
options
decode_function
private void decode(sun.jvm.hotspot.asm.InstructionVisitor);
descriptor: (Lsun/jvm/hotspot/asm/InstructionVisitor;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=8, locals=2, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface sun.jvm.hotspot.asm.InstructionVisitor.prologue:()V
1: aload 0
aload 1
aload 0
getfield sun.jvm.hotspot.asm.Disassembler.startPc:J
aload 0
getfield sun.jvm.hotspot.asm.Disassembler.code:[B
getstatic sun.jvm.hotspot.asm.Disassembler.options:Ljava/lang/String;
getstatic sun.jvm.hotspot.asm.Disassembler.decode_function:J
invokevirtual sun.jvm.hotspot.asm.Disassembler.decode:(Lsun/jvm/hotspot/asm/InstructionVisitor;J[BLjava/lang/String;J)V
2: aload 1
invokeinterface sun.jvm.hotspot.asm.InstructionVisitor.epilogue:()V
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/jvm/hotspot/asm/Disassembler;
0 4 1 visitor Lsun/jvm/hotspot/asm/InstructionVisitor;
MethodParameters:
Name Flags
visitor
private boolean match(java.lang.String, java.lang.String);
descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 1
aload 2
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifne 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 2
invokevirtual java.lang.String.length:()I
istore 3
start local 3 3: iload 3
aload 1
invokevirtual java.lang.String.length:()I
if_icmpne 4
iconst_1
ireturn
4: StackMap locals: int
StackMap stack:
aload 1
iload 3
invokevirtual java.lang.String.charAt:(I)C
istore 4
start local 4 5: iload 4
bipush 32
if_icmpeq 6
iload 4
bipush 47
if_icmpeq 6
iload 4
bipush 61
if_icmpeq 6
iconst_0
ireturn
StackMap locals: int
StackMap stack:
6: iconst_1
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lsun/jvm/hotspot/asm/Disassembler;
0 7 1 event Ljava/lang/String;
0 7 2 tag Ljava/lang/String;
3 7 3 taglen I
5 7 4 delim C
MethodParameters:
Name Flags
event
tag
private long handleEvent(sun.jvm.hotspot.asm.InstructionVisitor, java.lang.String, long);
descriptor: (Lsun/jvm/hotspot/asm/InstructionVisitor;Ljava/lang/String;J)J
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 2
ldc "insn"
invokevirtual sun.jvm.hotspot.asm.Disassembler.match:(Ljava/lang/String;Ljava/lang/String;)Z
ifeq 6
1: aload 1
lload 3
invokeinterface sun.jvm.hotspot.asm.InstructionVisitor.beginInstruction:(J)V
2: goto 17
StackMap locals:
StackMap stack: java.lang.Throwable
3: astore 5
start local 5 4: aload 5
invokevirtual java.lang.Throwable.printStackTrace:()V
end local 5 5: goto 17
StackMap locals:
StackMap stack:
6: aload 0
aload 2
ldc "/insn"
invokevirtual sun.jvm.hotspot.asm.Disassembler.match:(Ljava/lang/String;Ljava/lang/String;)Z
ifeq 12
7: aload 1
lload 3
invokeinterface sun.jvm.hotspot.asm.InstructionVisitor.endInstruction:(J)V
8: goto 17
StackMap locals:
StackMap stack: java.lang.Throwable
9: astore 5
start local 5 10: aload 5
invokevirtual java.lang.Throwable.printStackTrace:()V
end local 5 11: goto 17
StackMap locals:
StackMap stack:
12: aload 0
aload 2
ldc "addr"
invokevirtual sun.jvm.hotspot.asm.Disassembler.match:(Ljava/lang/String;Ljava/lang/String;)Z
ifeq 16
13: lload 3
lconst_0
lcmp
ifeq 15
14: aload 1
lload 3
invokeinterface sun.jvm.hotspot.asm.InstructionVisitor.printAddress:(J)V
15: StackMap locals:
StackMap stack:
lload 3
lreturn
16: StackMap locals:
StackMap stack:
aload 0
aload 2
ldc "mach"
invokevirtual sun.jvm.hotspot.asm.Disassembler.match:(Ljava/lang/String;Ljava/lang/String;)Z
pop
17: StackMap locals:
StackMap stack:
lconst_0
lreturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lsun/jvm/hotspot/asm/Disassembler;
0 18 1 visitor Lsun/jvm/hotspot/asm/InstructionVisitor;
0 18 2 event Ljava/lang/String;
0 18 3 arg J
4 5 5 e Ljava/lang/Throwable;
10 11 5 e Ljava/lang/Throwable;
Exception table:
from to target type
1 2 3 Class java.lang.Throwable
7 8 9 Class java.lang.Throwable
MethodParameters:
Name Flags
visitor
event
arg
private void rawPrint(sun.jvm.hotspot.asm.InstructionVisitor, java.lang.String);
descriptor: (Lsun/jvm/hotspot/asm/InstructionVisitor;Ljava/lang/String;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
aload 2
invokeinterface sun.jvm.hotspot.asm.InstructionVisitor.print:(Ljava/lang/String;)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/jvm/hotspot/asm/Disassembler;
0 2 1 visitor Lsun/jvm/hotspot/asm/InstructionVisitor;
0 2 2 s Ljava/lang/String;
MethodParameters:
Name Flags
visitor
s
private static java.nio.file.Path lambda$0(sun.jvm.hotspot.debugger.cdbg.LoadObject);
descriptor: (Lsun/jvm/hotspot/debugger/cdbg/LoadObject;)Ljava/nio/file/Path;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokeinterface sun.jvm.hotspot.debugger.cdbg.LoadObject.getName:()Ljava/lang/String;
iconst_0
anewarray java.lang.String
invokestatic java.nio.file.Path.of:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 o Lsun/jvm/hotspot/debugger/cdbg/LoadObject;
private static boolean lambda$1(java.lang.String, java.nio.file.Path);
descriptor: (Ljava/lang/String;Ljava/nio/file/Path;)Z
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=2, args_size=2
start local 1 0: aload 1
invokeinterface java.nio.file.Path.getFileName:()Ljava/nio/file/Path;
invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
aload 0
invokevirtual java.lang.String.matches:(Ljava/lang/String;)Z
ireturn
end local 1 LocalVariableTable:
Start End Slot Name Signature
0 1 1 p Ljava/nio/file/Path;
}
SourceFile: "Disassembler.java"
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles