instead of hacking __locals__ in during bytecode generation, put it in the symtable
diff --git a/Python/compile.c b/Python/compile.c
index 8fae9d7..95ebd76 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -1524,23 +1524,14 @@
 static int
 compiler_class(struct compiler *c, stmt_ty s)
 {
-	static PyObject *locals = NULL;
 	PyCodeObject *co;
 	PyObject *str;
-	PySTEntryObject *ste;
-	int err, i;
+	int i;
 	asdl_seq* decos = s->v.ClassDef.decorator_list;
 
         if (!compiler_decorators(c, decos))
                 return 0;
 
-	/* initialize statics */
-	if (locals == NULL) {
-		locals = PyUnicode_InternFromString("__locals__");
-		if (locals == NULL)
-			return 0;
-	}
-
 	/* ultimately generate code for:
 	     <name> = __build_class__(<func>, <name>, *<bases>, **<keywords>)
 	   where:
@@ -1553,16 +1544,6 @@
 	   This borrows from compiler_call.
 	*/
 
-	/* 0. Create a fake argument named __locals__ */
-	ste = PySymtable_Lookup(c->c_st, s);
-	if (ste == NULL)
-		return 0;
-	assert(PyList_Check(ste->ste_varnames));
-	err = PyList_Append(ste->ste_varnames, locals);
-	Py_DECREF(ste);
-	if (err < 0)
-		return 0;
-
 	/* 1. compile the class body into a code object */
 	if (!compiler_enter_scope(c, s->v.ClassDef.name, (void *)s, s->lineno))
 		return 0;
diff --git a/Python/symtable.c b/Python/symtable.c
index 17876ea..732b85c 100644
--- a/Python/symtable.c
+++ b/Python/symtable.c
@@ -186,7 +186,8 @@
 
 
 static identifier top = NULL, lambda = NULL, genexpr = NULL,
-    listcomp = NULL, setcomp = NULL, dictcomp = NULL, __class__ = NULL;
+	listcomp = NULL, setcomp = NULL, dictcomp = NULL,
+	__class__ = NULL, __locals__ = NULL;
 
 #define GET_IDENTIFIER(VAR) \
 	((VAR) ? (VAR) : ((VAR) = PyUnicode_InternFromString(# VAR)))
@@ -1050,7 +1051,9 @@
 					  (void *)s, s->lineno))
 			return 0;
 		if (!GET_IDENTIFIER(__class__) ||
-		    !symtable_add_def(st, __class__, DEF_LOCAL)) {
+		    !symtable_add_def(st, __class__, DEF_LOCAL) ||
+		    !GET_IDENTIFIER(__locals__) ||
+		    !symtable_add_def(st, __locals__, DEF_PARAM)) {
 			symtable_exit_block(st, s);
 			return 0;
 		}