Skip to content

Instantly share code, notes, and snippets.

@headius
Created December 23, 2012 18:30
Show Gist options
  • Save headius/4365103 to your computer and use it in GitHub Desktop.
Save headius/4365103 to your computer and use it in GitHub Desktop.
Decoding compiled method 0x0000000111ab2690:
Code:
[Entry Point]
[Verified Entry Point]
[Constants]
# {method}
{0x000000011d802d60} 'method__0$RUBY$foo' '(Lruby/__dash_e__;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;' in 'ruby/__dash_e__'
# parm0: rsi:rsi = 'ruby/__dash_e__'
# parm1: rdx:rdx = 'org/jruby/runtime/ThreadContext'
# parm2: rcx:rcx = 'org/jruby/runtime/builtin/IRubyObject'
# parm3: r8:r8 = 'org/jruby/runtime/Block'
# [sp+0x40] (sp of caller)
0x0000000111ab27e0: mov %eax,-0x14000(%rsp)
0x0000000111ab27e7: push %rbp
0x0000000111ab27e8: sub $0x30,%rsp ;*synchronization entry
; - ruby.__dash_e__::method__0$RUBY$foo@-1 (line 1)
0x0000000111ab27ec: test %rdx,%rdx
0x0000000111ab27ef: je 0x0000000111ab2835 ;*ifnull
; - java.lang.Class::cast@1 (line 3007)
; - java.lang.invoke.LambdaForm$MH/763053631::guard@12
; - java.lang.invoke.LambdaForm$MH/518216626::linkToCallSite@14
; - ruby.__dash_e__::method__0$RUBY$foo@3 (line 1)
0x0000000111ab27f1: mov 0x8(%rcx),%r11d ; implicit exception: dispatches to 0x0000000111ab2871
0x0000000111ab27f5: cmp $0xfb50aa08,%r11d ; {metadata('org/jruby/RubyObject')}
0x0000000111ab27fc: jne 0x0000000111ab2855
0x0000000111ab27fe: mov %rcx,%r10 ;*checkcast
; - org.jruby.runtime.invokedynamic.InvocationLinker::testMetaclass@2 (line 641)
; - java.lang.invoke.LambdaForm$DMH/1477098496::invokeStatic_LL_I@11
; - java.lang.invoke.LambdaForm$MH/1122740942::convert@26
; - java.lang.invoke.LambdaForm$MH/1511495615::guard@17
; - java.lang.invoke.LambdaForm$DMH/1077897604::invokeSpecial_LLLL_L@16
; - java.lang.invoke.LambdaForm$MH/763053631::guard@50
; - java.lang.invoke.LambdaForm$MH/518216626::linkToCallSite@14
; - ruby.__dash_e__::method__0$RUBY$foo@3 (line 1)
0x0000000111ab2801: mov 0x10(%r10),%ebp ;*getfield metaClass
; - org.jruby.RubyBasicObject::getMetaClass@1 (line 512)
; - org.jruby.runtime.invokedynamic.InvocationLinker::testMetaclass@5 (line 641)
; - java.lang.invoke.LambdaForm$DMH/1477098496::invokeStatic_LL_I@11
; - java.lang.invoke.LambdaForm$MH/1122740942::convert@26
; - java.lang.invoke.LambdaForm$MH/1511495615::guard@17
; - java.lang.invoke.LambdaForm$DMH/1077897604::invokeSpecial_LLLL_L@16
; - java.lang.invoke.LambdaForm$MH/763053631::guard@50
; - java.lang.invoke.LambdaForm$MH/518216626::linkToCallSite@14
; - ruby.__dash_e__::method__0$RUBY$foo@3 (line 1)
0x0000000111ab2805: cmp $0xfed6afcd,%ebp ; {oop(a 'org/jruby/MetaClass')}
0x0000000111ab280b: jne 0x0000000111ab281c ;*if_acmpne
; - org.jruby.runtime.invokedynamic.InvocationLinker::testMetaclass@8 (line 641)
; - java.lang.invoke.LambdaForm$DMH/1477098496::invokeStatic_LL_I@11
; - java.lang.invoke.LambdaForm$MH/1122740942::convert@26
; - java.lang.invoke.LambdaForm$MH/1511495615::guard@17
; - java.lang.invoke.LambdaForm$DMH/1077897604::invokeSpecial_LLLL_L@16
; - java.lang.invoke.LambdaForm$MH/763053631::guard@50
; - java.lang.invoke.LambdaForm$MH/518216626::linkToCallSite@14
; - ruby.__dash_e__::method__0$RUBY$foo@3 (line 1)
0x0000000111ab280d: mov %rcx,%rax
0x0000000111ab2810: add $0x30,%rsp
0x0000000111ab2814: pop %rbp
0x0000000111ab2815: test %eax,-0x1abb81b(%rip) # 0x000000010fff7000
; {poll_return}
0x0000000111ab281b: retq
0x0000000111ab281c: mov $0xffffffad,%esi
0x0000000111ab2821: mov %rdx,(%rsp)
0x0000000111ab2825: mov %rcx,0x10(%rsp)
0x0000000111ab282a: nop
0x0000000111ab282b: callq 0x000000011152b320 ; OopMap{rbp=NarrowOop [0]=Oop [16]=Oop off=80}
;*if_acmpne
; - org.jruby.runtime.invokedynamic.InvocationLinker::testMetaclass@8 (line 641)
; - java.lang.invoke.LambdaForm$DMH/1477098496::invokeStatic_LL_I@11
; - java.lang.invoke.LambdaForm$MH/1122740942::convert@26
; - java.lang.invoke.LambdaForm$MH/1511495615::guard@17
; - java.lang.invoke.LambdaForm$DMH/1077897604::invokeSpecial_LLLL_L@16
; - java.lang.invoke.LambdaForm$MH/763053631::guard@50
; - java.lang.invoke.LambdaForm$MH/518216626::linkToCallSite@14
; - ruby.__dash_e__::method__0$RUBY$foo@3 (line 1)
; {runtime_call}
0x0000000111ab2830: callq 0x00000001104e6582 ;*if_acmpne
; - org.jruby.runtime.invokedynamic.InvocationLinker::testMetaclass@8 (line 641)
; - java.lang.invoke.LambdaForm$DMH/1477098496::invokeStatic_LL_I@11
; - java.lang.invoke.LambdaForm$MH/1122740942::convert@26
; - java.lang.invoke.LambdaForm$MH/1511495615::guard@17
; - java.lang.invoke.LambdaForm$DMH/1077897604::invokeSpecial_LLLL_L@16
; - java.lang.invoke.LambdaForm$MH/763053631::guard@50
; - java.lang.invoke.LambdaForm$MH/518216626::linkToCallSite@14
; - ruby.__dash_e__::method__0$RUBY$foo@3 (line 1)
; {runtime_call}
0x0000000111ab2835: mov $0xffffffad,%esi
0x0000000111ab283a: mov %rcx,0x8(%rsp)
0x0000000111ab283f: mov %rdx,0x10(%rsp)
0x0000000111ab2844: mov %rdx,0x18(%rsp)
0x0000000111ab2849: xchg %ax,%ax
0x0000000111ab284b: callq 0x000000011152b320 ; OopMap{[8]=Oop [16]=Oop [24]=Oop off=112}
;*ifnull
; - java.lang.Class::cast@1 (line 3007)
; - java.lang.invoke.LambdaForm$MH/763053631::guard@12
; - java.lang.invoke.LambdaForm$MH/518216626::linkToCallSite@14
; - ruby.__dash_e__::method__0$RUBY$foo@3 (line 1)
; {runtime_call}
0x0000000111ab2850: callq 0x00000001104e6582 ;*ifnull
; - java.lang.Class::cast@1 (line 3007)
; - java.lang.invoke.LambdaForm$MH/763053631::guard@12
; - java.lang.invoke.LambdaForm$MH/518216626::linkToCallSite@14
; - ruby.__dash_e__::method__0$RUBY$foo@3 (line 1)
; {runtime_call}
0x0000000111ab2855: mov $0xffffffde,%esi
0x0000000111ab285a: mov %rdx,%rbp
0x0000000111ab285d: mov %rcx,0x8(%rsp)
0x0000000111ab2862: mov %rcx,0x10(%rsp)
0x0000000111ab2867: callq 0x000000011152b320 ; OopMap{rbp=Oop [8]=Oop [16]=Oop off=140}
;*checkcast
; - org.jruby.runtime.invokedynamic.InvocationLinker::testMetaclass@2 (line 641)
; - java.lang.invoke.LambdaForm$DMH/1477098496::invokeStatic_LL_I@11
; - java.lang.invoke.LambdaForm$MH/1122740942::convert@26
; - java.lang.invoke.LambdaForm$MH/1511495615::guard@17
; - java.lang.invoke.LambdaForm$DMH/1077897604::invokeSpecial_LLLL_L@16
; - java.lang.invoke.LambdaForm$MH/763053631::guard@50
; - java.lang.invoke.LambdaForm$MH/518216626::linkToCallSite@14
; - ruby.__dash_e__::method__0$RUBY$foo@3 (line 1)
; {runtime_call}
0x0000000111ab286c: callq 0x00000001104e6582 ; {runtime_call}
0x0000000111ab2871: mov $0xfffffff4,%esi
0x0000000111ab2876: mov %rdx,%rbp
0x0000000111ab2879: mov %rcx,0x8(%rsp)
0x0000000111ab287e: nop
0x0000000111ab287f: callq 0x000000011152b320 ; OopMap{rbp=Oop [8]=Oop off=164}
;*checkcast
; - org.jruby.runtime.invokedynamic.InvocationLinker::testMetaclass@2 (line 641)
; - java.lang.invoke.LambdaForm$DMH/1477098496::invokeStatic_LL_I@11
; - java.lang.invoke.LambdaForm$MH/1122740942::convert@26
; - java.lang.invoke.LambdaForm$MH/1511495615::guard@17
; - java.lang.invoke.LambdaForm$DMH/1077897604::invokeSpecial_LLLL_L@16
; - java.lang.invoke.LambdaForm$MH/763053631::guard@50
; - java.lang.invoke.LambdaForm$MH/518216626::linkToCallSite@14
; - ruby.__dash_e__::method__0$RUBY$foo@3 (line 1)
; {runtime_call}
0x0000000111ab2884: callq 0x00000001104e6582 ;*checkcast
; - org.jruby.runtime.invokedynamic.InvocationLinker::testMetaclass@2 (line 641)
; - java.lang.invoke.LambdaForm$DMH/1477098496::invokeStatic_LL_I@11
; - java.lang.invoke.LambdaForm$MH/1122740942::convert@26
; - java.lang.invoke.LambdaForm$MH/1511495615::guard@17
; - java.lang.invoke.LambdaForm$DMH/1077897604::invokeSpecial_LLLL_L@16
; - java.lang.invoke.LambdaForm$MH/763053631::guard@50
; - java.lang.invoke.LambdaForm$MH/518216626::linkToCallSite@14
; - ruby.__dash_e__::method__0$RUBY$foo@3 (line 1)
; {runtime_call}
0x0000000111ab2889: hlt
0x0000000111ab288a: hlt
0x0000000111ab288b: hlt
0x0000000111ab288c: hlt
0x0000000111ab288d: hlt
0x0000000111ab288e: hlt
0x0000000111ab288f: hlt
0x0000000111ab2890: hlt
0x0000000111ab2891: hlt
0x0000000111ab2892: hlt
0x0000000111ab2893: hlt
0x0000000111ab2894: hlt
0x0000000111ab2895: hlt
0x0000000111ab2896: hlt
0x0000000111ab2897: hlt
0x0000000111ab2898: hlt
0x0000000111ab2899: hlt
0x0000000111ab289a: hlt
0x0000000111ab289b: hlt
0x0000000111ab289c: hlt
0x0000000111ab289d: hlt
0x0000000111ab289e: hlt
0x0000000111ab289f: hlt
[Exception Handler]
[Stub Code]
0x0000000111ab28a0: jmpq 0x000000011154fae0 ; {no_reloc}
[Deopt Handler Code]
0x0000000111ab28a5: callq 0x0000000111ab28aa
0x0000000111ab28aa: subq $0x5,(%rsp)
0x0000000111ab28af: jmpq 0x000000011152af00 ; {runtime_call}
0x0000000111ab28b4: hlt
0x0000000111ab28b5: hlt
0x0000000111ab28b6: hlt
0x0000000111ab28b7: hlt
Decoding compiled method 0x0000000104938c10:
Code:
[Entry Point]
[Verified Entry Point]
[Constants]
# {method} 'method__0$RUBY$foo' '(Lruby/__dash_e__;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;' in 'ruby/__dash_e__'
# parm0: rsi:rsi = 'ruby/__dash_e__'
# parm1: rdx:rdx = 'org/jruby/runtime/ThreadContext'
# parm2: rcx:rcx = 'org/jruby/runtime/builtin/IRubyObject'
# parm3: r8:r8 = 'org/jruby/runtime/Block'
# [sp+0x40] (sp of caller)
0x0000000104938d60: mov %eax,-0x14000(%rsp)
0x0000000104938d67: push %rbp
0x0000000104938d68: sub $0x30,%rsp ;*synchronization entry
; - ruby.__dash_e__::method__0$RUBY$foo@-1 (line 1)
0x0000000104938d6c: mov 0x8(%rcx),%r10d ; implicit exception: dispatches to 0x0000000104938dcd
0x0000000104938d70: cmp $0xfb7afa8c,%r10d ; {oop('org/jruby/RubyObject')}
0x0000000104938d77: jne 0x0000000104938db1
0x0000000104938d79: mov %rcx,%r10 ;*checkcast
; - org.jruby.runtime.invokedynamic.InvocationLinker::testMetaclass@2 (line 641)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@5
; - java.lang.invoke.MethodHandle::invokeExact@29
; - ruby.__dash_e__::method__0$RUBY$foo@3 (line 1)
0x0000000104938d7c: mov 0x10(%r10),%ebp ;*getfield metaClass
; - org.jruby.RubyBasicObject::getMetaClass@1 (line 512)
; - org.jruby.runtime.invokedynamic.InvocationLinker::testMetaclass@5 (line 641)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@5
; - java.lang.invoke.MethodHandle::invokeExact@29
; - ruby.__dash_e__::method__0$RUBY$foo@3 (line 1)
0x0000000104938d80: cmp $0xfeb4fb7d,%ebp ; {oop(a 'org/jruby/MetaClass')}
0x0000000104938d86: jne 0x0000000104938d97 ;*if_acmpne
; - org.jruby.runtime.invokedynamic.InvocationLinker::testMetaclass@8 (line 641)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@5
; - java.lang.invoke.MethodHandle::invokeExact@29
; - ruby.__dash_e__::method__0$RUBY$foo@3 (line 1)
0x0000000104938d88: mov %rcx,%rax
0x0000000104938d8b: add $0x30,%rsp
0x0000000104938d8f: pop %rbp
0x0000000104938d90: test %eax,-0xf67d96(%rip) # 0x00000001039d1000
; {poll_return}
0x0000000104938d96: retq
0x0000000104938d97: mov $0xffffffad,%esi
0x0000000104938d9c: mov %rdx,(%rsp)
0x0000000104938da0: mov %rcx,0x10(%rsp)
0x0000000104938da5: xchg %ax,%ax
0x0000000104938da7: callq 0x0000000104866020 ; OopMap{rbp=NarrowOop [0]=Oop [16]=Oop off=76}
;*if_acmpne
; - org.jruby.runtime.invokedynamic.InvocationLinker::testMetaclass@8 (line 641)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@5
; - java.lang.invoke.MethodHandle::invokeExact@29
; - ruby.__dash_e__::method__0$RUBY$foo@3 (line 1)
; {runtime_call}
0x0000000104938dac: callq 0x0000000103f3416e ;*if_acmpne
; - org.jruby.runtime.invokedynamic.InvocationLinker::testMetaclass@8 (line 641)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@5
; - java.lang.invoke.MethodHandle::invokeExact@29
; - ruby.__dash_e__::method__0$RUBY$foo@3 (line 1)
; {runtime_call}
0x0000000104938db1: mov $0xffffffde,%esi
0x0000000104938db6: mov %rdx,%rbp
0x0000000104938db9: mov %rcx,0x8(%rsp)
0x0000000104938dbe: mov %rcx,0x10(%rsp)
0x0000000104938dc3: callq 0x0000000104866020 ; OopMap{rbp=Oop [8]=Oop [16]=Oop off=104}
;*checkcast
; - org.jruby.runtime.invokedynamic.InvocationLinker::testMetaclass@2 (line 641)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@5
; - java.lang.invoke.MethodHandle::invokeExact@29
; - ruby.__dash_e__::method__0$RUBY$foo@3 (line 1)
; {runtime_call}
0x0000000104938dc8: callq 0x0000000103f3416e ; {runtime_call}
0x0000000104938dcd: mov $0xfffffff4,%esi
0x0000000104938dd2: mov %rdx,%rbp
0x0000000104938dd5: mov %rcx,0x8(%rsp)
0x0000000104938dda: nop
0x0000000104938ddb: callq 0x0000000104866020 ; OopMap{rbp=Oop [8]=Oop off=128}
;*checkcast
; - org.jruby.runtime.invokedynamic.InvocationLinker::testMetaclass@2 (line 641)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@5
; - java.lang.invoke.MethodHandle::invokeExact@29
; - ruby.__dash_e__::method__0$RUBY$foo@3 (line 1)
; {runtime_call}
0x0000000104938de0: callq 0x0000000103f3416e ;*checkcast
; - org.jruby.runtime.invokedynamic.InvocationLinker::testMetaclass@2 (line 641)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@5
; - java.lang.invoke.MethodHandle::invokeExact@29
; - ruby.__dash_e__::method__0$RUBY$foo@3 (line 1)
; {runtime_call}
0x0000000104938de5: hlt
0x0000000104938de6: hlt
0x0000000104938de7: hlt
0x0000000104938de8: hlt
0x0000000104938de9: hlt
0x0000000104938dea: hlt
0x0000000104938deb: hlt
0x0000000104938dec: hlt
0x0000000104938ded: hlt
0x0000000104938dee: hlt
0x0000000104938def: hlt
0x0000000104938df0: hlt
0x0000000104938df1: hlt
0x0000000104938df2: hlt
0x0000000104938df3: hlt
0x0000000104938df4: hlt
0x0000000104938df5: hlt
0x0000000104938df6: hlt
0x0000000104938df7: hlt
0x0000000104938df8: hlt
0x0000000104938df9: hlt
0x0000000104938dfa: hlt
0x0000000104938dfb: hlt
0x0000000104938dfc: hlt
0x0000000104938dfd: hlt
0x0000000104938dfe: hlt
0x0000000104938dff: hlt
[Exception Handler]
[Stub Code]
0x0000000104938e00: jmpq 0x000000010488c720 ; {no_reloc}
[Deopt Handler Code]
0x0000000104938e05: callq 0x0000000104938e0a
0x0000000104938e0a: subq $0x5,(%rsp)
0x0000000104938e0f: jmpq 0x0000000104865c00 ; {runtime_call}
0x0000000104938e14: hlt
0x0000000104938e15: hlt
0x0000000104938e16: hlt
0x0000000104938e17: hlt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment