PEP 227 implementation

Track changes to PyFrame_New() and PyFuntion_New().
diff --git a/Modules/newmodule.c b/Modules/newmodule.c
index 21b82ef..06b7d82 100644
--- a/Modules/newmodule.c
+++ b/Modules/newmodule.c
@@ -101,7 +101,7 @@
 }
 
 static char new_code_doc[] =
-"Create a code object from (ARGCOUNT, NLOCALS, STACKSIZE, FLAGS, CODESTRING, CONSTANTS, NAMES, VARNAMES, FILENAME, NAME, FIRSTLINENO, LNOTAB).";
+"Create a code object from (ARGCOUNT, NLOCALS, STACKSIZE, FLAGS, CODESTRING, CONSTANTS, NAMES, VARNAMES, FREEVARS, CELLVARS, FILENAME, NAME, FIRSTLINENO, LNOTAB).";
 
 static PyObject *
 new_code(PyObject* unused, PyObject* args)
@@ -114,18 +114,22 @@
 	PyObject* consts;
 	PyObject* names;
 	PyObject* varnames;
+	PyObject* freevars;
+	PyObject* cellvars;
 	PyObject* filename;
 	PyObject* name;
 	int firstlineno;
 	PyObject* lnotab;
 	PyBufferProcs *pb;
 
-	if (!PyArg_ParseTuple(args, "iiiiOO!O!O!SSiS:code",
+	if (!PyArg_ParseTuple(args, "iiiiOO!O!O!O!O!SSiS:code",
 			      &argcount, &nlocals, &stacksize, &flags,
 			      &code,
 			      &PyTuple_Type, &consts,
 			      &PyTuple_Type, &names,
 			      &PyTuple_Type, &varnames,
+			      &PyTuple_Type, &freevars,
+			      &PyTuple_Type, &cellvars,
 			      &filename, &name,
 			      &firstlineno, &lnotab))
 		return NULL;
@@ -143,7 +147,8 @@
 
 	return (PyObject *)PyCode_New(argcount, nlocals, stacksize, flags,
 				      code, consts, names, varnames,
-				      filename, name, firstlineno, lnotab);
+				      freevars, cellvars, filename, name,
+				      firstlineno, lnotab); 
 }
 
 static char new_module_doc[] =