[Openmcl-cvs-notifications] r13175 - in /trunk/source/lisp-kernel: image.c x86-gc.c

gb at clozure.com gb at clozure.com
Sat Nov 7 17:12:07 EST 2009


Author: gb
Date: Sat Nov  7 17:12:07 2009
New Revision: 13175

Log:
image.c: use imm_word_count() to determine x8632 function immediate/node
 sizes.  Bug() if we overrun the area bounds (which we were doing if
 a "large" function was in the area.)
x86-gc.c: don't make imm_word_count() static inline; hopefully, calls
 to it from inside this file will still inline.

Modified:
    trunk/source/lisp-kernel/image.c
    trunk/source/lisp-kernel/x86-gc.c

Modified: trunk/source/lisp-kernel/image.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/image.c (original)
+++ trunk/source/lisp-kernel/image.c Sat Nov  7 17:12:07 2009
@@ -64,8 +64,10 @@
 #ifdef X8664
         int skip =3D ((int) start[1])+1;
 #else
-        int skip =3D ((unsigned short)start[1])+1;
         extern void update_self_references(LispObj *);
+        extern natural imm_word_count(LispObj);
+
+        natural skip =3D (natural)imm_word_count(((LispObj)start)+fulltag_=
misc)+1;
         update_self_references(start);
 #endif
      =

@@ -90,6 +92,9 @@
       }
       ++start;
     }
+  }
+  if (start > end) {
+    Bug(NULL, "Overran area bounds in relocate_area_contents");
   }
 }
       =


Modified: trunk/source/lisp-kernel/x86-gc.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/x86-gc.c (original)
+++ trunk/source/lisp-kernel/x86-gc.c Sat Nov  7 17:12:07 2009
@@ -27,7 +27,7 @@
 #include <sys/time.h>
 =

 #ifdef X8632
-static inline natural
+inline natural
 imm_word_count(LispObj fn)
 {
   natural w =3D ((unsigned short *)fn)[-1];



More information about the Openmcl-cvs-notifications mailing list