Skip to content

Instantly share code, notes, and snippets.

@headius
Created March 30, 2015 20:18
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save headius/836ed0d73647fce6da15 to your computer and use it in GitHub Desktop.
Decoding compiled method 0x0000000103481a50:
Code:
[Entry Point]
[Verified Entry Point]
[Constants]
# {method} {0x000000011a78ba00} 'invokeStatic_L6_L' '(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' in 'java/lang/invoke/LambdaForm$DMH'
# parm0: rsi:rsi = 'java/lang/Object'
# parm1: rdx:rdx = 'java/lang/Object'
# parm2: rcx:rcx = 'java/lang/Object'
# parm3: r8:r8 = 'java/lang/Object'
# parm4: r9:r9 = 'java/lang/Object'
# parm5: rdi:rdi = 'java/lang/Object'
# parm6: [sp+0x50] = 'java/lang/Object' (sp of caller)
0x0000000103481ba0: mov [esp-0x14000], eax
0x0000000103481ba7: push ebp
0x0000000103481ba8: dec eax
0x0000000103481ba9: sub esp, 0x0000000000000040
;*synchronization entry
; - java.lang.invoke.LambdaForm$DMH/876563773::invokeStatic_L6_L@-1
0x0000000103481bac: inc esp ; implicit exception: dispatches to 0x0000000103481c2a
0x0000000103481bad: mov ebx, [esi+0x8]
0x0000000103481bb0: inc ecx ; {metadata('java/lang/invoke/DirectMethodHandle')}
0x0000000103481bb1: cmp ebx, 0x00000000f80016bb
0x0000000103481bb7: jnz 0x0000000003481bf0 ;*checkcast
; - java.lang.invoke.DirectMethodHandle::internalMemberName@1 (line 271)
; - java.lang.invoke.LambdaForm$DMH/876563773::invokeStatic_L6_L@1
0x0000000103481bb9: inc esp
0x0000000103481bba: mov ebx, [esi+0x18]
0x0000000103481bbd: dec ebp
0x0000000103481bbe: mov edx, ebx
0x0000000103481bc0: dec ecx
0x0000000103481bc1: shl edx, 3 ;*getfield member
; - java.lang.invoke.DirectMethodHandle::internalMemberName@4 (line 271)
; - java.lang.invoke.LambdaForm$DMH/876563773::invokeStatic_L6_L@1
0x0000000103481bc4: dec eax
0x0000000103481bc5: mov esi, edx
0x0000000103481bc7: dec eax
0x0000000103481bc8: mov edx, ecx
0x0000000103481bca: dec ecx
0x0000000103481bcb: mov ecx, eax
0x0000000103481bcd: dec ebp
0x0000000103481bce: mov eax, ecx
0x0000000103481bd0: dec esp
0x0000000103481bd1: mov ecx, edi
0x0000000103481bd3: dec eax
0x0000000103481bd4: mov edi, [esp+0x50]
0x0000000103481bd8: dec esp
0x0000000103481bd9: mov [esp], edx
0x0000000103481bdc: nop
0x0000000103481bdf: call 0x00000000033b1420 ; OopMap{off=68}
;*invokestatic linkToStatic
; - java.lang.invoke.LambdaForm$DMH/876563773::invokeStatic_L6_L@20
; {static_call}
0x0000000103481be4: dec eax
0x0000000103481be5: add esp, 0x0000000000000040
0x0000000103481be8: pop ebp
0x0000000103481be9: test [-0x241EBEF], eax ; {poll_return}
0x0000000103481bef: ret
0x0000000103481bf0: dec eax
0x0000000103481bf1: mov ebp, edx
0x0000000103481bf3: dec eax
0x0000000103481bf4: mov [esp+0x8], ecx
0x0000000103481bf8: dec esp
0x0000000103481bf9: mov [esp+0x10], eax
0x0000000103481bfd: dec esp
0x0000000103481bfe: mov [esp+0x18], ecx
0x0000000103481c02: dec eax
0x0000000103481c03: mov [esp+0x20], edi
0x0000000103481c07: dec eax
0x0000000103481c08: mov [esp+0x28], esi
0x0000000103481c0c: mov esi, 0x00000000ffffff76
0x0000000103481c11: nop
0x0000000103481c13: call 0x00000000033701a0 ; OopMap{rbp=Oop [80]=Oop [8]=Oop [16]=Oop [24]=Oop [32]=Oop [40]=Oop off=120}
;*checkcast
; - java.lang.invoke.DirectMethodHandle::internalMemberName@1 (line 271)
; - java.lang.invoke.LambdaForm$DMH/876563773::invokeStatic_L6_L@1
; {runtime_call}
0x0000000103481c18: call 0x000000000266a8a4 ;*invokestatic linkToStatic
; - java.lang.invoke.LambdaForm$DMH/876563773::invokeStatic_L6_L@20
; {runtime_call}
0x0000000103481c1d: dec eax
0x0000000103481c1e: mov esi, eax
0x0000000103481c20: dec eax
0x0000000103481c21: add esp, 0x0000000000000040
0x0000000103481c24: pop ebp
0x0000000103481c25: jmp 0x000000000346ce60 ; {runtime_call}
0x0000000103481c2a: mov esi, 0x00000000fffffff4
0x0000000103481c2f: dec eax
0x0000000103481c30: mov ebp, edx
0x0000000103481c32: dec eax
0x0000000103481c33: mov [esp+0x8], ecx
0x0000000103481c37: dec esp
0x0000000103481c38: mov [esp+0x10], eax
0x0000000103481c3c: dec esp
0x0000000103481c3d: mov [esp+0x18], ecx
0x0000000103481c41: dec eax
0x0000000103481c42: mov [esp+0x20], edi
0x0000000103481c46: nop
0x0000000103481c47: call 0x00000000033701a0 ; OopMap{rbp=Oop [80]=Oop [8]=Oop [16]=Oop [24]=Oop [32]=Oop off=172}
;*checkcast
; - java.lang.invoke.DirectMethodHandle::internalMemberName@1 (line 271)
; - java.lang.invoke.LambdaForm$DMH/876563773::invokeStatic_L6_L@1
; {runtime_call}
0x0000000103481c4c: call 0x000000000266a8a4 ;*checkcast
; - java.lang.invoke.DirectMethodHandle::internalMemberName@1 (line 271)
; - java.lang.invoke.LambdaForm$DMH/876563773::invokeStatic_L6_L@1
; {runtime_call}
0x0000000103481c51: hlt
0x0000000103481c52: hlt
0x0000000103481c53: hlt
0x0000000103481c54: hlt
0x0000000103481c55: hlt
0x0000000103481c56: hlt
0x0000000103481c57: hlt
0x0000000103481c58: hlt
0x0000000103481c59: hlt
0x0000000103481c5a: hlt
0x0000000103481c5b: hlt
0x0000000103481c5c: hlt
0x0000000103481c5d: hlt
0x0000000103481c5e: hlt
0x0000000103481c5f: hlt
[Stub Code]
0x0000000103481c60: dec eax ; {no_reloc}
0x0000000103481c61: mov ebx, 0x00000000
0x0000000103481c66: add [eax], al
0x0000000103481c68: add [eax], al
0x0000000103481c6a: jmp 0x0000000003481c6a ; {runtime_call}
[Exception Handler]
0x0000000103481c6f: jmp 0x00000000033d73a0 ; {runtime_call}
[Deopt Handler Code]
0x0000000103481c74: call 0x0000000003481c79
0x0000000103481c79: dec eax
0x0000000103481c7a: sub [esp], 5
0x0000000103481c7e: jmp 0x00000000033b23c0 ; {runtime_call}
0x0000000103481c83: hlt
0x0000000103481c84: hlt
0x0000000103481c85: hlt
0x0000000103481c86: hlt
0x0000000103481c87: hlt
0x000000010376fc47: call 0x00000000033b1020 ; OopMap{off=140}
;*invokevirtual invokeBasic
; - java.lang.invoke.LambdaForm$MH/1558712965::invokeExact_MT@21
; - org.jruby.internal.runtime.methods.CompiledIRMethod::call@59 (line 117)
; {optimized virtual_call}
Decoding compiled method 0x00000001036ac9d0:
Code:
[Entry Point]
[Verified Entry Point]
[Constants]
# {method} {0x000000011a6f5528} 'RUBY$method$full_direct$6' '(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/parser/StaticScope;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;Lorg/jruby/RubyModule;Ljava/lang/String;)Lorg/jruby/runtime/builtin/IRubyObject;' in 'bench'
# parm0: rsi:rsi = 'org/jruby/runtime/ThreadContext'
# parm1: rdx:rdx = 'org/jruby/parser/StaticScope'
# parm2: rcx:rcx = 'org/jruby/runtime/builtin/IRubyObject'
# parm3: r8:r8 = 'org/jruby/runtime/Block'
# parm4: r9:r9 = 'org/jruby/RubyModule'
# parm5: rdi:rdi = 'java/lang/String'
# [sp+0x40] (sp of caller)
0x00000001036acb20: mov [esp-0x14000], eax
0x00000001036acb27: push ebp
0x00000001036acb28: dec eax
0x00000001036acb29: sub esp, 0x0000000000000030
0x00000001036acb2c: dec eax
0x00000001036acb2d: mov eax, 0x000000001a6f70a8
0x00000001036acb32: add [eax], eax
0x00000001036acb34: add [eax], al
0x00000001036acb36: mov ebx, [eax+0x8]
0x00000001036acb39: add ebx, 8
0x00000001036acb3c: mov [eax+0x8], ebx
0x00000001036acb3f: dec eax ; {metadata({method} {0x000000011a6f5528} 'RUBY$method$full_direct$6' '(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/parser/StaticScope;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;Lorg/jruby/RubyModule;Ljava/lang/String;)Lorg/jruby/runtime/builtin/IRubyObject;' in 'bench')}
0x00000001036acb40: mov eax, 0x000000001a6f5528
0x00000001036acb45: add [eax], eax
0x00000001036acb47: add [eax], al
0x00000001036acb49: and ebx, 0x0000000000003ff8
0x00000001036acb4f: cmp ebx, 0x00
0x00000001036acb52: jz 0x00000000036acb67 ;*nop
; - bench::RUBY$method$full_direct$6@0
0x00000001036acb58: dec eax
0x00000001036acb59: mov eax, ecx
0x00000001036acb5b: dec eax
0x00000001036acb5c: add esp, 0x0000000000000030
0x00000001036acb5f: pop ebp
0x00000001036acb60: test [-0x2649A66], eax ; {poll_return}
0x00000001036acb66: ret
0x00000001036acb67: dec eax
0x00000001036acb68: mov [esp+0x8], eax
0x00000001036acb6c: dec eax
0x00000001036acb6d: mov [esp], 0x00000000ffffffff
0x00000001036acb74: call 0x0000000003468e60 ; OopMap{rsi=Oop rdx=Oop rcx=Oop r8=Oop r9=Oop rdi=Oop off=89}
;*synchronization entry
; - bench::RUBY$method$full_direct$6@-1
; {runtime_call}
0x00000001036acb79: jmp 0x00000000036acb58
0x00000001036acb7b: nop
0x00000001036acb7c: nop
0x00000001036acb7d: dec ecx
0x00000001036acb7e: mov eax, [edi+0x2A8]
0x00000001036acb84: dec ecx
0x00000001036acb85: mov edx, 0x00000000
0x00000001036acb8a: add [eax], al
0x00000001036acb8c: add [eax], al
0x00000001036acb8e: dec ebp
0x00000001036acb8f: mov [edi+0x2A8], edx
0x00000001036acb95: dec ecx
0x00000001036acb96: mov edx, 0x00000000
0x00000001036acb9b: add [eax], al
0x00000001036acb9d: add [eax], al
0x00000001036acb9f: dec ebp
0x00000001036acba0: mov [edi+0x2B0], edx
0x00000001036acba6: dec eax
0x00000001036acba7: add esp, 0x0000000000000030
0x00000001036acbaa: pop ebp
0x00000001036acbab: jmp 0x00000000033d70e0 ; {runtime_call}
0x00000001036acbb0: hlt
0x00000001036acbb1: hlt
0x00000001036acbb2: hlt
0x00000001036acbb3: hlt
0x00000001036acbb4: hlt
0x00000001036acbb5: hlt
0x00000001036acbb6: hlt
0x00000001036acbb7: hlt
0x00000001036acbb8: hlt
0x00000001036acbb9: hlt
0x00000001036acbba: hlt
0x00000001036acbbb: hlt
0x00000001036acbbc: hlt
0x00000001036acbbd: hlt
0x00000001036acbbe: hlt
0x00000001036acbbf: hlt
[Exception Handler]
[Stub Code]
0x00000001036acbc0: call 0x0000000003466520 ; {no_reloc}
0x00000001036acbc5: dec eax
0x00000001036acbc6: mov [esp-0x28], esp
0x00000001036acbca: dec eax
0x00000001036acbcb: sub esp, 0x0000000000000080
0x00000001036acbd1: dec eax
0x00000001036acbd2: mov [esp+0x78], eax
0x00000001036acbd6: dec eax
0x00000001036acbd7: mov [esp+0x70], ecx
0x00000001036acbdb: dec eax
0x00000001036acbdc: mov [esp+0x68], edx
0x00000001036acbe0: dec eax
0x00000001036acbe1: mov [esp+0x60], ebx
0x00000001036acbe5: dec eax
0x00000001036acbe6: mov [esp+0x50], ebp
0x00000001036acbea: dec eax
0x00000001036acbeb: mov [esp+0x48], esi
0x00000001036acbef: dec eax
0x00000001036acbf0: mov [esp+0x40], edi
0x00000001036acbf4: dec esp
0x00000001036acbf5: mov [esp+0x38], eax
0x00000001036acbf9: dec esp
0x00000001036acbfa: mov [esp+0x30], ecx
0x00000001036acbfe: dec esp
0x00000001036acbff: mov [esp+0x28], edx
0x00000001036acc03: dec esp
0x00000001036acc04: mov [esp+0x20], ebx
0x00000001036acc08: dec esp
0x00000001036acc09: mov [esp+0x18], esp
0x00000001036acc0d: dec esp
0x00000001036acc0e: mov [esp+0x10], ebp
0x00000001036acc12: dec esp
0x00000001036acc13: mov [esp+0x8], esi
0x00000001036acc17: dec esp
0x00000001036acc18: mov [esp], edi
0x00000001036acc1b: dec eax ; {external_word}
0x00000001036acc1c: mov edi, 0x00000000027b5500
0x00000001036acc21: add [eax], eax
0x00000001036acc23: add [eax], al
0x00000001036acc25: dec eax ; {internal_word}
0x00000001036acc26: mov esi, 0x00000000036acbc5
0x00000001036acc2b: add [eax], eax
0x00000001036acc2d: add [eax], al
0x00000001036acc2f: dec eax
0x00000001036acc30: mov edx, esp
0x00000001036acc32: dec eax
0x00000001036acc33: and esp, 0x00000000000000f0
0x00000001036acc36: call 0x00000000025e9b10 ; {runtime_call}
0x00000001036acc3b: hlt
[Deopt Handler Code]
0x00000001036acc3c: dec ecx ; {section_word}
0x00000001036acc3d: mov edx, 0x00000000036acc3c
0x00000001036acc42: add [eax], eax
0x00000001036acc44: add [eax], al
0x00000001036acc46: inc ecx
0x00000001036acc47: push edx
0x00000001036acc48: jmp 0x00000000033b23c0 ; {runtime_call}
0x00000001036acc4d: hlt
0x00000001036acc4e: hlt
0x00000001036acc4f: hlt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment