rsi:rsi = 'java/lang/String' # parm1: rdx = int # [sp+0x40] (sp of caller) 0x00007f8a1907a6a0: mov %eax,-0x14000(%rsp) 0x00007f8a1907a6a7: push %rbp 0x00007f8a1907a6a8: sub $0x30,%rsp ;*synchronization entry ; - Hello::hello@-1 (line 3) 0x00007f8a1907a6ac: mov %rsi,%rcx 0x00007f8a1907a6af: test %rsi,%rsi 0x00007f8a1907a6b2: jne 0x00007f8a1907a9b5 0x00007f8a1907a6b8: mov $0x76d103fb0,%rbp ; {oop("null")} 0x00007f8a1907a6c2: mov 0xc(%rbp),%r10d 0x00007f8a1907a6c6: mov 0xc(%r12,%r10,8),%esi 0x00007f8a1907a6cb: mov %esi,%r10d 0x00007f8a1907a6ce: add $0x5,%r10d 0x00007f8a1907a6d2: test %r10d,%r10d 0x00007f8a1907a6d5: jl 0x00007f8a1907a99a 0x00007f8a1907a6db: mov %edx,%r13d 0x00007f8a1907a6de: neg %r13d 0x00007f8a1907a6e1: mov %edx,%r8d 0x00007f8a1907a6e4: cmp $0x80000000,%edx 0x00007f8a1907a6ea: jne 0x00007f8a1907a91b 0x00007f8a1907a6f0: xor %r14d,%r14d 0x00007f8a1907a6f3: mov $0xb,%ebx 0x00007f8a1907a6f8: jmp 0x00007f8a1907a712 0x00007f8a1907a6fa: nopw 0x0(%rax,%rax,1) 0x00007f8a1907a700: inc %r11d 0x00007f8a1907a703: mov 0x10(%rdi,%r11,4),%r9d 0x00007f8a1907a708: cmp %r9d,%r10d 0x00007f8a1907a70b: jg 0x00007f8a1907a700 0x00007f8a1907a70d: add %r11d,%ebx 0x00007f8a1907a710: inc %ebx 0x00007f8a1907a712: mov %ebx,%r10d 0x00007f8a1907a715: add %esi,%r10d 0x00007f8a1907a718: mov %r10d,%edx 0x00007f8a1907a71b: add $0x5,%edx 0x00007f8a1907a71e: test %edx,%edx 0x00007f8a1907a720: jl 0x00007f8a1907a99d 0x00007f8a1907a726: cmp $0x80000,%edx 0x00007f8a1907a72c: ja 0x00007f8a1907a95e 0x00007f8a1907a732: mov 0x60(%r15),%r9 0x00007f8a1907a736: movslq %r10d,%r10 0x00007f8a1907a739: shl %r10 0x00007f8a1907a73c: add $0x21,%r10 0x00007f8a1907a740: and $0xfffffffffffffff8,%r10 0x00007f8a1907a744: mov %r9,%r11 0x00007f8a1907a747: add %r10,%r11 0x00007f8a1907a74a: cmp 0x70(%r15),%r11 0x00007f8a1907a74e: jae 0x00007f8a1907a95e 0x00007f8a1907a754: mov %r11,0x60(%r15) 0x00007f8a1907a758: prefetchw 0xc0(%r11) 0x00007f8a1907a760: movq $0x1,(%r9) 0x00007f8a1907a767: prefetchw 0x100(%r11) 0x00007f8a1907a76f: movl $0xf8000041,0x8(%r9) ; {metadata({type array char})} 0x00007f8a1907a777: mov %edx,0xc(%r9) 0x00007f8a1907a77b: prefetchw 0x140(%r11) 0x00007f8a1907a783: prefetchw 0x180(%r11) 7 What does the JIT generate ? 0x00007f8a1907a78b: mov %rcx,(%rsp) 0x00007f8a1907a78f: mov %r8d,0x8(%rsp) 0x00007f8a1907a794: mov 0xc(%rbp),%r10d 0x00007f8a1907a798: mov %r9,%rsi 0x00007f8a1907a79b: add $0x1a,%rsi 0x00007f8a1907a79f: mov 0xc(%r12,%r10,8),%ebp 0x00007f8a1907a7a4: lea (%r12,%r10,8),%r11 0x00007f8a1907a7a8: lea 0x10(%r12,%r10,8),%rdi 0x00007f8a1907a7ad: movslq %ebp,%r10 0x00007f8a1907a7b0: mov %r10,0x18(%rsp) 0x00007f8a1907a7b5: mov $0x68,%r10d 0x00007f8a1907a7bb: mov %r10w,0x10(%r9) 0x00007f8a1907a7c0: mov $0x6f,%r8d 0x00007f8a1907a7c6: mov $0x65,%r11d 0x00007f8a1907a7cc: mov %r11w,0x12(%r9) 0x00007f8a1907a7d1: mov $0x6c,%r10d 0x00007f8a1907a7d7: mov %r10w,0x14(%r9) 0x00007f8a1907a7dc: mov %r10w,0x16(%r9) 0x00007f8a1907a7e1: mov %r8w,0x18(%r9) 0x00007f8a1907a7e6: mov %r9,0x10(%rsp) 0x00007f8a1907a7eb: mov 0x18(%rsp),%rdx 0x00007f8a1907a7f0: mov $0x7f8a19052300,%r10 0x00007f8a1907a7fa: callq *%r10 0x00007f8a1907a7fd: mov 0x8(%rsp),%r10d 0x00007f8a1907a802: cmp $0x80000000,%r10d 0x00007f8a1907a809: je 0x00007f8a1907a81c 0x00007f8a1907a80b: mov 0x8(%rsp),%r8d 0x00007f8a1907a810: test %r10d,%r10d 0x00007f8a1907a813: jl 0x00007f8a1907a852 0x00007f8a1907a815: mov 0x8(%rsp),%r13d 0x00007f8a1907a81a: jmp 0x00007f8a1907a858 0x00007f8a1907a81c: mov 0x18(%rsp),%r10 0x00007f8a1907a821: mov 0x10(%rsp),%r11 0x00007f8a1907a826: lea 0x1a(%r11,%r10,2),%rsi 0x00007f8a1907a82b: mov $0xb,%edx 0x00007f8a1907a830: mov $0x76d103ff8,%rdi ; {oop([C)} 0x00007f8a1907a83a: add $0x10,%rdi 0x00007f8a1907a83e: mov $0x7f8a19052300,%r10 0x00007f8a1907a848: callq *%r10 0x00007f8a1907a84b: mov 0x8(%rsp),%r8d 0x00007f8a1907a850: jmp 0x00007f8a1907a8b5 0x00007f8a1907a852: mov $0x2d,%r14d 0x00007f8a1907a858: add %ebp,%ebx 0x00007f8a1907a85a: add $0x5,%ebx 0x00007f8a1907a85d: mov %r13d,%r11d 0x00007f8a1907a860: sar $0x1f,%r11d 0x00007f8a1907a864: movslq %r13d,%r10 0x00007f8a1907a867: imul $0x66666667,%r10,%r10 0x00007f8a1907a86e: sar $0x22,%r10 0x00007f8a1907a872: mov %r10d,%r10d 0x00007f8a1907a875: mov %r10d,%edx 0x00007f8a1907a878: sub %r11d,%edx 0x00007f8a1907a87b: mov %edx,%r9d 0x00007f8a1907a87e: shl $0x3,%r9d 0x00007f8a1907a882: mov %edx,%ecx 0x00007f8a1907a884: shl %ecx 0x00007f8a1907a886: add %r9d,%ecx 0x00007f8a1907a889: sub %ecx,%r13d 0x00007f8a1907a88c: add $0x30,%r13d 0x00007f8a1907a890: mov 0x10(%rsp),%r9 0x00007f8a1907a895: mov %r13w,0xe(%r9,%rbx,2) 0x00007f8a1907a89b: cmp %r11d,%r10d 0x00007f8a1907a89e: je 0x00007f8a1907a8a7 0x00007f8a1907a8a0: dec %ebx 0x00007f8a1907a8a2: mov %edx,%r13d 0x00007f8a1907a8a5: jmp 0x00007f8a1907a85d 0x00007f8a1907a8a7: test %r14d,%r14d 0x00007f8a1907a8aa: je 0x00007f8a1907a8b5 0x00007f8a1907a8ac: add $0xfffffffffffffffe,%ebx 0x00007f8a1907a8af: mov %r14w,0x10(%r9,%rbx,2) 0x00007f8a1907a8b5: mov 0x60(%r15),%rax 0x00007f8a1907a8b9: mov %rax,%r10 0x00007f8a1907a8bc: add $0x18,%r10 0x00007f8a1907a8c0: cmp 0x70(%r15),%r10 0x00007f8a1907a8c4: jae 0x00007f8a1907a943 0x00007f8a1907a8c6: mov %r10,0x60(%r15) 0x00007f8a1907a8ca: prefetchw 0xc0(%r10) 0x00007f8a1907a8d2: mov $0xf80002da,%r11d ; {metadata('java/lang/String')} 0x00007f8a1907a8d8: mov $0x0,%r10 0x00007f8a1907a8e2: lea (%r10,%r11,8),%r10 0x00007f8a1907a8e6: mov 0xa8(%r10),%r10 0x00007f8a1907a8ed: mov %r10,(%rax) 0x00007f8a1907a8f0: movl $0xf80002da,0x8(%rax) ; {metadata('java/lang/String')} 0x00007f8a1907a8f7: mov %r12d,0xc(%rax) 0x00007f8a1907a8fb: mov %r12,0x10(%rax) 0x00007f8a1907a8ff: mov 0x10(%rsp),%r10 0x00007f8a1907a904: mov %r10,%r11 0x00007f8a1907a907: shr $0x3,%r11 0x00007f8a1907a90b: mov %r11d,0xc(%rax) 0x00007f8a1907a90f: add $0x30,%rsp 0x00007f8a1907a913: pop %rbp 0x00007f8a1907a914: test %eax,0xa2a36e6(%rip) # 0x00007f8a2331e000 ; {poll_return} 0x00007f8a1907a91a: retq /usr/jdk/jdk1.8.0/bin/java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly Hello