On Wed, Sep 19, 2001 at 11:03:46AM -0400, Dan Sugalski wrote: > Integer and float ops, *on integer and float registers* do undefined things > on over/underflow. No guarantees, no promises, no certainty. Price of speed. Fair enough. Attached is a patch removing the offending overflows. It also beefs up the set_i_ic test to cover all registers. - Damien
Index: t/op/integer.t =================================================================== RCS file: /home/perlcvs/parrot/t/op/integer.t,v retrieving revision 1.4 diff -u -r1.4 integer.t --- t/op/integer.t 2001/09/19 22:57:04 1.4 +++ t/op/integer.t 2001/09/20 07:17:45 @@ -5,39 +5,148 @@ output_is(<<CODE, <<OUTPUT, "set_i_ic"); # XXX: Need a test for writing outside the set of available # registers. Parrot doesn't check for this at the moment. - set I0, 0x12345678 + set I0, 0 + set I1, 1 + set I2, 2 + set I3, 3 + set I4, 4 + set I5, 5 + set I6, 6 + set I7, 7 + set I8, 8 + set I9, 9 + set I10, 10 + set I11, 11 + set I12, 12 + set I13, 13 + set I14, 14 + set I15, 15 + set I16, 16 + set I17, 17 + set I18, 18 + set I19, 19 + set I20, 20 + set I21, 21 + set I22, 22 + set I23, 23 + set I24, 24 + set I25, 25 + set I26, 26 + set I27, 27 + set I28, 28 + set I29, 29 + set I30, 30 + set I31, 31 + print I0 print "\\n" - set I31, 0x9abcdef1 - print I31 - print "\\n" - - set I1, 2147483647 print I1 print "\\n" - set I2, -2147483648 print I2 print "\\n" - set I3, 4294967295 print I3 print "\\n" + print I4 + print "\\n" + print I5 + print "\\n" + print I6 + print "\\n" + print I7 + print "\\n" + print I8 + print "\\n" + print I9 + print "\\n" + print I10 + print "\\n" + print I11 + print "\\n" + print I12 + print "\\n" + print I13 + print "\\n" + print I14 + print "\\n" + print I15 + print "\\n" + print I16 + print "\\n" + print I17 + print "\\n" + print I18 + print "\\n" + print I19 + print "\\n" + print I20 + print "\\n" + print I21 + print "\\n" + print I22 + print "\\n" + print I23 + print "\\n" + print I24 + print "\\n" + print I25 + print "\\n" + print I26 + print "\\n" + print I27 + print "\\n" + print I28 + print "\\n" + print I29 + print "\\n" + print I30 + print "\\n" + print I31 + print "\\n" end + set I0, 0 CODE -305419896 --1698898191 -2147483647 --2147483648 --1 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 OUTPUT output_is(<<CODE, <<OUTPUT, "set_i"); - set I0, 0x77665544 + set I0, 42 set I1, I0 print I1 print "\\n" end CODE -2003195204 +42 OUTPUT output_is(<<CODE, <<OUTPUT, "add_i"); @@ -54,22 +163,11 @@ print I2 print "\\n" - set I3, 2147483647 - set I4, 1 - add I5, I3, I4 - print I5 - print "\\n" - set I6, -1 - add I7, I5, I6 - print I7 - print "\\n" end CODE 574908040 862362060 1724724120 --2147483648 -2147483647 OUTPUT output_is(<<CODE, <<OUTPUT, "sub_i"); @@ -565,16 +663,10 @@ print I0 print "\\n" - # Overflow - set I1, 2147483647 - inc I1 - print I1 - print "\\n" end CODE 1 5 --2147483648 OUTPUT output_is(<<CODE, <<OUTPUT, "inc_i_ic"); @@ -607,16 +699,10 @@ print I0 print "\\n" - # Overflow - set I1, -2147483648 - dec I1 - print I1 - print "\\n" end CODE -1 -5 -2147483647 OUTPUT output_is(<<CODE, <<OUTPUT, "dec_i_ic");