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
>

Attachment: set.patch
Description: Binary data

Reply via email to