Skip to content

Instantly share code, notes, and snippets.

@carey
Last active August 29, 2015 13:57
Show Gist options
  • Save carey/9444544 to your computer and use it in GitHub Desktop.
Save carey/9444544 to your computer and use it in GitHub Desktop.
Compiled (c1) 34 6 nmethod nz.geek.carey.unsafe.abstractclasses.TestClass::set (7 bytes)
total in heap [0x022ae748,0x022ae994] = 588
relocation [0x022ae81c,0x022ae84c] = 48
main code [0x022ae850,0x022ae8d0] = 128
stub code [0x022ae8d0,0x022ae8fc] = 44
oops [0x022ae8fc,0x022ae904] = 8
scopes data [0x022ae904,0x022ae930] = 44
scopes pcs [0x022ae930,0x022ae990] = 96
dependencies [0x022ae990,0x022ae994] = 4
Loaded disassembler from hsdis-i386.dll
Decoding compiled method 0x022ae748:
Code:
[Disassembling for mach='i386']
[Entry Point]
[Constants]
# {method} 'set' '(Ljava/lang/Object;Ljava/lang/Object;)Z' in 'nz/geek/carey/unsafe/abstractclasses/TestClass'
# this: ecx = 'nz/geek/carey/unsafe/abstractclasses/TestClass'
# parm0: edx = 'java/lang/Object'
# parm1: [sp+0x30] = 'java/lang/Object' (sp of caller)
0x022ae850: nop
0x022ae851: nop
0x022ae852: nop
0x022ae853: nop
0x022ae854: nop
0x022ae855: nop
0x022ae856: nop
0x022ae857: cmp 0x4(%ecx),%eax
0x022ae85a: jne 0x0226cd40 ; {runtime_call}
[Verified Entry Point]
0x022ae860: mov %eax,0xffffd000(%esp)
0x022ae867: push %ebp
0x022ae868: sub $0x28,%esp
0x022ae86b: mov %edx,%esi ;*aload_0
; - nz.geek.carey.unsafe.abstractclasses.TestClass::set@0 (line 5)
0x022ae86d: mov 0x30(%esp),%edi
0x022ae871: mov $0x34269cc0,%edx ; {oop('nz/geek/carey/unsafe/abstractclasses/BaseClass')}
0x022ae876: mov 0x150(%edx),%ebx ;*getstatic updater
; - nz.geek.carey.unsafe.abstractclasses.BaseClass::updateState@0 (line 21)
; - nz.geek.carey.unsafe.abstractclasses.TestClass::set@3 (line 5)
0x022ae87c: mov %ecx,%edx
0x022ae87e: mov %esi,(%esp)
0x022ae881: mov %edi,0x4(%esp)
0x022ae885: mov %ebx,%ecx ;*invokevirtual compareAndSet
; - nz.geek.carey.unsafe.abstractclasses.BaseClass::updateState@6 (line 21)
; - nz.geek.carey.unsafe.abstractclasses.TestClass::set@3 (line 5)
0x022ae887: nop
0x022ae888: nop
0x022ae889: nop
0x022ae88a: mov $0xffffffff,%eax ; {oop(NULL)}
0x022ae88f: call 0x0226d140 ; OopMap{off=68}
;*invokevirtual compareAndSet
; - nz.geek.carey.unsafe.abstractclasses.BaseClass::updateState@6 (line 21)
; - nz.geek.carey.unsafe.abstractclasses.TestClass::set@3 (line 5)
; {virtual_call}
0x022ae894: add $0x28,%esp
0x022ae897: pop %ebp
0x022ae898: test %eax,0x230100 ; {poll_return}
0x022ae89e: ret
0x022ae89f: nop
0x022ae8a0: nop
0x022ae8a1: mov %fs:0x0,%esi
0x022ae8a9: mov 0xfffffff4(%esi),%esi
0x022ae8ac: mov 0x184(%esi),%eax
0x022ae8b2: movl $0x0,0x184(%esi)
0x022ae8bc: movl $0x0,0x188(%esi)
0x022ae8c6: add $0x28,%esp
0x022ae8c9: pop %ebp
0x022ae8ca: jmp 0x0227b5c0 ; {runtime_call}
0x022ae8cf: hlt
[Stub Code]
0x022ae8d0: nop ; {no_reloc}
0x022ae8d1: nop
0x022ae8d2: mov $0x0,%ebx ; {static_stub}
0x022ae8d7: jmp 0x022ae8d7 ; {runtime_call}
[Exception Handler]
0x022ae8dc: call 0x022ab380 ; {runtime_call}
0x022ae8e1: push $0x6db24ca4 ; {external_word}
0x022ae8e6: call 0x022ae8eb
0x022ae8eb: pusha
0x022ae8ec: call 0x6da2aea0 ; {runtime_call}
0x022ae8f1: hlt
[Deopt Handler Code]
0x022ae8f2: push $0x22ae8f2 ; {section_word}
0x022ae8f7: jmp 0x0226d970 ; {runtime_call}
OopMapSet contains 1 OopMaps
#0
OopMap{off=68}
Compiled method (c1) 38 11 nz.geek.carey.unsafe.abstractclasses.TestClass::set (7 bytes)
total in heap [0x02ae2c88,0x02ae2ef4] = 620
relocation [0x02ae2d58,0x02ae2d78] = 32
main code [0x02ae2d80,0x02ae2e10] = 144
stub code [0x02ae2e10,0x02ae2e30] = 32
oops [0x02ae2e30,0x02ae2e40] = 16
scopes data [0x02ae2e40,0x02ae2e84] = 68
scopes pcs [0x02ae2e84,0x02ae2ee4] = 96
dependencies [0x02ae2ee4,0x02ae2ee8] = 4
nul chk table [0x02ae2ee8,0x02ae2ef4] = 12
Loaded disassembler from hsdis-i386.dll
Decoding compiled method 0x02ae2c88:
Code:
[Disassembling for mach='i386']
[Entry Point]
[Constants]
# {method} 'set' '(Ljava/lang/Object;Ljava/lang/Object;)Z' in 'nz/geek/carey/unsafe/abstractclasses/TestClass'
# this: ecx = 'nz/geek/carey/unsafe/abstractclasses/TestClass'
# parm0: edx = 'java/lang/Object'
# parm1: [sp+0x60] = 'java/lang/Object' (sp of caller)
0x02ae2d80: nop
0x02ae2d81: nop
0x02ae2d82: nop
0x02ae2d83: nop
0x02ae2d84: nop
0x02ae2d85: nop
0x02ae2d86: nop
0x02ae2d87: cmp 0x4(%ecx),%eax
0x02ae2d8a: jne 0x02a7d040 ; {runtime_call}
[Verified Entry Point]
0x02ae2d90: mov %eax,0xffffc000(%esp)
0x02ae2d97: push %ebp
0x02ae2d98: sub $0x58,%esp ;*aload_0
; - nz.geek.carey.unsafe.abstractclasses.TestClass::set@0 (line 5)
0x02ae2d9b: mov 0x60(%esp),%esi
0x02ae2d9f: mov $0x24178438,%eax ; {oop(a 'nz/geek/carey/unsafe/abstractclasses/UnsafeUpdater')}
0x02ae2da4: mov 0x8(%eax),%edi ; implicit exception: dispatches to 0x02ae2dd8
0x02ae2da7: mov 0xc(%eax),%ebx ;*getfield _refoffset
; - nz.geek.carey.unsafe.abstractclasses.UnsafeUpdater::compareAndSet@5 (line 18)
; - nz.geek.carey.unsafe.abstractclasses.BaseClass::updateState@6 (line 21)
; - nz.geek.carey.unsafe.abstractclasses.TestClass::set@3 (line 5)
0x02ae2daa: mov %edx,%eax
0x02ae2dac: lea (%ecx,%edi,1),%edi
0x02ae2daf: lock cmpxchg %esi,(%edi)
0x02ae2db3: mov $0x1,%eax
0x02ae2db8: je 0x02ae2dc3
0x02ae2dbe: mov $0x0,%eax
0x02ae2dc3: shr $0x9,%edi
0x02ae2dc6: movb $0x0,0x49af680(%edi) ;*invokevirtual compareAndSwapObject
; - nz.geek.carey.unsafe.abstractclasses.UnsafeUpdater::compareAndSet@10 (line 18)
; - nz.geek.carey.unsafe.abstractclasses.BaseClass::updateState@6 (line 21)
; - nz.geek.carey.unsafe.abstractclasses.TestClass::set@3 (line 5)
0x02ae2dcd: add $0x58,%esp
0x02ae2dd0: pop %ebp
0x02ae2dd1: test %eax,0xf00100 ; {poll_return}
0x02ae2dd7: ret
0x02ae2dd8: call 0x02add8d0 ; OopMap{ecx=Oop edx=Oop esi=Oop [96]=Oop eax=Oop off=93}
;*getfield _refoffset
; - nz.geek.carey.unsafe.abstractclasses.UnsafeUpdater::compareAndSet@5 (line 18)
; - nz.geek.carey.unsafe.abstractclasses.BaseClass::updateState@6 (line 21)
; - nz.geek.carey.unsafe.abstractclasses.TestClass::set@3 (line 5)
; {runtime_call}
0x02ae2ddd: nop
0x02ae2dde: nop
0x02ae2ddf: mov %fs:0x0,%esi
0x02ae2de7: mov 0xfffffff4(%esi),%esi
0x02ae2dea: mov 0x190(%esi),%eax
0x02ae2df0: movl $0x0,0x190(%esi)
0x02ae2dfa: movl $0x0,0x194(%esi)
0x02ae2e04: add $0x58,%esp
0x02ae2e07: pop %ebp
0x02ae2e08: jmp 0x02add440 ; {runtime_call}
0x02ae2e0d: hlt
0x02ae2e0e: hlt
0x02ae2e0f: hlt
[Exception Handler]
[Stub Code]
0x02ae2e10: call 0x02aded80 ; {no_reloc}
0x02ae2e15: push $0x6954336c ; {external_word}
0x02ae2e1a: call 0x02ae2e1f
0x02ae2e1f: pusha
0x02ae2e20: call 0x69425220 ; {runtime_call}
0x02ae2e25: hlt
[Deopt Handler Code]
0x02ae2e26: push $0x2ae2e26 ; {section_word}
0x02ae2e2b: jmp 0x02a7dc70 ; {runtime_call}
OopMapSet contains 1 OopMaps
#0
OopMap{ecx=Oop edx=Oop esi=Oop [96]=Oop eax=Oop off=93}
Compiled (c2) 162 2 nmethod nz.geek.carey.unsafe.abstractclasses.BaseClass::updateState (10 bytes)
total in heap [0x020d76c8,0x020d78a0] = 472
relocation [0x020d779c,0x020d77b0] = 20
main code [0x020d77c0,0x020d7820] = 96
stub code [0x020d7820,0x020d7830] = 16
oops [0x020d7830,0x020d7838] = 8
scopes data [0x020d7838,0x020d784c] = 20
scopes pcs [0x020d784c,0x020d789c] = 80
dependencies [0x020d789c,0x020d78a0] = 4
Loaded disassembler from hsdis-i386.dll
Decoding compiled method 0x020d76c8:
Code:
[Disassembling for mach='i386']
[Entry Point]
[Constants]
# {method} 'updateState' '(Ljava/lang/Object;Ljava/lang/Object;)Z' in 'nz/geek/carey/unsafe/abstractclasses/BaseClass'
# this: ecx = 'nz/geek/carey/unsafe/abstractclasses/BaseClass'
# parm0: edx = 'java/lang/Object'
# parm1: [sp+0x10] = 'java/lang/Object' (sp of caller)
0x020d77c0: cmp 0x4(%ecx),%eax
0x020d77c3: jne 0x020bce40 ; {runtime_call}
0x020d77c9: xchg %ax,%ax
[Verified Entry Point]
0x020d77cc: push %ebp
0x020d77cd: sub $0x8,%esp ;*invokevirtual compareAndSwapObject
; - nz.geek.carey.unsafe.abstractclasses.UnsafeUpdater::compareAndSet@10 (line 18)
; - nz.geek.carey.unsafe.abstractclasses.BaseClass::updateState@6 (line 21)
0x020d77d3: mov $0x150,%ebp
0x020d77d8: mov 0x530cd50(%ebp),%esi ;*getstatic updater
; - nz.geek.carey.unsafe.abstractclasses.BaseClass::updateState@0 (line 21)
; {oop('nz/geek/carey/unsafe/abstractclasses/BaseClass')}
0x020d77de: mov 0x8(%esi),%ebp
0x020d77e1: mov 0xc(%esi),%edi
0x020d77e4: mov %ecx,%ebx
0x020d77e6: add %ebp,%ebx
0x020d77e8: mov %edx,%eax
0x020d77ea: mov 0x10(%esp),%ecx
0x020d77ee: lock cmpxchg %ecx,(%ebx)
0x020d77f2: mov $0x0,%edi
0x020d77f7: jne 0x020d77fe
0x020d77f9: mov $0x1,%edi
0x020d77fe: mov %ebx,%ecx
0x020d7800: shr $0x9,%ecx
0x020d7803: movb $0x0,0x49127580(%ecx) ;*invokevirtual compareAndSwapObject
; - nz.geek.carey.unsafe.abstractclasses.UnsafeUpdater::compareAndSet@10 (line 18)
; - nz.geek.carey.unsafe.abstractclasses.BaseClass::updateState@6 (line 21)
0x020d780a: mov %edi,%eax
0x020d780c: add $0x8,%esp
0x020d780f: pop %ebp
0x020d7810: test %eax,0x200000 ; {poll_return}
0x020d7816: ret
0x020d7817: hlt
0x020d7818: hlt
0x020d7819: hlt
0x020d781a: hlt
0x020d781b: hlt
0x020d781c: hlt
0x020d781d: hlt
0x020d781e: hlt
0x020d781f: hlt
[Exception Handler]
[Stub Code]
0x020d7820: jmp 0x020d7600 ; {no_reloc}
[Deopt Handler Code]
0x020d7825: push $0x20d7825 ; {section_word}
0x020d782a: jmp 0x020bda80 ; {runtime_call}
0x020d782f: .byte 0x0
OopMapSet contains 0 OopMaps
Compiled method (c2) 64 2 nz.geek.carey.unsafe.abstractclasses.TestClass::set (7 bytes)
total in heap [0x02d0e348,0x02d0e504] = 444
relocation [0x02d0e418,0x02d0e42c] = 20
main code [0x02d0e440,0x02d0e4a0] = 96
stub code [0x02d0e4a0,0x02d0e4b0] = 16
oops [0x02d0e4b0,0x02d0e4bc] = 12
scopes data [0x02d0e4bc,0x02d0e4d0] = 20
scopes pcs [0x02d0e4d0,0x02d0e500] = 48
dependencies [0x02d0e500,0x02d0e504] = 4
Loaded disassembler from hsdis-i386.dll
Decoding compiled method 0x02d0e348:
Code:
[Disassembling for mach='i386']
[Entry Point]
[Constants]
# {method} 'set' '(Ljava/lang/Object;Ljava/lang/Object;)Z' in 'nz/geek/carey/unsafe/abstractclasses/TestClass'
# this: ecx = 'nz/geek/carey/unsafe/abstractclasses/TestClass'
# parm0: edx = 'java/lang/Object'
# parm1: [sp+0x10] = 'java/lang/Object' (sp of caller)
0x02d0e440: cmp 0x4(%ecx),%eax
0x02d0e443: jne 0x02ced000 ; {runtime_call}
0x02d0e449: xchg %ax,%ax
[Verified Entry Point]
0x02d0e44c: sub $0xc,%esp
0x02d0e452: mov %ebp,0x8(%esp)
0x02d0e456: mov $0x3485af68,%esi ; {oop(a 'nz/geek/carey/unsafe/abstractclasses/UnsafeUpdater')}
0x02d0e45b: mov 0x8(%esi),%ebp
0x02d0e45e: mov 0xc(%esi),%edi
0x02d0e461: mov %ebp,%ebx
0x02d0e463: mov %ecx,%esi
0x02d0e465: add %ebx,%esi
0x02d0e467: mov %edx,%eax
0x02d0e469: mov 0x10(%esp),%ecx
0x02d0e46d: lock cmpxchg %ecx,(%esi)
0x02d0e471: mov $0x0,%ecx
0x02d0e476: jne 0x02d0e47d
0x02d0e478: mov $0x1,%ecx
0x02d0e47d: mov %esi,%ebx
0x02d0e47f: shr $0x9,%ebx
0x02d0e482: movb $0x0,0x49d51400(%ebx) ;*invokevirtual compareAndSwapObject
; - nz.geek.carey.unsafe.abstractclasses.UnsafeUpdater::compareAndSet@10 (line 18)
; - nz.geek.carey.unsafe.abstractclasses.BaseClass::updateState@6 (line 21)
; - nz.geek.carey.unsafe.abstractclasses.TestClass::set@3 (line 5)
0x02d0e489: mov %ecx,%eax
0x02d0e48b: add $0x8,%esp
0x02d0e48e: pop %ebp
0x02d0e48f: test %eax,0x1170000 ; {poll_return}
0x02d0e495: ret
0x02d0e496: hlt
0x02d0e497: hlt
0x02d0e498: hlt
0x02d0e499: hlt
0x02d0e49a: hlt
0x02d0e49b: hlt
0x02d0e49c: hlt
0x02d0e49d: hlt
0x02d0e49e: hlt
0x02d0e49f: hlt
[Exception Handler]
[Stub Code]
0x02d0e4a0: jmp 0x02d08040 ; {no_reloc}
[Deopt Handler Code]
0x02d0e4a5: push $0x2d0e4a5 ; {section_word}
0x02d0e4aa: jmp 0x02cedf00 ; {runtime_call}
0x02d0e4af: hlt
OopMapSet contains 0 OopMaps
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment