On Wed, Feb 07, 2001 at 01:24:27PM -0500, Dan Sugalski wrote:
> At 06:12 PM 2/7/2001 +0000, Nicholas Clark wrote:
> >But I don't like the thought of going in and out of a lot of generic
> >routines for
> >
> >$a = 3;
> >$a += 2;
> >
> >when the integer scalar ought to know what the inside of another integer
> >scalar looks like, and that 2 + 3 doesn't overflow.
>
> That particular case would get caught by the optimizer (I'd hope) so it'd
> not be an issue anyway.
Oops. Should have written it as
sub foo {
$[0] += 2;
}
and somewhere else
$a = 3; &foo ($a);
but I agree - we need to time these things, not talk about them
> >Hmm. += isn't another opcode
> >it's a special case of a = b + c where the PMCs for a and b are the same
> >thing. And I see no real reason why it can't be part of the + entry.
>
> Whether a special case in the code would get a speedup or not's up in the
> air. (Is the test and branch faster than a generic doing it routine?) I'd
> want to test that and see before I decided.
Yes, we're trading size [data cache (larger virtual tables on scalars) +
instruction cache (2 routines)] versus branch slowdown. Or probably
something more complicated than that.
Hence your approach of make it flexible enough and try both.
Nicholas Clark