Leopold Toetsch <[EMAIL PROTECTED]> wrote: > 3) Inspect the delegated method or MMD sub and save only the needed > register range.
Have this now running here locally and tested: $ ./bench -b=^over Numbers are relative to the first one. (lower is better) p-j-Oc p-C-Oc perl-th perl python ruby overload 100% 126% 300% 257% - - This[1] doubles the overload benchmark performance. The "my_mul" function uses (changes) only integer regs, so 128 bytes are saved now instead of 640. Object vtable method delegation will also be faster. Cachgrind reports these numbers: CVS: I refs: 1,070,689,038 D refs: 666,860,918 D1 misses: 4,030,633 now I refs: 464,016,706 D refs: 316,245,506 D1 misses: 1,530,816 Cache misses are still to high. perl 5.8.0: I refs: 1,189,527,716 D refs: 724,919,542 D1 misses: 24,844 leo [1] not alone. dod_register_pmc() of the return continuation in Parrot_runops_fromc() isn't really necessary. The old continuation is on the CPU stack. The passed continuation is in the registers. I was a bit too pessimistic, when coding this.