[Python-checkins] CVS: python/dist/src/Tools/compiler/compiler consts.py,1.2,1.3 pyassem.py,1.25,1.26 pycodegen.py,1.48,1.49

Jeremy Hylton jhylton@users.sourceforge.net
2001年8月30日 13:25:57 -0700


Update of /cvsroot/python/python/dist/src/Tools/compiler/compiler
In directory usw-pr-cvs1:/tmp/cvs-serv5054/compiler
Modified Files:
	consts.py pyassem.py pycodegen.py 
Log Message:
Fix _convert_NAME() so that it doesn't store locals for class bodies.
Fix list comp code generation -- emit GET_ITER instead of Const(0)
after the list.
Add CO_GENERATOR flag to generators.
Get CO_xxx flags from the new module
Index: consts.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Tools/compiler/compiler/consts.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** consts.py	2001年04月12日 06:39:24	1.2
--- consts.py	2001年08月30日 20:25:54	1.3
***************
*** 1,5 ****
! # code flags
! CO_VARARGS = 1
! CO_VARKEYWORDS = 2
 
 # operation flags
--- 1,4 ----
! from new import * # import all the CO_xxx flags
! del classobj, code, function, instance, instancemethod, module
 
 # operation flags
Index: pyassem.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Tools/compiler/compiler/pyassem.py,v
retrieving revision 1.25
retrieving revision 1.26
diff -C2 -d -r1.25 -r1.26
*** pyassem.py	2001年08月29日 22:27:14	1.25
--- pyassem.py	2001年08月30日 20:25:54	1.26
***************
*** 8,11 ****
--- 8,13 ----
 
 from compiler import misc
+ from compiler.consts import CO_OPTIMIZED, CO_NEWLOCALS, CO_VARARGS, \
+ CO_VARKEYWORDS
 
 def xxx_sort(l):
***************
*** 312,320 ****
 
 # flags for code objects
- CO_OPTIMIZED = 0x0001
- CO_NEWLOCALS = 0x0002
- CO_VARARGS = 0x0004
- CO_VARKEYWORDS = 0x0008
- CO_NESTED = 0x0010
 
 # the FlowGraph is transformed in place; it exists in one of these states
--- 314,317 ----
***************
*** 504,508 ****
 
 def _convert_NAME(self, arg):
! self._lookupName(arg, self.varnames)
 return self._lookupName(arg, self.names)
 _convert_STORE_NAME = _convert_NAME
--- 501,506 ----
 
 def _convert_NAME(self, arg):
! if self.klass is None:
! self._lookupName(arg, self.varnames)
 return self._lookupName(arg, self.names)
 _convert_STORE_NAME = _convert_NAME
***************
*** 740,746 ****
 # PRINT_EXPR?
 'PRINT_ITEM': -1,
- 'LOAD_LOCALS': 1,
 'RETURN_VALUE': -1,
! 'EXEC_STMT': -2,
 'BUILD_CLASS': -2,
 'STORE_NAME': -1,
--- 738,743 ----
 # PRINT_EXPR?
 'PRINT_ITEM': -1,
 'RETURN_VALUE': -1,
! 'EXEC_STMT': -3,
 'BUILD_CLASS': -2,
 'STORE_NAME': -1,
***************
*** 757,760 ****
--- 754,758 ----
 'SETUP_EXCEPT': 3,
 'SETUP_FINALLY': 3,
+ 'FOR_ITER': 1,
 }
 # use pattern match
Index: pycodegen.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Tools/compiler/compiler/pycodegen.py,v
retrieving revision 1.48
retrieving revision 1.49
diff -C2 -d -r1.48 -r1.49
*** pycodegen.py	2001年08月30日 15:50:34	1.48
--- pycodegen.py	2001年08月30日 20:25:55	1.49
***************
*** 12,17 ****
 from compiler import pyassem, misc, future, symbols
 from compiler.consts import SC_LOCAL, SC_GLOBAL, SC_FREE, SC_CELL
! from compiler.pyassem import CO_VARARGS, CO_VARKEYWORDS, CO_NEWLOCALS,\
! CO_NESTED, TupleArg
 
 # Do we have Python 1.x or Python 2.x?
--- 12,18 ----
 from compiler import pyassem, misc, future, symbols
 from compiler.consts import SC_LOCAL, SC_GLOBAL, SC_FREE, SC_CELL
! from compiler.consts import CO_VARARGS, CO_VARKEYWORDS, CO_NEWLOCALS,\
! CO_NESTED, CO_GENERATOR
! from compiler.pyassem import TupleArg
 
 # Do we have Python 1.x or Python 2.x?
***************
*** 496,503 ****
 
 self.visit(node.list)
! self.visit(ast.Const(0))
 self.nextBlock(start)
 self.emit('SET_LINENO', node.lineno)
! self.emit('FOR_LOOP', anchor)
 self.nextBlock()
 self.visit(node.assign)
--- 497,504 ----
 
 self.visit(node.list)
! self.emit('GET_ITER')
 self.nextBlock(start)
 self.emit('SET_LINENO', node.lineno)
! self.emit('FOR_ITER', anchor)
 self.nextBlock()
 self.visit(node.assign)
***************
*** 1200,1203 ****
--- 1201,1206 ----
 self.graph.setFreeVars(self.scope.get_free_vars())
 self.graph.setCellVars(self.scope.get_cell_vars())
+ if self.scope.generator is not None:
+ self.graph.setFlag(CO_GENERATOR)
 ## self.graph.setFlag(CO_NESTED)
 

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