develooper Front page | perl.perl6.internals | Postings from October 2001

Re: PMCs and how the opcode functions will work

Thread Previous | Thread Next
From:
Dan Sugalski
Date:
October 18, 2001 16:41
Subject:
Re: PMCs and how the opcode functions will work
Message ID:
5.1.0.14.2.20011018142910.01eb5c10@pop.sidhe.org
At 12:30 PM 10/18/2001 +0100, Simon Cozens wrote:
>On Mon, Oct 08, 2001 at 06:36:32PM -0400, Dan Sugalski wrote:
> >     P1->vtable_funcs[VTABLE_ADD + P2->num_type](P1, P2, P0);
>
>Uhm, since num_type and vtable_funcs are part of the vtable
>structure, that would be more like
>      P1->vtable->vtable_funcs[VTABLE_ADD + P2->vtable->num_type](P1, P2, P0);
>
>After preprocessing, this looks like the wonderful:
>
> 
>interpreter->pmc_reg->registers[cur_opcode[2]]->vtable->vtable_funcs[VTABLE_ADD 
>+ 
>interpreter->pmc_reg->registers[cur_opcode[3]]->vtable->num_type](interpreter->pmc_reg->registers[cur_opcode[2]],interpreter->pmc_reg->registers[cur_opcode[3]],interpreter->pmc_reg->registers[cur_opcode[1]]);
>
>That's quite a shitload of dereferences in order to call a function
>(call a function, mark you, not actually do anything!) to add two
>things together.

Gack, that is nasty. Okay, let's see how this runs. (Or limps, as the case 
may be) A lot of that (like the interpreter->pmc_reg->registers bit) will 
get optimized to a single temporary by the compiler so it might not hurt 
much at all. There are a few tricks possible, like moving the register file 
into the interpreter structure or the num/int/string types into the main 
PMC struct, that we can pull to get rid of some of those dereferences. 
Which ones are worth it compared to the costs they incur will depend on 
whether shifting the costs are worth it.

					Dan

--------------------------------------"it's like this"-------------------
Dan Sugalski                          even samurai
dan@sidhe.org                         have teddy bears and even
                                      teddy bears get drunk


Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About