Index: /trunk/source/lisp-kernel/gc-common.c
===================================================================
--- /trunk/source/lisp-kernel/gc-common.c	(revision 14272)
+++ /trunk/source/lisp-kernel/gc-common.c	(revision 14273)
@@ -1114,5 +1114,5 @@
 {
   bitvector refbits = a->refbits;
-  LispObj *p = (LispObj *) a->low, x1, x2, new;
+  LispObj *p = (LispObj *) a->low, *p0 = p, x1, x2, new;
   natural bits, bitidx, *bitsp, nextbit, diff, memo_dnode = 0, hash_dnode_limit = 0;
   int tag_x1;
@@ -1165,4 +1165,14 @@
           if (new != x1) {
             *p = new;
+#ifdef ARM
+            if (p != p0) {
+              if(header_subtag(p[-2]) == subtag_function) {
+                /* Just updated the code vector; fix the entrypoint */
+                if (p[-1] == (untag(x1)+fulltag_odd_fixnum)) {
+                  p[-1] = (untag(new)+fulltag_odd_fixnum);
+                }
+              }
+            }
+#endif
           }
         }
