Skip to content

Instantly share code, notes, and snippets.

@vyazelenko
Last active December 26, 2015 22:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vyazelenko/7224889 to your computer and use it in GitHub Desktop.
Save vyazelenko/7224889 to your computer and use it in GitHub Desktop.
Assembly dump for TestConstructor#callCopy() method
Decoding compiled method 0x000000010c064b50:
Code:
[Entry Point]
[Verified Entry Point]
[Constants]
# {method} 'callCopy' '()Lcom/vyazelenko/blog/copyobject/Copyable;' in 'com/vyazelenko/blog/copyobject/TestConstructor'
# [sp+0x20] (sp of caller)
0x000000010c064ca0: mov %eax,-0x14000(%rsp)
0x000000010c064ca7: push %rbp
0x000000010c064ca8: sub $0x10,%rsp ;*synchronization entry
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@-1 (line 39)
0x000000010c064cac: mov 0x60(%r15),%r8
0x000000010c064cb0: mov %r8,%r10
0x000000010c064cb3: add $0x58,%r10
0x000000010c064cb7: cmp 0x70(%r15),%r10
0x000000010c064cbb: jae 0x000000010c064de3
0x000000010c064cc1: mov %r10,0x60(%r15)
0x000000010c064cc5: prefetchnta 0xc0(%r10)
0x000000010c064ccd: mov %r8,%rdi
0x000000010c064cd0: add $0x10,%rdi
0x000000010c064cd4: mov $0xd7610e71,%r10d ; {oop('com/vyazelenko/blog/copyobject/primitives/constructor/ConstructorCopy')}
0x000000010c064cda: mov 0xb0(%r12,%r10,8),%r10
0x000000010c064ce2: mov %r10,(%r8)
0x000000010c064ce5: movl $0xd7610e71,0x8(%r8) ; {oop('com/vyazelenko/blog/copyobject/primitives/constructor/ConstructorCopy')}
0x000000010c064ced: mov %r12d,0xc(%r8)
0x000000010c064cf1: mov $0x9,%ecx
0x000000010c064cf6: xor %rax,%rax
0x000000010c064cf9: shl $0x3,%rcx
0x000000010c064cfd: rep rex.W stos %al,%es:(%rdi) ;*new
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@0 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
0x000000010c064d00: mov %r8,%rax ;*areturn
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@6 (line 39)
0x000000010c064d03: movabs $0x7957aa098,%r9 ; {oop(a 'com/vyazelenko/blog/copyobject/primitives/constructor/ConstructorCopy')}
0x000000010c064d0d: mov 0xc(%r9),%r11d
0x000000010c064d11: mov %r11d,0xc(%r8) ;*putfield field1
; - com.vyazelenko.blog.copyobject.primitives.Root::<init>@9 (line 29)
; - com.vyazelenko.blog.copyobject.primitives.BaseClass::<init>@2 (line 106)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::<init>@2 (line 18)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@5 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
0x000000010c064d15: movzwl 0x54(%r9),%r10d
0x000000010c064d1a: mov %r10w,0x54(%r8) ;*putfield x
; - com.vyazelenko.blog.copyobject.primitives.BaseClass::<init>@114 (line 120)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::<init>@2 (line 18)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@5 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
0x000000010c064d1f: movswl 0x52(%r9),%r11d
0x000000010c064d24: mov %r11w,0x52(%r8) ;*putfield m10
; - com.vyazelenko.blog.copyobject.primitives.BaseClass::<init>@106 (line 119)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::<init>@2 (line 18)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@5 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
0x000000010c064d29: movswl 0x50(%r9),%r10d
0x000000010c064d2e: mov %r10w,0x50(%r8) ;*putfield m9
; - com.vyazelenko.blog.copyobject.primitives.BaseClass::<init>@98 (line 118)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::<init>@2 (line 18)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@5 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
0x000000010c064d33: movswl 0x4e(%r9),%r11d
0x000000010c064d38: mov %r11w,0x4e(%r8) ;*putfield m8
; - com.vyazelenko.blog.copyobject.primitives.BaseClass::<init>@90 (line 117)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::<init>@2 (line 18)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@5 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
0x000000010c064d3d: movswl 0x4c(%r9),%r10d
0x000000010c064d42: mov %r10w,0x4c(%r8) ;*putfield m7
; - com.vyazelenko.blog.copyobject.primitives.BaseClass::<init>@82 (line 116)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::<init>@2 (line 18)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@5 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
0x000000010c064d47: movswl 0x4a(%r9),%r11d
0x000000010c064d4c: mov %r11w,0x4a(%r8) ;*putfield m6
; - com.vyazelenko.blog.copyobject.primitives.BaseClass::<init>@74 (line 115)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::<init>@2 (line 18)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@5 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
0x000000010c064d51: movswl 0x48(%r9),%r10d
0x000000010c064d56: mov %r10w,0x48(%r8) ;*putfield m5
; - com.vyazelenko.blog.copyobject.primitives.BaseClass::<init>@66 (line 114)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::<init>@2 (line 18)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@5 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
0x000000010c064d5b: movswl 0x46(%r9),%r11d
0x000000010c064d60: mov %r11w,0x46(%r8) ;*putfield m4
; - com.vyazelenko.blog.copyobject.primitives.BaseClass::<init>@58 (line 113)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::<init>@2 (line 18)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@5 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
0x000000010c064d65: movswl 0x44(%r9),%r10d
0x000000010c064d6a: mov %r10w,0x44(%r8) ;*putfield m3
; - com.vyazelenko.blog.copyobject.primitives.BaseClass::<init>@50 (line 112)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::<init>@2 (line 18)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@5 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
0x000000010c064d6f: movswl 0x42(%r9),%r11d
0x000000010c064d74: mov %r11w,0x42(%r8) ;*putfield m2
; - com.vyazelenko.blog.copyobject.primitives.BaseClass::<init>@42 (line 111)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::<init>@2 (line 18)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@5 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
0x000000010c064d79: movswl 0x40(%r9),%r10d
0x000000010c064d7e: mov %r10w,0x40(%r8) ;*putfield m1
; - com.vyazelenko.blog.copyobject.primitives.BaseClass::<init>@34 (line 110)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::<init>@2 (line 18)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@5 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
0x000000010c064d83: mov 0x38(%r9),%r10
0x000000010c064d87: mov %r10,0x38(%r8) ;*putfield youCanSeeMe
; - com.vyazelenko.blog.copyobject.primitives.BaseClass::<init>@26 (line 109)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::<init>@2 (line 18)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@5 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
0x000000010c064d8b: vmovsd 0x30(%r9),%xmm0
0x000000010c064d91: vmovsd %xmm0,0x30(%r8) ;*putfield anotherField
; - com.vyazelenko.blog.copyobject.primitives.BaseClass::<init>@10 (line 107)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::<init>@2 (line 18)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@5 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
0x000000010c064d97: mov 0x2c(%r9),%r11d
0x000000010c064d9b: mov %r11d,0x2c(%r8) ;*putfield field1
; - com.vyazelenko.blog.copyobject.primitives.BaseClass::<init>@18 (line 108)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::<init>@2 (line 18)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@5 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
0x000000010c064d9f: movsbl 0x2b(%r9),%r10d
0x000000010c064da4: mov %r10b,0x2b(%r8) ;*putfield abc
; - com.vyazelenko.blog.copyobject.primitives.Root::<init>@33 (line 32)
; - com.vyazelenko.blog.copyobject.primitives.BaseClass::<init>@2 (line 106)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::<init>@2 (line 18)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@5 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
0x000000010c064da8: movzbl 0x2a(%r9),%r11d
0x000000010c064dad: mov %r11b,0x2a(%r8) ;*putfield field6
; - com.vyazelenko.blog.copyobject.primitives.Root::<init>@25 (line 31)
; - com.vyazelenko.blog.copyobject.primitives.BaseClass::<init>@2 (line 106)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::<init>@2 (line 18)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@5 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
0x000000010c064db1: movzwl 0x28(%r9),%r10d
0x000000010c064db6: mov %r10w,0x28(%r8) ;*putfield field2
; - com.vyazelenko.blog.copyobject.primitives.Root::<init>@17 (line 30)
; - com.vyazelenko.blog.copyobject.primitives.BaseClass::<init>@2 (line 106)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::<init>@2 (line 18)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@5 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
0x000000010c064dbb: vmovsd 0x20(%r9),%xmm0
0x000000010c064dc1: vmovsd %xmm0,0x20(%r8) ;*putfield maxExponent
; - com.vyazelenko.blog.copyobject.primitives.Root::<init>@57 (line 35)
; - com.vyazelenko.blog.copyobject.primitives.BaseClass::<init>@2 (line 106)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::<init>@2 (line 18)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@5 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
0x000000010c064dc7: mov 0x18(%r9),%r10
0x000000010c064dcb: mov %r10,0x18(%r8) ;*putfield max
; - com.vyazelenko.blog.copyobject.primitives.Root::<init>@49 (line 34)
; - com.vyazelenko.blog.copyobject.primitives.BaseClass::<init>@2 (line 106)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::<init>@2 (line 18)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@5 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
0x000000010c064dcf: mov 0x10(%r9),%r10
0x000000010c064dd3: mov %r10,0x10(%r8) ;*putfield min
; - com.vyazelenko.blog.copyobject.primitives.Root::<init>@41 (line 33)
; - com.vyazelenko.blog.copyobject.primitives.BaseClass::<init>@2 (line 106)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::<init>@2 (line 18)
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@5 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
0x000000010c064dd7: add $0x10,%rsp
0x000000010c064ddb: pop %rbp
0x000000010c064ddc: test %eax,-0x10b4de2(%rip) # 0x000000010afb0000
; {poll_return}
0x000000010c064de2: retq
0x000000010c064de3: movabs $0x6bb087388,%rsi ; {oop('com/vyazelenko/blog/copyobject/primitives/constructor/ConstructorCopy')}
0x000000010c064ded: xchg %ax,%ax
0x000000010c064def: callq 0x000000010c05efe0 ; OopMap{off=340}
;*new ; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@0 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
; {runtime_call}
0x000000010c064df4: mov %rax,%r8
0x000000010c064df7: jmpq 0x000000010c064d00 ;*new
; - com.vyazelenko.blog.copyobject.primitives.constructor.ConstructorCopy::copy@0 (line 23)
; - com.vyazelenko.blog.copyobject.TestConstructor::callCopy@3 (line 39)
0x000000010c064dfc: mov %rax,%rsi
0x000000010c064dff: add $0x10,%rsp
0x000000010c064e03: pop %rbp
0x000000010c064e04: jmpq 0x000000010c061e20 ; {runtime_call}
0x000000010c064e09: hlt
0x000000010c064e0a: hlt
0x000000010c064e0b: hlt
0x000000010c064e0c: hlt
0x000000010c064e0d: hlt
0x000000010c064e0e: hlt
0x000000010c064e0f: hlt
0x000000010c064e10: hlt
0x000000010c064e11: hlt
0x000000010c064e12: hlt
0x000000010c064e13: hlt
0x000000010c064e14: hlt
0x000000010c064e15: hlt
0x000000010c064e16: hlt
0x000000010c064e17: hlt
0x000000010c064e18: hlt
0x000000010c064e19: hlt
0x000000010c064e1a: hlt
0x000000010c064e1b: hlt
0x000000010c064e1c: hlt
0x000000010c064e1d: hlt
0x000000010c064e1e: hlt
0x000000010c064e1f: hlt
[Exception Handler]
[Stub Code]
0x000000010c064e20: jmpq 0x000000010c05f0a0 ; {no_reloc}
[Deopt Handler Code]
0x000000010c064e25: callq 0x000000010c064e2a
0x000000010c064e2a: subq $0x5,(%rsp)
0x000000010c064e2f: jmpq 0x000000010c038b00 ; {runtime_call}
0x000000010c064e34: hlt
0x000000010c064e35: hlt
0x000000010c064e36: hlt
0x000000010c064e37: hlt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment