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