Skip to content

Instantly share code, notes, and snippets.

@frsyuki
Last active April 19, 2019 15:12
Show Gist options
  • Save frsyuki/876350ee8d562e2741e4cf50cc4aeb6c to your computer and use it in GitHub Desktop.
Save frsyuki/876350ee8d562e2741e4cf50cc4aeb6c to your computer and use it in GitHub Desktop.
require 'benchmark'
Benchmark.bmbm do |x|
  x.report("Array.push") do
    arrays = []
    1000.times do |i|
      arrays[i] = []
      (0...500000).each do |j|
        arrays[i] = j
      end
    end
  end
end

Ruby compiled with CFLAGS=-flto LDFLAGS=-flto:

With --jit:
Array.push  16.156210   0.018525  16.174735 ( 16.194273)

Without --jit:
Array.push  20.387775   0.036365  20.424140 ( 20.461463)

Ruby compiled regularly:

With --jit:
Array.push  18.586828   0.034933  18.621761 ( 18.661655)

Without --jit:
Array.push  20.869885   0.019868  20.889753 ( 20.910948)

Ruby compiled with CFLAGS=-flto=thin and LDFLAGS=-flto=thin:

With --jit:
Array.push  16.215539   0.039905  16.255444 ( 16.305868)

Without --jit:
Array.push  21.460543   0.031623  21.492166 ( 21.531546)

MJIT log with CFLAGS=-flto LDFLAGS=-flto:

MJIT: CC defaults to /usr/bin/clang
MJIT: tmp_dir is /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T/
Creating precompiled header
Starting process: /usr/bin/clang /usr/bin/clang -w -O3 -emit-pch -o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_hp28180u0.h.gch /Users/frsyuki/Data/ruby/mjit-install-2/include/ruby-2.6.0/x86_64-darwin18/rb_mjit_min_header-2.6.3.h
Rehearsal ----------------------------------------------
Array.push start compilation: block (4 levels) in <main>@xz.rb:7 -> /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28180u0.c
Starting process: /usr/bin/clang /usr/bin/clang -w -O3 -o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28180u0.o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28180u0.c -include-pch /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_m
jit_hp28180u0.h.gch -c -flto -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress
Starting process: /usr/bin/clang /usr/bin/clang -dynamic -bundle -O3 -o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28180u0.bundle -flto /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28180u0.o -Wl,-undefined,dynamic_lookup -Wl,-multiply_d
efined,suppress
JIT success (118.9ms): block (4 levels) in <main>@xz.rb:7 -> /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28180u0.c
start compilation: block (3 levels) in <main>@xz.rb:5 -> /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28180u1.c
Starting process: /usr/bin/clang /usr/bin/clang -w -O3 -o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28180u1.o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28180u1.c -include-pch /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_m
jit_hp28180u0.h.gch -c -flto -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress
Starting process: /usr/bin/clang /usr/bin/clang -dynamic -bundle -O3 -o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28180u1.bundle -flto /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28180u1.o -Wl,-undefined,dynamic_lookup -Wl,-multiply_d
efined,suppress
JIT success (210.4ms): block (3 levels) in <main>@xz.rb:5 -> /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28180u1.c
Starting process: /usr/bin/clang /usr/bin/clang -dynamic -bundle -O3 -o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28180u2.bundle -flto /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28180u0.o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000g
p/T//_ruby_mjit_p28180u1.o -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress
JIT compaction (107.5ms): Compacted 2 methods -> /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28180u2.bundle

MJIT log with regular ruby:

MJIT: CC defaults to /usr/bin/clang
MJIT: tmp_dir is /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T/
Creating precompiled header
Starting process: /usr/bin/clang /usr/bin/clang -w -O3 -emit-pch -o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_hp28937u0.h.gch /Users/frsyuki/Data/ruby/mjit-install-2/include/ruby-2.6.0/x86_64-darwin18/rb_mjit_min_header-2.6.3.h
Rehearsal ----------------------------------------------
Array.push start compilation: block (4 levels) in <main>@xz.rb:7 -> /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28937u0.c
Starting process: /usr/bin/clang /usr/bin/clang -w -O3 -o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28937u0.o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28937u0.c -include-pch /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_hp28937u0.h.gch -c -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress
Starting process: /usr/bin/clang /usr/bin/clang -dynamic -bundle -O3 -o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28937u0.bundle /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28937u0.o -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress
JIT success (82.8ms): block (4 levels) in <main>@xz.rb:7 -> /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28937u0.c
start compilation: block (3 levels) in <main>@xz.rb:5 -> /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28937u1.c
Starting process: /usr/bin/clang /usr/bin/clang -w -O3 -o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28937u1.o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28937u1.c -include-pch /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_hp28937u0.h.gch -c -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress
Starting process: /usr/bin/clang /usr/bin/clang -dynamic -bundle -O3 -o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28937u1.bundle /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28937u1.o -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress
JIT success (137.4ms): block (3 levels) in <main>@xz.rb:5 -> /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28937u1.c
Starting process: /usr/bin/clang /usr/bin/clang -dynamic -bundle -O3 -o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28937u2.bundle /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28937u0.o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28937u1.o -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress
JIT compaction (34.2ms): Compacted 2 methods -> /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p28937u2.bundle

MJIT log with CFLAGS=-flto=thin LDFLAGS=-flto=thin:

Starting process: /usr/bin/clang /usr/bin/clang -w -O3 -o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p19828u1.o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p19828u1.c -include-pch /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_hp19828u0.h.gch -c -flto=thin -flto -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress
Starting process: /usr/bin/clang /usr/bin/clang -dynamic -bundle -O3 -o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p19828u1.bundle -flto=thin /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p19828u1.o -flto -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress
JIT success (96.3ms): block (4 levels) in <main>@xz.rb:10 -> /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p19828u1.c
start compilation: block (3 levels) in <main>@xz.rb:5 -> /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p19828u0.c
Starting process: /usr/bin/clang /usr/bin/clang -w -O3 -o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p19828u0.o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p19828u0.c -include-pch /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_hp19828u0.h.gch -c -flto=thin -flto -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress
Starting process: /usr/bin/clang /usr/bin/clang -dynamic -bundle -O3 -o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p19828u0.bundle -flto=thin /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p19828u0.o -flto -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress
JIT success (97.1ms): block (3 levels) in <main>@xz.rb:5 -> /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p19828u0.c
start compilation: block (3 levels) in <main>@xz.rb:8 -> /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p19828u2.c
Starting process: /usr/bin/clang /usr/bin/clang -w -O3 -o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p19828u2.o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p19828u2.c -include-pch /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_hp19828u0.h.gch -c -flto=thin -flto -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress
Starting process: /usr/bin/clang /usr/bin/clang -dynamic -bundle -O3 -o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p19828u2.bundle -flto=thin /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p19828u2.o -flto -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress
JIT success (159.3ms): block (3 levels) in <main>@xz.rb:8 -> /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p19828u2.c
Starting process: /usr/bin/clang /usr/bin/clang -dynamic -bundle -O3 -o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p19828u3.bundle -flto=thin /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p19828u1.o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p19828u0.o /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p19828u2.o -flto -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress
JIT compaction (85.1ms): Compacted 3 methods -> /var/folders/q0/5kp18gn56jj_7slt97ctvgqh0000gp/T//_ruby_mjit_p19828u3.bundle
$ clang --version
Apple LLVM version 10.0.1 (clang-1001.0.46.3)
Target: x86_64-apple-darwin18.5.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
jit_with_flto.bundle:
(__TEXT,__text) section
__mjit0:
0000000000000ed0 pushq %rbp
0000000000000ed1 movq %rsp, %rbp
0000000000000ed4 pushq %r15
0000000000000ed6 pushq %r14
0000000000000ed8 pushq %r13
0000000000000eda pushq %r12
0000000000000edc pushq %rbx
0000000000000edd pushq %rax
0000000000000ede movq %rsi, %rbx
0000000000000ee1 movabsq $0x7fcb0ec70c58, %r15
0000000000000eeb movq 0x20(%rsi), %rax
0000000000000eef movq -0x18(%rax), %r14
0000000000000ef3 movq -0x8(%rax), %rax
0000000000000ef7 andq $-0x4, %rax
0000000000000efb movq -0x18(%rax), %r12
0000000000000eff movq -0x8(%rax), %rax
0000000000000f03 andq $-0x4, %rax
0000000000000f07 movq -0x18(%rax), %r13
0000000000000f0b leaq 0x18(%r15), %rax
0000000000000f0f movq %rax, (%rsi)
0000000000000f12 testb $0x7, %r13b
0000000000000f16 jne 0xfaa
0000000000000f1c movq %r13, %rax
0000000000000f1f andq $-0x9, %rax
0000000000000f23 je 0xfaa
0000000000000f29 movq 0x8(%r13), %rax
0000000000000f2d movq 0x10f4(%rip), %rcx ## literal pool symbol address: _rb_cArray
0000000000000f34 cmpq (%rcx), %rax
0000000000000f37 jne 0xf6f
0000000000000f39 testb $0x1, %r12b
0000000000000f3d je 0xf6f
0000000000000f3f movq 0x1142(%rip), %rcx ## literal pool symbol address: _ruby_current_vm_ptr
0000000000000f46 movq (%rcx), %rcx
0000000000000f49 movzwl 0x436(%rcx), %ecx
0000000000000f50 andl $0x8, %ecx
0000000000000f53 testw %cx, %cx
0000000000000f56 jne 0xf6f
0000000000000f58 movq %rdi, -0x30(%rbp)
0000000000000f5c movq %r12, %rsi
0000000000000f5f sarq %rsi
0000000000000f62 movq %r13, %rdi
0000000000000f65 movq %r14, %rdx
0000000000000f68 callq 0x1c92 ## symbol stub for: _rb_ary_store
0000000000000f6d jmp 0xfa0
0000000000000f6f movq 0x10ca(%rip), %rcx ## literal pool symbol address: _rb_cHash
0000000000000f76 cmpq (%rcx), %rax
0000000000000f79 jne 0xfaa
0000000000000f7b movq 0x1106(%rip), %rax ## literal pool symbol address: _ruby_current_vm_ptr
0000000000000f82 movq (%rax), %rax
0000000000000f85 testb $0x10, 0x436(%rax)
0000000000000f8c jne 0xfaa
0000000000000f8e movq %rdi, -0x30(%rbp)
0000000000000f92 movq %r13, %rdi
0000000000000f95 movq %r12, %rsi
0000000000000f98 movq %r14, %rdx
0000000000000f9b callq 0x1ce0 ## symbol stub for: _rb_hash_aset
0000000000000fa0 cmpq $0x34, %r14
0000000000000fa4 movq -0x30(%rbp), %rcx
0000000000000fa8 jne 0xfe1
0000000000000faa movq 0x30(%rbx), %rax
0000000000000fae leaq 0x28(%rax), %rcx
0000000000000fb2 movq %rcx, 0x8(%rbx)
0000000000000fb6 movq %r15, (%rbx)
0000000000000fb9 movq %r14, 0x8(%rax)
0000000000000fbd movq %r13, 0x10(%rax)
0000000000000fc1 movq %r12, 0x18(%rax)
0000000000000fc5 movq %r14, 0x20(%rax)
0000000000000fc9 movl $0x34, %r14d
0000000000000fcf movq %r14, %rax
0000000000000fd2 addq $0x8, %rsp
0000000000000fd6 popq %rbx
0000000000000fd7 popq %r12
0000000000000fd9 popq %r13
0000000000000fdb popq %r14
0000000000000fdd popq %r15
0000000000000fdf popq %rbp
0000000000000fe0 retq
0000000000000fe1 movq 0x10a8(%rip), %rax ## literal pool symbol address: _ruby_vm_event_enabled_global_flags
0000000000000fe8 testl $0x3031f, (%rax)
0000000000000fee jne 0x1017
0000000000000ff0 addq $0x30, %r15
0000000000000ff4 movq %r15, (%rbx)
0000000000000ff7 movq 0x30(%rbx), %rax
0000000000000ffb addq $0x8, %rax
0000000000000fff movq %rax, 0x8(%rbx)
0000000000001003 movl 0x2c(%rcx), %eax
0000000000001006 notl %eax
0000000000001008 testl %eax, 0x28(%rcx)
000000000000100b jne 0x1028
000000000000100d addq $0x38, %rbx
0000000000001011 movq %rbx, 0x10(%rcx)
0000000000001015 jmp 0xfcf
0000000000001017 movq 0x30(%rbx), %rax
000000000000101b leaq 0x18(%rax), %rcx
000000000000101f movq %rcx, 0x8(%rbx)
0000000000001023 movq %r14, %r13
0000000000001026 jmp 0xfb9
0000000000001028 movq %rcx, %r15
000000000000102b movq 0x38(%rcx), %rdi
000000000000102f xorl %esi, %esi
0000000000001031 callq 0x1d34 ## symbol stub for: _rb_threadptr_execute_interrupts
0000000000001036 movq %r15, %rcx
0000000000001039 jmp 0x100d
000000000000103b nopl (%rax,%rax)
__mjit1:
0000000000001040 pushq %rbp
0000000000001041 movq %rsp, %rbp
0000000000001044 pushq %r15
0000000000001046 pushq %r14
0000000000001048 pushq %r13
000000000000104a pushq %r12
000000000000104c pushq %rbx
000000000000104d subq $0x48, %rsp
0000000000001051 movq %rsi, %r12
0000000000001054 movq %rdi, %r15
0000000000001057 movq 0xfb2(%rip), %rax ## literal pool symbol address: ___stack_chk_guard
000000000000105e movq (%rax), %rax
0000000000001061 movq %rax, -0x30(%rbp)
0000000000001065 movabsq $0x7fcb0f034260, %r14
000000000000106f movq 0x20(%rsi), %rax
0000000000001073 movq -0x8(%rax), %rcx
0000000000001077 andq $-0x4, %rcx
000000000000107b movq -0x18(%rcx), %rcx
000000000000107f movq %rcx, -0x50(%rbp)
0000000000001083 movq -0x18(%rax), %rax
0000000000001087 movq %rax, -0x48(%rbp)
000000000000108b leaq -0x40(%rbp), %rsi
000000000000108f xorl %edi, %edi
0000000000001091 callq 0x1c80 ## symbol stub for: _rb_ary_new_from_values
0000000000001096 movq %rax, %rbx
0000000000001099 movq %rax, -0x40(%rbp)
000000000000109d movq -0x50(%rbp), %rdi
00000000000010a1 movq -0x48(%rbp), %rsi
00000000000010a5 leaq -0x3c38b0(%r14), %rax
00000000000010ac movq %rax, (%r12)
00000000000010b0 testb $0x7, %dil
00000000000010b4 jne 0x11aa
00000000000010ba movq %rdi, %rax
00000000000010bd andq $-0x9, %rax
00000000000010c1 je 0x11aa
00000000000010c7 movq 0x8(%rdi), %rax
00000000000010cb movq 0xf56(%rip), %rcx ## literal pool symbol address: _rb_cArray
00000000000010d2 cmpq (%rcx), %rax
00000000000010d5 jne 0x1175
00000000000010db testb $0x1, %sil
00000000000010df je 0x1175
00000000000010e5 movq 0xf9c(%rip), %rcx ## literal pool symbol address: _ruby_current_vm_ptr
00000000000010ec movq (%rcx), %rcx
00000000000010ef movzwl 0x436(%rcx), %ecx
00000000000010f6 andl $0x8, %ecx
00000000000010f9 testw %cx, %cx
00000000000010fc jne 0x1175
00000000000010fe sarq %rsi
0000000000001101 movq %rbx, %rdx
0000000000001104 callq 0x1c92 ## symbol stub for: _rb_ary_store
0000000000001109 cmpq $0x34, %rbx
000000000000110d je 0x11a6
0000000000001113 movq %rbx, -0x50(%rbp)
0000000000001117 movq 0xf72(%rip), %r13 ## literal pool symbol address: _ruby_vm_event_enabled_global_flags
000000000000111e testl $0x3031f, (%r13)
0000000000001126 jne 0x157d
000000000000112c movq %r14, -0x50(%rbp)
0000000000001130 leaq -0x3c3878(%r14), %rax
0000000000001137 movq %rax, (%r12)
000000000000113b movq 0x30(%r12), %rax
0000000000001140 leaq 0x10(%rax), %rcx
0000000000001144 movq %rcx, 0x8(%r12)
0000000000001149 movq %r14, 0x8(%rax)
000000000000114d testb $0x2, -0x3c4948(%r14)
0000000000001155 jne 0x1205
000000000000115b leaq 0x18(%r12), %rbx
0000000000001160 leaq 0xf0(%r14), %rax
0000000000001167 movq %rax, 0x28(%r12)
000000000000116c orq $0x1, %rbx
0000000000001170 jmp 0x129f
0000000000001175 movq 0xec4(%rip), %rcx ## literal pool symbol address: _rb_cHash
000000000000117c cmpq (%rcx), %rax
000000000000117f jne 0x11aa
0000000000001181 movq 0xf00(%rip), %rax ## literal pool symbol address: _ruby_current_vm_ptr
0000000000001188 movq (%rax), %rax
000000000000118b testb $0x10, 0x436(%rax)
0000000000001192 jne 0x11aa
0000000000001194 movq %rbx, %rdx
0000000000001197 callq 0x1ce0 ## symbol stub for: _rb_hash_aset
000000000000119c cmpq $0x34, %rbx
00000000000011a0 jne 0x1113
00000000000011a6 movq -0x50(%rbp), %rdi
00000000000011aa movq 0x30(%r12), %rax
00000000000011af leaq 0x20(%rax), %rcx
00000000000011b3 movq %rcx, 0x8(%r12)
00000000000011b8 addq $-0x3c38c8, %r14
00000000000011bf movq %r14, (%r12)
00000000000011c3 movq %rdi, %rbx
00000000000011c6 movq %rbx, 0x8(%rax)
00000000000011ca movq -0x48(%rbp), %rcx
00000000000011ce movq %rcx, 0x10(%rax)
00000000000011d2 movq -0x40(%rbp), %rcx
00000000000011d6 movq %rcx, 0x18(%rax)
00000000000011da movl $0x34, %ebx
00000000000011df movq 0xe2a(%rip), %rax ## literal pool symbol address: ___stack_chk_guard
00000000000011e6 movq (%rax), %rax
00000000000011e9 cmpq -0x30(%rbp), %rax
00000000000011ed jne 0x16b1
00000000000011f3 movq %rbx, %rax
00000000000011f6 addq $0x48, %rsp
00000000000011fa popq %rbx
00000000000011fb popq %r12
00000000000011fd popq %r13
00000000000011ff popq %r14
0000000000001201 popq %r15
0000000000001203 popq %rbp
0000000000001204 retq
0000000000001205 addq $0x8, %rax
0000000000001209 movq %rax, 0x8(%r12)
000000000000120e movq (%r14), %rax
0000000000001211 andl $0x1f, %eax
0000000000001214 cmpq $0x14, %rax
0000000000001218 jne 0x128b
000000000000121a movq 0xe37(%rip), %rax ## literal pool symbol address: _rb_cSymbol
0000000000001221 movq (%rax), %rdi
0000000000001224 movl $0xc61, %esi
0000000000001229 callq 0x1cfe ## symbol stub for: _rb_method_basic_definition_p
000000000000122e testl %eax, %eax
0000000000001230 je 0x128b
0000000000001232 movq 0x20(%r12), %rcx
0000000000001237 jmp 0x1248
0000000000001239 nopl (%rax)
0000000000001240 movq -0x8(%rcx), %rcx
0000000000001244 andq $-0x4, %rcx
0000000000001248 movq -0x10(%rcx), %rax
000000000000124c testq %rax, %rax
000000000000124f sete %dl
0000000000001252 testb $0x2, (%rcx)
0000000000001255 jne 0x1424
000000000000125b testb $0x1, %dl
000000000000125e jne 0x1240
0000000000001260 movq (%rax), %rdx
0000000000001263 shrq $0xc, %rdx
0000000000001267 andb $0xf, %dl
000000000000126a cmpb $0x1, %dl
000000000000126d je 0x1281
000000000000126f cmpb $0x6, %dl
0000000000001272 jne 0x1240
0000000000001274 movq 0x10(%rax), %rax
0000000000001278 testb $0xf, (%rax)
000000000000127b jne 0x1240
000000000000127d movq 0x10(%rax), %rax
0000000000001281 testq %rax, %rax
0000000000001284 je 0x1240
0000000000001286 jmp 0x14cf
000000000000128b movq %r14, %rdi
000000000000128e callq 0x1d1c ## symbol stub for: _rb_obj_is_proc
0000000000001293 movq %r14, %rbx
0000000000001296 testq %rax, %rax
0000000000001299 je 0x15b8
000000000000129f movq %rbx, -0x70(%rbp)
00000000000012a3 movq 0x8(%r12), %rax
00000000000012a8 movslq -0x3c4944(%r14), %rcx
00000000000012af movl %ecx, -0x60(%rbp)
00000000000012b2 shlq $0x3, %rcx
00000000000012b6 negq %rcx
00000000000012b9 movq -0x8(%rax,%rcx), %rax
00000000000012be movq %rax, -0x68(%rbp)
00000000000012c2 testb $0x7, %al
00000000000012c4 je 0x12e1
00000000000012c6 testb $0x1, %al
00000000000012c8 jne 0x12f3
00000000000012ca movl %eax, %ecx
00000000000012cc andl $0x3, %ecx
00000000000012cf cmpl $0x2, %ecx
00000000000012d2 jne 0x1412
00000000000012d8 movq 0xd59(%rip), %rax ## literal pool symbol address: _rb_cFloat
00000000000012df jmp 0x12fa
00000000000012e1 testq $-0x9, %rax
00000000000012e7 je 0x1469
00000000000012ed addq $0x8, %rax
00000000000012f1 jmp 0x12fa
00000000000012f3 movq 0xd4e(%rip), %rax ## literal pool symbol address: _rb_cInteger
00000000000012fa movq (%rax), %rdx
00000000000012fd movq 0xd94(%rip), %rax ## literal pool symbol address: _ruby_vm_global_method_state
0000000000001304 movq (%rax), %rax
0000000000001307 cmpq -0x3c3838(%r14), %rax
000000000000130e jne 0x1590
0000000000001314 movq 0x18(%rdx), %rax
0000000000001318 movq 0x38(%rax), %rax
000000000000131c cmpq -0x3c3830(%r14), %rax
0000000000001323 jne 0x1590
0000000000001329 leaq -0x3c4950(%r14), %rcx
0000000000001330 leaq -0x3c3838(%r14), %r8
0000000000001337 leaq -0x70(%rbp), %rdx
000000000000133b movq %r15, %rdi
000000000000133e movq %r12, %rsi
0000000000001341 callq *-0x3c3820(%r14)
0000000000001348 movq %rax, %rbx
000000000000134b cmpq $0x34, %rax
000000000000134f jne 0x13ca
0000000000001351 movq 0x10(%r15), %rsi
0000000000001355 movq 0x10(%rsi), %rdi
0000000000001359 movq 0x10(%rdi), %rbx
000000000000135d cmpb $0x0, 0x120(%rbx)
0000000000001364 je 0x1375
0000000000001366 movq 0x20(%rsi), %rax
000000000000136a orq $0x20, (%rax)
000000000000136e movl $0x1, %esi
0000000000001373 jmp 0x13bf
0000000000001375 movq 0xc9c(%rip), %rax ## literal pool symbol address: _mjit_call_p
000000000000137c cmpl $0x0, (%rax)
000000000000137f je 0x13b1
0000000000001381 movq 0x108(%rbx), %rax
0000000000001388 movq 0x110(%rbx), %rcx
000000000000138f incq %rcx
0000000000001392 movq %rcx, 0x110(%rbx)
0000000000001399 cmpq $0x3, %rax
000000000000139d jbe 0x164a
00000000000013a3 movq %r15, %rdi
00000000000013a6 callq *%rax
00000000000013a8 movq %rax, %rbx
00000000000013ab cmpq $0x34, %rax
00000000000013af jne 0x13ca
00000000000013b1 movq 0x10(%r15), %rax
00000000000013b5 movq 0x20(%rax), %rax
00000000000013b9 orq $0x20, (%rax)
00000000000013bd xorl %esi, %esi
00000000000013bf movq %r15, %rdi
00000000000013c2 callq 0x1d40 ## symbol stub for: _rb_vm_exec
00000000000013c7 movq %rax, %rbx
00000000000013ca movq %rbx, -0x50(%rbp)
00000000000013ce testl $0x3031f, (%r13)
00000000000013d6 jne 0x157d
00000000000013dc addq $-0x3c3860, %r14
00000000000013e3 movq %r14, (%r12)
00000000000013e7 movq 0x30(%r12), %rax
00000000000013ec addq $0x8, %rax
00000000000013f0 movq %rax, 0x8(%r12)
00000000000013f5 movl 0x2c(%r15), %eax
00000000000013f9 notl %eax
00000000000013fb testl %eax, 0x28(%r15)
00000000000013ff jne 0x15a8
0000000000001405 addq $0x38, %r12
0000000000001409 movq %r12, 0x10(%r15)
000000000000140d jmp 0x11df
0000000000001412 cmpq $0x14, %rax
0000000000001416 jne 0x1484
0000000000001418 movq 0xc41(%rip), %rax ## literal pool symbol address: _rb_cTrueClass
000000000000141f jmp 0x12fa
0000000000001424 movq %r14, %rbx
0000000000001427 testb %dl, %dl
0000000000001429 jne 0x129f
000000000000142f movq (%rax), %rcx
0000000000001432 shrq $0xc, %rcx
0000000000001436 andb $0xf, %cl
0000000000001439 cmpb $0x1, %cl
000000000000143c je 0x14c3
0000000000001442 cmpb $0x2, %cl
0000000000001445 je 0x14a4
0000000000001447 movq %r14, %rbx
000000000000144a cmpb $0x6, %cl
000000000000144d jne 0x129f
0000000000001453 movq 0x10(%rax), %rax
0000000000001457 testb $0xf, (%rax)
000000000000145a movq %r14, %rbx
000000000000145d jne 0x129f
0000000000001463 movq 0x10(%rax), %rax
0000000000001467 jmp 0x14c3
0000000000001469 cmpq $0x8, %rax
000000000000146d je 0x1498
000000000000146f testq %rax, %rax
0000000000001472 jne 0x12ed
0000000000001478 movq 0xbb1(%rip), %rax ## literal pool symbol address: _rb_cFalseClass
000000000000147f jmp 0x12fa
0000000000001484 cmpb $0xc, %al
0000000000001486 jne 0x12ed
000000000000148c movq 0xbc5(%rip), %rax ## literal pool symbol address: _rb_cSymbol
0000000000001493 jmp 0x12fa
0000000000001498 movq 0xbb1(%rip), %rax ## literal pool symbol address: _rb_cNilClass
000000000000149f jmp 0x12fa
00000000000014a4 movq 0x8(%rax), %rax
00000000000014a8 movq %r14, %rbx
00000000000014ab testq %rax, %rax
00000000000014ae je 0x129f
00000000000014b4 movq (%rax), %rcx
00000000000014b7 shrq $0xc, %rcx
00000000000014bb andb $0xf, %cl
00000000000014be cmpb $0x1, %cl
00000000000014c1 jne 0x1447
00000000000014c3 movq %r14, %rbx
00000000000014c6 testq %rax, %rax
00000000000014c9 je 0x129f
00000000000014cf movq 0x8(%rax), %rdi
00000000000014d3 movq %r14, %rbx
00000000000014d6 cmpq $0x8, %rdi
00000000000014da je 0x129f
00000000000014e0 movq %r14, %rsi
00000000000014e3 movq %rdi, -0x58(%rbp)
00000000000014e7 callq 0x1ce6 ## symbol stub for: _rb_hash_lookup
00000000000014ec movq %rax, %rbx
00000000000014ef cmpq $0x8, %rax
00000000000014f3 jne 0x129f
00000000000014f9 movl $0x2, %edi
00000000000014fe callq 0x1c98 ## symbol stub for: _rb_ary_tmp_new
0000000000001503 movq %rax, %rbx
0000000000001506 movq %rax, %rdi
0000000000001509 callq 0x1c8c ## symbol stub for: _rb_ary_ptr_use_start
000000000000150e movq %r14, (%rax)
0000000000001511 movq %rbx, %rdi
0000000000001514 movq %r14, %rsi
0000000000001517 callq 0x1cda ## symbol stub for: _rb_gc_writebarrier
000000000000151c movq %rbx, %rdi
000000000000151f callq 0x1c86 ## symbol stub for: _rb_ary_ptr_use_end
0000000000001524 movq %rbx, %rdi
0000000000001527 callq 0x1c8c ## symbol stub for: _rb_ary_ptr_use_start
000000000000152c movq -0x58(%rbp), %rsi
0000000000001530 movq %rsi, 0x8(%rax)
0000000000001534 testb $0x7, %sil
0000000000001538 jne 0x154b
000000000000153a movq %rsi, %rax
000000000000153d andq $-0x9, %rax
0000000000001541 je 0x154b
0000000000001543 movq %rbx, %rdi
0000000000001546 callq 0x1cda ## symbol stub for: _rb_gc_writebarrier
000000000000154b movq %rbx, %rdi
000000000000154e callq 0x1c86 ## symbol stub for: _rb_ary_ptr_use_end
0000000000001553 orb $0x8, 0x1(%rbx)
0000000000001557 leaq _refine_sym_proc_call(%rip), %rdi
000000000000155e movq %rbx, %rsi
0000000000001561 callq 0x1cd4 ## symbol stub for: _rb_func_proc_new
0000000000001566 movq %rax, %rbx
0000000000001569 movq -0x58(%rbp), %rdi
000000000000156d movq %r14, %rsi
0000000000001570 movq %rax, %rdx
0000000000001573 callq 0x1ce0 ## symbol stub for: _rb_hash_aset
0000000000001578 jmp 0x129f
000000000000157d movq 0x30(%r12), %rax
0000000000001582 leaq 0x10(%rax), %rcx
0000000000001586 movq %rcx, 0x8(%r12)
000000000000158b jmp 0x11c6
0000000000001590 leaq -0x3c4950(%r14), %rdi
0000000000001597 leaq -0x3c3838(%r14), %rsi
000000000000159e callq 0x1d46 ## symbol stub for: _rb_vm_search_method_slowpath
00000000000015a3 jmp 0x1329
00000000000015a8 movq 0x38(%r15), %rdi
00000000000015ac xorl %esi, %esi
00000000000015ae callq 0x1d34 ## symbol stub for: _rb_threadptr_execute_interrupts
00000000000015b3 jmp 0x1405
00000000000015b8 movq 0x8(%r14), %rdi
00000000000015bc movl $0xc61, %esi
00000000000015c1 xorl %edx, %edx
00000000000015c3 callq 0x1ca4 ## symbol stub for: _rb_callable_method_entry_with_refinements
00000000000015c8 testq %rax, %rax
00000000000015cb je 0x15ee
00000000000015cd movq 0xaac(%rip), %rcx ## literal pool symbol address: _ruby_current_execution_context_ptr
00000000000015d4 movq (%rcx), %rdi
00000000000015d7 movl $0xc61, %edx
00000000000015dc xorl %ecx, %ecx
00000000000015de xorl %r8d, %r8d
00000000000015e1 movq %r14, %rsi
00000000000015e4 movq %rax, %r9
00000000000015e7 callq 0x1d3a ## symbol stub for: _rb_vm_call0
00000000000015ec jmp 0x1607
00000000000015ee leaq 0x90d(%rip), %rdx ## literal pool for: "Proc"
00000000000015f5 movl $0xc, %esi
00000000000015fa movl $0xc61, %ecx
00000000000015ff movq %r14, %rdi
0000000000001602 callq 0x1caa ## symbol stub for: _rb_check_convert_type_with_id
0000000000001607 movq %rax, %rbx
000000000000160a cmpq $0x8, %rax
000000000000160e je 0x1621
0000000000001610 movq %rbx, %rdi
0000000000001613 callq 0x1d1c ## symbol stub for: _rb_obj_is_proc
0000000000001618 testq %rax, %rax
000000000000161b jne 0x129f
0000000000001621 movq 0xa50(%rip), %rax ## literal pool symbol address: _rb_eTypeError
0000000000001628 movq (%rax), %rbx
000000000000162b movq %r14, %rdi
000000000000162e callq 0x1d10 ## symbol stub for: _rb_obj_classname
0000000000001633 movq %rax, %rcx
0000000000001636 leaq 0x8ca(%rip), %rsi ## literal pool for: "wrong argument type %s (expected Proc)"
000000000000163d xorl %eax, %eax
000000000000163f movq %rbx, %rdi
0000000000001642 movq %rcx, %rdx
0000000000001645 callq 0x1d22 ## symbol stub for: _rb_raise
000000000000164a leal -0x1(%rax), %edx
000000000000164d cmpl $0x2, %edx
0000000000001650 jb 0x13b1
0000000000001656 testl %eax, %eax
0000000000001658 jne 0x13a3
000000000000165e movq 0x9bb(%rip), %rax ## literal pool symbol address: _mjit_opts
0000000000001665 movl 0x8(%rax), %eax
0000000000001668 cmpq %rax, %rcx
000000000000166b jne 0x13b1
0000000000001671 movl (%rbx), %eax
0000000000001673 decl %eax
0000000000001675 cmpl $0x1, %eax
0000000000001678 ja 0x13b1
000000000000167e cmpl $0x3e7, 0x4(%rbx)
0000000000001685 ja 0x13b1
000000000000168b callq 0x1c6e ## symbol stub for: _mjit_add_iseq_to_process
0000000000001690 movq 0x989(%rip), %rax ## literal pool symbol address: _mjit_opts
0000000000001697 cmpl $0x0, 0x4(%rax)
000000000000169b je 0x13b1
00000000000016a1 movq %r15, %rdi
00000000000016a4 movq %rbx, %rsi
00000000000016a7 callq 0x1c74 ## symbol stub for: _mjit_wait_call
00000000000016ac jmp 0x13a8
00000000000016b1 callq 0x1c62 ## symbol stub for: ___stack_chk_fail
00000000000016b6 nopw %cs:(%rax,%rax)
_refine_sym_proc_call:
00000000000016c0 pushq %rbp
00000000000016c1 movq %rsp, %rbp
00000000000016c4 pushq %r15
00000000000016c6 pushq %r14
00000000000016c8 pushq %r13
00000000000016ca pushq %r12
00000000000016cc pushq %rbx
00000000000016cd subq $0x18, %rsp
00000000000016d1 movq %r8, -0x30(%rbp)
00000000000016d5 movq %rcx, %r14
00000000000016d8 movl %edx, %r12d
00000000000016db testb $0x20, 0x1(%rsi)
00000000000016df jne 0x16ef
00000000000016e1 movq 0x20(%rsi), %rsi
00000000000016e5 testl %r12d, %r12d
00000000000016e8 jg 0x16fc
00000000000016ea jmp 0x1845
00000000000016ef addq $0x10, %rsi
00000000000016f3 testl %r12d, %r12d
00000000000016f6 jle 0x1845
00000000000016fc movq 0x8(%rsi), %r15
0000000000001700 movq (%rsi), %rdi
0000000000001703 movq (%r14), %r13
0000000000001706 callq 0x1d2e ## symbol stub for: _rb_sym2id
000000000000170b movq %rax, %rbx
000000000000170e testb $0x7, %r13b
0000000000001712 movq %r14, -0x38(%rbp)
0000000000001716 je 0x1736
0000000000001718 testb $0x1, %r13b
000000000000171c jne 0x1749
000000000000171e movl %r13d, %eax
0000000000001721 andl $0x3, %eax
0000000000001724 cmpl $0x2, %eax
0000000000001727 jne 0x17f6
000000000000172d movq 0x904(%rip), %rax ## literal pool symbol address: _rb_cFloat
0000000000001734 jmp 0x1750
0000000000001736 testq $-0x9, %r13
000000000000173d je 0x1808
0000000000001743 leaq 0x8(%r13), %rax
0000000000001747 jmp 0x1750
0000000000001749 movq 0x8f8(%rip), %rax ## literal pool symbol address: _rb_cInteger
0000000000001750 movq (%rax), %r14
0000000000001753 testq %r14, %r14
0000000000001756 jne 0x1769
0000000000001758 jmp 0x178b
000000000000175a nopw (%rax,%rax)
0000000000001760 movq 0x10(%r14), %r14
0000000000001764 testq %r14, %r14
0000000000001767 je 0x178b
0000000000001769 movq %r14, %rdi
000000000000176c movq %rbx, %rsi
000000000000176f callq 0x1c9e ## symbol stub for: _rb_callable_method_entry
0000000000001774 testq %rax, %rax
0000000000001777 je 0x1760
0000000000001779 movq %r15, %rdi
000000000000177c movq %rax, %rsi
000000000000177f callq 0x1d28 ## symbol stub for: _rb_resolve_refined_method_callable
0000000000001784 testq %rax, %rax
0000000000001787 je 0x1760
0000000000001789 jmp 0x178d
000000000000178b xorl %eax, %eax
000000000000178d movq 0x8ec(%rip), %rcx ## literal pool symbol address: _ruby_current_execution_context_ptr
0000000000001794 movq (%rcx), %rdi
0000000000001797 movq -0x30(%rbp), %rcx
000000000000179b cmpq $0x8, %rcx
000000000000179f movq -0x38(%rbp), %r8
00000000000017a3 je 0x17ac
00000000000017a5 movq %rcx, 0x80(%rdi)
00000000000017ac decl %r12d
00000000000017af addq $0x8, %r8
00000000000017b3 testq %rax, %rax
00000000000017b6 je 0x17d7
00000000000017b8 movq %r13, %rsi
00000000000017bb movq %rbx, %rdx
00000000000017be movl %r12d, %ecx
00000000000017c1 movq %rax, %r9
00000000000017c4 addq $0x18, %rsp
00000000000017c8 popq %rbx
00000000000017c9 popq %r12
00000000000017cb popq %r13
00000000000017cd popq %r14
00000000000017cf popq %r15
00000000000017d1 popq %rbp
00000000000017d2 jmp 0x1d3a ## symbol stub for: _rb_vm_call0
00000000000017d7 movq %r13, %rdi
00000000000017da movq %rbx, %rsi
00000000000017dd movl %r12d, %edx
00000000000017e0 movq %r8, %rcx
00000000000017e3 addq $0x18, %rsp
00000000000017e7 popq %rbx
00000000000017e8 popq %r12
00000000000017ea popq %r13
00000000000017ec popq %r14
00000000000017ee popq %r15
00000000000017f0 popq %rbp
00000000000017f1 jmp _method_missing
00000000000017f6 cmpq $0x14, %r13
00000000000017fa jne 0x1823
00000000000017fc movq 0x85d(%rip), %rax ## literal pool symbol address: _rb_cTrueClass
0000000000001803 jmp 0x1750
0000000000001808 cmpq $0x8, %r13
000000000000180c je 0x1839
000000000000180e testq %r13, %r13
0000000000001811 jne 0x1743
0000000000001817 movq 0x812(%rip), %rax ## literal pool symbol address: _rb_cFalseClass
000000000000181e jmp 0x1750
0000000000001823 cmpb $0xc, %r13b
0000000000001827 jne 0x1743
000000000000182d movq 0x824(%rip), %rax ## literal pool symbol address: _rb_cSymbol
0000000000001834 jmp 0x1750
0000000000001839 movq 0x810(%rip), %rax ## literal pool symbol address: _rb_cNilClass
0000000000001840 jmp 0x1750
0000000000001845 movq 0x81c(%rip), %rax ## literal pool symbol address: _rb_eArgError
000000000000184c movq (%rax), %rdi
000000000000184f leaq 0x6d8(%rip), %rsi ## literal pool for: "no receiver given"
0000000000001856 xorl %eax, %eax
0000000000001858 callq 0x1d22 ## symbol stub for: _rb_raise
000000000000185d nopl (%rax)
_method_missing:
0000000000001860 pushq %rbp
0000000000001861 movq %rsp, %rbp
0000000000001864 pushq %r15
0000000000001866 pushq %r14
0000000000001868 pushq %r13
000000000000186a pushq %r12
000000000000186c pushq %rbx
000000000000186d subq $0x28, %rsp
0000000000001871 movq %rcx, -0x40(%rbp)
0000000000001875 movl %edx, %r13d
0000000000001878 movq %rdi, %r14
000000000000187b movq 0x78e(%rip), %rax ## literal pool symbol address: ___stack_chk_guard
0000000000001882 movq (%rax), %rax
0000000000001885 movq %rax, -0x30(%rbp)
0000000000001889 movq 0x7f0(%rip), %rax ## literal pool symbol address: _ruby_current_execution_context_ptr
0000000000001890 movq (%rax), %r12
0000000000001893 movq 0x80(%r12), %rcx
000000000000189b movq $0x0, 0x80(%r12)
00000000000018a7 movb $0x0, 0x89(%r12)
00000000000018b0 cmpq $0xac1, %rsi
00000000000018b7 je 0x1a48
00000000000018bd movq %rsi, %r15
00000000000018c0 leal 0x1(%r13), %eax
00000000000018c4 movslq %eax, %rdx
00000000000018c7 cmpl $0x7f, %edx
00000000000018ca movl %eax, -0x34(%rbp)
00000000000018cd movq %rcx, -0x50(%rbp)
00000000000018d1 ja 0x18f2
00000000000018d3 movq $0x0, -0x48(%rbp)
00000000000018db movq %rsp, %rbx
00000000000018de leaq 0xf(,%rdx,8), %rax
00000000000018e6 andq $-0x10, %rax
00000000000018ea subq %rax, %rbx
00000000000018ed movq %rbx, %rsp
00000000000018f0 jmp 0x190e
00000000000018f2 testl %eax, %eax
00000000000018f4 js 0x1a61
00000000000018fa leaq (,%rdx,8), %rsi
0000000000001902 leaq -0x48(%rbp), %rdi
0000000000001906 callq 0x1c7a ## symbol stub for: _rb_alloc_tmp_buffer_with_count
000000000000190b movq %rax, %rbx
000000000000190e movq %r15, %rdi
0000000000001911 callq 0x1cec ## symbol stub for: _rb_id2sym
0000000000001916 movq %rax, (%rbx)
0000000000001919 leaq 0x8(%rbx), %rdi
000000000000191d movslq %r13d, %rdx
0000000000001920 shlq $0x3, %rdx
0000000000001924 movq -0x40(%rbp), %rsi
0000000000001928 callq 0x1c68 ## symbol stub for: _memcpy
000000000000192d testb $0x7, %r14b
0000000000001931 je 0x1951
0000000000001933 testb $0x1, %r14b
0000000000001937 jne 0x1964
0000000000001939 movl %r14d, %eax
000000000000193c andl $0x3, %eax
000000000000193f cmpl $0x2, %eax
0000000000001942 jne 0x19ee
0000000000001948 movq 0x6e9(%rip), %rax ## literal pool symbol address: _rb_cFloat
000000000000194f jmp 0x196b
0000000000001951 testq $-0x9, %r14
0000000000001958 je 0x1a00
000000000000195e leaq 0x8(%r14), %rax
0000000000001962 jmp 0x196b
0000000000001964 movq 0x6dd(%rip), %rax ## literal pool symbol address: _rb_cInteger
000000000000196b movq (%rax), %rdi
000000000000196e testq %rdi, %rdi
0000000000001971 je 0x1a42
0000000000001977 movl $0xac1, %esi
000000000000197c callq 0x1c9e ## symbol stub for: _rb_callable_method_entry
0000000000001981 testq %rax, %rax
0000000000001984 je 0x1a42
000000000000198a testb $0x4, 0x2(%rax)
000000000000198e jne 0x1a42
0000000000001994 movq -0x50(%rbp), %rcx
0000000000001998 movq %rcx, 0x80(%r12)
00000000000019a0 movl $0xac1, %edx
00000000000019a5 movq %r12, %rdi
00000000000019a8 movq %r14, %rsi
00000000000019ab movl -0x34(%rbp), %ecx
00000000000019ae movq %rbx, %r8
00000000000019b1 movq %rax, %r9
00000000000019b4 callq 0x1d3a ## symbol stub for: _rb_vm_call0
00000000000019b9 movq %rax, %rbx
00000000000019bc cmpq $0x0, -0x48(%rbp)
00000000000019c1 je 0x19cc
00000000000019c3 leaq -0x48(%rbp), %rdi
00000000000019c7 callq 0x1cce ## symbol stub for: _rb_free_tmp_buffer
00000000000019cc movq 0x63d(%rip), %rax ## literal pool symbol address: ___stack_chk_guard
00000000000019d3 movq (%rax), %rax
00000000000019d6 cmpq -0x30(%rbp), %rax
00000000000019da jne 0x1a3d
00000000000019dc movq %rbx, %rax
00000000000019df leaq -0x28(%rbp), %rsp
00000000000019e3 popq %rbx
00000000000019e4 popq %r12
00000000000019e6 popq %r13
00000000000019e8 popq %r14
00000000000019ea popq %r15
00000000000019ec popq %rbp
00000000000019ed retq
00000000000019ee cmpq $0x14, %r14
00000000000019f2 jne 0x1a1b
00000000000019f4 movq 0x665(%rip), %rax ## literal pool symbol address: _rb_cTrueClass
00000000000019fb jmp 0x196b
0000000000001a00 cmpq $0x8, %r14
0000000000001a04 je 0x1a31
0000000000001a06 testq %r14, %r14
0000000000001a09 jne 0x195e
0000000000001a0f movq 0x61a(%rip), %rax ## literal pool symbol address: _rb_cFalseClass
0000000000001a16 jmp 0x196b
0000000000001a1b cmpb $0xc, %r14b
0000000000001a1f jne 0x195e
0000000000001a25 movq 0x62c(%rip), %rax ## literal pool symbol address: _rb_cSymbol
0000000000001a2c jmp 0x196b
0000000000001a31 movq 0x618(%rip), %rax ## literal pool symbol address: _rb_cNilClass
0000000000001a38 jmp 0x196b
0000000000001a3d callq 0x1c62 ## symbol stub for: ___stack_chk_fail
0000000000001a42 movq %rbx, -0x40(%rbp)
0000000000001a46 jmp 0x1a4f
0000000000001a48 movl %r13d, %eax
0000000000001a4b movl %r13d, -0x34(%rbp)
0000000000001a4f movq %r12, %rdi
0000000000001a52 movl -0x34(%rbp), %esi
0000000000001a55 movq -0x40(%rbp), %rdx
0000000000001a59 movq %r14, %rcx
0000000000001a5c callq _raise_method_missing
0000000000001a61 movl $0x8, %esi
0000000000001a66 movq %rdx, %rdi
0000000000001a69 callq 0x1d4c ## symbol stub for: _ruby_malloc_size_overflow
0000000000001a6e nop
_raise_method_missing:
0000000000001a70 pushq %rbp
0000000000001a71 movq %rsp, %rbp
0000000000001a74 pushq %r15
0000000000001a76 pushq %r14
0000000000001a78 pushq %r12
0000000000001a7a pushq %rbx
0000000000001a7b testl %esi, %esi
0000000000001a7d jne 0x1a97
0000000000001a7f movq 0x5e2(%rip), %rax ## literal pool symbol address: _rb_eArgError
0000000000001a86 movq (%rax), %rdi
0000000000001a89 leaq 0x4b0(%rip), %rsi ## literal pool for: "no method name given"
0000000000001a90 xorl %eax, %eax
0000000000001a92 callq 0x1d22 ## symbol stub for: _rb_raise
0000000000001a97 movq %rcx, %r14
0000000000001a9a movq %rdx, %r15
0000000000001a9d movl %esi, %ebx
0000000000001a9f movq 0x5ca(%rip), %rax ## literal pool symbol address: _rb_eNoMethodError
0000000000001aa6 movq (%rax), %r12
0000000000001aa9 movq (%rdx), %rax
0000000000001aac cmpb $0xc, %al
0000000000001aae je 0x1ac9
0000000000001ab0 testb $0x7, %al
0000000000001ab2 jne 0x1aeb
0000000000001ab4 movq %rax, %rcx
0000000000001ab7 andq $-0x9, %rcx
0000000000001abb je 0x1aeb
0000000000001abd movq (%rax), %rcx
0000000000001ac0 andl $0x1f, %ecx
0000000000001ac3 cmpq $0x14, %rcx
0000000000001ac7 jne 0x1aeb
0000000000001ac9 callq _stack_check
0000000000001ace xorl %esi, %esi
0000000000001ad0 xorl %r9d, %r9d
0000000000001ad3 movq %r12, %rdi
0000000000001ad6 movq %r14, %rdx
0000000000001ad9 movl %ebx, %ecx
0000000000001adb movq %r15, %r8
0000000000001ade callq 0x1cf8 ## symbol stub for: _rb_make_no_method_exception
0000000000001ae3 movq %rax, %rdi
0000000000001ae6 callq 0x1cc8 ## symbol stub for: _rb_exc_raise
0000000000001aeb movq 0x576(%rip), %rcx ## literal pool symbol address: _rb_eArgError
0000000000001af2 movq (%rcx), %rbx
0000000000001af5 movq %rax, %rdi
0000000000001af8 callq 0x1d0a ## symbol stub for: _rb_obj_class
0000000000001afd movq %rax, %rcx
0000000000001b00 leaq 0x44e(%rip), %rsi ## literal pool for: "method name must be a Symbol but %li\013 is given"
0000000000001b07 xorl %eax, %eax
0000000000001b09 movq %rbx, %rdi
0000000000001b0c movq %rcx, %rdx
0000000000001b0f callq 0x1d22 ## symbol stub for: _rb_raise
0000000000001b14 nopw %cs:(%rax,%rax)
0000000000001b1e nop
_stack_check:
0000000000001b20 pushq %rbp
0000000000001b21 movq %rsp, %rbp
0000000000001b24 pushq %rbx
0000000000001b25 pushq %rax
0000000000001b26 testb $0x2, 0x88(%rdi)
0000000000001b2d jne 0x1b3b
0000000000001b2f movq %rdi, %rbx
0000000000001b32 callq 0x1cc2 ## symbol stub for: _rb_ec_stack_check
0000000000001b37 testl %eax, %eax
0000000000001b39 jne 0x1b42
0000000000001b3b addq $0x8, %rsp
0000000000001b3f popq %rbx
0000000000001b40 popq %rbp
0000000000001b41 retq
0000000000001b42 orb $0x2, 0x88(%rbx)
0000000000001b49 movq %rbx, %rdi
0000000000001b4c callq _rb_ec_stack_overflow
0000000000001b51 nopw %cs:(%rax,%rax)
0000000000001b5b nopl (%rax,%rax)
_rb_ec_stack_overflow:
0000000000001b60 pushq %rbp
0000000000001b61 movq %rsp, %rbp
0000000000001b64 pushq %rbx
0000000000001b65 pushq %rax
0000000000001b66 movq %rdi, %rbx
0000000000001b69 callq 0x1cb6 ## symbol stub for: _rb_during_gc
0000000000001b6e testl %eax, %eax
0000000000001b70 jne 0x1b7a
0000000000001b72 movq %rbx, %rdi
0000000000001b75 callq _ec_stack_overflow
0000000000001b7a movb $0x2, 0x88(%rbx)
0000000000001b81 movq 0x18(%rbx), %rdi
0000000000001b85 movq 0x38(%rbx), %rax
0000000000001b89 movq 0x18(%rax), %rax
0000000000001b8d movq 0x1b0(%rax), %rax
0000000000001b94 movq %rax, 0x78(%rbx)
0000000000001b98 callq _rb_ec_tag_jump
0000000000001b9d nopl (%rax)
_rb_ec_tag_jump:
0000000000001ba0 pushq %rbp
0000000000001ba1 movq %rsp, %rbp
0000000000001ba4 movl $0x6, 0xb0(%rdi)
0000000000001bae addq $0x10, %rdi
0000000000001bb2 movl $0x1, %esi
0000000000001bb7 callq 0x1d52 ## symbol stub for: _siglongjmp
0000000000001bbc nopl (%rax)
_ec_stack_overflow:
0000000000001bc0 pushq %rbp
0000000000001bc1 movq %rsp, %rbp
0000000000001bc4 pushq %r15
0000000000001bc6 pushq %r14
0000000000001bc8 pushq %rbx
0000000000001bc9 pushq %rax
0000000000001bca movq %rdi, %rbx
0000000000001bcd movq 0x38(%rdi), %rax
0000000000001bd1 movq 0x18(%rax), %rax
0000000000001bd5 movq 0x1a8(%rax), %r14
0000000000001bdc movb $0x2, 0x88(%rdi)
0000000000001be3 callq 0x1cbc ## symbol stub for: _rb_ec_backtrace_object
0000000000001be8 movq %rax, %r15
0000000000001beb movq %r14, %rdi
0000000000001bee callq _ruby_vm_special_exception_copy
0000000000001bf3 movq %rax, %r14
0000000000001bf6 movl $0xcd1, %esi
0000000000001bfb movq %rax, %rdi
0000000000001bfe movq %r15, %rdx
0000000000001c01 callq 0x1cf2 ## symbol stub for: _rb_ivar_set
0000000000001c06 movl $0xce1, %esi
0000000000001c0b movq %r14, %rdi
0000000000001c0e movq %r15, %rdx
0000000000001c11 callq 0x1cf2 ## symbol stub for: _rb_ivar_set
0000000000001c16 movq %r14, 0x78(%rbx)
0000000000001c1a movq 0x18(%rbx), %rdi
0000000000001c1e callq _rb_ec_tag_jump
0000000000001c23 nopw %cs:(%rax,%rax)
0000000000001c2d nopl (%rax)
_ruby_vm_special_exception_copy:
0000000000001c30 pushq %rbp
0000000000001c31 movq %rsp, %rbp
0000000000001c34 pushq %r14
0000000000001c36 pushq %rbx
0000000000001c37 movq %rdi, %r14
0000000000001c3a movq 0x8(%rdi), %rdi
0000000000001c3e callq 0x1cb0 ## symbol stub for: _rb_class_real
0000000000001c43 movq %rax, %rdi
0000000000001c46 callq 0x1d04 ## symbol stub for: _rb_obj_alloc
0000000000001c4b movq %rax, %rbx
0000000000001c4e movq %rax, %rdi
0000000000001c51 movq %r14, %rsi
0000000000001c54 callq 0x1d16 ## symbol stub for: _rb_obj_copy_ivar
0000000000001c59 movq %rbx, %rax
0000000000001c5c popq %rbx
0000000000001c5d popq %r14
0000000000001c5f popq %rbp
0000000000001c60 retq
jit_without_flto.bundle:
(__TEXT,__text) section
__mjit0:
0000000000000e30 pushq %rbp
0000000000000e31 movq %rsp, %rbp
0000000000000e34 pushq %r15
0000000000000e36 pushq %r14
0000000000000e38 pushq %r13
0000000000000e3a pushq %r12
0000000000000e3c pushq %rbx
0000000000000e3d pushq %rax
0000000000000e3e movq %rsi, %rbx
0000000000000e41 movabsq $0x7f9b97904908, %r15
0000000000000e4b movq 0x20(%rsi), %rax
0000000000000e4f movq -0x18(%rax), %r14
0000000000000e53 movq -0x8(%rax), %rax
0000000000000e57 andq $-0x4, %rax
0000000000000e5b movq -0x18(%rax), %r12
0000000000000e5f movq -0x8(%rax), %rax
0000000000000e63 andq $-0x4, %rax
0000000000000e67 movq -0x18(%rax), %r13
0000000000000e6b leaq 0x18(%r15), %rax
0000000000000e6f movq %rax, (%rsi)
0000000000000e72 testb $0x7, %r13b
0000000000000e76 jne 0xf14
0000000000000e7c movq %r13, %rax
0000000000000e7f andq $-0x9, %rax
0000000000000e83 je 0xf14
0000000000000e89 movq 0x8(%r13), %rax
0000000000000e8d movq 0x1194(%rip), %rcx ## literal pool symbol address: _rb_cArray
0000000000000e94 cmpq (%rcx), %rax
0000000000000e97 jne 0xed9
0000000000000e99 testb $0x1, %r12b
0000000000000e9d je 0xed9
0000000000000e9f movq 0x11e2(%rip), %rcx ## literal pool symbol address: _ruby_current_vm_ptr
0000000000000ea6 movq (%rcx), %rcx
0000000000000ea9 movzwl 0x436(%rcx), %ecx
0000000000000eb0 andl $0x8, %ecx
0000000000000eb3 testw %cx, %cx
0000000000000eb6 jne 0xed9
0000000000000eb8 movq %rdi, -0x30(%rbp)
0000000000000ebc movq %r12, %rsi
0000000000000ebf sarq %rsi
0000000000000ec2 movq %r13, %rdi
0000000000000ec5 movq %r14, %rdx
0000000000000ec8 callq 0x1c92 ## symbol stub for: _rb_ary_store
0000000000000ecd cmpq $0x34, %r14
0000000000000ed1 movq -0x30(%rbp), %rcx
0000000000000ed5 je 0xf14
0000000000000ed7 jmp 0xf4b
0000000000000ed9 movq 0x1160(%rip), %rcx ## literal pool symbol address: _rb_cHash
0000000000000ee0 cmpq (%rcx), %rax
0000000000000ee3 jne 0xf14
0000000000000ee5 movq 0x119c(%rip), %rax ## literal pool symbol address: _ruby_current_vm_ptr
0000000000000eec movq (%rax), %rax
0000000000000eef testb $0x10, 0x436(%rax)
0000000000000ef6 jne 0xf14
0000000000000ef8 movq %rdi, -0x30(%rbp)
0000000000000efc movq %r13, %rdi
0000000000000eff movq %r12, %rsi
0000000000000f02 movq %r14, %rdx
0000000000000f05 callq 0x1ce0 ## symbol stub for: _rb_hash_aset
0000000000000f0a cmpq $0x34, %r14
0000000000000f0e movq -0x30(%rbp), %rcx
0000000000000f12 jne 0xf4b
0000000000000f14 movq 0x30(%rbx), %rax
0000000000000f18 leaq 0x28(%rax), %rcx
0000000000000f1c movq %rcx, 0x8(%rbx)
0000000000000f20 movq %r15, (%rbx)
0000000000000f23 movq %r14, 0x8(%rax)
0000000000000f27 movq %r13, 0x10(%rax)
0000000000000f2b movq %r12, 0x18(%rax)
0000000000000f2f movq %r14, 0x20(%rax)
0000000000000f33 movl $0x34, %r14d
0000000000000f39 movq %r14, %rax
0000000000000f3c addq $0x8, %rsp
0000000000000f40 popq %rbx
0000000000000f41 popq %r12
0000000000000f43 popq %r13
0000000000000f45 popq %r14
0000000000000f47 popq %r15
0000000000000f49 popq %rbp
0000000000000f4a retq
0000000000000f4b movq 0x113e(%rip), %rax ## literal pool symbol address: _ruby_vm_event_enabled_global_flags
0000000000000f52 testl $0x3031f, (%rax)
0000000000000f58 jne 0xf81
0000000000000f5a addq $0x30, %r15
0000000000000f5e movq %r15, (%rbx)
0000000000000f61 movq 0x30(%rbx), %rax
0000000000000f65 addq $0x8, %rax
0000000000000f69 movq %rax, 0x8(%rbx)
0000000000000f6d movl 0x2c(%rcx), %eax
0000000000000f70 notl %eax
0000000000000f72 testl %eax, 0x28(%rcx)
0000000000000f75 jne 0xf92
0000000000000f77 addq $0x38, %rbx
0000000000000f7b movq %rbx, 0x10(%rcx)
0000000000000f7f jmp 0xf39
0000000000000f81 movq 0x30(%rbx), %rax
0000000000000f85 leaq 0x18(%rax), %rcx
0000000000000f89 movq %rcx, 0x8(%rbx)
0000000000000f8d movq %r14, %r13
0000000000000f90 jmp 0xf23
0000000000000f92 movq %rcx, %r15
0000000000000f95 movq 0x38(%rcx), %rdi
0000000000000f99 xorl %esi, %esi
0000000000000f9b callq 0x1d34 ## symbol stub for: _rb_threadptr_execute_interrupts
0000000000000fa0 movq %r15, %rcx
0000000000000fa3 jmp 0xf77
0000000000000fa5 nop
0000000000000fa6 nop
0000000000000fa7 nop
0000000000000fa8 nop
0000000000000fa9 nop
0000000000000faa nop
0000000000000fab nop
0000000000000fac nop
0000000000000fad nop
0000000000000fae nop
0000000000000faf nop
__mjit1:
0000000000000fb0 pushq %rbp
0000000000000fb1 movq %rsp, %rbp
0000000000000fb4 pushq %r15
0000000000000fb6 pushq %r14
0000000000000fb8 pushq %r13
0000000000000fba pushq %r12
0000000000000fbc pushq %rbx
0000000000000fbd subq $0x48, %rsp
0000000000000fc1 movq %rsi, %r12
0000000000000fc4 movq %rdi, %r15
0000000000000fc7 movq 0x1042(%rip), %rax ## literal pool symbol address: ___stack_chk_guard
0000000000000fce movq (%rax), %rax
0000000000000fd1 movq %rax, -0x30(%rbp)
0000000000000fd5 movabsq $0x7f9b97034258, %r14
0000000000000fdf movq 0x20(%rsi), %rax
0000000000000fe3 movq -0x8(%rax), %rcx
0000000000000fe7 andq $-0x4, %rcx
0000000000000feb movq -0x18(%rcx), %rcx
0000000000000fef movq %rcx, -0x50(%rbp)
0000000000000ff3 movq -0x18(%rax), %rax
0000000000000ff7 movq %rax, -0x48(%rbp)
0000000000000ffb leaq -0x40(%rbp), %rsi
0000000000000fff xorl %edi, %edi
0000000000001001 callq 0x1c80 ## symbol stub for: _rb_ary_new_from_values
0000000000001006 movq %rax, %rbx
0000000000001009 movq %rax, -0x40(%rbp)
000000000000100d movq -0x50(%rbp), %rdi
0000000000001011 movq -0x48(%rbp), %rsi
0000000000001015 leaq 0x8d0408(%r14), %rax
000000000000101c movq %rax, (%r12)
0000000000001020 testb $0x7, %dil
0000000000001024 jne 0x111a
000000000000102a movq %rdi, %rax
000000000000102d andq $-0x9, %rax
0000000000001031 je 0x111a
0000000000001037 movq 0x8(%rdi), %rax
000000000000103b movq 0xfe6(%rip), %rcx ## literal pool symbol address: _rb_cArray
0000000000001042 cmpq (%rcx), %rax
0000000000001045 jne 0x10e5
000000000000104b testb $0x1, %sil
000000000000104f je 0x10e5
0000000000001055 movq 0x102c(%rip), %rcx ## literal pool symbol address: _ruby_current_vm_ptr
000000000000105c movq (%rcx), %rcx
000000000000105f movzwl 0x436(%rcx), %ecx
0000000000001066 andl $0x8, %ecx
0000000000001069 testw %cx, %cx
000000000000106c jne 0x10e5
000000000000106e sarq %rsi
0000000000001071 movq %rbx, %rdx
0000000000001074 callq 0x1c92 ## symbol stub for: _rb_ary_store
0000000000001079 cmpq $0x34, %rbx
000000000000107d je 0x1116
0000000000001083 movq %rbx, -0x50(%rbp)
0000000000001087 movq 0x1002(%rip), %r13 ## literal pool symbol address: _ruby_vm_event_enabled_global_flags
000000000000108e testl $0x3031f, (%r13)
0000000000001096 jne 0x1510
000000000000109c movq %r14, -0x50(%rbp)
00000000000010a0 leaq 0x8d0440(%r14), %rax
00000000000010a7 movq %rax, (%r12)
00000000000010ab movq 0x30(%r12), %rax
00000000000010b0 leaq 0x10(%rax), %rcx
00000000000010b4 movq %rcx, 0x8(%r12)
00000000000010b9 movq %r14, 0x8(%rax)
00000000000010bd testb $0x2, 0x8d0470(%r14)
00000000000010c5 jne 0x1175
00000000000010cb leaq 0x18(%r12), %rbx
00000000000010d0 leaq 0xf0(%r14), %rax
00000000000010d7 movq %rax, 0x28(%r12)
00000000000010dc orq $0x1, %rbx
00000000000010e0 jmp 0x120f
00000000000010e5 movq 0xf54(%rip), %rcx ## literal pool symbol address: _rb_cHash
00000000000010ec cmpq (%rcx), %rax
00000000000010ef jne 0x111a
00000000000010f1 movq 0xf90(%rip), %rax ## literal pool symbol address: _ruby_current_vm_ptr
00000000000010f8 movq (%rax), %rax
00000000000010fb testb $0x10, 0x436(%rax)
0000000000001102 jne 0x111a
0000000000001104 movq %rbx, %rdx
0000000000001107 callq 0x1ce0 ## symbol stub for: _rb_hash_aset
000000000000110c cmpq $0x34, %rbx
0000000000001110 jne 0x1083
0000000000001116 movq -0x50(%rbp), %rdi
000000000000111a movq 0x30(%r12), %rax
000000000000111f leaq 0x20(%rax), %rcx
0000000000001123 movq %rcx, 0x8(%r12)
0000000000001128 addq $0x8d03f0, %r14
000000000000112f movq %r14, (%r12)
0000000000001133 movq %rdi, %rbx
0000000000001136 movq %rbx, 0x8(%rax)
000000000000113a movq -0x48(%rbp), %rcx
000000000000113e movq %rcx, 0x10(%rax)
0000000000001142 movq -0x40(%rbp), %rcx
0000000000001146 movq %rcx, 0x18(%rax)
000000000000114a movl $0x34, %ebx
000000000000114f movq 0xeba(%rip), %rax ## literal pool symbol address: ___stack_chk_guard
0000000000001156 movq (%rax), %rax
0000000000001159 cmpq -0x30(%rbp), %rax
000000000000115d jne 0x1391
0000000000001163 movq %rbx, %rax
0000000000001166 addq $0x48, %rsp
000000000000116a popq %rbx
000000000000116b popq %r12
000000000000116d popq %r13
000000000000116f popq %r14
0000000000001171 popq %r15
0000000000001173 popq %rbp
0000000000001174 retq
0000000000001175 addq $0x8, %rax
0000000000001179 movq %rax, 0x8(%r12)
000000000000117e movq (%r14), %rax
0000000000001181 andl $0x1f, %eax
0000000000001184 cmpq $0x14, %rax
0000000000001188 jne 0x11fb
000000000000118a movq 0xec7(%rip), %rax ## literal pool symbol address: _rb_cSymbol
0000000000001191 movq (%rax), %rdi
0000000000001194 movl $0xc61, %esi
0000000000001199 callq 0x1cfe ## symbol stub for: _rb_method_basic_definition_p
000000000000119e testl %eax, %eax
00000000000011a0 je 0x11fb
00000000000011a2 movq 0x20(%r12), %rcx
00000000000011a7 jmp 0x11b8
00000000000011a9 nopl (%rax)
00000000000011b0 movq -0x8(%rcx), %rcx
00000000000011b4 andq $-0x4, %rcx
00000000000011b8 movq -0x10(%rcx), %rax
00000000000011bc testq %rax, %rax
00000000000011bf sete %dl
00000000000011c2 testb $0x2, (%rcx)
00000000000011c5 jne 0x13a8
00000000000011cb testb $0x1, %dl
00000000000011ce jne 0x11b0
00000000000011d0 movq (%rax), %rdx
00000000000011d3 shrq $0xc, %rdx
00000000000011d7 andb $0xf, %dl
00000000000011da cmpb $0x1, %dl
00000000000011dd je 0x11f1
00000000000011df cmpb $0x6, %dl
00000000000011e2 jne 0x11b0
00000000000011e4 movq 0x10(%rax), %rax
00000000000011e8 testb $0xf, (%rax)
00000000000011eb jne 0x11b0
00000000000011ed movq 0x10(%rax), %rax
00000000000011f1 testq %rax, %rax
00000000000011f4 je 0x11b0
00000000000011f6 jmp 0x1462
00000000000011fb movq %r14, %rdi
00000000000011fe callq 0x1d1c ## symbol stub for: _rb_obj_is_proc
0000000000001203 movq %r14, %rbx
0000000000001206 testq %rax, %rax
0000000000001209 je 0x154b
000000000000120f movq %rbx, -0x70(%rbp)
0000000000001213 movq 0x8(%r12), %rax
0000000000001218 movslq 0x8d0474(%r14), %rcx
000000000000121f movl %ecx, -0x60(%rbp)
0000000000001222 shlq $0x3, %rcx
0000000000001226 negq %rcx
0000000000001229 movq -0x8(%rax,%rcx), %rax
000000000000122e movq %rax, -0x68(%rbp)
0000000000001232 testb $0x7, %al
0000000000001234 je 0x1251
0000000000001236 testb $0x1, %al
0000000000001238 jne 0x1263
000000000000123a movl %eax, %ecx
000000000000123c andl $0x3, %ecx
000000000000123f cmpl $0x2, %ecx
0000000000001242 jne 0x1396
0000000000001248 movq 0xde9(%rip), %rax ## literal pool symbol address: _rb_cFloat
000000000000124f jmp 0x126a
0000000000001251 testq $-0x9, %rax
0000000000001257 je 0x13f8
000000000000125d addq $0x8, %rax
0000000000001261 jmp 0x126a
0000000000001263 movq 0xdde(%rip), %rax ## literal pool symbol address: _rb_cInteger
000000000000126a movq (%rax), %rdx
000000000000126d movq 0xe24(%rip), %rax ## literal pool symbol address: _ruby_vm_global_method_state
0000000000001274 movq (%rax), %rax
0000000000001277 cmpq 0x8d04a0(%r14), %rax
000000000000127e jne 0x1523
0000000000001284 movq 0x18(%rdx), %rax
0000000000001288 movq 0x38(%rax), %rax
000000000000128c cmpq 0x8d04a8(%r14), %rax
0000000000001293 jne 0x1523
0000000000001299 leaq 0x8d0468(%r14), %rcx
00000000000012a0 leaq 0x8d04a0(%r14), %r8
00000000000012a7 leaq -0x70(%rbp), %rdx
00000000000012ab movq %r15, %rdi
00000000000012ae movq %r12, %rsi
00000000000012b1 callq *0x8d04b8(%r14)
00000000000012b8 movq %rax, %rbx
00000000000012bb cmpq $0x34, %rax
00000000000012bf jne 0x133a
00000000000012c1 movq 0x10(%r15), %rsi
00000000000012c5 movq 0x10(%rsi), %rdi
00000000000012c9 movq 0x10(%rdi), %rbx
00000000000012cd cmpb $0x0, 0x120(%rbx)
00000000000012d4 je 0x12e5
00000000000012d6 movq 0x20(%rsi), %rax
00000000000012da orq $0x20, (%rax)
00000000000012de movl $0x1, %esi
00000000000012e3 jmp 0x132f
00000000000012e5 movq 0xd2c(%rip), %rax ## literal pool symbol address: _mjit_call_p
00000000000012ec cmpl $0x0, (%rax)
00000000000012ef je 0x1321
00000000000012f1 movq 0x108(%rbx), %rax
00000000000012f8 movq 0x110(%rbx), %rcx
00000000000012ff incq %rcx
0000000000001302 movq %rcx, 0x110(%rbx)
0000000000001309 cmpq $0x3, %rax
000000000000130d jbe 0x15e6
0000000000001313 movq %r15, %rdi
0000000000001316 callq *%rax
0000000000001318 movq %rax, %rbx
000000000000131b cmpq $0x34, %rax
000000000000131f jne 0x133a
0000000000001321 movq 0x10(%r15), %rax
0000000000001325 movq 0x20(%rax), %rax
0000000000001329 orq $0x20, (%rax)
000000000000132d xorl %esi, %esi
000000000000132f movq %r15, %rdi
0000000000001332 callq 0x1d40 ## symbol stub for: _rb_vm_exec
0000000000001337 movq %rax, %rbx
000000000000133a movq %rbx, -0x50(%rbp)
000000000000133e testl $0x3031f, (%r13)
0000000000001346 jne 0x1510
000000000000134c addq $0x8d0458, %r14
0000000000001353 movq %r14, (%r12)
0000000000001357 movq 0x30(%r12), %rax
000000000000135c addq $0x8, %rax
0000000000001360 movq %rax, 0x8(%r12)
0000000000001365 movl 0x2c(%r15), %eax
0000000000001369 notl %eax
000000000000136b testl %eax, 0x28(%r15)
000000000000136f jne 0x153b
0000000000001375 addq $0x38, %r12
0000000000001379 movq %r12, 0x10(%r15)
000000000000137d movq 0xc8c(%rip), %rax ## literal pool symbol address: ___stack_chk_guard
0000000000001384 movq (%rax), %rax
0000000000001387 cmpq -0x30(%rbp), %rax
000000000000138b je 0x1163
0000000000001391 callq 0x1c62 ## symbol stub for: ___stack_chk_fail
0000000000001396 cmpq $0x14, %rax
000000000000139a jne 0x1413
000000000000139c movq 0xcbd(%rip), %rax ## literal pool symbol address: _rb_cTrueClass
00000000000013a3 jmp 0x126a
00000000000013a8 movq %r14, %rbx
00000000000013ab testb %dl, %dl
00000000000013ad jne 0x120f
00000000000013b3 movq (%rax), %rcx
00000000000013b6 shrq $0xc, %rcx
00000000000013ba andb $0xf, %cl
00000000000013bd cmpb $0x1, %cl
00000000000013c0 je 0x1456
00000000000013c6 cmpb $0x2, %cl
00000000000013c9 je 0x1433
00000000000013cb movq %r14, %rbx
00000000000013ce cmpb $0x6, %cl
00000000000013d1 jne 0x120f
00000000000013d7 movq 0x10(%rax), %rax
00000000000013db testb $0xf, (%rax)
00000000000013de movq %r14, %rbx
00000000000013e1 jne 0x120f
00000000000013e7 movq 0x10(%rax), %rax
00000000000013eb movq %r14, %rbx
00000000000013ee testq %rax, %rax
00000000000013f1 jne 0x1462
00000000000013f3 jmp 0x120f
00000000000013f8 cmpq $0x8, %rax
00000000000013fc je 0x1427
00000000000013fe testq %rax, %rax
0000000000001401 jne 0x125d
0000000000001407 movq 0xc22(%rip), %rax ## literal pool symbol address: _rb_cFalseClass
000000000000140e jmp 0x126a
0000000000001413 cmpb $0xc, %al
0000000000001415 jne 0x125d
000000000000141b movq 0xc36(%rip), %rax ## literal pool symbol address: _rb_cSymbol
0000000000001422 jmp 0x126a
0000000000001427 movq 0xc22(%rip), %rax ## literal pool symbol address: _rb_cNilClass
000000000000142e jmp 0x126a
0000000000001433 movq 0x8(%rax), %rax
0000000000001437 movq %r14, %rbx
000000000000143a testq %rax, %rax
000000000000143d je 0x120f
0000000000001443 movq (%rax), %rcx
0000000000001446 shrq $0xc, %rcx
000000000000144a andb $0xf, %cl
000000000000144d cmpb $0x1, %cl
0000000000001450 jne 0x13cb
0000000000001456 movq %r14, %rbx
0000000000001459 testq %rax, %rax
000000000000145c je 0x120f
0000000000001462 movq 0x8(%rax), %rdi
0000000000001466 movq %r14, %rbx
0000000000001469 cmpq $0x8, %rdi
000000000000146d je 0x120f
0000000000001473 movq %r14, %rsi
0000000000001476 movq %rdi, -0x58(%rbp)
000000000000147a callq 0x1ce6 ## symbol stub for: _rb_hash_lookup
000000000000147f movq %rax, %rbx
0000000000001482 cmpq $0x8, %rax
0000000000001486 jne 0x120f
000000000000148c movl $0x2, %edi
0000000000001491 callq 0x1c98 ## symbol stub for: _rb_ary_tmp_new
0000000000001496 movq %rax, %rbx
0000000000001499 movq %rax, %rdi
000000000000149c callq 0x1c8c ## symbol stub for: _rb_ary_ptr_use_start
00000000000014a1 movq %r14, (%rax)
00000000000014a4 movq %rbx, %rdi
00000000000014a7 movq %r14, %rsi
00000000000014aa callq 0x1cda ## symbol stub for: _rb_gc_writebarrier
00000000000014af movq %rbx, %rdi
00000000000014b2 callq 0x1c86 ## symbol stub for: _rb_ary_ptr_use_end
00000000000014b7 movq %rbx, %rdi
00000000000014ba callq 0x1c8c ## symbol stub for: _rb_ary_ptr_use_start
00000000000014bf movq -0x58(%rbp), %rsi
00000000000014c3 movq %rsi, 0x8(%rax)
00000000000014c7 testb $0x7, %sil
00000000000014cb jne 0x14de
00000000000014cd movq %rsi, %rax
00000000000014d0 andq $-0x9, %rax
00000000000014d4 je 0x14de
00000000000014d6 movq %rbx, %rdi
00000000000014d9 callq 0x1cda ## symbol stub for: _rb_gc_writebarrier
00000000000014de movq %rbx, %rdi
00000000000014e1 callq 0x1c86 ## symbol stub for: _rb_ary_ptr_use_end
00000000000014e6 orb $0x8, 0x1(%rbx)
00000000000014ea leaq _refine_sym_proc_call(%rip), %rdi
00000000000014f1 movq %rbx, %rsi
00000000000014f4 callq 0x1cd4 ## symbol stub for: _rb_func_proc_new
00000000000014f9 movq %rax, %rbx
00000000000014fc movq -0x58(%rbp), %rdi
0000000000001500 movq %r14, %rsi
0000000000001503 movq %rax, %rdx
0000000000001506 callq 0x1ce0 ## symbol stub for: _rb_hash_aset
000000000000150b jmp 0x120f
0000000000001510 movq 0x30(%r12), %rax
0000000000001515 leaq 0x10(%rax), %rcx
0000000000001519 movq %rcx, 0x8(%r12)
000000000000151e jmp 0x1136
0000000000001523 leaq 0x8d0468(%r14), %rdi
000000000000152a leaq 0x8d04a0(%r14), %rsi
0000000000001531 callq 0x1d46 ## symbol stub for: _rb_vm_search_method_slowpath
0000000000001536 jmp 0x1299
000000000000153b movq 0x38(%r15), %rdi
000000000000153f xorl %esi, %esi
0000000000001541 callq 0x1d34 ## symbol stub for: _rb_threadptr_execute_interrupts
0000000000001546 jmp 0x1375
000000000000154b movq 0x8(%r14), %rdi
000000000000154f movl $0xc61, %esi
0000000000001554 xorl %edx, %edx
0000000000001556 callq 0x1ca4 ## symbol stub for: _rb_callable_method_entry_with_refinements
000000000000155b testq %rax, %rax
000000000000155e je 0x158a
0000000000001560 movq 0xb19(%rip), %rcx ## literal pool symbol address: _ruby_current_execution_context_ptr
0000000000001567 movq (%rcx), %rdi
000000000000156a movl $0xc61, %edx
000000000000156f xorl %ecx, %ecx
0000000000001571 xorl %r8d, %r8d
0000000000001574 movq %r14, %rsi
0000000000001577 movq %rax, %r9
000000000000157a callq 0x1d3a ## symbol stub for: _rb_vm_call0
000000000000157f movq %rax, %rbx
0000000000001582 cmpq $0x8, %rax
0000000000001586 jne 0x15ac
0000000000001588 jmp 0x15bd
000000000000158a leaq 0x9c7(%rip), %rdx ## literal pool for: "Proc"
0000000000001591 movl $0xc, %esi
0000000000001596 movl $0xc61, %ecx
000000000000159b movq %r14, %rdi
000000000000159e callq 0x1caa ## symbol stub for: _rb_check_convert_type_with_id
00000000000015a3 movq %rax, %rbx
00000000000015a6 cmpq $0x8, %rax
00000000000015aa je 0x15bd
00000000000015ac movq %rbx, %rdi
00000000000015af callq 0x1d1c ## symbol stub for: _rb_obj_is_proc
00000000000015b4 testq %rax, %rax
00000000000015b7 jne 0x120f
00000000000015bd movq 0xab4(%rip), %rax ## literal pool symbol address: _rb_eTypeError
00000000000015c4 movq (%rax), %rbx
00000000000015c7 movq %r14, %rdi
00000000000015ca callq 0x1d10 ## symbol stub for: _rb_obj_classname
00000000000015cf movq %rax, %rcx
00000000000015d2 leaq 0x984(%rip), %rsi ## literal pool for: "wrong argument type %s (expected Proc)"
00000000000015d9 xorl %eax, %eax
00000000000015db movq %rbx, %rdi
00000000000015de movq %rcx, %rdx
00000000000015e1 callq 0x1d22 ## symbol stub for: _rb_raise
00000000000015e6 leal -0x1(%rax), %edx
00000000000015e9 cmpl $0x2, %edx
00000000000015ec jb 0x1321
00000000000015f2 testl %eax, %eax
00000000000015f4 jne 0x1313
00000000000015fa movq 0xa1f(%rip), %rax ## literal pool symbol address: _mjit_opts
0000000000001601 movl 0x8(%rax), %eax
0000000000001604 cmpq %rax, %rcx
0000000000001607 jne 0x1321
000000000000160d movl (%rbx), %eax
000000000000160f decl %eax
0000000000001611 cmpl $0x1, %eax
0000000000001614 ja 0x1321
000000000000161a cmpl $0x3e7, 0x4(%rbx)
0000000000001621 ja 0x1321
0000000000001627 callq 0x1c6e ## symbol stub for: _mjit_add_iseq_to_process
000000000000162c movq 0x9ed(%rip), %rax ## literal pool symbol address: _mjit_opts
0000000000001633 cmpl $0x0, 0x4(%rax)
0000000000001637 je 0x1321
000000000000163d movq %r15, %rdi
0000000000001640 movq %rbx, %rsi
0000000000001643 callq 0x1c74 ## symbol stub for: _mjit_wait_call
0000000000001648 movq %rax, %rbx
000000000000164b cmpq $0x34, %rax
000000000000164f je 0x1321
0000000000001655 jmp 0x133a
000000000000165a nopw (%rax,%rax)
_refine_sym_proc_call:
0000000000001660 pushq %rbp
0000000000001661 movq %rsp, %rbp
0000000000001664 pushq %r15
0000000000001666 pushq %r14
0000000000001668 pushq %r13
000000000000166a pushq %r12
000000000000166c pushq %rbx
000000000000166d subq $0x18, %rsp
0000000000001671 movq %r8, -0x30(%rbp)
0000000000001675 movq %rcx, %r14
0000000000001678 movl %edx, %r12d
000000000000167b testb $0x20, 0x1(%rsi)
000000000000167f jne 0x168f
0000000000001681 movq 0x20(%rsi), %rsi
0000000000001685 testl %r12d, %r12d
0000000000001688 jg 0x169c
000000000000168a jmp 0x1806
000000000000168f addq $0x10, %rsi
0000000000001693 testl %r12d, %r12d
0000000000001696 jle 0x1806
000000000000169c movq 0x8(%rsi), %r15
00000000000016a0 movq (%rsi), %rdi
00000000000016a3 movq (%r14), %r13
00000000000016a6 callq 0x1d2e ## symbol stub for: _rb_sym2id
00000000000016ab movq %rax, %rbx
00000000000016ae testb $0x7, %r13b
00000000000016b2 movq %r14, -0x38(%rbp)
00000000000016b6 je 0x16e1
00000000000016b8 testb $0x1, %r13b
00000000000016bc jne 0x16ff
00000000000016be movl %r13d, %eax
00000000000016c1 andl $0x3, %eax
00000000000016c4 cmpl $0x2, %eax
00000000000016c7 jne 0x1713
00000000000016c9 movq 0x968(%rip), %rax ## literal pool symbol address: _rb_cFloat
00000000000016d0 movq (%rax), %r14
00000000000016d3 testq %r14, %r14
00000000000016d6 jne 0x1779
00000000000016dc jmp 0x179b
00000000000016e1 testq $-0x9, %r13
00000000000016e8 je 0x172a
00000000000016ea leaq 0x8(%r13), %rax
00000000000016ee movq (%rax), %r14
00000000000016f1 testq %r14, %r14
00000000000016f4 jne 0x1779
00000000000016fa jmp 0x179b
00000000000016ff movq 0x942(%rip), %rax ## literal pool symbol address: _rb_cInteger
0000000000001706 movq (%rax), %r14
0000000000001709 testq %r14, %r14
000000000000170c jne 0x1779
000000000000170e jmp 0x179b
0000000000001713 cmpq $0x14, %r13
0000000000001717 jne 0x1746
0000000000001719 movq 0x940(%rip), %rax ## literal pool symbol address: _rb_cTrueClass
0000000000001720 movq (%rax), %r14
0000000000001723 testq %r14, %r14
0000000000001726 jne 0x1779
0000000000001728 jmp 0x179b
000000000000172a cmpq $0x8, %r13
000000000000172e je 0x175d
0000000000001730 testq %r13, %r13
0000000000001733 jne 0x16ea
0000000000001735 movq 0x8f4(%rip), %rax ## literal pool symbol address: _rb_cFalseClass
000000000000173c movq (%rax), %r14
000000000000173f testq %r14, %r14
0000000000001742 jne 0x1779
0000000000001744 jmp 0x179b
0000000000001746 cmpb $0xc, %r13b
000000000000174a jne 0x16ea
000000000000174c movq 0x905(%rip), %rax ## literal pool symbol address: _rb_cSymbol
0000000000001753 movq (%rax), %r14
0000000000001756 testq %r14, %r14
0000000000001759 jne 0x1779
000000000000175b jmp 0x179b
000000000000175d movq 0x8ec(%rip), %rax ## literal pool symbol address: _rb_cNilClass
0000000000001764 movq (%rax), %r14
0000000000001767 testq %r14, %r14
000000000000176a jne 0x1779
000000000000176c jmp 0x179b
000000000000176e nop
0000000000001770 movq 0x10(%r14), %r14
0000000000001774 testq %r14, %r14
0000000000001777 je 0x179b
0000000000001779 movq %r14, %rdi
000000000000177c movq %rbx, %rsi
000000000000177f callq 0x1c9e ## symbol stub for: _rb_callable_method_entry
0000000000001784 testq %rax, %rax
0000000000001787 je 0x1770
0000000000001789 movq %r15, %rdi
000000000000178c movq %rax, %rsi
000000000000178f callq 0x1d28 ## symbol stub for: _rb_resolve_refined_method_callable
0000000000001794 testq %rax, %rax
0000000000001797 je 0x1770
0000000000001799 jmp 0x179d
000000000000179b xorl %eax, %eax
000000000000179d movq 0x8dc(%rip), %rcx ## literal pool symbol address: _ruby_current_execution_context_ptr
00000000000017a4 movq (%rcx), %rdi
00000000000017a7 movq -0x30(%rbp), %rcx
00000000000017ab cmpq $0x8, %rcx
00000000000017af movq -0x38(%rbp), %r8
00000000000017b3 je 0x17bc
00000000000017b5 movq %rcx, 0x80(%rdi)
00000000000017bc decl %r12d
00000000000017bf addq $0x8, %r8
00000000000017c3 testq %rax, %rax
00000000000017c6 je 0x17e7
00000000000017c8 movq %r13, %rsi
00000000000017cb movq %rbx, %rdx
00000000000017ce movl %r12d, %ecx
00000000000017d1 movq %rax, %r9
00000000000017d4 addq $0x18, %rsp
00000000000017d8 popq %rbx
00000000000017d9 popq %r12
00000000000017db popq %r13
00000000000017dd popq %r14
00000000000017df popq %r15
00000000000017e1 popq %rbp
00000000000017e2 jmp 0x1d3a ## symbol stub for: _rb_vm_call0
00000000000017e7 movq %r13, %rdi
00000000000017ea movq %rbx, %rsi
00000000000017ed movl %r12d, %edx
00000000000017f0 movq %r8, %rcx
00000000000017f3 addq $0x18, %rsp
00000000000017f7 popq %rbx
00000000000017f8 popq %r12
00000000000017fa popq %r13
00000000000017fc popq %r14
00000000000017fe popq %r15
0000000000001800 popq %rbp
0000000000001801 jmp _method_missing
0000000000001806 movq 0x85b(%rip), %rax ## literal pool symbol address: _rb_eArgError
000000000000180d movq (%rax), %rdi
0000000000001810 leaq 0x6eb(%rip), %rsi ## literal pool for: "no receiver given"
0000000000001817 xorl %eax, %eax
0000000000001819 callq 0x1d22 ## symbol stub for: _rb_raise
000000000000181e nop
_method_missing:
0000000000001820 pushq %rbp
0000000000001821 movq %rsp, %rbp
0000000000001824 pushq %r15
0000000000001826 pushq %r14
0000000000001828 pushq %r13
000000000000182a pushq %r12
000000000000182c pushq %rbx
000000000000182d subq $0x28, %rsp
0000000000001831 movq %rcx, -0x40(%rbp)
0000000000001835 movl %edx, %r13d
0000000000001838 movq %rdi, %r14
000000000000183b movq 0x7ce(%rip), %rax ## literal pool symbol address: ___stack_chk_guard
0000000000001842 movq (%rax), %rax
0000000000001845 movq %rax, -0x30(%rbp)
0000000000001849 movq 0x830(%rip), %rax ## literal pool symbol address: _ruby_current_execution_context_ptr
0000000000001850 movq (%rax), %r12
0000000000001853 movq 0x80(%r12), %rcx
000000000000185b movq $0x0, 0x80(%r12)
0000000000001867 movb $0x0, 0x89(%r12)
0000000000001870 cmpq $0xac1, %rsi
0000000000001877 je 0x1a44
000000000000187d movq %rsi, %r15
0000000000001880 leal 0x1(%r13), %eax
0000000000001884 movslq %eax, %rdx
0000000000001887 cmpl $0x7f, %edx
000000000000188a movl %eax, -0x34(%rbp)
000000000000188d movq %rcx, -0x50(%rbp)
0000000000001891 ja 0x18b2
0000000000001893 movq $0x0, -0x48(%rbp)
000000000000189b movq %rsp, %rbx
000000000000189e leaq 0xf(,%rdx,8), %rax
00000000000018a6 andq $-0x10, %rax
00000000000018aa subq %rax, %rbx
00000000000018ad movq %rbx, %rsp
00000000000018b0 jmp 0x18ce
00000000000018b2 testl %eax, %eax
00000000000018b4 js 0x1a5d
00000000000018ba leaq (,%rdx,8), %rsi
00000000000018c2 leaq -0x48(%rbp), %rdi
00000000000018c6 callq 0x1c7a ## symbol stub for: _rb_alloc_tmp_buffer_with_count
00000000000018cb movq %rax, %rbx
00000000000018ce movq %r15, %rdi
00000000000018d1 callq 0x1cec ## symbol stub for: _rb_id2sym
00000000000018d6 movq %rax, (%rbx)
00000000000018d9 leaq 0x8(%rbx), %rdi
00000000000018dd movslq %r13d, %rdx
00000000000018e0 shlq $0x3, %rdx
00000000000018e4 movq -0x40(%rbp), %rsi
00000000000018e8 callq 0x1c68 ## symbol stub for: _memcpy
00000000000018ed testb $0x7, %r14b
00000000000018f1 je 0x191c
00000000000018f3 testb $0x1, %r14b
00000000000018f7 jne 0x193a
00000000000018f9 movl %r14d, %eax
00000000000018fc andl $0x3, %eax
00000000000018ff cmpl $0x2, %eax
0000000000001902 jne 0x19c8
0000000000001908 movq 0x729(%rip), %rax ## literal pool symbol address: _rb_cFloat
000000000000190f movq (%rax), %rdi
0000000000001912 testq %rdi, %rdi
0000000000001915 jne 0x194d
0000000000001917 jmp 0x1a39
000000000000191c testq $-0x9, %r14
0000000000001923 je 0x19e3
0000000000001929 leaq 0x8(%r14), %rax
000000000000192d movq (%rax), %rdi
0000000000001930 testq %rdi, %rdi
0000000000001933 jne 0x194d
0000000000001935 jmp 0x1a39
000000000000193a movq 0x707(%rip), %rax ## literal pool symbol address: _rb_cInteger
0000000000001941 movq (%rax), %rdi
0000000000001944 testq %rdi, %rdi
0000000000001947 je 0x1a39
000000000000194d movl $0xac1, %esi
0000000000001952 callq 0x1c9e ## symbol stub for: _rb_callable_method_entry
0000000000001957 testq %rax, %rax
000000000000195a je 0x1a39
0000000000001960 testb $0x4, 0x2(%rax)
0000000000001964 jne 0x1a39
000000000000196a movq -0x50(%rbp), %rcx
000000000000196e movq %rcx, 0x80(%r12)
0000000000001976 movl $0xac1, %edx
000000000000197b movq %r12, %rdi
000000000000197e movq %r14, %rsi
0000000000001981 movl -0x34(%rbp), %ecx
0000000000001984 movq %rbx, %r8
0000000000001987 movq %rax, %r9
000000000000198a callq 0x1d3a ## symbol stub for: _rb_vm_call0
000000000000198f movq %rax, %rbx
0000000000001992 cmpq $0x0, -0x48(%rbp)
0000000000001997 je 0x19a2
0000000000001999 leaq -0x48(%rbp), %rdi
000000000000199d callq 0x1cce ## symbol stub for: _rb_free_tmp_buffer
00000000000019a2 movq 0x667(%rip), %rax ## literal pool symbol address: ___stack_chk_guard
00000000000019a9 movq (%rax), %rax
00000000000019ac cmpq -0x30(%rbp), %rax
00000000000019b0 jne 0x1a3f
00000000000019b6 movq %rbx, %rax
00000000000019b9 leaq -0x28(%rbp), %rsp
00000000000019bd popq %rbx
00000000000019be popq %r12
00000000000019c0 popq %r13
00000000000019c2 popq %r14
00000000000019c4 popq %r15
00000000000019c6 popq %rbp
00000000000019c7 retq
00000000000019c8 cmpq $0x14, %r14
00000000000019cc jne 0x1a07
00000000000019ce movq 0x68b(%rip), %rax ## literal pool symbol address: _rb_cTrueClass
00000000000019d5 movq (%rax), %rdi
00000000000019d8 testq %rdi, %rdi
00000000000019db jne 0x194d
00000000000019e1 jmp 0x1a39
00000000000019e3 cmpq $0x8, %r14
00000000000019e7 je 0x1a26
00000000000019e9 testq %r14, %r14
00000000000019ec jne 0x1929
00000000000019f2 movq 0x637(%rip), %rax ## literal pool symbol address: _rb_cFalseClass
00000000000019f9 movq (%rax), %rdi
00000000000019fc testq %rdi, %rdi
00000000000019ff jne 0x194d
0000000000001a05 jmp 0x1a39
0000000000001a07 cmpb $0xc, %r14b
0000000000001a0b jne 0x1929
0000000000001a11 movq 0x640(%rip), %rax ## literal pool symbol address: _rb_cSymbol
0000000000001a18 movq (%rax), %rdi
0000000000001a1b testq %rdi, %rdi
0000000000001a1e jne 0x194d
0000000000001a24 jmp 0x1a39
0000000000001a26 movq 0x623(%rip), %rax ## literal pool symbol address: _rb_cNilClass
0000000000001a2d movq (%rax), %rdi
0000000000001a30 testq %rdi, %rdi
0000000000001a33 jne 0x194d
0000000000001a39 movq %rbx, -0x40(%rbp)
0000000000001a3d jmp 0x1a4b
0000000000001a3f callq 0x1c62 ## symbol stub for: ___stack_chk_fail
0000000000001a44 movl %r13d, %eax
0000000000001a47 movl %r13d, -0x34(%rbp)
0000000000001a4b movq %r12, %rdi
0000000000001a4e movl -0x34(%rbp), %esi
0000000000001a51 movq -0x40(%rbp), %rdx
0000000000001a55 movq %r14, %rcx
0000000000001a58 callq _raise_method_missing
0000000000001a5d movl $0x8, %esi
0000000000001a62 movq %rdx, %rdi
0000000000001a65 callq 0x1d4c ## symbol stub for: _ruby_malloc_size_overflow
0000000000001a6a nopw (%rax,%rax)
_raise_method_missing:
0000000000001a70 pushq %rbp
0000000000001a71 movq %rsp, %rbp
0000000000001a74 pushq %r15
0000000000001a76 pushq %r14
0000000000001a78 pushq %r12
0000000000001a7a pushq %rbx
0000000000001a7b testl %esi, %esi
0000000000001a7d jne 0x1a97
0000000000001a7f movq 0x5e2(%rip), %rax ## literal pool symbol address: _rb_eArgError
0000000000001a86 movq (%rax), %rdi
0000000000001a89 leaq 0x484(%rip), %rsi ## literal pool for: "no method name given"
0000000000001a90 xorl %eax, %eax
0000000000001a92 callq 0x1d22 ## symbol stub for: _rb_raise
0000000000001a97 movq %rcx, %r14
0000000000001a9a movq %rdx, %r15
0000000000001a9d movl %esi, %ebx
0000000000001a9f movq 0x5ca(%rip), %rax ## literal pool symbol address: _rb_eNoMethodError
0000000000001aa6 movq (%rax), %r12
0000000000001aa9 movq (%rdx), %rax
0000000000001aac cmpb $0xc, %al
0000000000001aae je 0x1ac9
0000000000001ab0 testb $0x7, %al
0000000000001ab2 jne 0x1aeb
0000000000001ab4 movq %rax, %rcx
0000000000001ab7 andq $-0x9, %rcx
0000000000001abb je 0x1aeb
0000000000001abd movq (%rax), %rcx
0000000000001ac0 andl $0x1f, %ecx
0000000000001ac3 cmpq $0x14, %rcx
0000000000001ac7 jne 0x1aeb
0000000000001ac9 callq _stack_check
0000000000001ace xorl %esi, %esi
0000000000001ad0 xorl %r9d, %r9d
0000000000001ad3 movq %r12, %rdi
0000000000001ad6 movq %r14, %rdx
0000000000001ad9 movl %ebx, %ecx
0000000000001adb movq %r15, %r8
0000000000001ade callq 0x1cf8 ## symbol stub for: _rb_make_no_method_exception
0000000000001ae3 movq %rax, %rdi
0000000000001ae6 callq 0x1cc8 ## symbol stub for: _rb_exc_raise
0000000000001aeb movq 0x576(%rip), %rcx ## literal pool symbol address: _rb_eArgError
0000000000001af2 movq (%rcx), %rbx
0000000000001af5 movq %rax, %rdi
0000000000001af8 callq 0x1d0a ## symbol stub for: _rb_obj_class
0000000000001afd movq %rax, %rcx
0000000000001b00 leaq 0x422(%rip), %rsi ## literal pool for: "method name must be a Symbol but %li\013 is given"
0000000000001b07 xorl %eax, %eax
0000000000001b09 movq %rbx, %rdi
0000000000001b0c movq %rcx, %rdx
0000000000001b0f callq 0x1d22 ## symbol stub for: _rb_raise
0000000000001b14 nopw %cs:(%rax,%rax)
0000000000001b1e nop
_stack_check:
0000000000001b20 pushq %rbp
0000000000001b21 movq %rsp, %rbp
0000000000001b24 pushq %rbx
0000000000001b25 pushq %rax
0000000000001b26 testb $0x2, 0x88(%rdi)
0000000000001b2d jne 0x1b3b
0000000000001b2f movq %rdi, %rbx
0000000000001b32 callq 0x1cc2 ## symbol stub for: _rb_ec_stack_check
0000000000001b37 testl %eax, %eax
0000000000001b39 jne 0x1b42
0000000000001b3b addq $0x8, %rsp
0000000000001b3f popq %rbx
0000000000001b40 popq %rbp
0000000000001b41 retq
0000000000001b42 orb $0x2, 0x88(%rbx)
0000000000001b49 movq %rbx, %rdi
0000000000001b4c callq _rb_ec_stack_overflow
0000000000001b51 nopw %cs:(%rax,%rax)
0000000000001b5b nopl (%rax,%rax)
_rb_ec_stack_overflow:
0000000000001b60 pushq %rbp
0000000000001b61 movq %rsp, %rbp
0000000000001b64 pushq %rbx
0000000000001b65 pushq %rax
0000000000001b66 movq %rdi, %rbx
0000000000001b69 callq 0x1cb6 ## symbol stub for: _rb_during_gc
0000000000001b6e testl %eax, %eax
0000000000001b70 jne 0x1b7a
0000000000001b72 movq %rbx, %rdi
0000000000001b75 callq _ec_stack_overflow
0000000000001b7a movb $0x2, 0x88(%rbx)
0000000000001b81 movq 0x18(%rbx), %rdi
0000000000001b85 movq 0x38(%rbx), %rax
0000000000001b89 movq 0x18(%rax), %rax
0000000000001b8d movq 0x1b0(%rax), %rax
0000000000001b94 movq %rax, 0x78(%rbx)
0000000000001b98 callq _rb_ec_tag_jump
0000000000001b9d nopl (%rax)
_rb_ec_tag_jump:
0000000000001ba0 pushq %rbp
0000000000001ba1 movq %rsp, %rbp
0000000000001ba4 movl $0x6, 0xb0(%rdi)
0000000000001bae addq $0x10, %rdi
0000000000001bb2 movl $0x1, %esi
0000000000001bb7 callq 0x1d52 ## symbol stub for: _siglongjmp
0000000000001bbc nopl (%rax)
_ec_stack_overflow:
0000000000001bc0 pushq %rbp
0000000000001bc1 movq %rsp, %rbp
0000000000001bc4 pushq %r15
0000000000001bc6 pushq %r14
0000000000001bc8 pushq %rbx
0000000000001bc9 pushq %rax
0000000000001bca movq %rdi, %rbx
0000000000001bcd movq 0x38(%rdi), %rax
0000000000001bd1 movq 0x18(%rax), %rax
0000000000001bd5 movq 0x1a8(%rax), %r14
0000000000001bdc movb $0x2, 0x88(%rdi)
0000000000001be3 callq 0x1cbc ## symbol stub for: _rb_ec_backtrace_object
0000000000001be8 movq %rax, %r15
0000000000001beb movq %r14, %rdi
0000000000001bee callq _ruby_vm_special_exception_copy
0000000000001bf3 movq %rax, %r14
0000000000001bf6 movl $0xcd1, %esi
0000000000001bfb movq %rax, %rdi
0000000000001bfe movq %r15, %rdx
0000000000001c01 callq 0x1cf2 ## symbol stub for: _rb_ivar_set
0000000000001c06 movl $0xce1, %esi
0000000000001c0b movq %r14, %rdi
0000000000001c0e movq %r15, %rdx
0000000000001c11 callq 0x1cf2 ## symbol stub for: _rb_ivar_set
0000000000001c16 movq %r14, 0x78(%rbx)
0000000000001c1a movq 0x18(%rbx), %rdi
0000000000001c1e callq _rb_ec_tag_jump
0000000000001c23 nopw %cs:(%rax,%rax)
0000000000001c2d nopl (%rax)
_ruby_vm_special_exception_copy:
0000000000001c30 pushq %rbp
0000000000001c31 movq %rsp, %rbp
0000000000001c34 pushq %r14
0000000000001c36 pushq %rbx
0000000000001c37 movq %rdi, %r14
0000000000001c3a movq 0x8(%rdi), %rdi
0000000000001c3e callq 0x1cb0 ## symbol stub for: _rb_class_real
0000000000001c43 movq %rax, %rdi
0000000000001c46 callq 0x1d04 ## symbol stub for: _rb_obj_alloc
0000000000001c4b movq %rax, %rbx
0000000000001c4e movq %rax, %rdi
0000000000001c51 movq %r14, %rsi
0000000000001c54 callq 0x1d16 ## symbol stub for: _rb_obj_copy_ivar
0000000000001c59 movq %rbx, %rax
0000000000001c5c popq %rbx
0000000000001c5d popq %r14
0000000000001c5f popq %rbp
0000000000001c60 retq
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment