I No Longer Hate find_vtable_meth_ns() As Much (But I'm Still Going to Delete It Very Soon) With a hint from Jonathan about storing vtable methods separately in 
namespaces and a reminder from Kevin that named lookups were still important, 
I wrestled my earlier patch into shape.

All tests pass.

I hate to brag too much about microbenchmarks, but before:

$ prove t/compilers/pge/p5regex/p5rx.t
t/compilers/pge/p5regex/p5rx....ok                                           
        355/960 skipped: various reasons
All tests successful, 355 subtests skipped.
Files=1, Tests=960,  7 wallclock secs ( 6.30 cusr +  0.20 csys =  6.50 CPU)

... after:

$ prove t/compilers/pge/p5regex/p5rx.t
t/compilers/pge/p5regex/p5rx....ok                                           
        355/960 skipped: various reasons
All tests successful, 355 subtests skipped.
Files=1, Tests=960,  2 wallclock secs ( 2.28 cusr +  0.10 csys =  2.38 CPU)

Speeding up PGE doesn't hurt my feelings.

Oh, how's Perl 6?  I'm glad you asked.  Before:

Files=27, Tests=198, 47 wallclock secs (44.69 cusr +  0.50 csys = 45.19 CPU)

... after:

Files=27, Tests=198, 11 wallclock secs ( 9.30 cusr +  0.32 csys =  9.62 CPU)

Callgrind is happier too.  Before:

2,859,808,451      452     591  PROGRAM TOTALS

370,031,493        .       .  hash.c:parrot_hash_get_idx 
296,162,666        .       .  ascii.c:ascii_compare 
216,535,642        .       .  hash.c:parrot_hash_get_bucket 
205,389,756        .       .  string.c:string_compare 
188,198,076        .       .  objects.c:find_vtable_meth_ns 
132,994,291        .       .  dod.c:Parrot_dod_sweep 
116,631,596        .       .  namespace.pmc:Parrot_NameSpace_get_pmc_keyed_str 

... after:

880,046,504      495  22,527  PROGRAM TOTALS

98,680,680        .       .  dod.c:Parrot_dod_sweep 
78,138,108        .       .  resources.c:compact_pool 
70,556,241        .       .  ascii.c:ascii_compute_hash 
49,233,260        .       .  string.c:string_make_direct 
41,103,096        .       .  headers.c:get_free_buffer 
30,652,923        .       .  resources.c:Parrot_allocate_string 

I do think there are still some cleanups in this area, but getting a three to 
five time speedup *without breaking any tests* as well as simplifying some a 
grotty code seems like a good thing to me.

-- c
