Skip to content

Instantly share code, notes, and snippets.

@vyazelenko
Last active December 26, 2015 22:39
Show Gist options
  • Save vyazelenko/7224927 to your computer and use it in GitHub Desktop.
Save vyazelenko/7224927 to your computer and use it in GitHub Desktop.
Assembly dump for TestClone#callCopy() method
Decoding compiled method 0x00000001063b9390:
Code:
[Entry Point]
[Verified Entry Point]
[Constants]
# {method} 'callCopy' '()Lcom/vyazelenko/blog/copyobject/Copyable;' in 'com/vyazelenko/blog/copyobject/TestClone'
# [sp+0x20] (sp of caller)
0x00000001063b94e0: mov %eax,-0x14000(%rsp)
0x00000001063b94e7: push %rbp
0x00000001063b94e8: sub $0x10,%rsp
0x00000001063b94ec: mov 0x60(%r15),%rsi
0x00000001063b94f0: mov %rsi,%r10
0x00000001063b94f3: add $0x58,%r10
0x00000001063b94f7: cmp 0x70(%r15),%r10
0x00000001063b94fb: jae 0x00000001063b9557
0x00000001063b94fd: mov %r10,0x60(%r15)
0x00000001063b9501: prefetchnta 0xc0(%r10)
0x00000001063b9509: mov $0xd7610ea1,%r11d ; {oop('com/vyazelenko/blog/copyobject/primitives/clone/CloneCopy')}
0x00000001063b950f: mov 0xb0(%r12,%r11,8),%r10
0x00000001063b9517: mov %r10,(%rsi)
0x00000001063b951a: movl $0xd7610ea1,0x8(%rsi) ; {oop('com/vyazelenko/blog/copyobject/primitives/clone/CloneCopy')}
0x00000001063b9521: mov %rsi,%rbx
0x00000001063b9524: add $0x8,%rsi
0x00000001063b9528: mov $0xa,%edx
0x00000001063b952d: movabs $0x7957a9d90,%rdi ; {oop(a 'com/vyazelenko/blog/copyobject/primitives/clone/CloneCopy')}
0x00000001063b9537: add $0x8,%rdi
0x00000001063b953b: movabs $0x106398120,%r10
0x00000001063b9545: callq *%r10 ;*invokespecial clone
; - com.vyazelenko.blog.copyobject.primitives.clone.CloneCopy::clone@1 (line 16)
; - com.vyazelenko.blog.copyobject.primitives.clone.CloneCopy::copy@1 (line 24)
; - com.vyazelenko.blog.copyobject.TestClone::callCopy@3 (line 38)
0x00000001063b9548: mov %rbx,%rax
0x00000001063b954b: add $0x10,%rsp
0x00000001063b954f: pop %rbp
0x00000001063b9550: test %eax,-0x1bcc556(%rip) # 0x00000001047ed000
; {poll_return}
0x00000001063b9556: retq
0x00000001063b9557: movabs $0x6bb087508,%rsi ; {oop('com/vyazelenko/blog/copyobject/primitives/clone/CloneCopy')}
0x00000001063b9561: xchg %ax,%ax
0x00000001063b9563: callq 0x00000001063b4fe0 ; OopMap{off=136}
;*invokespecial clone
; - com.vyazelenko.blog.copyobject.primitives.clone.CloneCopy::clone@1 (line 16)
; - com.vyazelenko.blog.copyobject.primitives.clone.CloneCopy::copy@1 (line 24)
; - com.vyazelenko.blog.copyobject.TestClone::callCopy@3 (line 38)
; {runtime_call}
0x00000001063b9568: mov %rax,%rsi
0x00000001063b956b: jmp 0x00000001063b9521
0x00000001063b956d: mov 0x8(%rax),%r10d
0x00000001063b9571: cmp $0xd7610fdb,%r10d ; {oop('java/lang/CloneNotSupportedException')}
0x00000001063b9578: je 0x00000001063b9587
0x00000001063b957a: mov %rax,%rsi
0x00000001063b957d: add $0x10,%rsp
0x00000001063b9581: pop %rbp
0x00000001063b9582: jmpq 0x00000001063b7e20 ; {runtime_call}
0x00000001063b9587: mov %rax,%rbp ;*areturn
; - com.vyazelenko.blog.copyobject.primitives.clone.CloneCopy::clone@7 (line 16)
; - com.vyazelenko.blog.copyobject.primitives.clone.CloneCopy::copy@1 (line 24)
; - com.vyazelenko.blog.copyobject.TestClone::callCopy@3 (line 38)
0x00000001063b958a: mov $0x5,%esi
0x00000001063b958f: callq 0x000000010638ef20 ; OopMap{rbp=Oop off=180}
;*new ; - com.vyazelenko.blog.copyobject.primitives.clone.CloneCopy::clone@9 (line 18)
; - com.vyazelenko.blog.copyobject.primitives.clone.CloneCopy::copy@1 (line 24)
; - com.vyazelenko.blog.copyobject.TestClone::callCopy@3 (line 38)
; {runtime_call}
0x00000001063b9594: callq 0x0000000105c165de ;*new
; - com.vyazelenko.blog.copyobject.primitives.clone.CloneCopy::clone@9 (line 18)
; - com.vyazelenko.blog.copyobject.primitives.clone.CloneCopy::copy@1 (line 24)
; - com.vyazelenko.blog.copyobject.TestClone::callCopy@3 (line 38)
; {runtime_call}
0x00000001063b9599: hlt
0x00000001063b959a: hlt
0x00000001063b959b: hlt
0x00000001063b959c: hlt
0x00000001063b959d: hlt
0x00000001063b959e: hlt
0x00000001063b959f: hlt
[Exception Handler]
[Stub Code]
0x00000001063b95a0: jmpq 0x00000001063b50a0 ; {no_reloc}
[Deopt Handler Code]
0x00000001063b95a5: callq 0x00000001063b95aa
0x00000001063b95aa: subq $0x5,(%rsp)
0x00000001063b95af: jmpq 0x000000010638eb00 ; {runtime_call}
0x00000001063b95b4: hlt
0x00000001063b95b5: hlt
0x00000001063b95b6: hlt
0x00000001063b95b7: hlt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment