diff --git a/Lib/compiler/consts.py b/Lib/compiler/consts.py
index ae3d18d..c4a4868 100644
--- a/Lib/compiler/consts.py
+++ b/Lib/compiler/consts.py
@@ -1,6 +1,5 @@
-# code flags
-CO_VARARGS = 1
-CO_VARKEYWORDS = 2
+from new import * # import all the CO_xxx flags
+del classobj, code, function, instance, instancemethod, module
 
 # operation flags
 OP_ASSIGN = 'OP_ASSIGN'
diff --git a/Lib/compiler/pyassem.py b/Lib/compiler/pyassem.py
index dc01656..c3fa7b7 100644
--- a/Lib/compiler/pyassem.py
+++ b/Lib/compiler/pyassem.py
@@ -7,6 +7,8 @@
 import types
 
 from compiler import misc
+from compiler.consts import CO_OPTIMIZED, CO_NEWLOCALS, CO_VARARGS, \
+     CO_VARKEYWORDS
 
 def xxx_sort(l):
     l = l[:]
@@ -311,11 +313,6 @@
         return contained
 
 # 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
 RAW = "RAW"
@@ -503,7 +500,8 @@
         return self._lookupName(arg, self.names)
 
     def _convert_NAME(self, arg):
-        self._lookupName(arg, self.varnames)
+        if self.klass is None:
+            self._lookupName(arg, self.varnames)
         return self._lookupName(arg, self.names)
     _convert_STORE_NAME = _convert_NAME
     _convert_DELETE_NAME = _convert_NAME
@@ -739,9 +737,8 @@
         'DELETE_SUBSCR': -2,
         # PRINT_EXPR?
         'PRINT_ITEM': -1,
-        'LOAD_LOCALS': 1,
         'RETURN_VALUE': -1,
-        'EXEC_STMT': -2,
+        'EXEC_STMT': -3,
         'BUILD_CLASS': -2,
         'STORE_NAME': -1,
         'STORE_ATTR': -2,
@@ -756,6 +753,7 @@
         # close enough...
         'SETUP_EXCEPT': 3,
         'SETUP_FINALLY': 3,
+        'FOR_ITER': 1,
         }
     # use pattern match
     patterns = [
diff --git a/Lib/compiler/pycodegen.py b/Lib/compiler/pycodegen.py
index 7a089f0..4f7603d 100644
--- a/Lib/compiler/pycodegen.py
+++ b/Lib/compiler/pycodegen.py
@@ -11,8 +11,9 @@
 from compiler import ast, parse, walk
 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
+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?
 try:
@@ -495,10 +496,10 @@
         anchor = self.newBlock()
 
         self.visit(node.list)
-        self.visit(ast.Const(0))
+        self.emit('GET_ITER')
         self.nextBlock(start)
         self.emit('SET_LINENO', node.lineno)
-        self.emit('FOR_LOOP', anchor)
+        self.emit('FOR_ITER', anchor)
         self.nextBlock()
         self.visit(node.assign)
         return start, anchor
@@ -1199,6 +1200,8 @@
         self.__super_init(func, filename, scopes, isLambda, class_name)
         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)
 
 class AbstractClassCode:
diff --git a/Tools/compiler/compiler/consts.py b/Tools/compiler/compiler/consts.py
index ae3d18d..c4a4868 100644
--- a/Tools/compiler/compiler/consts.py
+++ b/Tools/compiler/compiler/consts.py
@@ -1,6 +1,5 @@
-# code flags
-CO_VARARGS = 1
-CO_VARKEYWORDS = 2
+from new import * # import all the CO_xxx flags
+del classobj, code, function, instance, instancemethod, module
 
 # operation flags
 OP_ASSIGN = 'OP_ASSIGN'
diff --git a/Tools/compiler/compiler/pyassem.py b/Tools/compiler/compiler/pyassem.py
index dc01656..c3fa7b7 100644
--- a/Tools/compiler/compiler/pyassem.py
+++ b/Tools/compiler/compiler/pyassem.py
@@ -7,6 +7,8 @@
 import types
 
 from compiler import misc
+from compiler.consts import CO_OPTIMIZED, CO_NEWLOCALS, CO_VARARGS, \
+     CO_VARKEYWORDS
 
 def xxx_sort(l):
     l = l[:]
@@ -311,11 +313,6 @@
         return contained
 
 # 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
 RAW = "RAW"
@@ -503,7 +500,8 @@
         return self._lookupName(arg, self.names)
 
     def _convert_NAME(self, arg):
-        self._lookupName(arg, self.varnames)
+        if self.klass is None:
+            self._lookupName(arg, self.varnames)
         return self._lookupName(arg, self.names)
     _convert_STORE_NAME = _convert_NAME
     _convert_DELETE_NAME = _convert_NAME
@@ -739,9 +737,8 @@
         'DELETE_SUBSCR': -2,
         # PRINT_EXPR?
         'PRINT_ITEM': -1,
-        'LOAD_LOCALS': 1,
         'RETURN_VALUE': -1,
-        'EXEC_STMT': -2,
+        'EXEC_STMT': -3,
         'BUILD_CLASS': -2,
         'STORE_NAME': -1,
         'STORE_ATTR': -2,
@@ -756,6 +753,7 @@
         # close enough...
         'SETUP_EXCEPT': 3,
         'SETUP_FINALLY': 3,
+        'FOR_ITER': 1,
         }
     # use pattern match
     patterns = [
diff --git a/Tools/compiler/compiler/pycodegen.py b/Tools/compiler/compiler/pycodegen.py
index 7a089f0..4f7603d 100644
--- a/Tools/compiler/compiler/pycodegen.py
+++ b/Tools/compiler/compiler/pycodegen.py
@@ -11,8 +11,9 @@
 from compiler import ast, parse, walk
 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
+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?
 try:
@@ -495,10 +496,10 @@
         anchor = self.newBlock()
 
         self.visit(node.list)
-        self.visit(ast.Const(0))
+        self.emit('GET_ITER')
         self.nextBlock(start)
         self.emit('SET_LINENO', node.lineno)
-        self.emit('FOR_LOOP', anchor)
+        self.emit('FOR_ITER', anchor)
         self.nextBlock()
         self.visit(node.assign)
         return start, anchor
@@ -1199,6 +1200,8 @@
         self.__super_init(func, filename, scopes, isLambda, class_name)
         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)
 
 class AbstractClassCode:
