[Python-checkins] r54086 - in python/trunk: Lib/test/test_peepholer.py Python/peephole.c

raymond.hettinger python-checkins at python.org
Fri Mar 2 20:20:47 CET 2007


Author: raymond.hettinger
Date: Fri Mar 2 20:20:46 2007
New Revision: 54086
Modified:
 python/trunk/Lib/test/test_peepholer.py
 python/trunk/Python/peephole.c
Log:
Fix embarrassing typo and fix constantification of None
Modified: python/trunk/Lib/test/test_peepholer.py
==============================================================================
--- python/trunk/Lib/test/test_peepholer.py	(original)
+++ python/trunk/Lib/test/test_peepholer.py	Fri Mar 2 20:20:46 2007
@@ -49,6 +49,11 @@
 self.assert_(elem not in asm)
 for elem in ('LOAD_CONST', '(None)'):
 self.assert_(elem in asm)
+ def f():
+ 'Adding a docstring made this test fail in Py2.5.0'
+ return None
+ self.assert_('LOAD_CONST' in disassemble(f))
+ self.assert_('LOAD_GLOBAL' not in disassemble(f))
 
 def test_while_one(self):
 # Skip over: LOAD_CONST trueconst JUMP_IF_FALSE xx POP_TOP
Modified: python/trunk/Python/peephole.c
==============================================================================
--- python/trunk/Python/peephole.c	(original)
+++ python/trunk/Python/peephole.c	Fri Mar 2 20:20:46 2007
@@ -1,4 +1,4 @@
-/* Peehole optimizations for bytecode compiler. */
+/* Peephole optimizations for bytecode compiler. */
 
 #include "Python.h"
 
@@ -386,13 +386,17 @@
 				if (name == NULL || strcmp(name, "None") != 0)
 					continue;
 				for (j=0 ; j < PyList_GET_SIZE(consts) ; j++) {
-					if (PyList_GET_ITEM(consts, j) == Py_None) {
-						codestr[i] = LOAD_CONST;
-						SETARG(codestr, i, j);
-						cumlc = lastlc + 1;
+					if (PyList_GET_ITEM(consts, j) == Py_None)
 						break;
-					}
 				}
+				if (j == PyList_GET_SIZE(consts)) {
+					if (PyList_Append(consts, Py_None) == -1)
+					 goto exitUnchanged; 
+				}
+				assert(PyList_GET_ITEM(consts, j) == Py_None);
+				codestr[i] = LOAD_CONST;
+				SETARG(codestr, i, j);
+				cumlc = lastlc + 1;
 				break;
 
 				/* Skip over LOAD_CONST trueconst


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /