[Python-checkins] r75113 - in python/branches/py3k: Objects/longobject.c

mark.dickinson python-checkins at python.org
Mon Sep 28 19:54:52 CEST 2009


Author: mark.dickinson
Date: Mon Sep 28 19:54:52 2009
New Revision: 75113

Log:
Merged revisions 75110 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r75110 | mark.dickinson | 2009-09-28 17:52:40 +0100 (Mon, 28 Sep 2009) | 9 lines
  
  Style/consistency/nano-optimization nit:  replace occurrences of
    (high_bits << PyLong_SHIFT) + low_bits with
    (high_bits << PyLong_SHIFT) | low_bits
  in Objects/longobject.c.  Motivation:
   - shouldn't unnecessarily mix bit ops with arithmetic ops (style)
   - this pattern should be spelt the same way thoughout (consistency)
   - it's very very very slightly faster: no need to worry about
     carries to the high digit (nano-optimization).
........


Modified:
   python/branches/py3k/   (props changed)
   python/branches/py3k/Objects/longobject.c

Modified: python/branches/py3k/Objects/longobject.c
==============================================================================
--- python/branches/py3k/Objects/longobject.c	(original)
+++ python/branches/py3k/Objects/longobject.c	Mon Sep 28 19:54:52 2009
@@ -389,7 +389,7 @@
 		}
 		while (--i >= 0) {
 			prev = x;
-			x = (x << PyLong_SHIFT) + v->ob_digit[i];
+			x = (x << PyLong_SHIFT) | v->ob_digit[i];
 			if ((x >> PyLong_SHIFT) != prev) {
 				*overflow = Py_SIZE(v) > 0 ? 1 : -1;
 				goto exit;
@@ -459,7 +459,7 @@
 	}
 	while (--i >= 0) {
 		prev = x;
-		x = (x << PyLong_SHIFT) + v->ob_digit[i];
+		x = (x << PyLong_SHIFT) | v->ob_digit[i];
 		if ((x >> PyLong_SHIFT) != prev)
 			goto overflow;
 	}
@@ -508,7 +508,7 @@
 	}
 	while (--i >= 0) {
 		prev = x;
-		x = (x << PyLong_SHIFT) + v->ob_digit[i];
+		x = (x << PyLong_SHIFT) | v->ob_digit[i];
 		if ((x >> PyLong_SHIFT) != prev) {
 			PyErr_SetString(PyExc_OverflowError,
 			 "python int too large to convert to C unsigned long");
@@ -546,7 +546,7 @@
 	}
 	while (--i >= 0) {
 		prev = x;
-		x = (x << PyLong_SHIFT) + v->ob_digit[i];
+		x = (x << PyLong_SHIFT) | v->ob_digit[i];
 		if ((x >> PyLong_SHIFT) != prev) {
 			PyErr_SetString(PyExc_OverflowError,
 			    "Python int too large to convert to C size_t");
@@ -584,7 +584,7 @@
 		i = -i;
 	}
 	while (--i >= 0) {
-		x = (x << PyLong_SHIFT) + v->ob_digit[i];
+		x = (x << PyLong_SHIFT) | v->ob_digit[i];
 	}
 	return x * sign;
 }
@@ -1451,7 +1451,7 @@
 		i = -i;
 	}
 	while (--i >= 0) {
-		x = (x << PyLong_SHIFT) + v->ob_digit[i];
+		x = (x << PyLong_SHIFT) | v->ob_digit[i];
 	}
 	return x * sign;
 }
@@ -1625,7 +1625,7 @@
 	pout += size;
 	while (--size >= 0) {
 		digit hi;
-		rem = (rem << PyLong_SHIFT) + *--pin;
+		rem = (rem << PyLong_SHIFT) | *--pin;
 		*--pout = hi = (digit)(rem / n);
 		rem -= (twodigits)hi * n;
 	}


More information about the Python-checkins mailing list