Ok, call paths are wired up (0-3,N arity w and w/o block) and I'm getting a crash running a short benchmark that exercises all the call paths. It is attached, as is the hs_err file.

I'll try to narrow it down further and work around it for now.

Run it like this:

JAVA_HOME=../davinci/sources/build/bsd-i586/j2sdk-image/ jruby -J-Xint -J-XX:+EnableInvokeDynamic -J-Djruby.compile.invokedynamic=true bench_method_dispatch.rb

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGBUS (0xa) at pc=0x0118841b, pid=88079, tid=2954375168
#
# JRE version: 7.0
# Java VM: OpenJDK Client VM (16.0-b03 interpreted mode bsd-x86 )
# Problematic frame:
# V  [libjvm.dylib+0x18841b]
#
# An error report file with more information is saved as:
# /Users/headius/projects/jruby/hs_err_pid88079.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#
Abort trap

- Charlie
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGBUS (0xa) at pc=0x0118841b, pid=88079, tid=2954375168
#
# JRE version: 7.0
# Java VM: OpenJDK Client VM (16.0-b03 interpreted mode bsd-x86 )
# Problematic frame:
# V  [libjvm.dylib+0x18841b]
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#

---------------  T H R E A D  ---------------

Current thread (0x00822000):  VMThread [stack: 0xb0103000,0xb0183000] 
[id=-1340592128]

siginfo:si_signo=SIGBUS: si_errno=0, si_code=2 (BUS_ADRERR), si_addr=0x0000000c

Registers:
EAX=0x00000000, EBX=0x01188406, ECX=0x00000008, EDX=0xb0182680
ESP=0xb0182470, EBP=0xb01824b8, ESI=0x06314af4, EDI=0x230d890c
EIP=0x0118841b, EFLAGS=0x00010282

Top of Stack: (sp=0xb0182470)
0xb0182470:   00104580 03abc1d0 00000008 00106a60
0xb0182480:   00106a60 03abbff0 00000001 00000001
0xb0182490:   014bf388 03b1fda8 00106a60 0000000a
0xb01824a0:   06313958 01188406 b01824d0 011fa106
0xb01824b0:   06314af4 230d890c b0182518 011fa22f
0xb01824c0:   06313b98 06313c84 b0182518 011fa22f
0xb01824d0:   00106a60 03b1fda8 00000000 00000000
0xb01824e0:   00106a60 03abc1d0 00000001 b0182680 

Instructions: (pc=0x0118841b)
0x0118840b:   01 8b 49 04 89 4d dc 89 45 e0 8b 41 04 8d 48 08
0x0118841b:   8b 51 04 89 d6 c1 fe 02 83 fa 00 89 75 e4 0f 8e 

Stack: [0xb0103000,0xb0183000],  sp=0xb0182470,  free space=1fdb0181e60k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.dylib+0x18841b]
V  [libjvm.dylib+0x1fa22f]
V  [libjvm.dylib+0x3cbf06]
V  [libjvm.dylib+0x1dd62d]
V  [libjvm.dylib+0x1cfde5]
V  [libjvm.dylib+0x186945]
V  [libjvm.dylib+0x188030]
V  [libjvm.dylib+0x1d0fd6]
V  [libjvm.dylib+0x13e143]
V  [libjvm.dylib+0x1ceca5]
V  [libjvm.dylib+0x45e56b]
V  [libjvm.dylib+0x462dc5]
V  [libjvm.dylib+0x46149d]
V  [libjvm.dylib+0x46210c]
V  [libjvm.dylib+0x4623fc]
V  [libjvm.dylib+0x36b5f5]
C  [libSystem.B.dylib+0x32155]  _pthread_start+0x141
C  [libSystem.B.dylib+0x32012]  thread_start+0x22

VM_Operation (0xb00ff79c): GenCollectForAllocation, mode: safepoint, requested 
by thread 0x00800800


---------------  P R O C E S S  ---------------

Java Threads: ( => current thread )
  0x00839400 JavaThread "Low Memory Detector" daemon [_thread_blocked, 
id=-1335832576, stack(0xb050d000,0xb060d000)]
  0x00838000 JavaThread "CompilerThread0" daemon [_thread_blocked, 
id=-1336889344, stack(0xb048b000,0xb050b000)]
  0x00835000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, 
