Skip to content

Instantly share code, notes, and snippets.

@headius
Created May 23, 2011 21:18
[Disassembling for mach='i386(base-hsdis)']
[Entry Point]
[Verified Entry Point]
# {method} 'method__0$RUBY$fib_ruby' '(Lbench/bench_fib_recursive;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;' in 'bench/bench_fib_recursive'
# parm0: ecx = 'bench/bench_fib_recursive'
# parm1: edx = 'org/jruby/runtime/ThreadContext'
# parm2: [sp+0x60] = 'org/jruby/runtime/builtin/IRubyObject' (sp of caller)
# parm3: [sp+0x64] = 'org/jruby/runtime/builtin/IRubyObject'
# parm4: [sp+0x68] = 'org/jruby/runtime/Block'
0x02876aa0: mov [esp-0x3000], eax ; {no_reloc}
0x02876aa7: push ebp
0x02876aa8: sub esp, 0x00000058 ;*synchronization entry
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@-1
0x02876aae: mov [esp+0x30], edx
0x02876ab2: mov [esp+0x1C], ecx
0x02876ab6: mov ebx, [ecx+0x8] ;*getfield runtimeCache
; - org.jruby.ast.executable.AbstractScript::getCallSite0@1 (line 80)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@4 (line 4)
; implicit exception: dispatches to 42432595
0x02876ab9: mov ebp, [ebx+0xC] ;*getfield callSites
; - org.jruby.ast.executable.AbstractScript::getCallSite0@4 (line 80)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@4 (line 4)
; implicit exception: dispatches to 42432613
0x02876abc: mov ecx, [ebp+0x8] ; implicit exception: dispatches to 42432629
0x02876abf: test ecx, ecx
0x02876ac1: jbe 0x02877429
0x02876ac7: mov edi, [ebp+0xC] ;*aaload
; - org.jruby.ast.executable.AbstractScript::getCallSite0@8 (line 80)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@4 (line 4)
0x02876aca: mov ecx, [edi+0x4] ; implicit exception: dispatches to 42432645
0x02876acd: cmp ecx, 'org/jruby/runtime/callsite/LtCallSite'
; {oop('org/jruby/runtime/callsite/LtCallSite')}
0x02876ad3: jnz 0x02877441 ;*invokevirtual call
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
0x02876ad9: mov ecx, [esp+0x64]
0x02876add: mov ebx, [ecx+0x4] ; implicit exception: dispatches to 42432665
0x02876ae0: mov [esp+0x28], ebx
0x02876ae4: cmp ebx, 'org/jruby/RubyFixnum'
; {oop('org/jruby/RubyFixnum')}
0x02876aea: jnz 0x02877759 ;*instanceof
; - org.jruby.runtime.callsite.LtCallSite::call@1 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
0x02876af0: mov eax, [edx+0x2C] ;*getfield runtime
; - org.jruby.runtime.callsite.LtCallSite::call@8 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
; implicit exception: dispatches to 42432693
0x02876af3: movzx ecx, [eax+0x2C] ; implicit exception: dispatches to 42432709
0x02876af7: movsd xmm0, [0x2876A80] ; {section_word}
0x02876aff: test ecx, ecx
0x02876b01: jnz 0x02877561 ;*ifne
; - org.jruby.runtime.callsite.LtCallSite::call@14 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
0x02876b07: mov esi, [esp+0x64] ;*checkcast
; - org.jruby.runtime.callsite.LtCallSite::call@18 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
0x02876b0b: mov ecx, [eax+0x80] ;*getfield trueObject
; - org.jruby.Ruby::getTrue@1 (line 1761)
; - org.jruby.RubyBoolean::newBoolean@5 (line 104)
; - org.jruby.RubyFixnum::op_lt@18 (line 883)
; - org.jruby.runtime.callsite.LtCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
0x02876b11: mov ebp, [esi+0x18]
0x02876b14: mov edi, [esi+0x1C]
0x02876b17: mov ebx, [eax+0x84] ;*getfield falseObject
; - org.jruby.Ruby::getFalse@1 (line 1768)
; - org.jruby.RubyBoolean::newBoolean@12 (line 104)
; - org.jruby.RubyFixnum::op_lt@18 (line 883)
; - org.jruby.runtime.callsite.LtCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
0x02876b1d: mov eax, 2
0x02876b22: xor edx, edx
0x02876b24: cmp ebp, eax
0x02876b26: mov esi, edi
0x02876b28: sbb esi, edx
0x02876b2a: cmovl ebx, ecx ;*invokevirtual call
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
0x02876b2d: mov ebp, [ebx+0x4] ; implicit exception: dispatches to 42432725
0x02876b30: cmp ebp, 'org/jruby/RubyBoolean'
; {oop('org/jruby/RubyBoolean')}
0x02876b36: jnz 0x0287745d ;*invokeinterface isTrue
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@17 (line 4)
0x02876b3c: mov ebx, [ebx+0x8]
0x02876b3f: test ebx, 1
0x02876b45: jnz 0x02876b58 ;*ifeq
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@22 (line 4)
0x02876b47: mov edx, [esp+0x64] ;*areturn
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@87 (line 7)
0x02876b4b: mov eax, edx
0x02876b4d: add esp, 0x00000058
0x02876b50: pop ebp
0x02876b51: test [0x6E000], eax ; {poll_return}
0x02876b57: ret
0x02876b58: mov ebx, [esp+0x1C]
0x02876b5c: mov ebx, [ebx+0x8] ;*getfield runtimeCache
; - org.jruby.ast.executable.AbstractScript::getCallSite1@1 (line 81)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@38 (line 7)
0x02876b5f: mov ebp, [ebx+0xC] ;*getfield callSites
; - org.jruby.ast.executable.AbstractScript::getCallSite1@4 (line 81)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@38 (line 7)
; implicit exception: dispatches to 42432741
0x02876b62: mov ecx, [ebp+0x8] ; implicit exception: dispatches to 42432757
0x02876b65: cmp ecx, 1
0x02876b68: jbe 0x028774b9
0x02876b6e: mov ebx, [ebp+0x10] ;*aaload
; - org.jruby.ast.executable.AbstractScript::getCallSite1@8 (line 81)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@38 (line 7)
0x02876b71: mov ecx, [ebx+0x4] ; implicit exception: dispatches to 42432773
0x02876b74: cmp ecx, 'org/jruby/runtime/callsite/MinusCallSite'
; {oop('org/jruby/runtime/callsite/MinusCallSite')}
0x02876b7a: jnz 0x028774dd ;*invokevirtual call
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02876b80: mov ecx, [esp+0x28]
0x02876b84: cmp ecx, 'org/jruby/RubyFixnum'
; {oop('org/jruby/RubyFixnum')}
0x02876b8a: jnz 0x02877775 ;*instanceof
; - org.jruby.runtime.callsite.MinusCallSite::call@1 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02876b90: mov ebp, [esp+0x30]
0x02876b94: mov ecx, [ebp+0x2C] ;*getfield runtime
; - org.jruby.runtime.callsite.MinusCallSite::call@8 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02876b97: mov [esp+0x2C], ecx
0x02876b9b: movzx eax, [ecx+0x2C] ; implicit exception: dispatches to 42432793
0x02876b9f: mov ebp, esp
0x02876ba1: shr ebp, 0x0000000c
0x02876ba4: mov ebp, [ebp*4+0x18343E0]
; {external_word}
0x02876bab: mov [esp+0x68], ebp
0x02876baf: test eax, eax
0x02876bb1: jnz 0x028775b1 ;*ifne
; - org.jruby.runtime.callsite.MinusCallSite::call@14 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02876bb7: mov esi, [esp+0x64] ;*checkcast
; - org.jruby.runtime.callsite.MinusCallSite::call@18 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02876bbb: mov ebp, [esi+0x18]
0x02876bbe: mov edi, [esi+0x1C] ;*getfield value
; - org.jruby.RubyFixnum::op_minus@1 (line 391)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02876bc1: mov eax, ebp
0x02876bc3: mov edx, edi
0x02876bc5: xor eax, 2
0x02876bc8: xor edx, 0x00
0x02876bcb: mov ecx, ebp
0x02876bcd: mov ebx, edi
0x02876bcf: add ecx, 0x000000fe
0x02876bd2: adc ebx, 0x000000ff ;*lsub
; - org.jruby.RubyFixnum::op_minus@5 (line 391)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02876bd5: mov [esp+0x20], ecx
0x02876bd9: mov [esp+0x24], ebx
0x02876bdd: xor ecx, ebp
0x02876bdf: xor ebx, edi
0x02876be1: and eax, ecx
0x02876be3: and edx, ebx
0x02876be5: and eax, 0x00
0x02876be8: and edx, 0x80000000
0x02876bee: mov ebx, eax
0x02876bf0: or ebx, edx
0x02876bf2: jnz 0x02877677 ;*ifeq
; - org.jruby.RubyFixnum::subtractionOverflowed@22 (line 358)
; - org.jruby.RubyFixnum::op_minus@15 (line 392)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02876bf8: mov ecx, [esp+0x20]
0x02876bfc: mov ebx, [esp+0x24]
0x02876c00: mov ebp, 0x000000ff
0x02876c05: xor edi, edi
0x02876c07: cmp ebp, ecx
0x02876c09: mov edx, edi
0x02876c0b: sbb edx, ebx
0x02876c0d: jl 0x02877309 ;*ifgt
; - org.jruby.RubyFixnum::isInCacheRange@5 (line 177)
; - org.jruby.RubyFixnum::newFixnum@1 (line 170)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02876c13: mov ebp, 0xffffff00
0x02876c18: mov edi, -1
0x02876c1d: cmp ecx, ebp
0x02876c1f: mov edx, ebx
0x02876c21: sbb edx, edi
0x02876c23: jl 0x02877309 ;*iflt
; - org.jruby.RubyFixnum::isInCacheRange@13 (line 177)
; - org.jruby.RubyFixnum::newFixnum@1 (line 170)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02876c29: mov ebx, [esp+0x2C]
0x02876c2d: mov ebx, [ebx+0x88] ;*getfield fixnumCache
; - org.jruby.RubyFixnum::newFixnum@8 (line 171)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02876c33: mov [esp+0x34], ebx
0x02876c37: mov ecx, [esp+0x20]
0x02876c3b: mov ebx, [esp+0x24]
0x02876c3f: mov ebx, ecx ;*l2i ; - org.jruby.RubyFixnum::newFixnum@12 (line 171)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02876c41: mov ebp, ebx
0x02876c43: add ebp, 0x00000100 ;*iadd
; - org.jruby.RubyFixnum::newFixnum@16 (line 171)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02876c49: mov ecx, [esp+0x34]
0x02876c4d: mov edi, [ecx+0x8] ; implicit exception: dispatches to 42433141
0x02876c50: cmp ebp, edi
0x02876c52: jnc 0x02877479
0x02876c58: mov eax, [ecx+ebx*4+0x40C]
;*invokevirtual op_minus
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02876c5f: mov [esp+0x34], eax ;*invokevirtual call
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02876c63: mov ecx, 0x00000344
0x02876c68: mov ebx, [ecx+0x2550DD40] ; {oop(cache [63] for constant pool [255]/invokedynamic/operands[8] for 'bench/bench_fib_recursive' cache=0x2550dd40)}
0x02876c6e: mov ecx, [ebx+0x10]
0x02876c71: cmp ecx, a 'java/lang/invoke/AdapterMethodHandle'
; {oop(a 'java/lang/invoke/AdapterMethodHandle')}
0x02876c77: jnz 0x028777e5 ;*invokedynamic
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
0x02876c7d: mov ecx, [esp+0x60]
0x02876c81: mov ebx, [ecx+0x4] ; implicit exception: dispatches to 42432809
0x02876c84: mov ecx, [ebx+0x24]
0x02876c87: cmp ecx, 'org/jruby/RubyBasicObject'
; {oop('org/jruby/RubyBasicObject')}
0x02876c8d: jnz 0x02877501
0x02876c93: mov ecx, [esp+0x60] ;*checkcast
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@2 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
0x02876c97: mov ebp, [ecx+0xC] ;*getfield metaClass
; - org.jruby.RubyBasicObject::getMetaClass@1 (line 536)
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@5 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
0x02876c9a: mov ecx, [ebp+0x18] ; implicit exception: dispatches to 42432837
0x02876c9d: cmp ecx, 0x00000278
0x02876ca3: jnz 0x02877601 ;*if_icmpne
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@11 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
0x02876ca9: mov ebp, a 'java/lang/Class' = 'java/lang/Boolean'
; {oop(a 'java/lang/Class' = 'java/lang/Boolean')}
0x02876cae: mov ecx, [ebp+0x68] ;*areturn
; - java.lang.Boolean::valueOf@13 (line 149)
; - java.lang.invoke.MethodHandle::invokeExact@1
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
0x02876cb1: movzx eax, [ecx+0x8]
0x02876cb5: test eax, eax
0x02876cb7: jz 0x02877695 ;*ifeq
; - java.lang.invoke.MethodHandleImpl::selectAlternative@1 (line 1025)
; - java.lang.invoke.MethodHandle::invokeExact@20
; - java.lang.invoke.MethodHandle::invokeExact@10
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
0x02876cbd: mov ecx, a 'java/lang/invoke/AdapterMethodHandle'
; {oop(a 'java/lang/invoke/AdapterMethodHandle')}
0x02876cc2: mov [esp+0x38], ecx ;*areturn
; - java.lang.invoke.MethodHandleImpl::selectAlternative@9 (line 1025)
; - java.lang.invoke.MethodHandle::invokeExact@20
; - java.lang.invoke.MethodHandle::invokeExact@10
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
0x02876cc6: mov ebp, [esp+0x34]
0x02876cca: mov esi, [ebp+0x4] ; implicit exception: dispatches to 42432853
0x02876ccd: mov ecx, [esi+0x18]
0x02876cd0: cmp ecx, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x02876cd6: jnz 0x02877049 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@17
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
0x02876cdc: mov edx, [ebx+0x18] ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@37
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
0x02876cdf: cmp edx, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x02876ce5: jnz 0x02877079 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@31
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
0x02876ceb: cmp edx, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x02876cf1: jnz 0x028770ad ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@37
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
0x02876cf7: mov ecx, [esp+0x38]
0x02876cfb: mov edx, [esp+0x30]
0x02876cff: mov ebx, [esp+0x60]
0x02876d03: mov [esp], ebx
0x02876d06: mov [esp+0x4], ebx
0x02876d0a: mov ebp, "fib_ruby" ; {oop("fib_ruby")}
0x02876d0f: mov [esp+0x8], ebp
0x02876d13: mov ebx, [esp+0x34]
0x02876d17: mov [esp+0xC], ebx
0x02876d1b: nop
0x02876d1d: mov ebp, esp
0x02876d1f: call 0x0282d0e0 ; OopMap{[96]=Oop [100]=Oop [28]=Oop [40]=Oop [48]=Oop off=644}
;*invokespecial invokeExact
; - java.lang.invoke.MethodHandle::invokeExact@63
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
; {optimized virtual_call}
0x02876d24: mov esp, ebp ;*invokespecial invokeExact
; - java.lang.invoke.MethodHandle::invokeExact@63
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
0x02876d26: mov [esp+0x34], eax
0x02876d2a: mov esi, [eax+0x4] ; implicit exception: dispatches to 42432881
0x02876d2d: mov ebp, [esi+0x18]
0x02876d30: cmp ebp, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x02876d36: jnz 0x028770e1 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@30
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
0x02876d3c: cmp ebp, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x02876d42: jnz 0x02877111 ;*synchronization entry
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@-1
0x02876d48: mov ebx, [esp+0x1C]
0x02876d4c: mov ebx, [ebx+0x8] ;*getfield runtimeCache
; - org.jruby.ast.executable.AbstractScript::getCallSite2@1 (line 82)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@64 (line 7)
0x02876d4f: mov ebp, [ebx+0xC] ;*getfield callSites
; - org.jruby.ast.executable.AbstractScript::getCallSite2@4 (line 82)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@64 (line 7)
; implicit exception: dispatches to 42432909
0x02876d52: mov ecx, [ebp+0x8] ; implicit exception: dispatches to 42432925
0x02876d55: cmp ecx, 2
0x02876d58: jbe 0x02877511
0x02876d5e: mov ebx, [ebp+0x14] ;*aaload
; - org.jruby.ast.executable.AbstractScript::getCallSite2@8 (line 82)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@64 (line 7)
0x02876d61: mov [esp+0x2C], ebx
0x02876d65: mov ecx, [ebx+0x4] ; implicit exception: dispatches to 42432941
0x02876d68: cmp ecx, 'org/jruby/runtime/callsite/MinusCallSite'
; {oop('org/jruby/runtime/callsite/MinusCallSite')}
0x02876d6e: jnz 0x0287752d ;*invokevirtual call
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x02876d74: mov [esp+0x38], ebx
0x02876d78: mov ecx, [esp+0x28]
0x02876d7c: cmp ecx, 'org/jruby/RubyFixnum'
; {oop('org/jruby/RubyFixnum')}
0x02876d82: jnz 0x02877799 ;*instanceof
; - org.jruby.runtime.callsite.MinusCallSite::call@1 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x02876d88: mov ebx, [esp+0x30]
0x02876d8c: mov ecx, [ebx+0x2C] ;*getfield runtime
; - org.jruby.runtime.callsite.MinusCallSite::call@8 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x02876d8f: mov [esp+0x1C], ecx
0x02876d93: movzx ebx, [ecx+0x2C] ; implicit exception: dispatches to 42432961
0x02876d97: test ebx, ebx
0x02876d99: jnz 0x0287760e ;*ifne
; - org.jruby.runtime.callsite.MinusCallSite::call@14 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x02876d9f: mov esi, [esp+0x64] ;*checkcast
; - org.jruby.runtime.callsite.MinusCallSite::call@18 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x02876da3: mov ebp, [esi+0x18]
0x02876da6: mov edi, [esi+0x1C] ;*getfield value
; - org.jruby.RubyFixnum::op_minus@1 (line 391)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x02876da9: mov eax, ebp
0x02876dab: mov edx, edi
0x02876dad: xor eax, 1
0x02876db0: xor edx, 0x00
0x02876db3: mov ecx, ebp
0x02876db5: mov ebx, edi
0x02876db7: add ecx, 0x000000ff
0x02876dba: adc ebx, 0x000000ff ;*lsub
; - org.jruby.RubyFixnum::op_minus@5 (line 391)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x02876dbd: mov [esp+0x20], ecx
0x02876dc1: mov [esp+0x24], ebx
0x02876dc5: xor ecx, ebp
0x02876dc7: xor ebx, edi
0x02876dc9: and eax, ecx
0x02876dcb: and edx, ebx
0x02876dcd: and eax, 0x00
0x02876dd0: and edx, 0x80000000
0x02876dd6: mov ecx, eax
0x02876dd8: or ecx, edx
0x02876dda: jnz 0x028776a3 ;*ifeq
; - org.jruby.RubyFixnum::subtractionOverflowed@22 (line 358)
; - org.jruby.RubyFixnum::op_minus@15 (line 392)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x02876de0: mov ecx, [esp+0x20]
0x02876de4: mov ebx, [esp+0x24]
0x02876de8: mov ebp, 0x000000ff
0x02876ded: xor edi, edi
0x02876def: cmp ebp, ecx
0x02876df1: mov eax, edi
0x02876df3: sbb eax, ebx
0x02876df5: jl 0x02877399 ;*ifgt
; - org.jruby.RubyFixnum::isInCacheRange@5 (line 177)
; - org.jruby.RubyFixnum::newFixnum@1 (line 170)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x02876dfb: mov ebp, 0xffffff00
0x02876e00: mov edi, -1
0x02876e05: cmp ecx, ebp
0x02876e07: mov eax, ebx
0x02876e09: sbb eax, edi
0x02876e0b: jl 0x02877399 ;*iflt
; - org.jruby.RubyFixnum::isInCacheRange@13 (line 177)
; - org.jruby.RubyFixnum::newFixnum@1 (line 170)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x02876e11: mov ebx, [esp+0x1C]
0x02876e15: mov edi, [ebx+0x88] ;*getfield fixnumCache
; - org.jruby.RubyFixnum::newFixnum@8 (line 171)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x02876e1b: mov ecx, [esp+0x20]
0x02876e1f: mov ebx, [esp+0x24] ;*l2i
; - org.jruby.RubyFixnum::newFixnum@12 (line 171)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x02876e23: mov ebp, ecx
0x02876e25: add ebp, 0x00000100 ;*iadd
; - org.jruby.RubyFixnum::newFixnum@16 (line 171)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x02876e2b: mov ebx, [edi+0x8] ; implicit exception: dispatches to 42433157
0x02876e2e: cmp ebp, ebx
0x02876e30: jnc 0x0287749d
0x02876e36: mov eax, [edi+ecx*4+0x40C]
;*invokevirtual op_minus
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x02876e3d: mov [esp+0x24], eax ;*invokevirtual call
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x02876e41: mov ecx, 0x00000354
0x02876e46: mov ebx, [ecx+0x2550DD40] ; {oop(cache [63] for constant pool [255]/invokedynamic/operands[8] for 'bench/bench_fib_recursive' cache=0x2550dd40)}
0x02876e4c: mov ecx, [ebx+0x10]
0x02876e4f: cmp ecx, a 'java/lang/invoke/AdapterMethodHandle'
; {oop(a 'java/lang/invoke/AdapterMethodHandle')}
0x02876e55: jnz 0x0287781b ;*invokedynamic
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
0x02876e5b: mov ecx, [esp+0x60]
0x02876e5f: mov ebx, [ecx+0x4] ; implicit exception: dispatches to 42432977
0x02876e62: mov ecx, [ebx+0x24]
0x02876e65: cmp ecx, 'org/jruby/RubyBasicObject'
; {oop('org/jruby/RubyBasicObject')}
0x02876e6b: jnz 0x02877541
0x02876e71: mov ecx, [esp+0x60] ;*checkcast
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@2 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
0x02876e75: mov ebp, [ecx+0xC] ;*getfield metaClass
; - org.jruby.RubyBasicObject::getMetaClass@1 (line 536)
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@5 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
0x02876e78: mov ecx, [ebp+0x18] ; implicit exception: dispatches to 42432997
0x02876e7b: cmp ecx, 0x00000278
0x02876e81: jnz 0x0287765d ;*if_icmpne
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@11 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
0x02876e87: mov ecx, a 'java/lang/Class' = 'java/lang/Boolean'
; {oop(a 'java/lang/Class' = 'java/lang/Boolean')}
0x02876e8c: mov ecx, [ecx+0x68] ;*areturn
; - java.lang.Boolean::valueOf@13 (line 149)
; - java.lang.invoke.MethodHandle::invokeExact@1
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
0x02876e8f: movzx eax, [ecx+0x8]
0x02876e93: test eax, eax
0x02876e95: jz 0x028776c1 ;*ifeq
; - java.lang.invoke.MethodHandleImpl::selectAlternative@1 (line 1025)
; - java.lang.invoke.MethodHandle::invokeExact@20
; - java.lang.invoke.MethodHandle::invokeExact@10
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
0x02876e9b: mov ebp, a 'java/lang/invoke/AdapterMethodHandle'
; {oop(a 'java/lang/invoke/AdapterMethodHandle')}
0x02876ea0: mov [esp+0x20], ebp ;*areturn
; - java.lang.invoke.MethodHandleImpl::selectAlternative@9 (line 1025)
; - java.lang.invoke.MethodHandle::invokeExact@20
; - java.lang.invoke.MethodHandle::invokeExact@10
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
0x02876ea4: mov ebp, [esp+0x24]
0x02876ea8: mov esi, [ebp+0x4] ; implicit exception: dispatches to 42433013
0x02876eab: mov ecx, [esi+0x18]
0x02876eae: cmp ecx, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x02876eb4: jnz 0x02877141 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@17
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
0x02876eba: mov edx, [ebx+0x18] ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@37
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
0x02876ebd: cmp edx, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x02876ec3: jnz 0x02877171 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@31
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
0x02876ec9: cmp edx, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x02876ecf: jnz 0x028771a5 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@37
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
0x02876ed5: mov ecx, [esp+0x20]
0x02876ed9: mov edx, [esp+0x30]
0x02876edd: mov edi, [esp+0x60]
0x02876ee1: mov [esp], edi
0x02876ee4: mov [esp+0x4], edi
0x02876ee8: mov ebp, "fib_ruby" ; {oop("fib_ruby")}
0x02876eed: mov [esp+0x8], ebp
0x02876ef1: push [esp+0x24]
0x02876ef5: pop [esp+0xC]
0x02876ef9: mov ebp, esp
0x02876efb: call 0x0282d0e0 ; OopMap{[96]=Oop [48]=Oop [52]=Oop off=1120}
;*invokespecial invokeExact
; - java.lang.invoke.MethodHandle::invokeExact@63
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
; {optimized virtual_call}
0x02876f00: mov esp, ebp ;*invokespecial invokeExact
; - java.lang.invoke.MethodHandle::invokeExact@63
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
0x02876f02: mov ebx, eax
0x02876f04: mov esi, [eax+0x4] ; implicit exception: dispatches to 42433033
0x02876f07: mov ebp, [esi+0x18]
0x02876f0a: cmp ebp, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x02876f10: jnz 0x028771d9 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@30
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
0x02876f16: cmp ebp, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x02876f1c: jnz 0x0287720d ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@40
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
0x02876f22: mov [esp+0x68], ebx ;*synchronization entry
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@-1
0x02876f26: mov ecx, 0x00000364
0x02876f2b: mov ebx, [ecx+0x2550DD40] ; {oop(cache [63] for constant pool [255]/invokedynamic/operands[8] for 'bench/bench_fib_recursive' cache=0x2550dd40)}
0x02876f31: mov ecx, [ebx+0x10]
0x02876f34: cmp ecx, a 'java/lang/invoke/AdapterMethodHandle'
; {oop(a 'java/lang/invoke/AdapterMethodHandle')}
0x02876f3a: jnz 0x028777ad ;*invokedynamic
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
0x02876f40: mov ebx, [esp+0x34]
0x02876f44: mov edx, [ebx+0x4] ; implicit exception: dispatches to 42433053
0x02876f47: mov ecx, [edx+0x24]
0x02876f4a: cmp ecx, 'org/jruby/RubyBasicObject'
; {oop('org/jruby/RubyBasicObject')}
0x02876f50: jnz 0x02877551
0x02876f56: mov ecx, [esp+0x34] ;*checkcast
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@2 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
0x02876f5a: mov ebp, [ecx+0xC] ;*getfield metaClass
; - org.jruby.RubyBasicObject::getMetaClass@1 (line 536)
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@5 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
0x02876f5d: mov ecx, [ebp+0x18] ; implicit exception: dispatches to 42433073
0x02876f60: cmp ecx, 0x000001ef
0x02876f66: jnz 0x0287766a ;*if_icmpne
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@11 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
0x02876f6c: mov ecx, a 'java/lang/Class' = 'java/lang/Boolean'
; {oop(a 'java/lang/Class' = 'java/lang/Boolean')}
0x02876f71: mov ecx, [ecx+0x68] ;*areturn
; - java.lang.Boolean::valueOf@13 (line 149)
; - java.lang.invoke.MethodHandle::invokeExact@1
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
0x02876f74: movzx eax, [ecx+0x8]
0x02876f78: test eax, eax
0x02876f7a: jz 0x028776cf ;*ifeq
; - java.lang.invoke.MethodHandleImpl::selectAlternative@1 (line 1025)
; - java.lang.invoke.MethodHandle::invokeExact@20
; - java.lang.invoke.MethodHandle::invokeExact@10
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
0x02876f80: mov ebp, a 'java/lang/invoke/BoundMethodHandle'
; {oop(a 'java/lang/invoke/BoundMethodHandle')}
0x02876f85: mov [esp+0x64], ebp ;*areturn
; - java.lang.invoke.MethodHandleImpl::selectAlternative@9 (line 1025)
; - java.lang.invoke.MethodHandle::invokeExact@20
; - java.lang.invoke.MethodHandle::invokeExact@10
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
0x02876f89: mov ebp, [esp+0x68]
0x02876f8d: mov esi, [ebp+0x4] ; implicit exception: dispatches to 42433089
0x02876f90: mov ecx, [esi+0x18]
0x02876f93: cmp ecx, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x02876f99: jnz 0x02877241 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@17
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
0x02876f9f: mov ecx, [edx+0x18]
0x02876fa2: cmp ecx, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x02876fa8: jnz 0x02877271 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@31
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
0x02876fae: mov edx, [esp+0x60]
0x02876fb2: mov esi, [edx+0x4] ; implicit exception: dispatches to 42433109
0x02876fb5: mov ecx, [esi+0x18]
0x02876fb8: cmp ecx, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x02876fbe: jnz 0x028772a5 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@37
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
0x02876fc4: mov ecx, [esp+0x64]
0x02876fc8: mov edx, [esp+0x30]
0x02876fcc: push [esp+0x60]
0x02876fd0: pop [esp]
0x02876fd3: push [esp+0x34]
0x02876fd7: pop [esp+0x4]
0x02876fdb: mov edi, "+" ; {oop("+")}
0x02876fe0: mov [esp+0x8], edi
0x02876fe4: push [esp+0x68]
0x02876fe8: pop [esp+0xC]
0x02876fec: nop
0x02876fed: mov ebp, esp
0x02876fef: call 0x0282d0e0 ; OopMap{off=1364}
;*invokespecial invokeExact
; - java.lang.invoke.MethodHandle::invokeExact@63
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
; {optimized virtual_call}
0x02876ff4: mov esp, ebp ;*invokespecial invokeExact
; - java.lang.invoke.MethodHandle::invokeExact@63
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
0x02876ff6: mov edx, eax
0x02876ff8: mov esi, [eax+0x4] ; implicit exception: dispatches to 42433125
0x02876ffb: mov ebx, [esi+0x18]
0x02876ffe: cmp ebx, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x02877004: jnz 0x028772d5 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@30
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
0x0287700a: cmp ebx, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x02877010: jz 0x02876b4b
0x02877016: mov eax, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x0287701b: mov edi, [esi+0x1C]
0x0287701e: mov ecx, [edi+0x8]
0x02877021: add edi, 0x0000000c
0x02877024: test eax, eax
0x02877026: repnz scas eax, es:[edi]
0x02877028: jnz 0x02877031
0x0287702e: mov [esi+0x18], eax
0x02877031: jz 0x02876b4b
0x02877037: mov ecx, 0xffffffde
0x0287703c: mov ebp, edx
0x0287703e: nop
0x0287703f: call 0x0282dba0 ; OopMap{ebp=Oop off=1444}
;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@40
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
; {runtime_call}
0x02877044: call 0x0105a9d0 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@40
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
; {runtime_call}
0x02877049: mov eax, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x0287704e: mov edi, [esi+0x1C]
0x02877051: mov ecx, [edi+0x8]
0x02877054: add edi, 0x0000000c
0x02877057: test eax, eax
0x02877059: repnz scas eax, es:[edi]
0x0287705b: jnz 0x02877064
0x02877061: mov [esi+0x18], eax
0x02877064: jz 0x02876cdc
0x0287706a: mov ecx, 0xffffffde
0x0287706f: call 0x0282dba0 ; OopMap{[52]=Oop off=1492}
;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@17
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
; {runtime_call}
0x02877074: call 0x0105a9d0 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@17
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
; {runtime_call}
0x02877079: mov esi, ebx
0x0287707b: mov eax, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x02877080: mov edi, [esi+0x1C]
0x02877083: mov ecx, [edi+0x8]
0x02877086: add edi, 0x0000000c
0x02877089: test eax, eax
0x0287708b: repnz scas eax, es:[edi]
0x0287708d: jnz 0x02877096
0x02877093: mov [esi+0x18], eax
0x02877096: jz 0x02876ceb
0x0287709c: mov ecx, 0xffffffde
0x028770a1: nop
0x028770a3: call 0x0282dba0 ; OopMap{[96]=Oop off=1544}
;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@31
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
; {runtime_call}
0x028770a8: call 0x0105a9d0 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@31
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
; {runtime_call}
0x028770ad: mov esi, ebx
0x028770af: mov eax, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x028770b4: mov edi, [esi+0x1C]
0x028770b7: mov ecx, [edi+0x8]
0x028770ba: add edi, 0x0000000c
0x028770bd: test eax, eax
0x028770bf: repnz scas eax, es:[edi]
0x028770c1: jnz 0x028770ca
0x028770c7: mov [esi+0x18], eax
0x028770ca: jz 0x02876cf7
0x028770d0: mov ecx, 0xffffffde
0x028770d5: nop
0x028770d7: call 0x0282dba0 ; OopMap{[96]=Oop off=1596}
;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@37
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
; {runtime_call}
0x028770dc: call 0x0105a9d0 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@37
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
; {runtime_call}
0x028770e1: mov eax, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x028770e6: mov edi, [esi+0x1C]
0x028770e9: mov ecx, [edi+0x8]
0x028770ec: add edi, 0x0000000c
0x028770ef: test eax, eax
0x028770f1: repnz scas eax, es:[edi]
0x028770f3: jnz 0x028770fc
0x028770f9: mov [esi+0x18], eax
0x028770fc: jz 0x02876d3c
0x02877102: mov ecx, 0xffffffde
0x02877107: call 0x0282dba0 ; OopMap{[52]=Oop off=1644}
;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@30
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
; {runtime_call}
0x0287710c: call 0x0105a9d0 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@30
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
; {runtime_call}
0x02877111: mov eax, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x02877116: mov edi, [esi+0x1C]
0x02877119: mov ecx, [edi+0x8]
0x0287711c: add edi, 0x0000000c
0x0287711f: test eax, eax
0x02877121: repnz scas eax, es:[edi]
0x02877123: jnz 0x0287712c
0x02877129: mov [esi+0x18], eax
0x0287712c: jz 0x02876d48
0x02877132: mov ecx, 0xffffffde
0x02877137: call 0x0282dba0 ; OopMap{[52]=Oop off=1692}
;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@40
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
; {runtime_call}
0x0287713c: call 0x0105a9d0 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@40
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
; {runtime_call}
0x02877141: mov eax, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x02877146: mov edi, [esi+0x1C]
0x02877149: mov ecx, [edi+0x8]
0x0287714c: add edi, 0x0000000c
0x0287714f: test eax, eax
0x02877151: repnz scas eax, es:[edi]
0x02877153: jnz 0x0287715c
0x02877159: mov [esi+0x18], eax
0x0287715c: jz 0x02876eba
0x02877162: mov ecx, 0xffffffde
0x02877167: call 0x0282dba0 ; OopMap{[36]=Oop off=1740}
;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@17
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
; {runtime_call}
0x0287716c: call 0x0105a9d0 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@17
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
; {runtime_call}
0x02877171: mov esi, ebx
0x02877173: mov eax, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x02877178: mov edi, [esi+0x1C]
0x0287717b: mov ecx, [edi+0x8]
0x0287717e: add edi, 0x0000000c
0x02877181: test eax, eax
0x02877183: repnz scas eax, es:[edi]
0x02877185: jnz 0x0287718e
0x0287718b: mov [esi+0x18], eax
0x0287718e: jz 0x02876ec9
0x02877194: mov ecx, 0xffffffde
0x02877199: nop
0x0287719b: call 0x0282dba0 ; OopMap{[96]=Oop off=1792}
;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@31
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
; {runtime_call}
0x028771a0: call 0x0105a9d0 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@31
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
; {runtime_call}
0x028771a5: mov esi, ebx
0x028771a7: mov eax, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x028771ac: mov edi, [esi+0x1C]
0x028771af: mov ecx, [edi+0x8]
0x028771b2: add edi, 0x0000000c
0x028771b5: test eax, eax
0x028771b7: repnz scas eax, es:[edi]
0x028771b9: jnz 0x028771c2
0x028771bf: mov [esi+0x18], eax
0x028771c2: jz 0x02876ed5
0x028771c8: mov ecx, 0xffffffde
0x028771cd: nop
0x028771cf: call 0x0282dba0 ; OopMap{[96]=Oop off=1844}
;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@37
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
; {runtime_call}
0x028771d4: call 0x0105a9d0 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@37
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
; {runtime_call}
0x028771d9: mov eax, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x028771de: mov edi, [esi+0x1C]
0x028771e1: mov ecx, [edi+0x8]
0x028771e4: add edi, 0x0000000c
0x028771e7: test eax, eax
0x028771e9: repnz scas eax, es:[edi]
0x028771eb: jnz 0x028771f4
0x028771f1: mov [esi+0x18], eax
0x028771f4: jz 0x02876f16
0x028771fa: mov ecx, 0xffffffde
0x028771ff: mov ebp, ebx
0x02877201: nop
0x02877203: call 0x0282dba0 ; OopMap{ebp=Oop off=1896}
;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@30
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
; {runtime_call}
0x02877208: call 0x0105a9d0 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@30
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
; {runtime_call}
0x0287720d: mov eax, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x02877212: mov edi, [esi+0x1C]
0x02877215: mov ecx, [edi+0x8]
0x02877218: add edi, 0x0000000c
0x0287721b: test eax, eax
0x0287721d: repnz scas eax, es:[edi]
0x0287721f: jnz 0x02877228
0x02877225: mov [esi+0x18], eax
0x02877228: jz 0x02876f22
0x0287722e: mov ecx, 0xffffffde
0x02877233: mov ebp, ebx
0x02877235: nop
0x02877237: call 0x0282dba0 ; OopMap{ebp=Oop off=1948}
;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@40
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
; {runtime_call}
0x0287723c: call 0x0105a9d0 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@40
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
; {runtime_call}
0x02877241: mov eax, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x02877246: mov edi, [esi+0x1C]
0x02877249: mov ecx, [edi+0x8]
0x0287724c: add edi, 0x0000000c
0x0287724f: test eax, eax
0x02877251: repnz scas eax, es:[edi]
0x02877253: jnz 0x0287725c
0x02877259: mov [esi+0x18], eax
0x0287725c: jz 0x02876f9f
0x02877262: mov ecx, 0xffffffde
0x02877267: call 0x0282dba0 ; OopMap{[104]=Oop off=1996}
;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@17
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
; {runtime_call}
0x0287726c: call 0x0105a9d0 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@17
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
; {runtime_call}
0x02877271: mov esi, edx
0x02877273: mov eax, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x02877278: mov edi, [esi+0x1C]
0x0287727b: mov ecx, [edi+0x8]
0x0287727e: add edi, 0x0000000c
0x02877281: test eax, eax
0x02877283: repnz scas eax, es:[edi]
0x02877285: jnz 0x0287728e
0x0287728b: mov [esi+0x18], eax
0x0287728e: jz 0x02876fae
0x02877294: mov ecx, 0xffffffde
0x02877299: nop
0x0287729b: call 0x0282dba0 ; OopMap{[52]=Oop off=2048}
;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@31
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
; {runtime_call}
0x028772a0: call 0x0105a9d0 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@31
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
; {runtime_call}
0x028772a5: mov eax, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x028772aa: mov edi, [esi+0x1C]
0x028772ad: mov ecx, [edi+0x8]
0x028772b0: add edi, 0x0000000c
0x028772b3: test eax, eax
0x028772b5: repnz scas eax, es:[edi]
0x028772b7: jnz 0x028772c0
0x028772bd: mov [esi+0x18], eax
0x028772c0: jz 0x02876fc4
0x028772c6: mov ecx, 0xffffffde
0x028772cb: call 0x0282dba0 ; OopMap{[96]=Oop off=2096}
;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@37
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
; {runtime_call}
0x028772d0: call 0x0105a9d0 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@37
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
; {runtime_call}
0x028772d5: mov eax, 'org/jruby/runtime/builtin/IRubyObject'
; {oop('org/jruby/runtime/builtin/IRubyObject')}
0x028772da: mov edi, [esi+0x1C]
0x028772dd: mov ecx, [edi+0x8]
0x028772e0: add edi, 0x0000000c
0x028772e3: test eax, eax
0x028772e5: repnz scas eax, es:[edi]
0x028772e7: jnz 0x028772f0
0x028772ed: mov [esi+0x18], eax
0x028772f0: jz 0x0287700a
0x028772f6: mov ecx, 0xffffffde
0x028772fb: mov ebp, edx
0x028772fd: nop
0x028772ff: call 0x0282dba0 ; OopMap{ebp=Oop off=2148}
;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@30
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
; {runtime_call}
0x02877304: call 0x0105a9d0 ;*iconst_0
; - org.jruby.RubyFixnum::isInCacheRange@20 (line 177)
; - org.jruby.RubyFixnum::newFixnum@1 (line 170)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
; {runtime_call}
0x02877309: mov ecx, [esp+0x68]
0x0287730d: mov eax, [ecx+0x34]
0x02877310: lea ecx, [eax+0x20]
0x02877313: mov ebp, [esp+0x68]
0x02877317: cmp ecx, [ebp+0x3C]
0x0287731a: jnc 0x028776fd
0x02877320: mov [ebp+0x34], ecx
0x02877323: prefetchnta [ecx+0x100]
0x0287732a: mov ecx, 'org/jruby/RubyFixnum'
; {oop('org/jruby/RubyFixnum')}
0x0287732f: mov ecx, [ecx+0x64]
0x02877332: mov [eax], ecx
0x02877334: mov [eax+0x4], 'org/jruby/RubyFixnum'
; {oop('org/jruby/RubyFixnum')}
0x0287733b: xor ecx, ecx
0x0287733d: xor ebx, ebx
0x0287733f: mov [eax+0x8], ecx
0x02877342: mov [eax+0xC], ebx
0x02877345: mov [eax+0x10], ecx
0x02877348: mov [eax+0x14], ebx
0x0287734b: mov [eax+0x18], ecx
0x0287734e: mov [eax+0x1C], ebx ;*invokespecial <init>
; - org.jruby.RubyBasicObject::<init>@1 (line 218)
; - org.jruby.RubyObject::<init>@2 (line 116)
; - org.jruby.RubyNumeric::<init>@2 (line 114)
; - org.jruby.RubyInteger::<init>@2 (line 95)
; - org.jruby.RubyFixnum::<init>@5 (line 112)
; - org.jruby.RubyFixnum::newFixnum@25 (line 173)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02877351: mov ecx, a 'java/lang/Class' = 'org/jruby/RubyBasicObject'
; {oop(a 'java/lang/Class' = 'org/jruby/RubyBasicObject')}
0x02877356: mov ecx, [ecx+0x68] ;*getstatic NULL_OBJECT_ARRAY
; - org.jruby.RubyBasicObject::<init>@5 (line 84)
; - org.jruby.RubyObject::<init>@2 (line 116)
; - org.jruby.RubyNumeric::<init>@2 (line 114)
; - org.jruby.RubyInteger::<init>@2 (line 95)
; - org.jruby.RubyFixnum::<init>@5 (line 112)
; - org.jruby.RubyFixnum::newFixnum@25 (line 173)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02877359: mov ebp, [esp+0x2C]
0x0287735d: mov ebp, [ebp+0xBC]
0x02877363: mov [eax+0x10], ecx
0x02877366: lock add [esp], 0x00 ;*putfield varTable
; - org.jruby.RubyBasicObject::<init>@8 (line 84)
; - org.jruby.RubyObject::<init>@2 (line 116)
; - org.jruby.RubyNumeric::<init>@2 (line 114)
; - org.jruby.RubyInteger::<init>@2 (line 95)
; - org.jruby.RubyFixnum::<init>@5 (line 112)
; - org.jruby.RubyFixnum::newFixnum@25 (line 173)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x0287736b: mov ecx, [esp+0x20]
0x0287736f: mov ebx, [esp+0x24]
0x02877373: mov [eax+0x18], ecx
0x02877376: mov [eax+0x1C], ebx ;*putfield value
; - org.jruby.RubyFixnum::<init>@10 (line 113)
; - org.jruby.RubyFixnum::newFixnum@25 (line 173)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02877379: mov [eax+0xC], ebp ;*putfield metaClass
; - org.jruby.RubyBasicObject::<init>@13 (line 219)
; - org.jruby.RubyObject::<init>@2 (line 116)
; - org.jruby.RubyNumeric::<init>@2 (line 114)
; - org.jruby.RubyInteger::<init>@2 (line 95)
; - org.jruby.RubyFixnum::<init>@5 (line 112)
; - org.jruby.RubyFixnum::newFixnum@25 (line 173)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x0287737c: mov ebx, eax
0x0287737e: mov ecx, eax
0x02877380: shr ebx, 9
0x02877383: mov [ebx+0x394000], 0x00 ;*putfield varTable
; - org.jruby.RubyBasicObject::<init>@8 (line 84)
; - org.jruby.RubyObject::<init>@2 (line 116)
; - org.jruby.RubyNumeric::<init>@2 (line 114)
; - org.jruby.RubyInteger::<init>@2 (line 95)
; - org.jruby.RubyFixnum::<init>@5 (line 112)
; - org.jruby.RubyFixnum::newFixnum@25 (line 173)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x0287738a: shr ecx, 9
0x0287738d: mov [ecx+0x394000], 0x00 ;*synchronization entry
; - org.jruby.RubyFixnum::newFixnum@-1 (line 170)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02877394: jmp 0x02876c5f ;*iconst_0
; - org.jruby.RubyFixnum::isInCacheRange@20 (line 177)
; - org.jruby.RubyFixnum::newFixnum@1 (line 170)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x02877399: mov ecx, [esp+0x68]
0x0287739d: mov eax, [ecx+0x34]
0x028773a0: lea ecx, [eax+0x20]
0x028773a3: mov ebp, [esp+0x68]
0x028773a7: cmp ecx, [ebp+0x3C]
0x028773aa: jnc 0x0287770d
0x028773b0: mov [ebp+0x34], ecx
0x028773b3: prefetchnta [ecx+0x100]
0x028773ba: mov ebx, 'org/jruby/RubyFixnum'
; {oop('org/jruby/RubyFixnum')}
0x028773bf: mov ecx, [ebx+0x64]
0x028773c2: mov [eax], ecx
0x028773c4: mov [eax+0x4], 'org/jruby/RubyFixnum'
; {oop('org/jruby/RubyFixnum')}
0x028773cb: xor ecx, ecx
0x028773cd: xor ebx, ebx
0x028773cf: mov [eax+0x8], ecx
0x028773d2: mov [eax+0xC], ebx
0x028773d5: mov [eax+0x10], ecx
0x028773d8: mov [eax+0x14], ebx
0x028773db: mov [eax+0x18], ecx
0x028773de: mov [eax+0x1C], ebx ;*invokespecial <init>
; - org.jruby.RubyBasicObject::<init>@1 (line 218)
; - org.jruby.RubyObject::<init>@2 (line 116)
; - org.jruby.RubyNumeric::<init>@2 (line 114)
; - org.jruby.RubyInteger::<init>@2 (line 95)
; - org.jruby.RubyFixnum::<init>@5 (line 112)
; - org.jruby.RubyFixnum::newFixnum@25 (line 173)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x028773e1: mov ebx, a 'java/lang/Class' = 'org/jruby/RubyBasicObject'
; {oop(a 'java/lang/Class' = 'org/jruby/RubyBasicObject')}
0x028773e6: mov ecx, [ebx+0x68] ;*getstatic NULL_OBJECT_ARRAY
; - org.jruby.RubyBasicObject::<init>@5 (line 84)
; - org.jruby.RubyObject::<init>@2 (line 116)
; - org.jruby.RubyNumeric::<init>@2 (line 114)
; - org.jruby.RubyInteger::<init>@2 (line 95)
; - org.jruby.RubyFixnum::<init>@5 (line 112)
; - org.jruby.RubyFixnum::newFixnum@25 (line 173)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x028773e9: mov ebx, [esp+0x1C]
0x028773ed: mov ebp, [ebx+0xBC]
0x028773f3: mov [eax+0x10], ecx
0x028773f6: lock add [esp], 0x00 ;*putfield varTable
; - org.jruby.RubyBasicObject::<init>@8 (line 84)
; - org.jruby.RubyObject::<init>@2 (line 116)
; - org.jruby.RubyNumeric::<init>@2 (line 114)
; - org.jruby.RubyInteger::<init>@2 (line 95)
; - org.jruby.RubyFixnum::<init>@5 (line 112)
; - org.jruby.RubyFixnum::newFixnum@25 (line 173)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x028773fb: mov ecx, [esp+0x20]
0x028773ff: mov ebx, [esp+0x24]
0x02877403: mov [eax+0x18], ecx
0x02877406: mov [eax+0x1C], ebx ;*putfield value
; - org.jruby.RubyFixnum::<init>@10 (line 113)
; - org.jruby.RubyFixnum::newFixnum@25 (line 173)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x02877409: mov [eax+0xC], ebp ;*putfield metaClass
; - org.jruby.RubyBasicObject::<init>@13 (line 219)
; - org.jruby.RubyObject::<init>@2 (line 116)
; - org.jruby.RubyNumeric::<init>@2 (line 114)
; - org.jruby.RubyInteger::<init>@2 (line 95)
; - org.jruby.RubyFixnum::<init>@5 (line 112)
; - org.jruby.RubyFixnum::newFixnum@25 (line 173)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x0287740c: mov ebx, eax
0x0287740e: mov ecx, eax
0x02877410: shr ebx, 9
0x02877413: mov [ebx+0x394000], 0x00 ;*putfield varTable
; - org.jruby.RubyBasicObject::<init>@8 (line 84)
; - org.jruby.RubyObject::<init>@2 (line 116)
; - org.jruby.RubyNumeric::<init>@2 (line 114)
; - org.jruby.RubyInteger::<init>@2 (line 95)
; - org.jruby.RubyFixnum::<init>@5 (line 112)
; - org.jruby.RubyFixnum::newFixnum@25 (line 173)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x0287741a: shr ecx, 9
0x0287741d: mov [ecx+0x394000], 0x00 ;*synchronization entry
; - org.jruby.RubyFixnum::newFixnum@-1 (line 170)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x02877424: jmp 0x02876e3d
0x02877429: mov ecx, 0xffffffe4
0x0287742e: mov ebx, [esp+0x1C]
0x02877432: mov [esp+0x68], ebx
0x02877436: nop
0x02877437: call 0x0282dba0 ; OopMap{ebp=Oop [96]=Oop [100]=Oop [104]=Oop [48]=Oop off=2460}
;*aaload
; - org.jruby.ast.executable.AbstractScript::getCallSite0@8 (line 80)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@4 (line 4)
; {runtime_call}
0x0287743c: call 0x0105a9d0 ;*aaload
; - org.jruby.ast.executable.AbstractScript::getCallSite0@8 (line 80)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@4 (line 4)
; {runtime_call}
0x02877441: mov ecx, 0xffffffde
0x02877446: mov ebp, [esp+0x1C]
0x0287744a: mov [esp+0x1C], edx
0x0287744e: mov [esp+0x28], edi
0x02877452: nop
0x02877453: call 0x0282dba0 ; OopMap{ebp=Oop [96]=Oop [100]=Oop [28]=Oop [40]=Oop [48]=Oop off=2488}
;*invokevirtual call
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
; {runtime_call}
0x02877458: call 0x0105a9d0 ;*invokevirtual call
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
; {runtime_call}
0x0287745d: mov ecx, 0xffffffde
0x02877462: mov edi, [esp+0x1C]
0x02877466: mov ebp, edi
0x02877468: mov [esp+0x1C], ebx
0x0287746c: nop
0x0287746f: call 0x0282dba0 ; OopMap{ebp=Oop [96]=Oop [100]=Oop [28]=Oop [48]=Oop off=2516}
;*invokeinterface isTrue
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@17 (line 4)
; {runtime_call}
0x02877474: call 0x0105a9d0 ;*invokeinterface isTrue
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@17 (line 4)
; {runtime_call}
0x02877479: mov ecx, 0xffffffe4
0x0287747e: mov edi, [esp+0x1C]
0x02877482: mov [esp+0x68], edi
0x02877486: mov ebx, [esp+0x30]
0x0287748a: mov [esp+0x20], ebx
0x0287748e: mov [esp+0x28], ebx
0x02877492: nop
0x02877493: call 0x0282dba0 ; OopMap{[96]=Oop [100]=Oop [104]=Oop [32]=Oop [40]=Oop [52]=Oop off=2552}
;*aaload
; - org.jruby.RubyFixnum::newFixnum@17 (line 171)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
; {runtime_call}
0x02877498: call 0x0105a9d0 ;*aaload
; - org.jruby.RubyFixnum::newFixnum@17 (line 171)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
; {runtime_call}
0x0287749d: mov ecx, 0xffffffe4
0x028774a2: mov eax, [esp+0x30]
0x028774a6: mov [esp+0x68], eax
0x028774aa: mov [esp+0x24], edi
0x028774ae: nop
0x028774af: call 0x0282dba0 ; OopMap{[96]=Oop [104]=Oop [36]=Oop [48]=Oop [52]=Oop off=2580}
;*aaload
; - org.jruby.RubyFixnum::newFixnum@17 (line 171)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
; {runtime_call}
0x028774b4: call 0x0105a9d0 ;*aaload
; - org.jruby.RubyFixnum::newFixnum@17 (line 171)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
; {runtime_call}
0x028774b9: mov ecx, 0xffffffe4
0x028774be: mov ebx, [esp+0x1C]
0x028774c2: mov [esp+0x68], ebx
0x028774c6: mov edi, [esp+0x30]
0x028774ca: mov [esp+0x20], edi
0x028774ce: mov [esp+0x28], edi
0x028774d2: nop
0x028774d3: call 0x0282dba0 ; OopMap{ebp=Oop [96]=Oop [100]=Oop [104]=Oop [32]=Oop [40]=Oop off=2616}
;*aaload
; - org.jruby.ast.executable.AbstractScript::getCallSite1@8 (line 81)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@38 (line 7)
; {runtime_call}
0x028774d8: call 0x0105a9d0 ;*aaload
; - org.jruby.ast.executable.AbstractScript::getCallSite1@8 (line 81)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@38 (line 7)
; {runtime_call}
0x028774dd: mov ecx, 0xffffffde
0x028774e2: mov ebp, [esp+0x1C]
0x028774e6: mov edi, [esp+0x30]
0x028774ea: mov [esp+0x1C], edi
0x028774ee: mov [esp+0x24], edi
0x028774f2: mov [esp+0x3C], ebx
0x028774f6: nop
0x028774f7: call 0x0282dba0 ; OopMap{ebp=Oop [96]=Oop [100]=Oop [28]=Oop [36]=Oop [60]=Oop off=2652}
;*invokevirtual call
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
; {runtime_call}
0x028774fc: call 0x0105a9d0 ;*invokevirtual call
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
; {runtime_call}
0x02877501: mov ecx, 0xffffffde
0x02877506: nop
0x02877507: call 0x0282dba0 ; OopMap{[96]=Oop off=2668}
;*checkcast
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@2 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
; {runtime_call}
0x0287750c: call 0x0105a9d0 ;*checkcast
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@2 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
; {runtime_call}
0x02877511: mov ecx, 0xffffffe4
0x02877516: mov edi, [esp+0x30]
0x0287751a: mov [esp+0x1C], edi
0x0287751e: mov [esp+0x24], edi
0x02877522: nop
0x02877523: call 0x0282dba0 ; OopMap{ebp=Oop [96]=Oop [100]=Oop [28]=Oop [36]=Oop [52]=Oop off=2696}
;*aaload
; - org.jruby.ast.executable.AbstractScript::getCallSite2@8 (line 82)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@64 (line 7)
; {runtime_call}
0x02877528: call 0x0105a9d0 ;*aaload
; - org.jruby.ast.executable.AbstractScript::getCallSite2@8 (line 82)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@64 (line 7)
; {runtime_call}
0x0287752d: mov ecx, 0xffffffde
0x02877532: mov ebp, [esp+0x30]
0x02877536: nop
0x02877537: call 0x0282dba0 ; OopMap{ebp=Oop [96]=Oop [100]=Oop [44]=Oop [52]=Oop off=2716}
;*invokevirtual call
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
; {runtime_call}
0x0287753c: call 0x0105a9d0 ;*invokevirtual call
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
; {runtime_call}
0x02877541: mov ecx, 0xffffffde
0x02877546: nop
0x02877547: call 0x0282dba0 ; OopMap{[96]=Oop off=2732}
;*checkcast
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@2 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
; {runtime_call}
0x0287754c: call 0x0105a9d0 ;*checkcast
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@2 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
; {runtime_call}
0x02877551: mov ecx, 0xffffffde
0x02877556: nop
0x02877557: call 0x0282dba0 ; OopMap{[52]=Oop off=2748}
;*checkcast
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@2 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
; {runtime_call}
0x0287755c: call 0x0105a9d0 ;*checkcast
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@2 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
; {runtime_call}
0x02877561: cmp ebx, 'org/jruby/RubyFloat'
; {oop('org/jruby/RubyFloat')}
0x02877567: jnz 0x02877575 ;*instanceof
; - org.jruby.runtime.callsite.LtCallSite::call@29 (line 17)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
0x02877569: movzx ecx, [eax+0x2D]
0x0287756d: test ecx, ecx
0x0287756f: jz 0x028776dd ;*aload_0
; - org.jruby.runtime.callsite.LtCallSite::call@57 (line 20)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
0x02877575: movsd [esp+0x20], xmm0
0x0287757b: mov ecx, edi
0x0287757d: mov ebx, [esp+0x60]
0x02877581: mov [esp+0x8], ebx
0x02877585: mov ebp, [esp+0x64]
0x02877589: mov [esp+0xC], ebp
0x0287758d: mov ebp, 2
0x02877592: xor edi, edi
0x02877594: mov [esp], ebp
0x02877597: mov [esp+0x4], edi
0x0287759b: mov ebp, [esp+0x1C]
0x0287759f: call 0x0282d0e0 ; OopMap{ebp=Oop [96]=Oop [100]=Oop [28]=Oop [40]=Oop [48]=Oop off=2820}
;*invokespecial call
; - org.jruby.runtime.callsite.LtCallSite::call@63 (line 20)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
; {optimized virtual_call}
0x028775a4: movsd xmm0, [esp+0x20]
0x028775aa: mov ebx, eax
0x028775ac: jmp 0x02876b2d
0x028775b1: mov ecx, [esp+0x28]
0x028775b5: cmp ecx, 'org/jruby/RubyFloat'
; {oop('org/jruby/RubyFloat')}
0x028775bb: jnz 0x028775cd ;*instanceof
; - org.jruby.runtime.callsite.MinusCallSite::call@29 (line 17)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x028775bd: mov ebp, [esp+0x2C]
0x028775c1: movzx ecx, [ebp+0x2D]
0x028775c5: test ecx, ecx
0x028775c7: jz 0x02877721 ;*aload_0
; - org.jruby.runtime.callsite.MinusCallSite::call@57 (line 20)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x028775cd: mov ecx, ebx
0x028775cf: mov edx, [esp+0x30]
0x028775d3: mov ebx, [esp+0x60]
0x028775d7: mov [esp+0x8], ebx
0x028775db: mov ebp, [esp+0x64]
0x028775df: mov [esp+0xC], ebp
0x028775e3: mov ebp, 2
0x028775e8: xor edi, edi
0x028775ea: mov [esp], ebp
0x028775ed: mov [esp+0x4], edi
0x028775f1: nop
0x028775f3: call 0x0282d0e0 ; OopMap{[96]=Oop [100]=Oop [28]=Oop [40]=Oop [48]=Oop off=2904}
;*invokespecial call
; - org.jruby.runtime.callsite.MinusCallSite::call@63 (line 20)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
; {optimized virtual_call}
0x028775f8: mov [esp+0x34], eax
0x028775fc: jmp 0x02876c63
0x02877601: mov ecx, a 'java/lang/Class' = 'java/lang/Boolean'
; {oop(a 'java/lang/Class' = 'java/lang/Boolean')}
0x02877606: mov ecx, [ecx+0x6C] ;*getstatic FALSE
; - java.lang.Boolean::valueOf@10 (line 149)
; - java.lang.invoke.MethodHandle::invokeExact@1
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
0x02877609: jmp 0x02876cb1
0x0287760e: mov ebx, [esp+0x28]
0x02877612: cmp ebx, 'org/jruby/RubyFloat'
; {oop('org/jruby/RubyFloat')}
0x02877618: jnz 0x02877626 ;*instanceof
; - org.jruby.runtime.callsite.MinusCallSite::call@29 (line 17)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x0287761a: movzx ecx, [ecx+0x2D]
0x0287761e: test ecx, ecx
0x02877620: jz 0x02877739 ;*aload_0
; - org.jruby.runtime.callsite.MinusCallSite::call@57 (line 20)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x02877626: mov ecx, [esp+0x38]
0x0287762a: mov edx, [esp+0x30]
0x0287762e: mov ebx, [esp+0x60]
0x02877632: mov [esp+0x8], ebx
0x02877636: mov ebp, [esp+0x64]
0x0287763a: mov [esp+0xC], ebp
0x0287763e: mov ebp, 1
0x02877643: xor edi, edi
0x02877645: mov [esp], ebp
0x02877648: mov [esp+0x4], edi
0x0287764c: nop
0x0287764f: call 0x0282d0e0 ; OopMap{[96]=Oop [48]=Oop [52]=Oop off=2996}
;*invokespecial call
; - org.jruby.runtime.callsite.MinusCallSite::call@63 (line 20)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
; {optimized virtual_call}
0x02877654: mov [esp+0x24], eax
0x02877658: jmp 0x02876e41
0x0287765d: mov ebp, a 'java/lang/Class' = 'java/lang/Boolean'
; {oop(a 'java/lang/Class' = 'java/lang/Boolean')}
0x02877662: mov ecx, [ebp+0x6C] ;*getstatic FALSE
; - java.lang.Boolean::valueOf@10 (line 149)
; - java.lang.invoke.MethodHandle::invokeExact@1
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
0x02877665: jmp 0x02876e8f
0x0287766a: mov ebp, a 'java/lang/Class' = 'java/lang/Boolean'
; {oop(a 'java/lang/Class' = 'java/lang/Boolean')}
0x0287766f: mov ecx, [ebp+0x6C] ;*getstatic FALSE
; - java.lang.Boolean::valueOf@10 (line 149)
; - java.lang.invoke.MethodHandle::invokeExact@1
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
0x02877672: jmp 0x02876f74
0x02877677: mov ecx, esi
0x02877679: mov edx, [esp+0x30]
0x0287767d: mov ebp, 2
0x02877682: xor edi, edi
0x02877684: mov [esp], ebp
0x02877687: mov [esp+0x4], edi
0x0287768b: call 0x0282d0e0 ; OopMap{[96]=Oop [100]=Oop [28]=Oop [40]=Oop [48]=Oop off=3056}
;*invokespecial subtractAsBignum
; - org.jruby.RubyFixnum::op_minus@24 (line 393)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
; {optimized virtual_call}
0x02877690: jmp 0x02876c5f
0x02877695: mov ebp, a 'java/lang/invoke/BoundMethodHandle'
; {oop(a 'java/lang/invoke/BoundMethodHandle')}
0x0287769a: mov [esp+0x38], ebp
0x0287769e: jmp 0x02876cc6
0x028776a3: mov ecx, esi
0x028776a5: mov edx, [esp+0x30]
0x028776a9: mov ebp, 1
0x028776ae: xor edi, edi
0x028776b0: mov [esp], ebp
0x028776b3: mov [esp+0x4], edi
0x028776b7: call 0x0282d0e0 ; OopMap{[96]=Oop [48]=Oop [52]=Oop off=3100}
;*invokespecial subtractAsBignum
; - org.jruby.RubyFixnum::op_minus@24 (line 393)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
; {optimized virtual_call}
0x028776bc: jmp 0x02876e3d
0x028776c1: mov ecx, a 'java/lang/invoke/BoundMethodHandle'
; {oop(a 'java/lang/invoke/BoundMethodHandle')}
0x028776c6: mov [esp+0x20], ecx
0x028776ca: jmp 0x02876ea4
0x028776cf: mov ecx, a 'java/lang/invoke/BoundMethodHandle'
; {oop(a 'java/lang/invoke/BoundMethodHandle')}
0x028776d4: mov [esp+0x64], ecx
0x028776d8: jmp 0x02876f89
0x028776dd: movsd [esp+0x20], xmm0
0x028776e3: mov ecx, [esp+0x64] ;*checkcast
; - org.jruby.runtime.callsite.LtCallSite::call@46 (line 18)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
0x028776e7: mov ebp, [esp+0x1C]
0x028776eb: call 0x0282d0e0 ; OopMap{ebp=Oop [96]=Oop [100]=Oop [28]=Oop [40]=Oop [48]=Oop off=3152}
;*invokevirtual op_lt
; - org.jruby.runtime.callsite.LtCallSite::call@53 (line 18)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
; {optimized virtual_call}
0x028776f0: movsd xmm0, [esp+0x20]
0x028776f6: mov ebx, eax
0x028776f8: jmp 0x02876b2d
0x028776fd: mov ecx, 'org/jruby/RubyFixnum'
; {oop('org/jruby/RubyFixnum')}
0x02877702: nop
0x02877703: call 0x028505e0 ; OopMap{[96]=Oop [100]=Oop [28]=Oop [40]=Oop [44]=Oop [48]=Oop off=3176}
;*new ; - org.jruby.RubyFixnum::newFixnum@19 (line 173)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
; {runtime_call}
0x02877708: jmp 0x02877351
0x0287770d: mov ebp, [esp+0x1C]
0x02877711: mov ecx, 'org/jruby/RubyFixnum'
; {oop('org/jruby/RubyFixnum')}
0x02877716: nop
0x02877717: call 0x028505e0 ; OopMap{ebp=Oop [96]=Oop [28]=Oop [48]=Oop [52]=Oop off=3196}
;*new ; - org.jruby.RubyFixnum::newFixnum@19 (line 173)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
; {runtime_call}
0x0287771c: jmp 0x028773e1
0x02877721: mov ecx, [esp+0x64] ;*checkcast
; - org.jruby.runtime.callsite.MinusCallSite::call@46 (line 18)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02877725: mov edx, [esp+0x30]
0x02877729: nop
0x0287772b: call 0x0282d0e0 ; OopMap{[96]=Oop [100]=Oop [28]=Oop [40]=Oop [48]=Oop off=3216}
;*invokevirtual op_minus
; - org.jruby.runtime.callsite.MinusCallSite::call@53 (line 18)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
; {optimized virtual_call}
0x02877730: mov [esp+0x34], eax
0x02877734: jmp 0x02876c63
0x02877739: mov ecx, [esp+0x64] ;*checkcast
; - org.jruby.runtime.callsite.MinusCallSite::call@46 (line 18)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x0287773d: movsd xmm0, [0x2876A88] ; {section_word}
0x02877745: mov edx, [esp+0x30]
0x02877749: nop
0x0287774b: call 0x0282d0e0 ; OopMap{[96]=Oop [48]=Oop [52]=Oop off=3248}
;*invokevirtual op_minus
; - org.jruby.runtime.callsite.MinusCallSite::call@53 (line 18)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
; {optimized virtual_call}
0x02877750: mov [esp+0x24], eax
0x02877754: jmp 0x02876e41
0x02877759: mov ecx, 0xffffffde
0x0287775e: mov ebp, [esp+0x1C]
0x02877762: mov [esp+0x1C], edx
0x02877766: mov [esp+0x2C], edi
0x0287776a: nop
0x0287776b: call 0x0282dba0 ; OopMap{ebp=Oop [96]=Oop [100]=Oop [28]=Oop [44]=Oop [48]=Oop off=3280}
;*instanceof
; - org.jruby.runtime.callsite.LtCallSite::call@1 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
; {runtime_call}
0x02877770: call 0x0105a9d0 ;*instanceof
; - org.jruby.runtime.callsite.LtCallSite::call@1 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
; {runtime_call}
0x02877775: mov ecx, 0xffffffde
0x0287777a: mov ebp, [esp+0x1C]
0x0287777e: mov edi, [esp+0x30]
0x02877782: mov [esp+0x1C], edi
0x02877786: mov [esp+0x24], edi
0x0287778a: mov [esp+0x40], ebx
0x0287778e: nop
0x0287778f: call 0x0282dba0 ; OopMap{ebp=Oop [96]=Oop [100]=Oop [28]=Oop [36]=Oop [64]=Oop off=3316}
;*instanceof
; - org.jruby.runtime.callsite.MinusCallSite::call@1 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
; {runtime_call}
0x02877794: call 0x0105a9d0 ;*instanceof
; - org.jruby.runtime.callsite.MinusCallSite::call@1 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
; {runtime_call}
0x02877799: mov ecx, 0xffffffde
0x0287779e: mov ebp, [esp+0x30]
0x028777a2: nop
0x028777a3: call 0x0282dba0 ; OopMap{ebp=Oop [96]=Oop [100]=Oop [52]=Oop [56]=Oop off=3336}
;*instanceof
; - org.jruby.runtime.callsite.MinusCallSite::call@1 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
; {runtime_call}
0x028777a8: call 0x0105a9d0 ;*instanceof
; - org.jruby.runtime.callsite.MinusCallSite::call@1 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
; {runtime_call}
0x028777ad: mov ecx, [ebx+0x10]
0x028777b0: mov edx, [esp+0x30]
0x028777b4: mov ebx, [esp+0x60]
0x028777b8: mov [esp], ebx
0x028777bb: mov ebp, [esp+0x34]
0x028777bf: mov [esp+0x4], ebp
0x028777c3: mov ebx, "+" ; {oop("+")}
0x028777c8: mov [esp+0x8], ebx
0x028777cc: mov ebx, [esp+0x68]
0x028777d0: mov [esp+0xC], ebx
0x028777d4: nop
0x028777d5: mov ebp, esp
0x028777d7: call 0x0282d0e0 ; OopMap{off=3388}
;*invokedynamic
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
; {optimized virtual_call}
0x028777dc: mov esp, ebp ;*invokedynamic
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
0x028777de: mov edx, eax
0x028777e0: jmp 0x02876b4b
0x028777e5: mov ecx, [ebx+0x10]
0x028777e8: mov edx, [esp+0x30]
0x028777ec: mov ebx, [esp+0x60]
0x028777f0: mov [esp], ebx
0x028777f3: mov [esp+0x4], ebx
0x028777f7: mov ebx, "fib_ruby" ; {oop("fib_ruby")}
0x028777fc: mov [esp+0x8], ebx
0x02877800: mov ebx, [esp+0x34]
0x02877804: mov [esp+0xC], ebx
0x02877808: nop
0x02877809: mov ebp, esp
0x0287780b: call 0x0282d0e0 ; OopMap{[96]=Oop [100]=Oop [28]=Oop [40]=Oop [48]=Oop off=3440}
;*invokedynamic
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
; {optimized virtual_call}
0x02877810: mov esp, ebp ;*invokedynamic
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
0x02877812: mov [esp+0x34], eax
0x02877816: jmp 0x02876d48
0x0287781b: mov ecx, [ebx+0x10]
0x0287781e: mov edx, [esp+0x30]
0x02877822: mov ebp, [esp+0x60]
0x02877826: mov [esp], ebp
0x02877829: mov [esp+0x4], ebp
0x0287782d: mov ebp, "fib_ruby" ; {oop("fib_ruby")}
0x02877832: mov [esp+0x8], ebp
0x02877836: mov ebp, [esp+0x24]
0x0287783a: mov [esp+0xC], ebp
0x0287783e: nop
0x02877841: mov ebp, esp
0x02877843: call 0x0282d0e0 ; OopMap{[96]=Oop [48]=Oop [52]=Oop off=3496}
;*invokedynamic
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
; {optimized virtual_call}
0x02877848: mov esp, ebp ;*invokedynamic
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
0x0287784a: mov [esp+0x68], eax
0x0287784e: jmp 0x02876f26
0x02877853: mov ecx, 0xfffffff6
0x02877858: nop
0x0287785b: call 0x0282dba0 ; OopMap{off=3520}
;*invokevirtual getCallSite0
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@4 (line 4)
; {runtime_call}
0x02877860: call 0x0105a9d0 ;*invokevirtual getCallSite0
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@4 (line 4)
; {runtime_call}
0x02877865: mov ecx, 0xfffffff6
0x0287786a: nop
0x0287786b: call 0x0282dba0 ; OopMap{off=3536}
;*getfield callSites
; - org.jruby.ast.executable.AbstractScript::getCallSite0@4 (line 80)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@4 (line 4)
; {runtime_call}
0x02877870: call 0x0105a9d0 ;*getfield callSites
; - org.jruby.ast.executable.AbstractScript::getCallSite0@4 (line 80)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@4 (line 4)
; {runtime_call}
0x02877875: mov ecx, 0xfffffff6
0x0287787a: nop
0x0287787b: call 0x0282dba0 ; OopMap{off=3552}
;*aaload
; - org.jruby.ast.executable.AbstractScript::getCallSite0@8 (line 80)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@4 (line 4)
; {runtime_call}
0x02877880: call 0x0105a9d0 ;*aaload
; - org.jruby.ast.executable.AbstractScript::getCallSite0@8 (line 80)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@4 (line 4)
; {runtime_call}
0x02877885: mov ecx, 0xfffffff6
0x0287788a: mov ebp, edx
0x0287788c: nop
0x0287788f: call 0x0282dba0 ; OopMap{ebp=Oop [96]=Oop [100]=Oop off=3572}
;*invokevirtual call
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
; {runtime_call}
0x02877894: call 0x0105a9d0 ;*invokevirtual call
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
; {runtime_call}
0x02877899: mov ecx, 0xfffffff4
0x0287789e: mov ebp, [esp+0x1C]
0x028778a2: mov [esp+0x1C], edx
0x028778a6: mov [esp+0x24], edi
0x028778aa: nop
0x028778ab: call 0x0282dba0 ; OopMap{ebp=Oop [96]=Oop [100]=Oop [28]=Oop [36]=Oop [48]=Oop off=3600}
;*instanceof
; - org.jruby.runtime.callsite.LtCallSite::call@1 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
; {runtime_call}
0x028778b0: call 0x0105a9d0 ;*instanceof
; - org.jruby.runtime.callsite.LtCallSite::call@1 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
; {runtime_call}
0x028778b5: mov ecx, 0xfffffff6
0x028778ba: nop
0x028778bb: call 0x0282dba0 ; OopMap{off=3616}
;*getfield runtime
; - org.jruby.runtime.callsite.LtCallSite::call@8 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
; {runtime_call}
0x028778c0: call 0x0105a9d0 ;*getfield runtime
; - org.jruby.runtime.callsite.LtCallSite::call@8 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
; {runtime_call}
0x028778c5: mov ecx, 0xfffffff6
0x028778ca: nop
0x028778cb: call 0x0282dba0 ; OopMap{off=3632}
;*invokevirtual isFixnumReopened
; - org.jruby.runtime.callsite.LtCallSite::call@11 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
; {runtime_call}
0x028778d0: call 0x0105a9d0 ;*invokevirtual isFixnumReopened
; - org.jruby.runtime.callsite.LtCallSite::call@11 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
; {runtime_call}
0x028778d5: mov ecx, 0xfffffff6
0x028778da: nop
0x028778db: call 0x0282dba0 ; OopMap{off=3648}
;*invokeinterface isTrue
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@17 (line 4)
; {runtime_call}
0x028778e0: call 0x0105a9d0 ;*invokeinterface isTrue
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@17 (line 4)
; {runtime_call}
0x028778e5: mov ecx, 0xfffffff6
0x028778ea: nop
0x028778eb: call 0x0282dba0 ; OopMap{off=3664}
;*getfield callSites
; - org.jruby.ast.executable.AbstractScript::getCallSite1@4 (line 81)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@38 (line 7)
; {runtime_call}
0x028778f0: call 0x0105a9d0 ;*getfield callSites
; - org.jruby.ast.executable.AbstractScript::getCallSite1@4 (line 81)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@38 (line 7)
; {runtime_call}
0x028778f5: mov ecx, 0xfffffff6
0x028778fa: nop
0x028778fb: call 0x0282dba0 ; OopMap{off=3680}
;*aaload
; - org.jruby.ast.executable.AbstractScript::getCallSite1@8 (line 81)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@38 (line 7)
; {runtime_call}
0x02877900: call 0x0105a9d0 ;*aaload
; - org.jruby.ast.executable.AbstractScript::getCallSite1@8 (line 81)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@38 (line 7)
; {runtime_call}
0x02877905: mov ecx, 0xfffffff6
0x0287790a: mov ebp, [esp+0x30]
0x0287790e: nop
0x0287790f: call 0x0282dba0 ; OopMap{ebp=Oop [96]=Oop [100]=Oop off=3700}
;*invokevirtual call
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
; {runtime_call}
0x02877914: call 0x0105a9d0 ;*invokevirtual call
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
; {runtime_call}
0x02877919: mov ecx, 0xfffffff6
0x0287791e: nop
0x0287791f: call 0x0282dba0 ; OopMap{off=3716}
;*invokevirtual isFixnumReopened
; - org.jruby.runtime.callsite.MinusCallSite::call@11 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
; {runtime_call}
0x02877924: call 0x0105a9d0 ;*invokevirtual isFixnumReopened
; - org.jruby.runtime.callsite.MinusCallSite::call@11 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
; {runtime_call}
0x02877929: mov ecx, 0xfffffff4
0x0287792e: mov ebp, [esp+0x1C]
0x02877932: mov edi, [esp+0x30]
0x02877936: mov [esp+0x68], edi
0x0287793a: nop
0x0287793b: call 0x0282dba0 ; OopMap{ebp=Oop [96]=Oop [100]=Oop [104]=Oop [52]=Oop off=3744}
;*checkcast
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@2 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
; {runtime_call}
0x02877940: call 0x0105a9d0 ;*checkcast
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@2 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
; {runtime_call}
0x02877945: mov ecx, 0xfffffff6
0x0287794a: nop
0x0287794b: call 0x0282dba0 ; OopMap{off=3760}
;*invokevirtual getCacheToken
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@8 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
; {runtime_call}
0x02877950: call 0x0105a9d0 ;*invokevirtual getCacheToken
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@8 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
; {runtime_call}
0x02877955: mov ecx, 0xfffffff4
0x0287795a: mov ebp, [esp+0x1C]
0x0287795e: mov ebx, [esp+0x30]
0x02877962: mov [esp+0x68], ebx
0x02877966: nop
0x02877967: call 0x0282dba0 ; OopMap{ebp=Oop [96]=Oop [100]=Oop [104]=Oop [56]=Oop off=3788}
;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@17
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
; {runtime_call}
0x0287796c: call 0x0105a9d0 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@17
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
; {runtime_call}
0x02877971: mov ecx, 0xfffffff4
0x02877976: mov ebp, [esp+0x1C]
0x0287797a: mov ebx, [esp+0x30]
0x0287797e: mov [esp+0x1C], ebx
0x02877982: nop
0x02877983: call 0x0282dba0 ; OopMap{ebp=Oop [96]=Oop [100]=Oop [28]=Oop [48]=Oop off=3816}
;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@30
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
; {runtime_call}
0x02877988: call 0x0105a9d0 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@30
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
; {runtime_call}
0x0287798d: mov ecx, 0xfffffff6
0x02877992: nop
0x02877993: call 0x0282dba0 ; OopMap{off=3832}
;*getfield callSites
; - org.jruby.ast.executable.AbstractScript::getCallSite2@4 (line 82)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@64 (line 7)
; {runtime_call}
0x02877998: call 0x0105a9d0 ;*getfield callSites
; - org.jruby.ast.executable.AbstractScript::getCallSite2@4 (line 82)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@64 (line 7)
; {runtime_call}
0x0287799d: mov ecx, 0xfffffff6
0x028779a2: nop
0x028779a3: call 0x0282dba0 ; OopMap{off=3848}
;*aaload
; - org.jruby.ast.executable.AbstractScript::getCallSite2@8 (line 82)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@64 (line 7)
; {runtime_call}
0x028779a8: call 0x0105a9d0 ;*aaload
; - org.jruby.ast.executable.AbstractScript::getCallSite2@8 (line 82)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@64 (line 7)
; {runtime_call}
0x028779ad: mov ecx, 0xfffffff6
0x028779b2: mov ebp, [esp+0x30]
0x028779b6: nop
0x028779b7: call 0x0282dba0 ; OopMap{ebp=Oop [96]=Oop [100]=Oop off=3868}
;*invokevirtual call
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
; {runtime_call}
0x028779bc: call 0x0105a9d0 ;*invokevirtual call
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
; {runtime_call}
0x028779c1: mov ecx, 0xfffffff6
0x028779c6: nop
0x028779c7: call 0x0282dba0 ; OopMap{off=3884}
;*invokevirtual isFixnumReopened
; - org.jruby.runtime.callsite.MinusCallSite::call@11 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
; {runtime_call}
0x028779cc: call 0x0105a9d0 ;*invokevirtual isFixnumReopened
; - org.jruby.runtime.callsite.MinusCallSite::call@11 (line 15)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
; {runtime_call}
0x028779d1: mov ecx, 0xfffffff4
0x028779d6: mov ebp, [esp+0x30]
0x028779da: nop
0x028779db: call 0x0282dba0 ; OopMap{ebp=Oop [96]=Oop [36]=Oop [52]=Oop off=3904}
;*checkcast
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@2 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
; {runtime_call}
0x028779e0: call 0x0105a9d0 ;*checkcast
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@2 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
; {runtime_call}
0x028779e5: mov ecx, 0xfffffff6
0x028779ea: nop
0x028779eb: call 0x0282dba0 ; OopMap{off=3920}
;*invokevirtual getCacheToken
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@8 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
; {runtime_call}
0x028779f0: call 0x0105a9d0 ;*invokevirtual getCacheToken
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@8 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
; {runtime_call}
0x028779f5: mov ecx, 0xfffffff4
0x028779fa: mov ebp, [esp+0x30]
0x028779fe: nop
0x028779ff: call 0x0282dba0 ; OopMap{ebp=Oop [96]=Oop [32]=Oop [52]=Oop off=3940}
;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@17
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
; {runtime_call}
0x02877a04: call 0x0105a9d0 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@17
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
; {runtime_call}
0x02877a09: mov ecx, 0xfffffff4
0x02877a0e: mov ebp, [esp+0x30]
0x02877a12: nop
0x02877a13: call 0x0282dba0 ; OopMap{ebp=Oop [96]=Oop [52]=Oop off=3960}
;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@30
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
; {runtime_call}
0x02877a18: call 0x0105a9d0 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@30
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
; {runtime_call}
0x02877a1d: mov ecx, 0xfffffff4
0x02877a22: mov ebp, [esp+0x30]
0x02877a26: nop
0x02877a27: call 0x0282dba0 ; OopMap{ebp=Oop [96]=Oop [104]=Oop [52]=Oop off=3980}
;*checkcast
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@2 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
; {runtime_call}
0x02877a2c: call 0x0105a9d0 ;*checkcast
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@2 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
; {runtime_call}
0x02877a31: mov ecx, 0xfffffff6
0x02877a36: nop
0x02877a37: call 0x0282dba0 ; OopMap{off=3996}
;*invokevirtual getCacheToken
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@8 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
; {runtime_call}
0x02877a3c: call 0x0105a9d0 ;*invokevirtual getCacheToken
; - org.jruby.runtime.invokedynamic.InvokeDynamicSupport::test@8 (line 853)
; - java.lang.invoke.MethodHandle::invokeExact@3
; - java.lang.invoke.MethodHandle::invokeExact@8
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
; {runtime_call}
0x02877a41: mov ecx, 0xfffffff4
0x02877a46: mov ebp, [esp+0x30]
0x02877a4a: nop
0x02877a4b: call 0x0282dba0 ; OopMap{ebp=Oop [96]=Oop [100]=Oop [52]=Oop off=4016}
;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@17
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
; {runtime_call}
0x02877a50: call 0x0105a9d0 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@17
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
; {runtime_call}
0x02877a55: mov ecx, 0xfffffff4
0x02877a5a: nop
0x02877a5b: call 0x0282dba0 ; OopMap{ebp=Oop [100]=Oop [48]=Oop [52]=Oop off=4032}
;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@37
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
; {runtime_call}
0x02877a60: call 0x0105a9d0 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@37
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
; {runtime_call}
0x02877a65: mov ecx, 0xfffffff4
0x02877a6a: nop
0x02877a6b: call 0x0282dba0 ; OopMap{off=4048}
;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@30
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
; {runtime_call}
0x02877a70: call 0x0105a9d0 ;*checkcast
; - java.lang.invoke.MethodHandle::invokeExact@30
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
; {runtime_call}
0x02877a75: mov ecx, 0xfffffff6
0x02877a7a: nop
0x02877a7b: call 0x0282dba0 ; OopMap{off=4064}
;*aaload
; - org.jruby.RubyFixnum::newFixnum@17 (line 171)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
; {runtime_call}
0x02877a80: call 0x0105a9d0 ;*aaload
; - org.jruby.RubyFixnum::newFixnum@17 (line 171)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
; {runtime_call}
0x02877a85: mov ecx, 0xfffffff6
0x02877a8a: nop
0x02877a8b: call 0x0282dba0 ; OopMap{off=4080}
;*aaload
; - org.jruby.RubyFixnum::newFixnum@17 (line 171)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
; {runtime_call}
0x02877a90: call 0x0105a9d0 ;*invokedynamic
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
; {runtime_call}
0x02877a95: mov ecx, eax
0x02877a97: jmp 0x02877ad3 ;*invokedynamic
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
0x02877a99: mov ecx, eax
0x02877a9b: jmp 0x02877ad3 ;*invokedynamic
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
0x02877a9d: mov ecx, eax
0x02877a9f: jmp 0x02877ad3 ;*invokevirtual op_minus
; - org.jruby.runtime.callsite.MinusCallSite::call@53 (line 18)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x02877aa1: mov ecx, eax
0x02877aa3: jmp 0x02877ad3 ;*invokevirtual op_minus
; - org.jruby.runtime.callsite.MinusCallSite::call@53 (line 18)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02877aa5: mov ecx, eax
0x02877aa7: jmp 0x02877ad3 ;*new ; - org.jruby.RubyFixnum::newFixnum@19 (line 173)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x02877aa9: mov ecx, eax
0x02877aab: jmp 0x02877ad3 ;*new ; - org.jruby.RubyFixnum::newFixnum@19 (line 173)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02877aad: mov ecx, eax
0x02877aaf: jmp 0x02877ad3 ;*invokevirtual op_lt
; - org.jruby.runtime.callsite.LtCallSite::call@53 (line 18)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
0x02877ab1: mov ecx, eax
0x02877ab3: jmp 0x02877ad3 ;*invokespecial call
; - org.jruby.runtime.callsite.MinusCallSite::call@63 (line 20)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x02877ab5: mov ecx, eax
0x02877ab7: jmp 0x02877ad3 ;*invokespecial call
; - org.jruby.runtime.callsite.MinusCallSite::call@63 (line 20)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02877ab9: mov ecx, eax
0x02877abb: jmp 0x02877ad3 ;*invokespecial subtractAsBignum
; - org.jruby.RubyFixnum::op_minus@24 (line 393)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@74 (line 7)
0x02877abd: mov ecx, eax
0x02877abf: jmp 0x02877ad3 ;*invokespecial subtractAsBignum
; - org.jruby.RubyFixnum::op_minus@24 (line 393)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02877ac1: mov ecx, eax
0x02877ac3: jmp 0x02877ad3 ;*invokespecial call
; - org.jruby.runtime.callsite.LtCallSite::call@63 (line 20)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@14 (line 4)
0x02877ac5: mov ecx, eax
0x02877ac7: jmp 0x02877ad3 ;*invokespecial invokeExact
; - java.lang.invoke.MethodHandle::invokeExact@63
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
0x02877ac9: mov ecx, eax
0x02877acb: jmp 0x02877ad3 ;*invokespecial invokeExact
; - java.lang.invoke.MethodHandle::invokeExact@63
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@77 (line 7)
0x02877acd: mov ecx, eax
0x02877acf: jmp 0x02877ad3 ;*invokespecial invokeExact
; - java.lang.invoke.MethodHandle::invokeExact@63
; - java.lang.invoke.MethodHandle::invokeExact@23
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
0x02877ad1: mov ecx, eax ;*new ; - org.jruby.RubyFixnum::newFixnum@19 (line 173)
; - org.jruby.RubyFixnum::op_minus@34 (line 395)
; - org.jruby.runtime.callsite.MinusCallSite::call@24 (line 16)
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@48 (line 7)
0x02877ad3: add esp, 0x00000058
0x02877ad6: pop ebp
0x02877ad7: jmp 0x02853a20 ;*synchronization entry
; - bench.bench_fib_recursive::method__0$RUBY$fib_ruby@-1
; {runtime_call}
0x02877adc: hlt
0x02877add: hlt
0x02877ade: hlt
0x02877adf: hlt
[Stub Code]
0x02877ae0: mov ebx, 0x00000000 ; {no_reloc}
0x02877ae5: jmp 0x02877ae5 ; {runtime_call}
0x02877aea: mov ebx, 0x00000000 ; {static_stub}
0x02877aef: jmp 0x02877aef ; {runtime_call}
0x02877af4: mov ebx, 0x00000000 ; {static_stub}
0x02877af9: jmp 0x02877af9 ; {runtime_call}
0x02877afe: mov ebx, 0x00000000 ; {static_stub}
0x02877b03: jmp 0x02877b03 ; {runtime_call}
0x02877b08: mov ebx, 0x00000000 ; {static_stub}
0x02877b0d: jmp 0x02877b0d ; {runtime_call}
0x02877b12: mov ebx, 0x00000000 ; {static_stub}
0x02877b17: jmp 0x02877b17 ; {runtime_call}
0x02877b1c: mov ebx, 0x00000000 ; {static_stub}
0x02877b21: jmp 0x02877b21 ; {runtime_call}
0x02877b26: mov ebx, 0x00000000 ; {static_stub}
0x02877b2b: jmp 0x02877b2b ; {runtime_call}
0x02877b30: mov ebx, 0x00000000 ; {static_stub}
0x02877b35: jmp 0x02877b35 ; {runtime_call}
0x02877b3a: mov ebx, 0x00000000 ; {static_stub}
0x02877b3f: jmp 0x02877b3f ; {runtime_call}
0x02877b44: mov ebx, 0x00000000 ; {static_stub}
0x02877b49: jmp 0x02877b49 ; {runtime_call}
0x02877b4e: mov ebx, 0x00000000 ; {static_stub}
0x02877b53: jmp 0x02877b53 ; {runtime_call}
0x02877b58: mov ebx, 0x00000000 ; {static_stub}
0x02877b5d: jmp 0x02877b5d ; {runtime_call}
0x02877b62: mov ebx, 0x00000000 ; {static_stub}
0x02877b67: jmp 0x02877b67 ; {runtime_call}
[Exception Handler]
0x02877b6c: jmp 0x028506e0 ; {runtime_call}
[Deopt Handler Code]
0x02877b71: push 0x02877b71 ; {section_word}
0x02877b76: jmp 0x0282e120 ; {runtime_call}
[Deopt MH Handler Code]
0x02877b7b: push 0x02877b7b ; {section_word}
0x02877b80: jmp 0x0282e120 ; {runtime_call}
0x02877b85: invalid 0x2e
0x02877b86: invalid 0xff
0x02877b87: invalid 0xff
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment