[Python-checkins] r52520 - in python/trunk: Lib/compiler/pycodegen.py Misc/NEWS

georg.brandl python-checkins at python.org
Sun Oct 29 09:53:06 CET 2006


Author: georg.brandl
Date: Sun Oct 29 09:53:06 2006
New Revision: 52520

Modified:
   python/trunk/Lib/compiler/pycodegen.py
   python/trunk/Misc/NEWS
Log:
Bug #1586448: the compiler module now emits the same bytecode for
list comprehensions as the builtin compiler, using the LIST_APPEND
opcode.


Modified: python/trunk/Lib/compiler/pycodegen.py
==============================================================================
--- python/trunk/Lib/compiler/pycodegen.py	(original)
+++ python/trunk/Lib/compiler/pycodegen.py	Sun Oct 29 09:53:06 2006
@@ -573,12 +573,11 @@
     def visitListComp(self, node):
         self.set_lineno(node)
         # setup list
-        append = "$append%d" % self.__list_count
+        tmpname = "$list%d" % self.__list_count
         self.__list_count = self.__list_count + 1
         self.emit('BUILD_LIST', 0)
         self.emit('DUP_TOP')
-        self.emit('LOAD_ATTR', 'append')
-        self._implicitNameOp('STORE', append)
+        self._implicitNameOp('STORE', tmpname)
 
         stack = []
         for i, for_ in zip(range(len(node.quals)), node.quals):
@@ -590,10 +589,9 @@
                 self.visit(if_, cont)
             stack.insert(0, (start, cont, anchor))
 
-        self._implicitNameOp('LOAD', append)
+        self._implicitNameOp('LOAD', tmpname)
         self.visit(node.expr)
-        self.emit('CALL_FUNCTION', 1)
-        self.emit('POP_TOP')
+        self.emit('LIST_APPEND',)
 
         for start, cont, anchor in stack:
             if cont:
@@ -604,7 +602,7 @@
                 self.nextBlock(skip_one)
             self.emit('JUMP_ABSOLUTE', start)
             self.startBlock(anchor)
-        self._implicitNameOp('DELETE', append)
+        self._implicitNameOp('DELETE', tmpname)
 
         self.__list_count = self.__list_count - 1
 

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Sun Oct 29 09:53:06 2006
@@ -89,6 +89,10 @@
 Library
 -------
 
+- Bug #1586448: the compiler module now emits the same bytecode for
+  list comprehensions as the builtin compiler, using the LIST_APPEND
+  opcode.
+
 - Fix codecs.EncodedFile which did not use file_encoding in 2.5.0, and
   fix all codecs file wrappers to work correctly with the "with"
   statement (bug #1586513).


More information about the Python-checkins mailing list