id=-1337421824, stack(0xb0389000,0xb0489000)]
  0x00827c00 JavaThread "Finalizer" daemon [_thread_blocked, id=-1338478592, 
stack(0xb0287000,0xb0387000)]
  0x00823c00 JavaThread "Reference Handler" daemon [_thread_blocked, 
id=-1339535360, stack(0xb0185000,0xb0285000)]
  0x00800800 JavaThread "main" [_thread_blocked, id=-1341124608, 
stack(0xb0001000,0xb0101000)]

Other Threads:
=>0x00822000 VMThread [stack: 0xb0103000,0xb0183000] [id=-1340592128]
  0x0083a400 WatcherThread [stack: 0xb060f000,0xb068f000] [id=-1335300096]

VM state:at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread:  ([mutex/lock_event])
[0x001030d0] Threads_lock - owner thread: 0x00822000
[0x00103490] Heap_lock - owner thread: 0x00800800

Heap
 def new generation   total 960K, used 959K [0x03a40000, 0x03b40000, 0x060b0000)
  eden space 896K,  99% used [0x03a40000, 0x03b1fff0, 0x03b20000)
  from space 64K, 100% used [0x03b20000, 0x03b30000, 0x03b30000)
  to   space 64K, 100% used [0x03b30000, 0x03b40000, 0x03b40000)
 tenured generation   total 4096K, used 2450K [0x060b0000, 0x064b0000, 
0x22e40000)
   the space 4096K,  59% used [0x060b0000, 0x06314bf8, 0x06314c00, 0x064b0000)
 compacting perm gen  total 12800K, used 12731K [0x22e40000, 0x23ac0000, 
0x26e40000)
   the space 12800K,  99% used [0x22e40000, 0x23aaefe8, 0x23aaf000, 0x23ac0000)
No shared spaces configured.

Dynamic libraries:
0x00000000      /usr/lib/libgcc_s.1.dylib
0x00000000      /usr/lib/libSystem.B.dylib
0x00000000      /usr/lib/system/libmathCommon.A.dylib
0x01000000      
/Users/headius/projects/davinci/sources/build/bsd-i586/j2sdk-image/jre/lib/i386/client/libjvm.dylib
0x00000000      /usr/lib/libstdc++.6.dylib
0x0001d000      
/Users/headius/projects/davinci/sources/build/bsd-i586/j2sdk-image/jre/lib/i386/libverify.dylib
0x0002b000      
/Users/headius/projects/davinci/sources/build/bsd-i586/j2sdk-image/jre/lib/i386/libjava.dylib
0x00052000      
/Users/headius/projects/davinci/sources/build/bsd-i586/j2sdk-image/jre/lib/i386/native_threads/libhpi.dylib
0x00065000      
/Users/headius/projects/davinci/sources/build/bsd-i586/j2sdk-image/jre/lib/i386/libzip.dylib
0x00728000      
/Users/headius/projects/davinci/sources/build/bsd-i586/j2sdk-image/jre/lib/i386/libnet.dylib
0x0073c000      
/Users/headius/projects/davinci/sources/build/bsd-i586/j2sdk-image/jre/lib/i386/libmanagement.dylib
0x00745000      
/Users/headius/projects/davinci/sources/build/bsd-i586/j2sdk-image/jre/lib/i386/libnio.dylib

