Last active
August 29, 2015 13:57
-
-
Save carey/9444544 to your computer and use it in GitHub Desktop.
Windows Hotspot code for https://github.com/carey/hotspot-tests/blob/444cd0c64d030cbfa8b78fdc6a5b5f967e99e53e/hotspot-tests/src/nz/geek/carey/unsafe/abstractclasses/TestClass.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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