Prevent name pollution by making lots of internal functions static.
diff --git a/Include/Python-ast.h b/Include/Python-ast.h
index 0859acf..abc5bcb 100644
--- a/Include/Python-ast.h
+++ b/Include/Python-ast.h
@@ -1,4 +1,4 @@
-/* File automatically generated by ../Parser/asdl_c.py */
+/* File automatically generated by ./Parser/asdl_c.py */
 
 #include "asdl.h"
 
@@ -402,17 +402,3 @@
 void free_arguments(arguments_ty);
 void free_keyword(keyword_ty);
 void free_alias(alias_ty);
-int marshal_write_mod(PyObject **, int *, mod_ty);
-int marshal_write_stmt(PyObject **, int *, stmt_ty);
-int marshal_write_expr(PyObject **, int *, expr_ty);
-int marshal_write_expr_context(PyObject **, int *, expr_context_ty);
-int marshal_write_slice(PyObject **, int *, slice_ty);
-int marshal_write_boolop(PyObject **, int *, boolop_ty);
-int marshal_write_operator(PyObject **, int *, operator_ty);
-int marshal_write_unaryop(PyObject **, int *, unaryop_ty);
-int marshal_write_cmpop(PyObject **, int *, cmpop_ty);
-int marshal_write_comprehension(PyObject **, int *, comprehension_ty);
-int marshal_write_excepthandler(PyObject **, int *, excepthandler_ty);
-int marshal_write_arguments(PyObject **, int *, arguments_ty);
-int marshal_write_keyword(PyObject **, int *, keyword_ty);
-int marshal_write_alias(PyObject **, int *, alias_ty);
diff --git a/Objects/setobject.c b/Objects/setobject.c
index 29a9184..d39f265 100644
--- a/Objects/setobject.c
+++ b/Objects/setobject.c
@@ -1214,7 +1214,7 @@
 	return (PyObject *)so;
 }
 
-int
+static int
 set_difference_update_internal(PySetObject *so, PyObject *other)
 {
 	if ((PyObject *)so == other)
diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py
index ebf8bee..fa71c23 100755
--- a/Parser/asdl_c.py
+++ b/Parser/asdl_c.py
@@ -334,7 +334,7 @@
 
     def prototype(self, sum, name):
         ctype = get_c_type(name)
-        self.emit("int marshal_write_%s(PyObject **, int *, %s);"
+        self.emit("static int marshal_write_%s(PyObject **, int *, %s);"
                   % (name, ctype), 0)
 
     visitProduct = visitSum = prototype
@@ -487,7 +487,7 @@
 
     def func_begin(self, name, has_seq):
         ctype = get_c_type(name)
-        self.emit("int", 0)
+        self.emit("static int", 0)
         self.emit("marshal_write_%s(PyObject **buf, int *off, %s o)" %
                   (name, ctype), 0)
         self.emit("{", 0)
@@ -580,7 +580,6 @@
                         StructVisitor(f),
                         PrototypeVisitor(f),
                         FreePrototypeVisitor(f),
-                        MarshalPrototypeVisitor(f),
                         )
     c.visit(mod)
     f.close()
@@ -594,7 +593,8 @@
     print >> f, '#include "Python.h"'
     print >> f, '#include "%s-ast.h"' % mod.name
     print >> f
-    v = ChainOfVisitors(FunctionVisitor(f),
+    v = ChainOfVisitors(MarshalPrototypeVisitor(f),
+                        FunctionVisitor(f),
                         StaticVisitor(f),
                         FreeVisitor(f),
                         MarshalFunctionVisitor(f),
diff --git a/Python/Python-ast.c b/Python/Python-ast.c
index a425272..677705c 100644
--- a/Python/Python-ast.c
+++ b/Python/Python-ast.c
@@ -3,6 +3,20 @@
 #include "Python.h"
 #include "Python-ast.h"
 
+static int marshal_write_mod(PyObject **, int *, mod_ty);
+static int marshal_write_stmt(PyObject **, int *, stmt_ty);
+static int marshal_write_expr(PyObject **, int *, expr_ty);
+static int marshal_write_expr_context(PyObject **, int *, expr_context_ty);
+static int marshal_write_slice(PyObject **, int *, slice_ty);
+static int marshal_write_boolop(PyObject **, int *, boolop_ty);
+static int marshal_write_operator(PyObject **, int *, operator_ty);
+static int marshal_write_unaryop(PyObject **, int *, unaryop_ty);
+static int marshal_write_cmpop(PyObject **, int *, cmpop_ty);
+static int marshal_write_comprehension(PyObject **, int *, comprehension_ty);
+static int marshal_write_excepthandler(PyObject **, int *, excepthandler_ty);
+static int marshal_write_arguments(PyObject **, int *, arguments_ty);
+static int marshal_write_keyword(PyObject **, int *, keyword_ty);
+static int marshal_write_alias(PyObject **, int *, alias_ty);
 mod_ty
 Module(asdl_seq * body)
 {
@@ -1519,7 +1533,7 @@
         free(o);
 }
 
-int
+static int
 marshal_write_mod(PyObject **buf, int *off, mod_ty o)
 {
         int i;
@@ -1557,7 +1571,7 @@
         return 1;
 }
 
-int
+static int
 marshal_write_stmt(PyObject **buf, int *off, stmt_ty o)
 {
         int i;
@@ -1818,7 +1832,7 @@
         return 1;
 }
 
-int
+static int
 marshal_write_expr(PyObject **buf, int *off, expr_ty o)
 {
         int i;
@@ -1989,7 +2003,7 @@
         return 1;
 }
 
-int
+static int
 marshal_write_expr_context(PyObject **buf, int *off, expr_context_ty o)
 {
         switch (o) {
@@ -2015,7 +2029,7 @@
         return 1;
 }
 
-int
+static int
 marshal_write_slice(PyObject **buf, int *off, slice_ty o)
 {
         int i;
@@ -2063,7 +2077,7 @@
         return 1;
 }
 
-int
+static int
 marshal_write_boolop(PyObject **buf, int *off, boolop_ty o)
 {
         switch (o) {
@@ -2077,7 +2091,7 @@
         return 1;
 }
 
-int
+static int
 marshal_write_operator(PyObject **buf, int *off, operator_ty o)
 {
         switch (o) {
@@ -2121,7 +2135,7 @@
         return 1;
 }
 
-int
+static int
 marshal_write_unaryop(PyObject **buf, int *off, unaryop_ty o)
 {
         switch (o) {
@@ -2141,7 +2155,7 @@
         return 1;
 }
 
-int
+static int
 marshal_write_cmpop(PyObject **buf, int *off, cmpop_ty o)
 {
         switch (o) {
@@ -2179,7 +2193,7 @@
         return 1;
 }
 
-int
+static int
 marshal_write_comprehension(PyObject **buf, int *off, comprehension_ty o)
 {
         int i;
@@ -2193,7 +2207,7 @@
         return 1;
 }
 
-int
+static int
 marshal_write_excepthandler(PyObject **buf, int *off, excepthandler_ty o)
 {
         int i;
@@ -2219,7 +2233,7 @@
         return 1;
 }
 
-int
+static int
 marshal_write_arguments(PyObject **buf, int *off, arguments_ty o)
 {
         int i;
@@ -2250,7 +2264,7 @@
         return 1;
 }
 
-int
+static int
 marshal_write_keyword(PyObject **buf, int *off, keyword_ty o)
 {
         marshal_write_identifier(buf, off, o->arg);
@@ -2258,7 +2272,7 @@
         return 1;
 }
 
-int
+static int
 marshal_write_alias(PyObject **buf, int *off, alias_ty o)
 {
         marshal_write_identifier(buf, off, o->name);
diff --git a/Python/future.c b/Python/future.c
index a0cfeac..2f593ac 100644
--- a/Python/future.c
+++ b/Python/future.c
@@ -46,7 +46,7 @@
 	return 1;
 }
 
-int
+static int
 future_parse(PyFutureFeatures *ff, mod_ty mod, const char *filename)
 {
 	int i, found_docstring = 0, done = 0, prev_line = 0;