Index: /branches/purify/source/lisp-kernel/x86-gc.c
===================================================================
--- /branches/purify/source/lisp-kernel/x86-gc.c	(revision 13082)
+++ /branches/purify/source/lisp-kernel/x86-gc.c	(revision 13083)
@@ -2229,4 +2229,8 @@
   int
     header_tag = fulltag_of(header);
+#ifdef X8632
+  Boolean
+    is_function = (header_subtag(header)==subtag_function);
+#endif
 
   if (immheader_tag_p(header_tag)) {
@@ -2244,4 +2248,12 @@
 
   memcpy(free, (BytePtr)old, physbytes);
+
+#ifdef X8632
+  if (is_function) {
+    update_self_references((LispObj *)free);
+  }
+#endif
+
+
   /* Leave a trail of breadcrumbs.  Or maybe just one breadcrumb. */
   /* Actually, it's best to always leave a trail, for two reasons.
