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;
