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