diff --git a/Lib/test/test_marshal.py b/Lib/test/test_marshal.py index c817caf..acdc9f5 100644 --- a/Lib/test/test_marshal.py +++ b/Lib/test/test_marshal.py @@ -30,30 +30,6 @@ class IntTestCase(unittest.TestCase, HelperMixin): self.helper(expected) n = n >> 1 - def test_int64(self): - # Simulate int marshaling on a 64-bit box. This is most interesting if - # we're running the test on a 32-bit box, of course. - - def to_little_endian_string(value, nbytes): - b = bytearray() - for i in range(nbytes): - b.append(value & 0xff) - value >>= 8 - return b - - maxint64 = (1 << 63) - 1 - minint64 = -maxint64-1 - - for base in maxint64, minint64, -maxint64, -(minint64 >> 1): - while base: - s = b'I' + to_little_endian_string(base, 8) - got = marshal.loads(s) - self.assertEqual(base, got) - if base == -1: # a fixed-point for shifting right 1 - base = 0 - else: - base >>= 1 - def test_bool(self): for b in (True, False): self.helper(b) diff --git a/Misc/ACKS b/Misc/ACKS index 29a04b7..ed2101c 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -1024,6 +1024,7 @@ Nicholas Riley Jean-Claude Rimbault Vlad Riscutia Wes Rishel +Daniel Riti Juan M. Bello Rivas Davide Rizzo Anthony Roach diff --git a/Python/marshal.c b/Python/marshal.c index bd88939..3e13851 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -33,10 +33,6 @@ #define TYPE_STOPITER 'S' #define TYPE_ELLIPSIS '.' #define TYPE_INT 'i' -/* TYPE_INT64 is deprecated. It is not - generated anymore, and support for reading it - will be removed in Python 3.4. */ -#define TYPE_INT64 'I' #define TYPE_FLOAT 'f' #define TYPE_BINARY_FLOAT 'g' #define TYPE_COMPLEX 'x' @@ -638,42 +634,6 @@ r_long(RFILE *p) return x; } -/* r_long64 deals with the TYPE_INT64 code. On a machine with - sizeof(long) > 4, it returns a Python int object, else a Python long - object. Note that w_long64 writes out TYPE_INT if 32 bits is enough, - so there's no inefficiency here in returning a PyLong on 32-bit boxes - for everything written via TYPE_INT64 (i.e., if an int is written via - TYPE_INT64, it *needs* more than 32 bits). -*/ -static PyObject * -r_long64(RFILE *p) -{ - PyObject *result = NULL; - long lo4 = r_long(p); - long hi4 = r_long(p); - - if (!PyErr_Occurred()) { -#if SIZEOF_LONG > 4 - long x = (hi4 << 32) | (lo4 & 0xFFFFFFFFL); - result = PyLong_FromLong(x); -#else - unsigned char buf[8]; - int one = 1; - int is_little_endian = (int)*(char*)&one; - if (is_little_endian) { - memcpy(buf, &lo4, 4); - memcpy(buf+4, &hi4, 4); - } - else { - memcpy(buf, &hi4, 4); - memcpy(buf+4, &lo4, 4); - } - result = _PyLong_FromByteArray(buf, 8, is_little_endian, 1); -#endif - } - return result; -} - static PyObject * r_PyLong(RFILE *p) { @@ -871,11 +831,6 @@ r_object(RFILE *p) R_REF(retval); break; - case TYPE_INT64: - retval = r_long64(p); - R_REF(retval); - break; - case TYPE_LONG: retval = r_PyLong(p); R_REF(retval); @@ -1201,7 +1156,7 @@ r_object(RFILE *p) PyObject *name = NULL; int firstlineno; PyObject *lnotab = NULL; - + idx = r_ref_reserve(flag, p); if (idx < 0) { retval = NULL;