Created
June 24, 2013 09:24
-
-
Save daschl/5848839 to your computer and use it in GitHub Desktop.
ASM output
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
Java HotSpot(TM) 64-Bit Server VM warning: PrintAssembly is enabled; turning on DebugNonSafepoints to gain additional output | |
Loaded disassembler from hsdis-amd64.dylib | |
Decoding compiled method 0x0000000105146150: | |
Code: | |
[Disassembling for mach='i386(base-hsdis)'] | |
[Entry Point] | |
[Constants] | |
# {method} 'hashCode' '()I' in 'java/lang/String' | |
# [sp+0x30] (sp of caller) | |
0x00000001051462a0: inc esp | |
0x00000001051462a1: mov edx, [esi+0x8] | |
0x00000001051462a4: dec ecx | |
0x00000001051462a5: shl edx, 3 | |
0x00000001051462a8: dec ecx | |
0x00000001051462a9: cmp eax, edx | |
0x00000001051462ab: jnz 0x000000000511da60 ; {runtime_call} | |
0x00000001051462b1: nop | |
0x00000001051462b4: invalid 0x0f #size=0 | |
0x00000001051462b5: pop ds | |
0x00000001051462b6: test [eax], al | |
0x00000001051462b8: add [eax], al | |
0x00000001051462ba: add [eax], al | |
0x00000001051462bc: nop | |
[Verified Entry Point] | |
0x00000001051462c0: mov [esp-0x14000], eax | |
0x00000001051462c7: push ebp | |
0x00000001051462c8: dec eax | |
0x00000001051462c9: sub esp, 0x0000000000000020 | |
;*synchronization entry | |
; - java.lang.String::hashCode@-1 (line 1446) | |
0x00000001051462cc: dec esp | |
0x00000001051462cd: mov ebx, esi | |
0x00000001051462cf: mov eax, [esi+0x10] ;*getfield hash | |
; - java.lang.String::hashCode@1 (line 1446) | |
0x00000001051462d2: test eax, eax | |
0x00000001051462d4: jnz 0x00000000051463d1 ;*ifne | |
; - java.lang.String::hashCode@6 (line 1447) | |
0x00000001051462da: mov ebp, [esi+0xC] ;*getfield value | |
; - java.lang.String::hashCode@10 (line 1447) | |
0x00000001051462dd: inc ecx ; implicit exception: dispatches to 0x00000001051463f5 | |
0x00000001051462de: mov ebx, [esp+ebp*8+0xC] ;*arraylength | |
; - java.lang.String::hashCode@13 (line 1447) | |
0x00000001051462e2: inc ebp | |
0x00000001051462e3: xor edx, edx | |
0x00000001051462e5: test ebx, ebx | |
0x00000001051462e7: jle 0x00000000051463f1 ;*ifle | |
; - java.lang.String::hashCode@14 (line 1447) | |
0x00000001051462ed: test ebx, ebx | |
0x00000001051462ef: jbe 0x00000000051463dd | |
0x00000001051462f5: mov edx, ebx | |
0x00000001051462f7: dec edx | |
0x00000001051462f9: cmp edx, ebx | |
0x00000001051462fb: jnc 0x00000000051463dd | |
0x0000000105146301: dec ecx | |
0x0000000105146302: lea edi, [esp+ebp*8] | |
0x0000000105146305: xor esi, esi ;*imul | |
; - java.lang.String::hashCode@36 (line 1451) | |
0x0000000105146307: inc esi | |
0x0000000105146308: movzx ecx, [edi+edx*2+0x10] | |
0x000000010514630d: inc ecx | |
0x000000010514630e: add esi, ecx ;*iadd | |
; - java.lang.String::hashCode@40 (line 1451) | |
0x0000000105146310: inc ecx | |
0x0000000105146311: inc edx ;*iinc | |
; - java.lang.String::hashCode@42 (line 1450) | |
0x0000000105146313: inc esp | |
0x0000000105146314: mov eax, esi | |
0x0000000105146316: inc ecx | |
0x0000000105146317: shl eax, 5 | |
0x000000010514631a: inc ecx | |
0x000000010514631b: mov eax, eax | |
0x000000010514631d: sub eax, esi ;*imul | |
; - java.lang.String::hashCode@36 (line 1451) | |
0x000000010514631f: inc ecx | |
0x0000000105146320: cmp edx, 1 | |
0x0000000105146323: jge 0x0000000005146329 ;*if_icmpge | |
; - java.lang.String::hashCode@30 (line 1450) | |
0x0000000105146325: mov esi, eax | |
0x0000000105146327: jmp 0x0000000005146307 | |
0x0000000105146329: mov ecx, ebx | |
0x000000010514632b: add ecx, 0x00000000000000fd | |
0x000000010514632e: inc ecx | |
0x000000010514632f: mov ecx, 0x0000000080000000 | |
0x0000000105146334: cmp edx, ecx | |
0x0000000105146336: inc ecx | |
0x0000000105146337: cmovl ecx, ecx | |
0x000000010514633a: inc esp | |
0x000000010514633b: cmp edx, ecx | |
0x000000010514633d: jl 0x0000000005146375 | |
0x000000010514633f: inc ecx | |
0x0000000105146340: mov eax, eax | |
0x0000000105146342: inc ecx | |
0x0000000105146343: mov edx, edx | |
0x0000000105146345: jmp 0x00000000051463c7 | |
0x000000010514634a: inc esp | |
0x000000010514634b: mov edx, eax | |
0x000000010514634d: inc ecx | |
0x000000010514634e: shl edx, 5 ;*imul | |
; - java.lang.String::hashCode@36 (line 1451) | |
0x0000000105146351: mov esi, eax | |
0x0000000105146353: inc ecx | |
0x0000000105146354: mov eax, edx ;*bipush | |
; - java.lang.String::hashCode@33 (line 1451) | |
0x0000000105146356: inc esp | |
0x0000000105146357: movzx eax, [edi+edx*2+0x10] | |
0x000000010514635c: sub eax, esi | |
0x000000010514635e: inc ecx | |
0x000000010514635f: add eax, eax ;*iadd | |
; - java.lang.String::hashCode@40 (line 1451) | |
0x0000000105146361: inc edx ;*iinc | |
; - java.lang.String::hashCode@42 (line 1450) | |
0x0000000105146363: cmp edx, ebx | |
0x0000000105146365: jl 0x000000000514634a ;*if_icmpge | |
; - java.lang.String::hashCode@30 (line 1450) | |
0x0000000105146367: jmp 0x00000000051463cd | |
0x0000000105146369: invalid 0x0f #size=0 | |
0x000000010514636a: pop ds | |
0x000000010514636b: add [eax], 0x00 | |
0x000000010514636e: add [eax], al | |
0x0000000105146370: sub eax, esi | |
0x0000000105146372: inc esp | |
0x0000000105146373: mov edx, edx ;*imul | |
; - java.lang.String::hashCode@36 (line 1451) | |
0x0000000105146375: inc esi | |
0x0000000105146376: movzx ecx, [edi+edx*2+0x10] | |
0x000000010514637b: inc ecx | |
0x000000010514637c: add eax, ecx ;*iadd | |
; - java.lang.String::hashCode@40 (line 1451) | |
0x000000010514637e: inc ecx | |
0x000000010514637f: mov edx, edx | |
0x0000000105146381: add edx, 4 ;*iinc | |
; - java.lang.String::hashCode@42 (line 1450) | |
0x0000000105146384: inc esp | |
0x0000000105146385: mov ecx, eax | |
0x0000000105146387: inc ecx | |
0x0000000105146388: shl ecx, 5 | |
0x000000010514638b: inc esp | |
0x000000010514638c: sub ecx, eax | |
0x000000010514638e: dec ebp | |
0x000000010514638f: arpl dx, dx | |
0x0000000105146391: inc esi | |
0x0000000105146392: movzx eax, [edi+edx*2+0x12] | |
0x0000000105146397: inc edx | |
0x0000000105146398: movzx ebp, [edi+edx*2+0x16] | |
0x000000010514639d: inc esi | |
0x000000010514639e: movzx edx, [edi+edx*2+0x14] | |
0x00000001051463a3: inc ebp | |
0x00000001051463a4: add ecx, eax | |
0x00000001051463a6: inc ebp | |
0x00000001051463a7: mov eax, ecx | |
0x00000001051463a9: inc ecx | |
0x00000001051463aa: shl eax, 5 | |
0x00000001051463ad: inc ebp | |
0x00000001051463ae: sub eax, ecx | |
0x00000001051463b0: inc ebp | |
0x00000001051463b1: add eax, edx | |
0x00000001051463b3: inc ecx | |
0x00000001051463b4: mov esi, eax | |
0x00000001051463b6: shl esi, 5 | |
0x00000001051463b9: inc ecx | |
0x00000001051463ba: sub esi, eax | |
0x00000001051463bc: add esi, ebp ;*iadd | |
; - java.lang.String::hashCode@40 (line 1451) | |
0x00000001051463be: mov eax, esi | |
0x00000001051463c0: shl eax, 5 ;*imul | |
; - java.lang.String::hashCode@36 (line 1451) | |
0x00000001051463c3: cmp edx, ecx | |
0x00000001051463c5: jl 0x0000000005146370 ;*if_icmpge | |
; - java.lang.String::hashCode@30 (line 1450) | |
0x00000001051463c7: cmp edx, ebx | |
0x00000001051463c9: jl 0x0000000005146356 | |
0x00000001051463cb: mov eax, esi | |
0x00000001051463cd: inc ecx | |
0x00000001051463ce: mov [ebx+0x10], eax ;*synchronization entry | |
; - java.lang.String::hashCode@-1 (line 1446) | |
0x00000001051463d1: dec eax | |
0x00000001051463d2: add esp, 0x0000000000000020 | |
0x00000001051463d5: pop ebp | |
0x00000001051463d6: test [-0xF63DC], eax ; {poll_return} | |
0x00000001051463dc: ret | |
0x00000001051463dd: mov esi, 0x00000000ffffff86 | |
0x00000001051463e2: dec esp | |
0x00000001051463e3: mov [esp], ebx | |
0x00000001051463e6: nop | |
0x00000001051463e7: call 0x000000000511f020 ; OopMap{rbp=NarrowOop [0]=Oop off=332} | |
;*bipush | |
; - java.lang.String::hashCode@33 (line 1451) | |
; {runtime_call} | |
0x00000001051463ec: call 0x0000000004819d6a ;*bipush | |
; - java.lang.String::hashCode@33 (line 1451) | |
; {runtime_call} | |
0x00000001051463f1: xor eax, eax | |
0x00000001051463f3: jmp 0x00000000051463d1 | |
0x00000001051463f5: mov esi, 0x00000000fffffff6 | |
0x00000001051463fa: nop | |
0x00000001051463fb: call 0x000000000511f020 ; OopMap{off=352} | |
;*arraylength | |
; - java.lang.String::hashCode@13 (line 1447) | |
; {runtime_call} | |
0x0000000105146400: call 0x0000000004819d6a ;*arraylength | |
; - java.lang.String::hashCode@13 (line 1447) | |
; {runtime_call} | |
0x0000000105146405: hlt | |
0x0000000105146406: hlt | |
0x0000000105146407: hlt | |
0x0000000105146408: hlt | |
0x0000000105146409: hlt | |
0x000000010514640a: hlt | |
0x000000010514640b: hlt | |
0x000000010514640c: hlt | |
0x000000010514640d: hlt | |
0x000000010514640e: hlt | |
0x000000010514640f: hlt | |
0x0000000105146410: hlt | |
0x0000000105146411: hlt | |
0x0000000105146412: hlt | |
0x0000000105146413: hlt | |
0x0000000105146414: hlt | |
0x0000000105146415: hlt | |
0x0000000105146416: hlt | |
0x0000000105146417: hlt | |
0x0000000105146418: hlt | |
0x0000000105146419: hlt | |
0x000000010514641a: hlt | |
0x000000010514641b: hlt | |
0x000000010514641c: hlt | |
0x000000010514641d: hlt | |
0x000000010514641e: hlt | |
0x000000010514641f: hlt | |
[Exception Handler] | |
[Stub Code] | |
0x0000000105146420: jmp 0x0000000005144ea0 ; {no_reloc} | |
[Deopt Handler Code] | |
0x0000000105146425: call 0x000000000514642a | |
0x000000010514642a: dec eax | |
0x000000010514642b: sub [esp], 5 | |
0x000000010514642f: jmp 0x000000000511ec00 ; {runtime_call} | |
0x0000000105146434: hlt | |
0x0000000105146435: hlt | |
0x0000000105146436: hlt | |
0x0000000105146437: hlt |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment