Voliate Supporting tagline
###java 中 voliate
public class Singleton {
private static Singleton instance;
public static Singleton getInstance() {
if (instance == null) {
synchronized(Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
public static void main(String []args) {
Singleton.getInstance();
}
}
###Java7
$ /opt/jdk1.7.0_79/bin/java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
$ /opt/jdk1.7.0_79/bin/javac Singleton.java
$ /opt/jdk1.7.0_79/jre/bin/java -Xcomp -XX:CompileCommand=dontinline,Singleton.getInstance -XX:CompileCommand=compileonly,Singleton.main -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints -XX:CompileCommand=print,*Singleton.getInstance Singleton
###Java8
$ java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
$ javac Singleton.java
$ java -Xcomp -XX:CompileCommand=dontinline,Singleton.getInstance -XX:CompileCommand=compileonly,Singleton.main -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints -XX:CompileCommand=print,*Singleton.getInstance Singleton
附录:
问题 : Java HotSpot(TM) 64-Bit Server VM warning: printing of assembly code is enabled; turning on DebugNonSafepoints to gain additional output
解决办法:
- wget -c https://kenai.com/projects/base-hsdis/downloads/download/linux-hsdis-amd64.so
- mv linux-hsdis-amd64.so hsdis-amd64.so
- mv hsdis-amd64.so $JAVA_HOME/jre/lib/amd64/server/ 我的 JAVA_HOME=/opt/jdk1.7.0_79
###汇编代码
$/opt/jdk1.7.0_79/jre/bin/java -Xcomp -XX:CompileCommand=dontinline,Singleton.getInstance -XX:CompileCommand=compileonly,Singleton.getInstance -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints -XX:CompileCommand=print,*Singleton.getInstance Singleton
CompilerOracle: dontinline *Singleton.getInstance
CompilerOracle: compileonly *Singleton.getInstance
CompilerOracle: print *Singleton.getInstance
Compiled method (c2) 80 1 ! Singleton::getInstance (42 bytes)
total in heap [0x00007facdce44b10,0x00007facdce45278] = 1896
relocation [0x00007facdce44c30,0x00007facdce44c78] = 72
main code [0x00007facdce44c80,0x00007facdce45060] = 992
stub code [0x00007facdce45060,0x00007facdce45088] = 40
oops [0x00007facdce45088,0x00007facdce450a8] = 32
scopes data [0x00007facdce450a8,0x00007facdce45100] = 88
scopes pcs [0x00007facdce45100,0x00007facdce45240] = 320
dependencies [0x00007facdce45240,0x00007facdce45248] = 8
handler table [0x00007facdce45248,0x00007facdce45278] = 48
Loaded disassembler from /opt/jdk1.7.0_79/jre/lib/amd64/server/hsdis-amd64.so
Decoding compiled method 0x00007facdce44b10:
Code:
[Disassembling for mach='i386:x86-64']
[Entry Point]
[Verified Entry Point]
[Constants]
# {method} 'getInstance' '()LSingleton;' in 'Singleton'
# [sp+0x30] (sp of caller)
0x00007facdce44c80: mov %eax,-0x14000(%rsp)
0x00007facdce44c87: push %rbp
0x00007facdce44c88: sub $0x20,%rsp ;*synchronization entry
; - Singleton::getInstance@-1 (line 6)
0x00007facdce44c8c: mov $0xec748fa0,%r10 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007facdce44c96: mov 0x58(%r10),%r11d ;*getstatic instance
; - Singleton::getInstance@0 (line 6)
0x00007facdce44c9a: test %r11d,%r11d
0x00007facdce44c9d: je 0x00007facdce44cae
0x00007facdce44c9f: mov %r11,%rax ;*getstatic instance
; - Singleton::getInstance@38 (line 13)
0x00007facdce44ca2: add $0x20,%rsp
0x00007facdce44ca6: pop %rbp
0x00007facdce44ca7: test %eax,0x9e83353(%rip) # 0x00007face6cc8000
; {poll_return}
0x00007facdce44cad: retq
0x00007facdce44cae: mov (%r10),%rax
0x00007facdce44cb1: mov %rax,%r10
0x00007facdce44cb4: and $0x7,%r10
0x00007facdce44cb8: cmp $0x5,%r10
0x00007facdce44cbc: jne 0x00007facdce44dc9
0x00007facdce44cc2: mov $0xc0416080,%r11d ; {oop('java/lang/Class')}
0x00007facdce44cc8: mov 0xb0(%r11),%r10
0x00007facdce44ccf: mov %r10,%r11
0x00007facdce44cd2: or %r15,%r11
0x00007facdce44cd5: mov %r11,%r8
0x00007facdce44cd8: xor %rax,%r8
0x00007facdce44cdb: test $0xffffffffffffff87,%r8
0x00007facdce44ce2: jne 0x00007facdce44e49 ;*monitorenter
; - Singleton::getInstance@11 (line 7)
0x00007facdce44ce8: mov $0x7,%ebp
0x00007facdce44ced: mov $0xec748fa0,%r10 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007facdce44cf7: cmp 0x58(%r10),%r12d
0x00007facdce44cfb: je 0x00007facdce44d27
0x00007facdce44cfd: mov $0xec748fa0,%r10 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007facdce44d07: and (%r10),%rbp
0x00007facdce44d0a: cmp $0x5,%rbp
0x00007facdce44d0e: jne 0x00007facdce44e82 ;*monitorexit
; - Singleton::getInstance@29 (line 11)
0x00007facdce44d14: mov $0xec748fa0,%r10 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007facdce44d1e: mov 0x58(%r10),%r11d ;*getstatic instance
; - Singleton::getInstance@38 (line 13)
0x00007facdce44d22: jmpq 0x00007facdce44c9f
0x00007facdce44d27: mov 0x60(%r15),%rax
0x00007facdce44d2b: mov %rax,%r10
0x00007facdce44d2e: add $0x10,%r10
0x00007facdce44d32: cmp 0x70(%r15),%r10
0x00007facdce44d36: jae 0x00007facdce44da6
0x00007facdce44d38: mov %r10,0x60(%r15)
0x00007facdce44d3c: prefetchnta 0xc0(%r10)
0x00007facdce44d44: mov $0xc065d868,%r10d ; {oop('Singleton')}
0x00007facdce44d4a: mov 0xb0(%r10),%r10
0x00007facdce44d51: mov %r10,(%rax)
0x00007facdce44d54: movl $0xc065d868,0x8(%rax) ; {oop('Singleton')}
0x00007facdce44d5b: mov %r12d,0xc(%rax)
0x00007facdce44d5f: mov %rax,%r10
0x00007facdce44d62: mov %r10,(%rsp) ;*new ; - Singleton::getInstance@18 (line 9)
0x00007facdce44d66: mov %r10,%rsi
0x00007facdce44d69: xchg %ax,%ax
0x00007facdce44d6b: callq 0x00007facdce1cb60 ; OopMap{[0]=Oop off=240}
;*invokespecial <init>
; - Singleton::getInstance@22 (line 9)
; {optimized virtual_call}
0x00007facdce44d70: mov $0xec748fa0,%r10 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007facdce44d7a: mov (%rsp),%r11
0x00007facdce44d7e: mov %r11,%r8
0x00007facdce44d81: mov $0xec748fa0,%r11 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007facdce44d8b: mov %r8d,0x58(%r11)
0x00007facdce44d8f: shr $0x9,%r10
0x00007facdce44d93: mov $0x7facdc5e4000,%r11
0x00007facdce44d9d: mov %r12b,(%r11,%r10,1) ;*putstatic instance
; - Singleton::getInstance@25 (line 9)
0x00007facdce44da1: jmpq 0x00007facdce44cfd
0x00007facdce44da6: mov $0xc065d868,%rsi ; {oop('Singleton')}
0x00007facdce44db0: xchg %ax,%ax
0x00007facdce44db3: callq 0x00007facdce439a0 ; OopMap{off=312}
;*new ; - Singleton::getInstance@18 (line 9)
; {runtime_call}
0x00007facdce44db8: jmp 0x00007facdce44d5f
0x00007facdce44dba: mov $0xec748fa0,%r11 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007facdce44dc4: lock cmpxchg %r10,(%r11)
0x00007facdce44dc9: mov $0xec748fa0,%r11 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007facdce44dd3: lea 0x10(%rsp),%rbx
0x00007facdce44dd8: mov (%r11),%rax
0x00007facdce44ddb: test $0x2,%eax
0x00007facdce44de0: jne 0x00007facdce44e09
0x00007facdce44de6: or $0x1,%eax
0x00007facdce44de9: mov %rax,(%rbx)
0x00007facdce44dec: lock cmpxchg %rbx,(%r11)
0x00007facdce44df1: je 0x00007facdce44e26
0x00007facdce44df7: sub %rsp,%rax
0x00007facdce44dfa: and $0xfffffffffffff007,%rax
0x00007facdce44e01: mov %rax,(%rbx)
0x00007facdce44e04: jmpq 0x00007facdce44e26
0x00007facdce44e09: movq $0x3,(%rbx)
0x00007facdce44e10: mov %rax,%rbx
0x00007facdce44e13: mov 0x16(%rax),%rax
0x00007facdce44e17: test %rax,%rax
0x00007facdce44e1a: jne 0x00007facdce44e26
0x00007facdce44e20: lock cmpxchg %r15,0x16(%rbx)
0x00007facdce44e26: nop
0x00007facdce44e27: je 0x00007facdce44ce8
0x00007facdce44e2d: mov $0xec748fa0,%rsi ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007facdce44e37: lea 0x10(%rsp),%rdx
0x00007facdce44e3c: xchg %ax,%ax
0x00007facdce44e3f: callq 0x00007facdce430e0 ; OopMap{off=452}
;*monitorenter
; - Singleton::getInstance@11 (line 7)
; {runtime_call}
0x00007facdce44e44: jmpq 0x00007facdce44ce8
0x00007facdce44e49: test $0x7,%r8
0x00007facdce44e50: jne 0x00007facdce44dba
0x00007facdce44e56: test $0x300,%r8
0x00007facdce44e5d: jne 0x00007facdce44e6c
0x00007facdce44e5f: and $0x37f,%rax
0x00007facdce44e66: mov %rax,%r11
0x00007facdce44e69: or %r15,%r11
0x00007facdce44e6c: mov $0xec748fa0,%r10 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007facdce44e76: lock cmpxchg %r11,(%r10)
0x00007facdce44e7b: jne 0x00007facdce44e2d
0x00007facdce44e7d: jmpq 0x00007facdce44ce8
0x00007facdce44e82: mov $0xec748fa0,%r11 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007facdce44e8c: lea 0x10(%rsp),%rax
0x00007facdce44e91: mov (%r11),%r10
0x00007facdce44e94: cmpq $0x0,(%rax)
0x00007facdce44e9b: je 0x00007facdce44f33
0x00007facdce44ea1: test $0x2,%r10d
0x00007facdce44ea8: je 0x00007facdce44f2b
0x00007facdce44eae: mov 0x16(%r10),%rax
0x00007facdce44eb2: xor %r15,%rax
0x00007facdce44eb5: or 0x26(%r10),%rax
0x00007facdce44eb9: jne 0x00007facdce44f33
0x00007facdce44ebf: mov 0x36(%r10),%rax
0x00007facdce44ec3: or 0x3e(%r10),%rax
0x00007facdce44ec7: jne 0x00007facdce44eda
0x00007facdce44ecd: movq $0x0,0x16(%r10)
0x00007facdce44ed5: jmpq 0x00007facdce44f33
0x00007facdce44eda: cmpq $0x0,0x46(%r10)
0x00007facdce44ee2: je 0x00007facdce44f19
0x00007facdce44ee8: movq $0x0,0x16(%r10)
0x00007facdce44ef0: lock addl $0x0,(%rsp)
0x00007facdce44ef5: cmpq $0x0,0x46(%r10)
0x00007facdce44efd: jne 0x00007facdce44f21
0x00007facdce44f03: mov $0x0,%rax
0x00007facdce44f0d: lock cmpxchg %r15,0x16(%r10)
0x00007facdce44f13: jne 0x00007facdce44f21
0x00007facdce44f19: or $0x1,%eax
0x00007facdce44f1c: jmpq 0x00007facdce44f33
0x00007facdce44f21: test $0x0,%eax
0x00007facdce44f26: jmpq 0x00007facdce44f33
0x00007facdce44f2b: mov (%rax),%r10
0x00007facdce44f2e: lock cmpxchg %r10,(%r11)
0x00007facdce44f33: je 0x00007facdce44d14
0x00007facdce44f39: mov $0xec748fa0,%rdi ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007facdce44f43: lea 0x10(%rsp),%rsi ;*monitorenter
; - Singleton::getInstance@11 (line 7)
0x00007facdce44f48: mov $0x7face5ae53f0,%r10
0x00007facdce44f52: callq *%r10 ;*monitorexit
; - Singleton::getInstance@29 (line 11)
0x00007facdce44f55: jmpq 0x00007facdce44d14 ;*new
; - Singleton::getInstance@18 (line 9)
0x00007facdce44f5a: mov %rax,%rbx
0x00007facdce44f5d: jmp 0x00007facdce44f62 ;*invokespecial <init>
; - Singleton::getInstance@22 (line 9)
0x00007facdce44f5f: mov %rax,%rbx
0x00007facdce44f62: mov $0xec748fa0,%r10 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007facdce44f6c: and (%r10),%rbp
0x00007facdce44f6f: cmp $0x5,%rbp
0x00007facdce44f73: jne 0x00007facdce44f82 ;*monitorexit
; - Singleton::getInstance@35 (line 11)
0x00007facdce44f75: mov %rbx,%rsi
0x00007facdce44f78: add $0x20,%rsp
0x00007facdce44f7c: pop %rbp
0x00007facdce44f7d: jmpq 0x00007facdce467e0 ; {runtime_call}
0x00007facdce44f82: mov $0xec748fa0,%r11 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007facdce44f8c: lea 0x10(%rsp),%rax
0x00007facdce44f91: mov (%r11),%r10
0x00007facdce44f94: cmpq $0x0,(%rax)
0x00007facdce44f9b: je 0x00007facdce45033
0x00007facdce44fa1: test $0x2,%r10d
0x00007facdce44fa8: je 0x00007facdce4502b
0x00007facdce44fae: mov 0x16(%r10),%rax
0x00007facdce44fb2: xor %r15,%rax
0x00007facdce44fb5: or 0x26(%r10),%rax
0x00007facdce44fb9: jne 0x00007facdce45033
0x00007facdce44fbf: mov 0x36(%r10),%rax
0x00007facdce44fc3: or 0x3e(%r10),%rax
0x00007facdce44fc7: jne 0x00007facdce44fda
0x00007facdce44fcd: movq $0x0,0x16(%r10)
0x00007facdce44fd5: jmpq 0x00007facdce45033
0x00007facdce44fda: cmpq $0x0,0x46(%r10)
0x00007facdce44fe2: je 0x00007facdce45019
0x00007facdce44fe8: movq $0x0,0x16(%r10)
0x00007facdce44ff0: lock addl $0x0,(%rsp)
0x00007facdce44ff5: cmpq $0x0,0x46(%r10)
0x00007facdce44ffd: jne 0x00007facdce45021
0x00007facdce45003: mov $0x0,%rax
0x00007facdce4500d: lock cmpxchg %r15,0x16(%r10)
0x00007facdce45013: jne 0x00007facdce45021
0x00007facdce45019: or $0x1,%eax
0x00007facdce4501c: jmpq 0x00007facdce45033
0x00007facdce45021: test $0x0,%eax
0x00007facdce45026: jmpq 0x00007facdce45033
0x00007facdce4502b: mov (%rax),%r10
0x00007facdce4502e: lock cmpxchg %r10,(%r11)
0x00007facdce45033: je 0x00007facdce44f75
0x00007facdce45039: mov $0xec748fa0,%rdi ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007facdce45043: lea 0x10(%rsp),%rsi ;*monitorenter
; - Singleton::getInstance@11 (line 7)
0x00007facdce45048: mov $0x7face5ae53f0,%r10
0x00007facdce45052: callq *%r10 ;*monitorexit
; - Singleton::getInstance@35 (line 11)
0x00007facdce45055: jmpq 0x00007facdce44f75
0x00007facdce4505a: hlt
0x00007facdce4505b: hlt
0x00007facdce4505c: hlt
0x00007facdce4505d: hlt
0x00007facdce4505e: hlt
0x00007facdce4505f: hlt
[Stub Code]
0x00007facdce45060: mov $0x0,%rbx ; {no_reloc}
0x00007facdce4506a: jmpq 0x00007facdce4506a ; {runtime_call}
[Exception Handler]
0x00007facdce4506f: jmpq 0x00007facdce43a60 ; {runtime_call}
[Deopt Handler Code]
0x00007facdce45074: callq 0x00007facdce45079
0x00007facdce45079: subq $0x5,(%rsp)
0x00007facdce4507e: jmpq 0x00007facdce1db00 ; {runtime_call}
0x00007facdce45083: hlt
0x00007facdce45084: hlt
0x00007facdce45085: hlt
0x00007facdce45086: hlt
0x00007facdce45087: hlt
OopMapSet contains 3 OopMaps
#0
OopMap{[0]=Oop off=240}
#1
OopMap{off=312}
#2
OopMap{off=452}
$ java -Xcomp -XX:CompileCommand=dontinline,Singleton.getInstance -XX:CompileCommand=compileonly,Singleton.getInstance -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints -XX:CompileCommand=print,*Singleton.getInstance SingletonCompilerOracle: dontinline *Singleton.getInstance
CompilerOracle: compileonly *Singleton.getInstance
CompilerOracle: print *Singleton.getInstance
Compiled method (c1) 86 1 ! 3 Singleton::getInstance (41 bytes)
total in heap [0x00007fb2cd102250,0x00007fb2cd102a30] = 2016
relocation [0x00007fb2cd102378,0x00007fb2cd1023d0] = 88
main code [0x00007fb2cd1023e0,0x00007fb2cd102760] = 896
stub code [0x00007fb2cd102760,0x00007fb2cd102808] = 168
oops [0x00007fb2cd102808,0x00007fb2cd102818] = 16
metadata [0x00007fb2cd102818,0x00007fb2cd102820] = 8
scopes data [0x00007fb2cd102820,0x00007fb2cd1028a8] = 136
scopes pcs [0x00007fb2cd1028a8,0x00007fb2cd1029e8] = 320
dependencies [0x00007fb2cd1029e8,0x00007fb2cd1029f0] = 8
handler table [0x00007fb2cd1029f0,0x00007fb2cd102a20] = 48
nul chk table [0x00007fb2cd102a20,0x00007fb2cd102a30] = 16
Loaded disassembler from /opt/jdk1.8.0_91/jre/lib/amd64/server/hsdis-amd64.so
Decoding compiled method 0x00007fb2cd102250:
Code:
[Disassembling for mach='i386:x86-64']
[Entry Point]
[Verified Entry Point]
[Constants]
# {method} {0x00007fb2e151b2c0} 'getInstance' '()LSingleton;' in 'Singleton'
# [sp+0x50] (sp of caller)
0x00007fb2cd1023e0: mov %eax,-0x14000(%rsp)
0x00007fb2cd1023e7: push %rbp
0x00007fb2cd1023e8: sub $0x40,%rsp
0x00007fb2cd1023ec: mov $0x7fb2e151b498,%rax ; {metadata(method data for {method} {0x00007fb2e151b2c0} 'getInstance' '()LSingleton;' in 'Singleton')}
0x00007fb2cd1023f6: mov 0xdc(%rax),%edx
0x00007fb2cd1023fc: add $0x8,%edx
0x00007fb2cd1023ff: mov %edx,0xdc(%rax)
0x00007fb2cd102405: mov $0x7fb2e151b2c0,%rax ; {metadata({method} {0x00007fb2e151b2c0} 'getInstance' '()LSingleton;' in 'Singleton')}
0x00007fb2cd10240f: and $0x0,%edx
0x00007fb2cd102412: cmp $0x0,%edx
0x00007fb2cd102415: je 0x00007fb2cd1026c9
0x00007fb2cd10241b: mov $0xec7da6e0,%rax ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007fb2cd102425: mov 0x68(%rax),%eax ;*getstatic instance
; - Singleton::getInstance@0 (line 6)
0x00007fb2cd102428: cmp $0x0,%rax
0x00007fb2cd10242c: mov $0x7fb2e151b498,%rax ; {metadata(method data for {method} {0x00007fb2e151b2c0} 'getInstance' '()LSingleton;' in 'Singleton')}
0x00007fb2cd102436: mov $0x108,%rdx
0x00007fb2cd102440: jne 0x00007fb2cd102450
0x00007fb2cd102446: mov $0x118,%rdx
0x00007fb2cd102450: mov (%rax,%rdx,1),%rsi
0x00007fb2cd102454: lea 0x1(%rsi),%rsi
0x00007fb2cd102458: mov %rsi,(%rax,%rdx,1)
0x00007fb2cd10245c: jne 0x00007fb2cd10264f ;*ifnonnull
; - Singleton::getInstance@3 (line 6)
0x00007fb2cd102462: mov $0xec7da6e0,%rdx ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007fb2cd10246c: lea 0x28(%rsp),%rsi
0x00007fb2cd102471: mov %rdx,0x8(%rsi)
0x00007fb2cd102475: mov (%rdx),%rax ; implicit exception: dispatches to 0x00007fb2cd1026e0
0x00007fb2cd102478: mov %rax,%rdi
0x00007fb2cd10247b: and $0x7,%rdi
0x00007fb2cd10247f: cmp $0x5,%rdi
0x00007fb2cd102483: jne 0x00007fb2cd10250a
0x00007fb2cd102489: mov 0x8(%rdx),%edi
0x00007fb2cd10248c: shl $0x3,%rdi
0x00007fb2cd102490: mov 0xa8(%rdi),%rdi
0x00007fb2cd102497: or %r15,%rdi
0x00007fb2cd10249a: xor %rax,%rdi
0x00007fb2cd10249d: and $0xffffffffffffff87,%rdi
0x00007fb2cd1024a1: je 0x00007fb2cd102532
0x00007fb2cd1024a7: test $0x7,%rdi
0x00007fb2cd1024ae: jne 0x00007fb2cd1024f7
0x00007fb2cd1024b0: test $0x300,%rdi
0x00007fb2cd1024b7: jne 0x00007fb2cd1024d6
0x00007fb2cd1024b9: and $0x37f,%rax
0x00007fb2cd1024c0: mov %rax,%rdi
0x00007fb2cd1024c3: or %r15,%rdi
0x00007fb2cd1024c6: lock cmpxchg %rdi,(%rdx)
0x00007fb2cd1024cb: jne 0x00007fb2cd1026e5
0x00007fb2cd1024d1: jmpq 0x00007fb2cd102532
0x00007fb2cd1024d6: mov 0x8(%rdx),%edi
0x00007fb2cd1024d9: shl $0x3,%rdi
0x00007fb2cd1024dd: mov 0xa8(%rdi),%rdi
0x00007fb2cd1024e4: or %r15,%rdi
0x00007fb2cd1024e7: lock cmpxchg %rdi,(%rdx)
0x00007fb2cd1024ec: jne 0x00007fb2cd1026e5
0x00007fb2cd1024f2: jmpq 0x00007fb2cd102532
0x00007fb2cd1024f7: mov 0x8(%rdx),%edi
0x00007fb2cd1024fa: shl $0x3,%rdi
0x00007fb2cd1024fe: mov 0xa8(%rdi),%rdi
0x00007fb2cd102505: lock cmpxchg %rdi,(%rdx)
0x00007fb2cd10250a: mov (%rdx),%rax
0x00007fb2cd10250d: or $0x1,%rax
0x00007fb2cd102511: mov %rax,(%rsi)
0x00007fb2cd102514: lock cmpxchg %rsi,(%rdx)
0x00007fb2cd102519: je 0x00007fb2cd102532
0x00007fb2cd10251f: sub %rsp,%rax
0x00007fb2cd102522: and $0xfffffffffffff007,%rax
0x00007fb2cd102529: mov %rax,(%rsi)
0x00007fb2cd10252c: jne 0x00007fb2cd1026e5 ;*monitorenter
; - Singleton::getInstance@10 (line 7)
0x00007fb2cd102532: mov $0xec7da6e0,%rdx ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007fb2cd10253c: mov 0x68(%rdx),%edx ;*getstatic instance
; - Singleton::getInstance@11 (line 8)
0x00007fb2cd10253f: cmp $0x0,%rdx
0x00007fb2cd102543: mov $0x7fb2e151b498,%rdx ; {metadata(method data for {method} {0x00007fb2e151b2c0} 'getInstance' '()LSingleton;' in 'Singleton')}
0x00007fb2cd10254d: mov $0x128,%rsi
0x00007fb2cd102557: jne 0x00007fb2cd102567
0x00007fb2cd10255d: mov $0x138,%rsi
0x00007fb2cd102567: mov (%rdx,%rsi,1),%rdi
0x00007fb2cd10256b: lea 0x1(%rdi),%rdi
0x00007fb2cd10256f: mov %rdi,(%rdx,%rsi,1)
0x00007fb2cd102573: jne 0x00007fb2cd102604 ;*ifnonnull
; - Singleton::getInstance@14 (line 8)
0x00007fb2cd102579: mov $0x100060028,%rdx ; {metadata('Singleton')}
0x00007fb2cd102583: mov 0x60(%r15),%rax
0x00007fb2cd102587: lea 0x10(%rax),%rdi
0x00007fb2cd10258b: cmp 0x70(%r15),%rdi
0x00007fb2cd10258f: ja 0x00007fb2cd1026f8
0x00007fb2cd102595: mov %rdi,0x60(%r15)
0x00007fb2cd102599: mov 0xa8(%rdx),%rcx
0x00007fb2cd1025a0: mov %rcx,(%rax)
0x00007fb2cd1025a3: mov %rdx,%rcx
0x00007fb2cd1025a6: shr $0x3,%rcx
0x00007fb2cd1025aa: mov %ecx,0x8(%rax)
0x00007fb2cd1025ad: xor %rcx,%rcx
0x00007fb2cd1025b0: mov %ecx,0xc(%rax)
0x00007fb2cd1025b3: xor %rcx,%rcx ;*new ; - Singleton::getInstance@17 (line 9)
0x00007fb2cd1025b6: mov %rax,%rsi
0x00007fb2cd1025b9: mov $0x7fb2e151b498,%rdi ; {metadata(method data for {method} {0x00007fb2e151b2c0} 'getInstance' '()LSingleton;' in 'Singleton')}
0x00007fb2cd1025c3: addq $0x1,0x148(%rdi)
0x00007fb2cd1025cb: mov %rax,%rsi ;*invokespecial <init>
; - Singleton::getInstance@21 (line 9)
0x00007fb2cd1025ce: mov %rax,0x20(%rsp)
0x00007fb2cd1025d3: nop
0x00007fb2cd1025d4: nop
0x00007fb2cd1025d5: nop
0x00007fb2cd1025d6: nop
0x00007fb2cd1025d7: callq 0x00007fb2cd046020 ; OopMap{[32]=Oop [48]=Oop off=508}
;*invokespecial <init>
; - Singleton::getInstance@21 (line 9)
; {optimized virtual_call}
0x00007fb2cd1025dc: mov $0xec7da6e0,%rax ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007fb2cd1025e6: mov 0x20(%rsp),%rsi
0x00007fb2cd1025eb: mov %rsi,%r10
0x00007fb2cd1025ee: mov %r10d,0x68(%rax)
0x00007fb2cd1025f2: shr $0x9,%rax
0x00007fb2cd1025f6: mov $0x7fb2e1a02000,%rsi
0x00007fb2cd102600: movb $0x0,(%rax,%rsi,1) ;*putstatic instance
; - Singleton::getInstance@24 (line 9)
0x00007fb2cd102604: mov $0xec7da6e0,%rax ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007fb2cd10260e: lea 0x28(%rsp),%rax
0x00007fb2cd102613: mov 0x8(%rax),%rdi
0x00007fb2cd102617: mov (%rdi),%rsi
0x00007fb2cd10261a: and $0x7,%rsi
0x00007fb2cd10261e: cmp $0x5,%rsi
0x00007fb2cd102622: je 0x00007fb2cd10263f
0x00007fb2cd102628: mov (%rax),%rsi
0x00007fb2cd10262b: test %rsi,%rsi
0x00007fb2cd10262e: je 0x00007fb2cd10263f
0x00007fb2cd102634: lock cmpxchg %rsi,(%rdi)
0x00007fb2cd102639: jne 0x00007fb2cd102705 ;*monitorexit
; - Singleton::getInstance@28 (line 11)
0x00007fb2cd10263f: mov $0x7fb2e151b498,%rax ; {metadata(method data for {method} {0x00007fb2e151b2c0} 'getInstance' '()LSingleton;' in 'Singleton')}
0x00007fb2cd102649: incl 0x158(%rax) ;*goto
; - Singleton::getInstance@29 (line 11)
0x00007fb2cd10264f: mov $0xec7da6e0,%rax ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007fb2cd102659: mov 0x68(%rax),%eax ;*getstatic instance
; - Singleton::getInstance@37 (line 13)
0x00007fb2cd10265c: add $0x40,%rsp
0x00007fb2cd102660: pop %rbp
0x00007fb2cd102661: test %eax,0x1845fa99(%rip) # 0x00007fb2e5562100
; {poll_return}
0x00007fb2cd102667: retq ;*areturn
; - Singleton::getInstance@40 (line 13)
0x00007fb2cd102668: mov 0x2a8(%r15),%rax
0x00007fb2cd10266f: xor %r10,%r10
0x00007fb2cd102672: mov %r10,0x2a8(%r15)
0x00007fb2cd102679: xor %r10,%r10
0x00007fb2cd10267c: mov %r10,0x2b0(%r15)
0x00007fb2cd102683: mov %rax,%rsi
0x00007fb2cd102686: mov $0xec7da6e0,%rax ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007fb2cd102690: lea 0x28(%rsp),%rax
0x00007fb2cd102695: mov 0x8(%rax),%rbx
0x00007fb2cd102699: mov (%rbx),%rdi
0x00007fb2cd10269c: and $0x7,%rdi
0x00007fb2cd1026a0: cmp $0x5,%rdi
0x00007fb2cd1026a4: je 0x00007fb2cd1026c1
0x00007fb2cd1026aa: mov (%rax),%rdi
0x00007fb2cd1026ad: test %rdi,%rdi
0x00007fb2cd1026b0: je 0x00007fb2cd1026c1
0x00007fb2cd1026b6: lock cmpxchg %rdi,(%rbx)
0x00007fb2cd1026bb: jne 0x00007fb2cd102718 ;*monitorexit
; - Singleton::getInstance@34 (line 11)
0x00007fb2cd1026c1: mov %rsi,%rax
0x00007fb2cd1026c4: jmpq 0x00007fb2cd102753
0x00007fb2cd1026c9: mov %rax,0x8(%rsp)
0x00007fb2cd1026ce: movq $0xffffffffffffffff,(%rsp)
0x00007fb2cd1026d6: callq 0x00007fb2cd100d20 ; OopMap{off=763}
;*synchronization entry
; - Singleton::getInstance@-1 (line 6)
; {runtime_call}
0x00007fb2cd1026db: jmpq 0x00007fb2cd10241b
0x00007fb2cd1026e0: callq 0x00007fb2cd0f9340 ; OopMap{rdx=Oop off=773}
;*monitorenter
; - Singleton::getInstance@10 (line 7)
; {runtime_call}
0x00007fb2cd1026e5: mov %rdx,0x8(%rsp)
0x00007fb2cd1026ea: mov %rsi,(%rsp)
0x00007fb2cd1026ee: callq 0x00007fb2cd0fbd20 ; OopMap{rdx=Oop [48]=Oop off=787}
;*monitorenter
; - Singleton::getInstance@10 (line 7)
; {runtime_call}
0x00007fb2cd1026f3: jmpq 0x00007fb2cd102532
0x00007fb2cd1026f8: mov %rdx,%rdx
0x00007fb2cd1026fb: callq 0x00007fb2cd0f9aa0 ; OopMap{[48]=Oop off=800}
;*new ; - Singleton::getInstance@17 (line 9)
; {runtime_call}
0x00007fb2cd102700: jmpq 0x00007fb2cd1025b6
0x00007fb2cd102705: lea 0x28(%rsp),%rax
0x00007fb2cd10270a: mov %rax,(%rsp)
0x00007fb2cd10270e: callq 0x00007fb2cd0fc120 ; {runtime_call}
0x00007fb2cd102713: jmpq 0x00007fb2cd10263f
0x00007fb2cd102718: lea 0x28(%rsp),%rax
0x00007fb2cd10271d: mov %rax,(%rsp)
0x00007fb2cd102721: callq 0x00007fb2cd0fc120 ; {runtime_call}
0x00007fb2cd102726: jmp 0x00007fb2cd1026c1
0x00007fb2cd102728: nop
0x00007fb2cd102729: nop
0x00007fb2cd10272a: mov 0x2a8(%r15),%rax
0x00007fb2cd102731: mov $0x0,%r10
0x00007fb2cd10273b: mov %r10,0x2a8(%r15)
0x00007fb2cd102742: mov $0x0,%r10
0x00007fb2cd10274c: mov %r10,0x2b0(%r15)
0x00007fb2cd102753: add $0x40,%rsp
0x00007fb2cd102757: pop %rbp
0x00007fb2cd102758: jmpq 0x00007fb2cd06bda0 ; {runtime_call}
0x00007fb2cd10275d: hlt
0x00007fb2cd10275e: hlt
0x00007fb2cd10275f: hlt
[Stub Code]
0x00007fb2cd102760: nop ; {no_reloc}
0x00007fb2cd102761: nop
0x00007fb2cd102762: nop
0x00007fb2cd102763: nop
0x00007fb2cd102764: nop
0x00007fb2cd102765: mov $0x0,%rbx ; {static_stub}
0x00007fb2cd10276f: jmpq 0x00007fb2cd10276f ; {runtime_call}
[Exception Handler]
0x00007fb2cd102774: callq 0x00007fb2cd0fb1e0 ; {runtime_call}
0x00007fb2cd102779: mov %rsp,-0x28(%rsp)
0x00007fb2cd10277e: sub $0x80,%rsp
0x00007fb2cd102785: mov %rax,0x78(%rsp)
0x00007fb2cd10278a: mov %rcx,0x70(%rsp)
0x00007fb2cd10278f: mov %rdx,0x68(%rsp)
0x00007fb2cd102794: mov %rbx,0x60(%rsp)
0x00007fb2cd102799: mov %rbp,0x50(%rsp)
0x00007fb2cd10279e: mov %rsi,0x48(%rsp)
0x00007fb2cd1027a3: mov %rdi,0x40(%rsp)
0x00007fb2cd1027a8: mov %r8,0x38(%rsp)
0x00007fb2cd1027ad: mov %r9,0x30(%rsp)
0x00007fb2cd1027b2: mov %r10,0x28(%rsp)
0x00007fb2cd1027b7: mov %r11,0x20(%rsp)
0x00007fb2cd1027bc: mov %r12,0x18(%rsp)
0x00007fb2cd1027c1: mov %r13,0x10(%rsp)
0x00007fb2cd1027c6: mov %r14,0x8(%rsp)
0x00007fb2cd1027cb: mov %r15,(%rsp)
0x00007fb2cd1027cf: mov $0x7fb2e446261e,%rdi ; {external_word}
0x00007fb2cd1027d9: mov $0x7fb2cd102779,%rsi ; {internal_word}
0x00007fb2cd1027e3: mov %rsp,%rdx
0x00007fb2cd1027e6: and $0xfffffffffffffff0,%rsp
0x00007fb2cd1027ea: callq 0x00007fb2e4195b30 ; {runtime_call}
0x00007fb2cd1027ef: hlt
[Deopt Handler Code]
0x00007fb2cd1027f0: mov $0x7fb2cd1027f0,%r10 ; {section_word}
0x00007fb2cd1027fa: push %r10
0x00007fb2cd1027fc: jmpq 0x00007fb2cd046fc0 ; {runtime_call}
0x00007fb2cd102801: hlt
0x00007fb2cd102802: hlt
0x00007fb2cd102803: hlt
0x00007fb2cd102804: hlt
0x00007fb2cd102805: hlt
0x00007fb2cd102806: hlt
0x00007fb2cd102807: hlt
OopMapSet contains 5 OopMaps
#0
OopMap{[32]=Oop [48]=Oop off=508}
#1
OopMap{off=763}
#2
OopMap{rdx=Oop off=773}
#3
OopMap{rdx=Oop [48]=Oop off=787}
#4
OopMap{[48]=Oop off=800}
Compiled method (c2) 100 2 ! 4 Singleton::getInstance (41 bytes)
total in heap [0x00007fb2cd101ad0,0x00007fb2cd102220] = 1872
relocation [0x00007fb2cd101bf8,0x00007fb2cd101c40] = 72
main code [0x00007fb2cd101c40,0x00007fb2cd102000] = 960
stub code [0x00007fb2cd102000,0x00007fb2cd102028] = 40
oops [0x00007fb2cd102028,0x00007fb2cd102038] = 16
metadata [0x00007fb2cd102038,0x00007fb2cd102050] = 24
scopes data [0x00007fb2cd102050,0x00007fb2cd1020a8] = 88
scopes pcs [0x00007fb2cd1020a8,0x00007fb2cd1021e8] = 320
dependencies [0x00007fb2cd1021e8,0x00007fb2cd1021f0] = 8
handler table [0x00007fb2cd1021f0,0x00007fb2cd102220] = 48
Decoding compiled method 0x00007fb2cd101ad0:
Code:
[Entry Point]
[Verified Entry Point]
[Constants]
# {method} {0x00007fb2e151b2c0} 'getInstance' '()LSingleton;' in 'Singleton'
# [sp+0x30] (sp of caller)
0x00007fb2cd101c40: mov %eax,-0x14000(%rsp)
0x00007fb2cd101c47: push %rbp
0x00007fb2cd101c48: sub $0x20,%rsp ;*synchronization entry
; - Singleton::getInstance@-1 (line 6)
0x00007fb2cd101c4c: mov $0xec7da6e0,%r10 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007fb2cd101c56: mov 0x68(%r10),%r11d ;*getstatic instance
; - Singleton::getInstance@0 (line 6)
0x00007fb2cd101c5a: test %r11d,%r11d
0x00007fb2cd101c5d: je 0x00007fb2cd101c6e
0x00007fb2cd101c5f: mov %r11,%rax ;*getstatic instance
; - Singleton::getInstance@37 (line 13)
0x00007fb2cd101c62: add $0x20,%rsp
0x00007fb2cd101c66: pop %rbp
0x00007fb2cd101c67: test %eax,0x18460393(%rip) # 0x00007fb2e5562000
; {poll_return}
0x00007fb2cd101c6d: retq
0x00007fb2cd101c6e: mov (%r10),%rax
0x00007fb2cd101c71: mov %rax,%r10
0x00007fb2cd101c74: and $0x7,%r10
0x00007fb2cd101c78: cmp $0x5,%r10
0x00007fb2cd101c7c: jne 0x00007fb2cd101da5
0x00007fb2cd101c82: mov $0x200003df,%r11d ; {metadata('java/lang/Class')}
0x00007fb2cd101c88: mov $0x0,%r10
0x00007fb2cd101c92: lea (%r10,%r11,8),%r10
0x00007fb2cd101c96: mov 0xa8(%r10),%r10
0x00007fb2cd101c9d: mov %r10,%r11
0x00007fb2cd101ca0: or %r15,%r11
0x00007fb2cd101ca3: mov %r11,%r8
0x00007fb2cd101ca6: xor %rax,%r8
0x00007fb2cd101ca9: test $0xffffffffffffff87,%r8
0x00007fb2cd101cb0: jne 0x00007fb2cd101e1d ;*monitorenter
; - Singleton::getInstance@10 (line 7)
0x00007fb2cd101cb6: mov $0x7,%ebp
0x00007fb2cd101cbb: mov $0xec7da6e0,%r10 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007fb2cd101cc5: cmp 0x68(%r10),%r12d
0x00007fb2cd101cc9: je 0x00007fb2cd101cf5
0x00007fb2cd101ccb: mov $0xec7da6e0,%r10 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007fb2cd101cd5: and (%r10),%rbp
0x00007fb2cd101cd8: cmp $0x5,%rbp
0x00007fb2cd101cdc: jne 0x00007fb2cd101e56 ;*monitorexit
; - Singleton::getInstance@28 (line 11)
0x00007fb2cd101ce2: mov $0xec7da6e0,%r10 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007fb2cd101cec: mov 0x68(%r10),%r11d ;*getstatic instance
; - Singleton::getInstance@37 (line 13)
0x00007fb2cd101cf0: jmpq 0x00007fb2cd101c5f
0x00007fb2cd101cf5: mov 0x60(%r15),%rax
0x00007fb2cd101cf9: mov %rax,%r10
0x00007fb2cd101cfc: add $0x10,%r10
0x00007fb2cd101d00: cmp 0x70(%r15),%r10
0x00007fb2cd101d04: jae 0x00007fb2cd101d82
0x00007fb2cd101d06: mov %r10,0x60(%r15)
0x00007fb2cd101d0a: prefetchnta 0xc0(%r10)
0x00007fb2cd101d12: mov $0x2000c005,%r11d ; {metadata('Singleton')}
0x00007fb2cd101d18: mov $0x0,%r10
0x00007fb2cd101d22: lea (%r10,%r11,8),%r10
0x00007fb2cd101d26: mov 0xa8(%r10),%r10
0x00007fb2cd101d2d: mov %r10,(%rax)
0x00007fb2cd101d30: movl $0x2000c005,0x8(%rax) ; {metadata('Singleton')}
0x00007fb2cd101d37: mov %r12d,0xc(%rax)
0x00007fb2cd101d3b: mov %rax,%r10
0x00007fb2cd101d3e: mov %r10,(%rsp) ;*new ; - Singleton::getInstance@17 (line 9)
0x00007fb2cd101d42: mov %r10,%rsi
0x00007fb2cd101d45: xchg %ax,%ax
0x00007fb2cd101d47: callq 0x00007fb2cd046020 ; OopMap{[0]=Oop off=268}
;*invokespecial <init>
; - Singleton::getInstance@21 (line 9)
; {optimized virtual_call}
0x00007fb2cd101d4c: mov $0xec7da6e0,%r10 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007fb2cd101d56: mov (%rsp),%r11
0x00007fb2cd101d5a: mov %r11,%r8
0x00007fb2cd101d5d: mov $0xec7da6e0,%r11 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007fb2cd101d67: mov %r8d,0x68(%r11)
0x00007fb2cd101d6b: shr $0x9,%r10
0x00007fb2cd101d6f: mov $0x7fb2e1a02000,%r11
0x00007fb2cd101d79: mov %r12b,(%r11,%r10,1) ;*putstatic instance
; - Singleton::getInstance@24 (line 9)
0x00007fb2cd101d7d: jmpq 0x00007fb2cd101ccb
0x00007fb2cd101d82: mov $0x100060028,%rsi ; {metadata('Singleton')}
0x00007fb2cd101d8c: xchg %ax,%ax
0x00007fb2cd101d8f: callq 0x00007fb2cd100fa0 ; OopMap{off=340}
;*new ; - Singleton::getInstance@17 (line 9)
; {runtime_call}
0x00007fb2cd101d94: jmp 0x00007fb2cd101d3b
0x00007fb2cd101d96: mov $0xec7da6e0,%r11 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007fb2cd101da0: lock cmpxchg %r10,(%r11)
0x00007fb2cd101da5: mov $0xec7da6e0,%r11 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007fb2cd101daf: lea 0x10(%rsp),%rbx
0x00007fb2cd101db4: mov (%r11),%rax
0x00007fb2cd101db7: test $0x2,%rax
0x00007fb2cd101dbd: jne 0x00007fb2cd101de3
0x00007fb2cd101dbf: or $0x1,%rax
0x00007fb2cd101dc3: mov %rax,(%rbx)
0x00007fb2cd101dc6: lock cmpxchg %rbx,(%r11)
0x00007fb2cd101dcb: je 0x00007fb2cd101dfc
0x00007fb2cd101dd1: sub %rsp,%rax
0x00007fb2cd101dd4: and $0xfffffffffffff007,%rax
0x00007fb2cd101ddb: mov %rax,(%rbx)
0x00007fb2cd101dde: jmpq 0x00007fb2cd101dfc
0x00007fb2cd101de3: movq $0x3,(%rbx)
0x00007fb2cd101dea: mov %rax,%rbx
0x00007fb2cd101ded: mov 0x16(%rbx),%rax
0x00007fb2cd101df1: test %rax,%rax
0x00007fb2cd101df4: jne 0x00007fb2cd101dfc
0x00007fb2cd101df6: lock cmpxchg %r15,0x16(%rbx)
0x00007fb2cd101dfc: je 0x00007fb2cd101cb6
0x00007fb2cd101e02: mov $0xec7da6e0,%rsi ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007fb2cd101e0c: lea 0x10(%rsp),%rdx
0x00007fb2cd101e11: xchg %ax,%ax
0x00007fb2cd101e13: callq 0x00007fb2cd0fd620 ; OopMap{off=472}
;*monitorenter
; - Singleton::getInstance@10 (line 7)
; {runtime_call}
0x00007fb2cd101e18: jmpq 0x00007fb2cd101cb6
0x00007fb2cd101e1d: test $0x7,%r8
0x00007fb2cd101e24: jne 0x00007fb2cd101d96
0x00007fb2cd101e2a: test $0x300,%r8
0x00007fb2cd101e31: jne 0x00007fb2cd101e40
0x00007fb2cd101e33: and $0x37f,%rax
0x00007fb2cd101e3a: mov %rax,%r11
0x00007fb2cd101e3d: or %r15,%r11
0x00007fb2cd101e40: mov $0xec7da6e0,%r10 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007fb2cd101e4a: lock cmpxchg %r11,(%r10)
0x00007fb2cd101e4f: jne 0x00007fb2cd101e02
0x00007fb2cd101e51: jmpq 0x00007fb2cd101cb6
0x00007fb2cd101e56: mov $0xec7da6e0,%r11 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007fb2cd101e60: lea 0x10(%rsp),%rax
0x00007fb2cd101e65: cmpq $0x0,(%rax)
0x00007fb2cd101e6c: je 0x00007fb2cd101ee6
0x00007fb2cd101e72: mov (%r11),%r10
0x00007fb2cd101e75: test $0x2,%r10
0x00007fb2cd101e7c: je 0x00007fb2cd101ede
0x00007fb2cd101e7e: mov 0x16(%r10),%rax
0x00007fb2cd101e82: xor %r15,%rax
0x00007fb2cd101e85: or 0x26(%r10),%rax
0x00007fb2cd101e89: jne 0x00007fb2cd101ee6
0x00007fb2cd101e8b: mov 0x36(%r10),%rax
0x00007fb2cd101e8f: or 0x3e(%r10),%rax
0x00007fb2cd101e93: jne 0x00007fb2cd101e9f
0x00007fb2cd101e95: movq $0x0,0x16(%r10)
0x00007fb2cd101e9d: jmp 0x00007fb2cd101ee6
0x00007fb2cd101e9f: cmpq $0x0,0x46(%r10)
0x00007fb2cd101ea7: je 0x00007fb2cd101ed2
0x00007fb2cd101ea9: movq $0x0,0x16(%r10)
0x00007fb2cd101eb1: lock addl $0x0,(%rsp)
0x00007fb2cd101eb6: cmpq $0x0,0x46(%r10)
0x00007fb2cd101ebe: jne 0x00007fb2cd101ed7
0x00007fb2cd101ec0: mov $0x0,%rax
0x00007fb2cd101eca: lock cmpxchg %r15,0x16(%r10)
0x00007fb2cd101ed0: jne 0x00007fb2cd101ed7
0x00007fb2cd101ed2: or $0x1,%eax
0x00007fb2cd101ed5: jmp 0x00007fb2cd101ee6
0x00007fb2cd101ed7: test $0x0,%eax
0x00007fb2cd101edc: jmp 0x00007fb2cd101ee6
0x00007fb2cd101ede: mov (%rax),%r10
0x00007fb2cd101ee1: lock cmpxchg %r10,(%r11)
0x00007fb2cd101ee6: je 0x00007fb2cd101ce2
0x00007fb2cd101eec: mov $0xec7da6e0,%rdi ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007fb2cd101ef6: lea 0x10(%rsp),%rsi ;*monitorenter
; - Singleton::getInstance@10 (line 7)
0x00007fb2cd101efb: mov $0x7fb2e431cba0,%r10
0x00007fb2cd101f05: callq *%r10 ;*monitorexit
; - Singleton::getInstance@28 (line 11)
0x00007fb2cd101f08: jmpq 0x00007fb2cd101ce2 ;*new
; - Singleton::getInstance@17 (line 9)
0x00007fb2cd101f0d: mov %rax,%rbx
0x00007fb2cd101f10: jmp 0x00007fb2cd101f15 ;*invokespecial <init>
; - Singleton::getInstance@21 (line 9)
0x00007fb2cd101f12: mov %rax,%rbx
0x00007fb2cd101f15: mov $0xec7da6e0,%r10 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007fb2cd101f1f: and (%r10),%rbp
0x00007fb2cd101f22: cmp $0x5,%rbp
0x00007fb2cd101f26: jne 0x00007fb2cd101f35 ;*monitorexit
; - Singleton::getInstance@34 (line 11)
0x00007fb2cd101f28: mov %rbx,%rsi
0x00007fb2cd101f2b: add $0x20,%rsp
0x00007fb2cd101f2f: pop %rbp
0x00007fb2cd101f30: jmpq 0x00007fb2cd0fd520 ; {runtime_call}
0x00007fb2cd101f35: mov $0xec7da6e0,%r11 ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007fb2cd101f3f: lea 0x10(%rsp),%rax
0x00007fb2cd101f44: cmpq $0x0,(%rax)
0x00007fb2cd101f4b: je 0x00007fb2cd101fc5
0x00007fb2cd101f51: mov (%r11),%r10
0x00007fb2cd101f54: test $0x2,%r10
0x00007fb2cd101f5b: je 0x00007fb2cd101fbd
0x00007fb2cd101f5d: mov 0x16(%r10),%rax
0x00007fb2cd101f61: xor %r15,%rax
0x00007fb2cd101f64: or 0x26(%r10),%rax
0x00007fb2cd101f68: jne 0x00007fb2cd101fc5
0x00007fb2cd101f6a: mov 0x36(%r10),%rax
0x00007fb2cd101f6e: or 0x3e(%r10),%rax
0x00007fb2cd101f72: jne 0x00007fb2cd101f7e
0x00007fb2cd101f74: movq $0x0,0x16(%r10)
0x00007fb2cd101f7c: jmp 0x00007fb2cd101fc5
0x00007fb2cd101f7e: cmpq $0x0,0x46(%r10)
0x00007fb2cd101f86: je 0x00007fb2cd101fb1
0x00007fb2cd101f88: movq $0x0,0x16(%r10)
0x00007fb2cd101f90: lock addl $0x0,(%rsp)
0x00007fb2cd101f95: cmpq $0x0,0x46(%r10)
0x00007fb2cd101f9d: jne 0x00007fb2cd101fb6
0x00007fb2cd101f9f: mov $0x0,%rax
0x00007fb2cd101fa9: lock cmpxchg %r15,0x16(%r10)
0x00007fb2cd101faf: jne 0x00007fb2cd101fb6
0x00007fb2cd101fb1: or $0x1,%eax
0x00007fb2cd101fb4: jmp 0x00007fb2cd101fc5
0x00007fb2cd101fb6: test $0x0,%eax
0x00007fb2cd101fbb: jmp 0x00007fb2cd101fc5
0x00007fb2cd101fbd: mov (%rax),%r10
0x00007fb2cd101fc0: lock cmpxchg %r10,(%r11)
0x00007fb2cd101fc5: je 0x00007fb2cd101f28
0x00007fb2cd101fcb: mov $0xec7da6e0,%rdi ; {oop(a 'java/lang/Class' = 'Singleton')}
0x00007fb2cd101fd5: lea 0x10(%rsp),%rsi ;*monitorenter
; - Singleton::getInstance@10 (line 7)
0x00007fb2cd101fda: mov $0x7fb2e431cba0,%r10
0x00007fb2cd101fe4: callq *%r10 ;*monitorexit
; - Singleton::getInstance@34 (line 11)
0x00007fb2cd101fe7: jmpq 0x00007fb2cd101f28
0x00007fb2cd101fec: hlt
0x00007fb2cd101fed: hlt
0x00007fb2cd101fee: hlt
0x00007fb2cd101fef: hlt
0x00007fb2cd101ff0: hlt
0x00007fb2cd101ff1: hlt
0x00007fb2cd101ff2: hlt
0x00007fb2cd101ff3: hlt
0x00007fb2cd101ff4: hlt
0x00007fb2cd101ff5: hlt
0x00007fb2cd101ff6: hlt
0x00007fb2cd101ff7: hlt
0x00007fb2cd101ff8: hlt
0x00007fb2cd101ff9: hlt
0x00007fb2cd101ffa: hlt
0x00007fb2cd101ffb: hlt
0x00007fb2cd101ffc: hlt
0x00007fb2cd101ffd: hlt
0x00007fb2cd101ffe: hlt
0x00007fb2cd101fff: hlt
[Stub Code]
0x00007fb2cd102000: mov $0x0,%rbx ; {no_reloc}
0x00007fb2cd10200a: jmpq 0x00007fb2cd10200a ; {runtime_call}
[Exception Handler]
0x00007fb2cd10200f: jmpq 0x00007fb2cd06c060 ; {runtime_call}
[Deopt Handler Code]
0x00007fb2cd102014: callq 0x00007fb2cd102019
0x00007fb2cd102019: subq $0x5,(%rsp)
0x00007fb2cd10201e: jmpq 0x00007fb2cd046fc0 ; {runtime_call}
0x00007fb2cd102023: hlt
0x00007fb2cd102024: hlt
0x00007fb2cd102025: hlt
0x00007fb2cd102026: hlt
0x00007fb2cd102027: hlt
OopMapSet contains 3 OopMaps
#0
OopMap{[0]=Oop off=268}
#1
OopMap{off=340}
#2
OopMap{off=472}