David & Lisa --

Thanks!

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

Reply via email to