Here it is as an attachment. Is that the preferred Parrot Way (TM)? For now, I just moved the existing routines. I will see about inlining them and getting rid of local variables separately.
David
----- Original Message -----
From: "Gregor N. Purdy" <[EMAIL PROTECTED]>
> Mailer mangling prevents me from applying this. If you send again
> as an attachment, I can do it.
>
> I would like to see the implementations of the new set ops be
> marked 'inline', and I'd like to see them avoid using local
> variables, too.
>
>
> Regards,
>
> -- Gregor
>
> On Sun, 2001-12-30 at 12:44, David & Lisa Jacobs wrote:
> > This patch moves the conversion routines iton and ntoi into set.
> >
> > Index: core.ops
> > ===================================================================
> > RCS file: /cvs/public/parrot/core.ops,v
> > retrieving revision 1.61
> > diff -c -r1.61 core.ops
> > *** core.ops 30 Dec 2001 12:04:56 -0000 1.61
> > --- core.ops 30 Dec 2001 17:41:27 -0000
> > ***************
> > *** 451,456 ****
> > --- 451,460 ----
> >
> > =item B<set>(i, ic)
> >
> > + =item B<set>(i, n)
> > +
> > + =item B<set>(i, nc)
> > +
> > =item B<set>(p, i)
> >
> > =item B<set>(p, ic)
> > ***************
> > *** 459,464 ****
> > --- 463,472 ----
> >
> > =item B<set>(n, nc)
> >
> > + =item B<set>(n, i)
> > +
> > + =item B<set>(n, ic)
> > +
> > =item B<set>(p, n)
> >
> > =item B<set>(p, nc)
> > ***************
> > *** 501,511 ****
> > --- 509,531 ----
> > goto NEXT();
> > }
> >
> > + op set (i, n|nc) {
> > + FLOATVAL number;
> > + number = $2;
> > + $1 = (INTVAL)number;
> > + goto NEXT();
> > + }
> > +
> > inline op set(n, n|nc) {
> > $1 = $2;
> > goto NEXT();
> > }
> >
> > + inline op set(n, i|ic) {
> > + $1 = (FLOATVAL)$2;
> > + goto NEXT();
> > + }
> > +
> > inline op set(n, p) {
> > $1 = $2->vtable->get_number(interpreter, $2);
> > goto NEXT();
> > ***************
> > *** 570,622 ****
> > $1 = $2->vtable->get_string_index(interpreter, $2, $3);
> > goto NEXT();
> > }
> > -
> > - =back
> > -
> > - =cut
> > -
> > -
> > -
> >
############################################################################
> > ###
> > -
> > - =head2 Conversion operations
> > -
> > - These operations load registers of one type with values from registers
of
> > - another type, performing the appropriate type conversion along the
way.
> > -
> > - =over 4
> > -
> > - =cut
> > -
> > -
> > - ########################################
> > -
> > - =item B<iton>(n, i)
> > -
> > - Load $1 with the FLOATVAL corresponding to the INTVAL from $2.
> > -
> > - =cut
> > -
> > - inline op iton(n, i) {
> > - $1 = (FLOATVAL)$2;
> > - goto NEXT();
> > - }
> > -
> > -
> > - ########################################
> > -
> > - =item B<ntoi>(i, n)
> > -
> > - Load $1 with the INTVAL corresponding to the truncated FLOATVAL from
$2.
> > -
> > - =cut
> > -
> > - op ntoi(i, n) {
> > - FLOATVAL number;
> > - number = $2;
> > - $1 = (INTVAL)number;
> > - goto NEXT();
> > - }
> > -
> >
> > =back
> >
> > --- 590,595 ----
> > Index: t/op/integer.t
> > ===================================================================
> > RCS file: /cvs/public/parrot/t/op/integer.t,v
> > retrieving revision 1.15
> > diff -c -r1.15 integer.t
> > *** t/op/integer.t 12 Dec 2001 06:00:05 -0000 1.15
> > --- t/op/integer.t 30 Dec 2001 17:41:28 -0000
> > ***************
> > *** 918,942 ****
> > 5
> > OUTPUT
> >
> > ! output_is(<<CODE, <<OUTPUT, "iton_n_i");
> > set I0, 0
> > ! iton N0, I0
> > print N0
> > print "\\n"
> >
> > set I1, 2147483647
> > ! iton N1, I1
> > print N1
> > print "\\n"
> >
> > set I2, -2147483648
> > ! iton N2, I2
> > print N2
> > print "\\n"
> > end
> > CODE
> > 0.000000
> > 2147483647.000000
> > -2147483648.000000
> > OUTPUT
> >
> > --- 918,947 ----
> > 5
> > OUTPUT
> >
> > ! output_is(<<CODE, <<OUTPUT, "set_n_i|ic");
> > set I0, 0
> > ! set N0, I0
> > print N0
> > print "\\n"
> >
> > set I1, 2147483647
> > ! set N1, I1
> > print N1
> > print "\\n"
> >
> > set I2, -2147483648
> > ! set N2, I2
> > ! print N2
> > ! print "\\n"
> > !
> > ! set N2, -2147483648
> > print N2
> > print "\\n"
> > end
> > CODE
> > 0.000000
> > 2147483647.000000
> > + -2147483648.000000
> > -2147483648.000000
> > OUTPUT
> >
> > Index: t/op/number.t
> > ===================================================================
> > RCS file: /cvs/public/parrot/t/op/number.t,v
> > retrieving revision 1.10
> > diff -c -r1.10 number.t
> > *** t/op/number.t 30 Nov 2001 13:14:51 -0000 1.10
> > --- t/op/number.t 30 Dec 2001 17:41:29 -0000
> > ***************
> > *** 762,786 ****
> > 0.500000
> > OUTPUT
> >
> > ! output_is(<<CODE, <<OUTPUT, "ntoi_i_n");
> > set N0, 0.0
> > ! ntoi I0, N0
> > print I0
> > print "\\n"
> >
> > set N1, 2147483647.0
> > ! ntoi I1, N1
> > print I1
> > print "\\n"
> >
> > set N2, -2147483648.0
> > ! ntoi I2, N2
> > print I2
> > print "\\n"
> > end
> > CODE
> > 0
> > 2147483647
> > -2147483648
> > OUTPUT
> >
> > --- 762,791 ----
> > 0.500000
> > OUTPUT
> >
> > ! output_is(<<CODE, <<OUTPUT, "set_i_n|nc");
> > set N0, 0.0
> > ! set I0, N0
> > print I0
> > print "\\n"
> >
> > set N1, 2147483647.0
> > ! set I1, N1
> > print I1
> > print "\\n"
> >
> > set N2, -2147483648.0
> > ! set I2, N2
> > ! print I2
> > ! print "\\n"
> > !
> > ! set I2, -2147483648.0
> > print I2
> > print "\\n"
> > end
> > CODE
> > 0
> > 2147483647
> > + -2147483648
> > -2147483648
> > OUTPUT
> >
> >
> >
> >
> --
> ____________________________________________________________________
> / Inspiration >> Innovation >> Excellence (TM) \
>
> Gregor N. Purdy [EMAIL PROTECTED]
> Focus Research, Inc. http://www.focusresearch.com/
> 8080 Beckett Center Drive #203 513-860-3570 vox
> West Chester, OH 45069 513-860-3579 fax
> \____________________________________________________________________/
>
> [[EMAIL PROTECTED]]$ ping osama.taliban.af
> PING osama.taliban.af (68.69.65.68) from 20.1.9.11 : 56 bytes of data.
> From 85.83.77.67: Time to live exceeded
>
set.patch
Description: Binary data