VM Arguments:
jvm_args: -Djruby.memory.max=500m -Djruby.stack.max=1024k -Xmx500m -Xss1024k 
-Djna.boot.library.path=/Users/headius/projects/jruby/lib/native/darwin 
-Djffi.boot.library.path=/Users/headius/projects/jruby/lib/native/*Darwin 
-Dfile.encoding=UTF-8 -Xint -XX:+EnableInvokeDynamic 
-Djruby.compile.invokedynamic=true -Dfile.encoding=UTF-8 
-Xbootclasspath/a:/Users/headius/projects/jruby/lib/jruby.jar:/Users/headius/projects/jruby/lib/bsf.jar
 -Djruby.home=/Users/headius/projects/jruby 
-Djruby.lib=/Users/headius/projects/jruby/lib -Djruby.script=jruby 
-Djruby.shell=/bin/sh 
java_command: org.jruby.Main bench_method_dispatch.rb
Launcher Type: SUN_STANDARD

Environment Variables:
JAVA_HOME=../davinci/sources/build/bsd-i586/j2sdk-image/
PATH=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/bin:/Users/headius/projects/jruby/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/opt/local/sbin
SHELL=/bin/bash
DISPLAY=/tmp/launch-nNh4JU/:0
DYLD_FALLBACK_LIBRARY_PATH=/Users/headius/projects/davinci/sources/build/bsd-i586/j2sdk-image/jre/lib/i386/client:/Users/headius/projects/davinci/sources/build/bsd-i586/j2sdk-image/jre/lib/i386:/Users/headius/projects/davinci/sources/build/bsd-i586/j2sdk-image/jre/../lib/i386

Signal Handlers:
SIGSEGV: [libjvm.dylib+0x45deb0], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGBUS: [libjvm.dylib+0x45deb0], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGFPE: [libjvm.dylib+0x367780], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGPIPE: [libjvm.dylib+0x367780], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGXFSZ: [libjvm.dylib+0x367780], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGILL: [libjvm.dylib+0x367780], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGUSR1: SIG_DFL, sa_mask[0]=0x63807efb, sa_flags=0x00000000
SIGUSR2: [libjvm.dylib+0x368970], sa_mask[0]=0x00000000, sa_flags=0x00000042
SIGHUP: [libjvm.dylib+0x369f70], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGINT: [libjvm.dylib+0x369f70], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGTERM: [libjvm.dylib+0x369f70], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGQUIT: [libjvm.dylib+0x369f70], sa_mask[0]=0xfffefeff, sa_flags=0x00000042


---------------  S Y S T E M  ---------------

OS:Bsd
uname:Darwin 9.7.0 Darwin Kernel Version 9.7.0: Tue Mar 31 22:52:17 PDT 2009; 
root:xnu-1228.12.14~1/RELEASE_I386 i386
rlimit: STACK 8192k, CORE 0k, NPROC 266, NOFILE 10240
CPU:total 2 (2 cores per cpu, 1 threads per core) family 6 model 23 stepping 
10, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1

Memory: 4k page, physical 1443480k(360870k free)

vm_info: OpenJDK Client VM (16.0-b03) for bsd-x86 JRE 
(1.7.0-internal-headius_2009_05_27_04_45-b00), built on May 27 2009 10:30:25 by 
"headius" with gcc 4.0.1 (Apple Inc. build 5490)

time: Wed May 27 12:02:57 2009
elapsed time: 1 seconds

require 'benchmark'

def bench_method_dispatch(bm)
  bm.report "control: 10m local var access" do
    a = 5; 
    i = 0;
    while i < 1000
      a; a; a; a; a; a; a; a; a; a;
      a; a; a; a; a; a; a; a; a; a;
      a; a; a; a; a; a; a; a; a; a;
      a; a; a; a; a; a; a; a; a; a;
      a; a; a; a; a; a; a; a; a; a;
      a; a; a; a; a; a; a; a; a; a;
      a; a; a; a; a; a; a; a; a; a;
      a; a; a; a; a; a; a; a; a; a;
      a; a; a; a; a; a; a; a; a; a;
      a; a; a; a; a; a; a; a; a; a;
      i += 1;
    end
  end

  bm.report "core: 10m Fixnum#to_i" do
    a = 5; 
    i = 0;
    while i < 1000
      a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; 
a.to_i;
      a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; 
a.to_i;
      a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; 
a.to_i;
      a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; 
a.to_i;
      a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; 
a.to_i;
      a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; 
a.to_i;
      a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; 
a.to_i;
      a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; 
a.to_i;
      a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; 
a.to_i;
      a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; a.to_i; 
a.to_i;
      i += 1;
    end
  end

  oldbm = $bm
  $bm = bm
  def foo
    self
  end

  def foo1(arg)
    self
  end

  def foo2(arg, arg2)
    self
  end

  def foo3(arg, arg2, arg3)
    self
  end

  def foo4(arg, arg2, arg3, arg4)
    self
  end

  def foos(*args)
    self
  end
  
  class << self
    define_method(:bar) { }
  end

  class << self
    define_method(:bar1) {|a| }
  end

  class << self
    define_method(:bar2) {|a,b| }
  end

  class << self
    define_method(:bars) {|*a| }
  end

  def optfix(opts = 1)
    self
  end

  def optary(opts = [])
    self
  end
  
  def opthash(opts = { })
    self
  end

  def quux(&block)
    self
  end

  $bm.report "ruby: 10m def foo() with foo()" do
    a = []; 
    i = 0;
    while i < 1000
      foo; foo; foo; foo; foo; foo; foo; foo; foo; foo;
      foo; foo; foo; foo; foo; foo; foo; foo; foo; foo;
      foo; foo; foo; foo; foo; foo; foo; foo; foo; foo;
      foo; foo; foo; foo; foo; foo; foo; foo; foo; foo;
      foo; foo; foo; foo; foo; foo; foo; foo; foo; foo;
      foo; foo; foo; foo; foo; foo; foo; foo; foo; foo;
      foo; foo; foo; foo; foo; foo; foo; foo; foo; foo;
      foo; foo; foo; foo; foo; foo; foo; foo; foo; foo;
      foo; foo; foo; foo; foo; foo; foo; foo; foo; foo;
      foo; foo; foo; foo; foo; foo; foo; foo; foo; foo;
      i += 1;
    end
  end

  $bm.report "ruby: 10m def foo(*a) with foo()" do
    a = []; 
    i = 0;
    while i < 1000
      foos; foos; foos; foos; foos; foos; foos; foos; foos; foos; 
      foos; foos; foos; foos; foos; foos; foos; foos; foos; foos; 
      foos; foos; foos; foos; foos; foos; foos; foos; foos; foos; 
      foos; foos; foos; foos; foos; foos; foos; foos; foos; foos; 
      foos; foos; foos; foos; foos; foos; foos; foos; foos; foos; 
      foos; foos; foos; foos; foos; foos; foos; foos; foos; foos; 
      foos; foos; foos; foos; foos; foos; foos; foos; foos; foos; 
      foos; foos; foos; foos; foos; foos; foos; foos; foos; foos; 
      foos; foos; foos; foos; foos; foos; foos; foos; foos; foos; 
      foos; foos; foos; foos; foos; foos; foos; foos; foos; foos; 
      i += 1;
    end
  end

  $bm.report "ruby: 10m def foo(*a) with foo(nil)" do
    a = []; 
    i = 0;
    while i < 1000
      foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); 
foos(nil); foos(nil); foos(nil); foos(nil); 
      foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); 
foos(nil); foos(nil); foos(nil); foos(nil); 
      foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); 
foos(nil); foos(nil); foos(nil); foos(nil); 
      foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); 
foos(nil); foos(nil); foos(nil); foos(nil); 
      foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); 
foos(nil); foos(nil); foos(nil); foos(nil); 
      foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); 
foos(nil); foos(nil); foos(nil); foos(nil); 
      foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); 
foos(nil); foos(nil); foos(nil); foos(nil); 
      foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); 
foos(nil); foos(nil); foos(nil); foos(nil); 
      foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); 
foos(nil); foos(nil); foos(nil); foos(nil); 
      foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); foos(nil); 
foos(nil); foos(nil); foos(nil); foos(nil); 
      i += 1;
    end
  end

  $bm.report "ruby: 10m def foo(*a) with foo(nil*4)" do
    a = []; 
    i = 0;
    while i < 1000
      foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, 
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); 
      foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, 
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); 
      foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, 
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); 
      foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, 
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); 
      foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, 
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); 
      foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, 
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); 
      foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, 
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); 
      foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, 
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); 
      foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, 
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); 
      foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, 
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); 
      foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, 
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); 
      foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, 
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); 
      foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, 
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); 
      foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, 
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); 
      foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, 
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); 
      foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, 
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); 
      foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, 
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); 
      foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, 
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); 
      foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, 
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); 
      foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, 
nil); foos(nil, nil, nil, nil); foos(nil, nil, nil, nil); 
      i += 1;
    end
  end

  $bm.report "ruby: 10m def foo(a)" do
    a = []; 
    i = 0;
    while i < 1000
      foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); 
foo1(nil); foo1(nil); foo1(nil); foo1(nil); 
      foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); 
foo1(nil); foo1(nil); foo1(nil); foo1(nil); 
      foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); 
foo1(nil); foo1(nil); foo1(nil); foo1(nil); 
      foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); 
foo1(nil); foo1(nil); foo1(nil); foo1(nil); 
      foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); 
foo1(nil); foo1(nil); foo1(nil); foo1(nil); 
      foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); 
foo1(nil); foo1(nil); foo1(nil); foo1(nil); 
      foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); 
foo1(nil); foo1(nil); foo1(nil); foo1(nil); 
      foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); 
foo1(nil); foo1(nil); foo1(nil); foo1(nil); 
      foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); 
foo1(nil); foo1(nil); foo1(nil); foo1(nil); 
      foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); foo1(nil); 
foo1(nil); foo1(nil); foo1(nil); foo1(nil); 
      i += 1;
    end
  end

  $bm.report "ruby: 10m def foo(a,b)" do
    a = []; 
    i = 0;
    while i < 1000
      foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, 
nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, 
nil); 
      foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, 
nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, 
nil); 
      foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, 
nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, 
nil); 
      foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, 
nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, 
nil); 
      foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, 
nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, 
nil); 
      foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, 
nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, 
nil); 
      foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, 
nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, 
nil); 
      foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, 
nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, 
nil); 
      foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, 
nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, 
nil); 
      foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, 
nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, nil); foo2(nil, 
nil); 
      i += 1;
    end
  end

  $bm.report "ruby: 10m def foo(a,b,c)" do
    a = []; 
    i = 0;
    while i < 1000
      foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, 
nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); 
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); 
      foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, 
nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); 
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); 
      foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, 
nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); 
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); 
      foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, 
nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); 
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); 
      foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, 
nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); 
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); 
      foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, 
nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); 
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); 
      foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, 
nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); 
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); 
      foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, 
nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); 
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); 
      foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, 
nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); 
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); 
      foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, 
nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); 
foo3(nil, nil, nil); foo3(nil, nil, nil); foo3(nil, nil, nil); 
      i += 1;
    end
  end

  $bm.report "ruby: 10m def foo(a,b,c,d)" do
    a = []; 
    i = 0;
    while i < 1000
      foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, 
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); 
      foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, 
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); 
      foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, 
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); 
      foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, 
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); 
      foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, 
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); 
      foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, 
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); 
      foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, 
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); 
      foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, 
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); 
      foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, 
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); 
      foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, 
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); 
      foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, 
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); 
      foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, 
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); 
      foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, 
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); 
      foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, 
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); 
      foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, 
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); 
      foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, 
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); 
      foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, 
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); 
      foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, 
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); 
      foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, 
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); 
      foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, 
nil); foo4(nil, nil, nil, nil); foo4(nil, nil, nil, nil); 
      i += 1;
    end
  end
  
  $bm.report "ruby: 10m def foo() with __send__" do
    a = []; 
    i = 0;
    while i < 1000
      __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); 
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); 
__send__(:foo); 
      __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); 
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); 
__send__(:foo); 
      __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); 
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); 
__send__(:foo); 
      __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); 
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); 
__send__(:foo); 
      __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); 
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); 
__send__(:foo); 
      __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); 
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); 
__send__(:foo); 
      __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); 
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); 
__send__(:foo); 
      __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); 
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); 
__send__(:foo); 
      __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); 
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); 
__send__(:foo); 
      __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); 
__send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); __send__(:foo); 
__send__(:foo); 
      i += 1;
    end
  end

  $bm.report "ruby: 10m def opt(a=1) with opt()" do
    a = [];
    i = 0;
    while i < 1000
      optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; 
optfix;
      optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; 
optfix;
      optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; 
optfix;
      optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; 
optfix;
      optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; 
optfix;
      optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; 
optfix;
      optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; 
optfix;
      optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; 
optfix;
      optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; 
optfix;
      optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; optfix; 
optfix;
      i += 1;
    end
  end

  $bm.report "ruby: 10m def opt(a=1) with opt(nil)" do
    a = [];
    i = 0;
    while i < 1000
      optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil); 
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
      optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil); 
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
      optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil); 
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
      optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil); 
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
      optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil); 
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
      optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil); 
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
      optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil); 
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
      optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil); 
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
      optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil); 
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
      optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil); 
optfix(nil); optfix(nil); optfix(nil); optfix(nil); optfix(nil);
      i += 1;
    end
  end

  $bm.report "ruby: 10m def opt(a=[]) with opt()" do
    a = [];
    i = 0;
    while i < 1000
      optary; optary; optary; optary; optary; optary; optary; optary; optary; 
optary;
      optary; optary; optary; optary; optary; optary; optary; optary; optary; 
optary;
      optary; optary; optary; optary; optary; optary; optary; optary; optary; 
optary;
      optary; optary; optary; optary; optary; optary; optary; optary; optary; 
optary;
      optary; optary; optary; optary; optary; optary; optary; optary; optary; 
optary;
      optary; optary; optary; optary; optary; optary; optary; optary; optary; 
optary;
      optary; optary; optary; optary; optary; optary; optary; optary; optary; 
optary;
      optary; optary; optary; optary; optary; optary; optary; optary; optary; 
optary;
      optary; optary; optary; optary; optary; optary; optary; optary; optary; 
optary;
      optary; optary; optary; optary; optary; optary; optary; optary; optary; 
optary;
      i += 1;
    end
  end

  $bm.report "ruby: 10m def opt(a=[]) with opt(nil)" do
    a = [];
    i = 0;
    while i < 1000
      optary(nil); optary(nil); optary(nil); optary(nil); optary(nil); 
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
      optary(nil); optary(nil); optary(nil); optary(nil); optary(nil); 
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
      optary(nil); optary(nil); optary(nil); optary(nil); optary(nil); 
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
      optary(nil); optary(nil); optary(nil); optary(nil); optary(nil); 
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
      optary(nil); optary(nil); optary(nil); optary(nil); optary(nil); 
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
      optary(nil); optary(nil); optary(nil); optary(nil); optary(nil); 
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
      optary(nil); optary(nil); optary(nil); optary(nil); optary(nil); 
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
      optary(nil); optary(nil); optary(nil); optary(nil); optary(nil); 
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
      optary(nil); optary(nil); optary(nil); optary(nil); optary(nil); 
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
      optary(nil); optary(nil); optary(nil); optary(nil); optary(nil); 
optary(nil); optary(nil); optary(nil); optary(nil); optary(nil);
      i += 1;
    end
  end

  $bm.report "ruby: 10m def opt(a={}) with opt()" do
    a = []; 
    i = 0;
    while i < 1000
      opthash; opthash; opthash; opthash; opthash; opthash; opthash; opthash; 
opthash; opthash;
      opthash; opthash; opthash; opthash; opthash; opthash; opthash; opthash; 
opthash; opthash;
      opthash; opthash; opthash; opthash; opthash; opthash; opthash; opthash; 
opthash; opthash;
      opthash; opthash; opthash; opthash; opthash; opthash; opthash; opthash; 
opthash; opthash;
      opthash; opthash; opthash; opthash; opthash; opthash; opthash; opthash; 
opthash; opthash;
      opthash; opthash; opthash; opthash; opthash; opthash; opthash; opthash; 
opthash; opthash;
      opthash; opthash; opthash; opthash; opthash; opthash; opthash; opthash; 
opthash; opthash;
      opthash; opthash; opthash; opthash; opthash; opthash; opthash; opthash; 
opthash; opthash;
      opthash; opthash; opthash; opthash; opthash; opthash; opthash; opthash; 
opthash; opthash;
      opthash; opthash; opthash; opthash; opthash; opthash; opthash; opthash; 
opthash; opthash;
      i += 1;
    end
  end

  $bm.report "ruby: 10m def opt(a={}) with opt(nil)" do
    a = []; 
    i = 0;
    while i < 1000
      opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil); 
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
      opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil); 
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
      opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil); 
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
      opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil); 
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
      opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil); 
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
      opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil); 
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
      opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil); 
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
      opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil); 
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
      opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil); 
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
      opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil); 
opthash(nil); opthash(nil); opthash(nil); opthash(nil); opthash(nil);
      i += 1;
    end
  end

  $bm.report "ruby: 10m def quux(&b) with quux()" do
    a = []; 
    i = 0;
    while i < 1000
      quux; quux; quux; quux; quux; quux; quux; quux; quux; quux;
      quux; quux; quux; quux; quux; quux; quux; quux; quux; quux;
      quux; quux; quux; quux; quux; quux; quux; quux; quux; quux;
      quux; quux; quux; quux; quux; quux; quux; quux; quux; quux;
      quux; quux; quux; quux; quux; quux; quux; quux; quux; quux;
      quux; quux; quux; quux; quux; quux; quux; quux; quux; quux;
      quux; quux; quux; quux; quux; quux; quux; quux; quux; quux;
      quux; quux; quux; quux; quux; quux; quux; quux; quux; quux;
      quux; quux; quux; quux; quux; quux; quux; quux; quux; quux;
      quux; quux; quux; quux; quux; quux; quux; quux; quux; quux;
      i += 1;
    end
  end

  $bm.report "ruby: 10m def quux(&b) with quux(){}" do
    a = []; 
    i = 0;
    while i < 10_000
      quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; 
quux{}; 
      quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; 
quux{}; 
      quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; 
quux{}; 
      quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; 
quux{}; 
      quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; 
quux{}; 
      quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; 
quux{}; 
      quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; 
quux{}; 
      quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; 
quux{}; 
      quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; 
quux{}; 
      quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; quux{}; 
quux{}; 
      i += 1;
    end
  end
  
  $bm.report "ruby: 10m define_method :bar {}" do
    a = 0
    while a < 1000
      bar; bar; bar; bar; bar; bar; bar; bar; bar; bar
      bar; bar; bar; bar; bar; bar; bar; bar; bar; bar
      bar; bar; bar; bar; bar; bar; bar; bar; bar; bar
      bar; bar; bar; bar; bar; bar; bar; bar; bar; bar
      bar; bar; bar; bar; bar; bar; bar; bar; bar; bar
      bar; bar; bar; bar; bar; bar; bar; bar; bar; bar
      bar; bar; bar; bar; bar; bar; bar; bar; bar; bar
      bar; bar; bar; bar; bar; bar; bar; bar; bar; bar
      bar; bar; bar; bar; bar; bar; bar; bar; bar; bar
      bar; bar; bar; bar; bar; bar; bar; bar; bar; bar
      a += 1
    end
  end

  $bm.report "ruby: 10m define_method :bar {|a|}" do
    a = 0
    while a < 1000
      bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); 
bar1(1); bar1(1)
      bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); 
bar1(1); bar1(1)
      bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); 
bar1(1); bar1(1)
      bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); 
bar1(1); bar1(1)
      bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); 
bar1(1); bar1(1)
      bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); 
bar1(1); bar1(1)
      bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); 
bar1(1); bar1(1)
      bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); 
bar1(1); bar1(1)
      bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); 
bar1(1); bar1(1)
      bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); bar1(1); 
bar1(1); bar1(1)
      a += 1
    end
  end

  $bm.report "ruby: 10m define_method :bar {|a,b|}" do
    a = 0
    while a < 1000
      bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); 
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2)
      bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); 
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2)
      bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); 
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2)
      bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); 
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2)
      bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); 
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2)
      bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); 
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2)
      bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); 
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2)
      bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); 
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2)
      bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); 
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2)
      bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2); 
bar2(1,2); bar2(1,2); bar2(1,2); bar2(1,2)
      a += 1
    end
  end

  $bm.report "ruby: 10m define_method :bar {|*a|}" do
    a = 0
    while a < 1000
      bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); 
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3)
      bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); 
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3)
      bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); 
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3)
      bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); 
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3)
      bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); 
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3)
      bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); 
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3)
      bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); 
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3)
      bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); 
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3)
      bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); 
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3)
      bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); 
bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3); bars(1,2,3)
      a += 1
    end
  end

  $bm = oldbm
end

if $0 == __FILE__
  (ARGV[0] || 10).to_i.times { Benchmark.bm(40) {|bm| 
bench_method_dispatch(bm)} }
end
_______________________________________________
mlvm-dev mailing list
[email protected]
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

Reply via email to