0.9.9.33:
authorChristophe Rhodes <csr21@cam.ac.uk>
Fri, 17 Feb 2006 17:32:37 +0000 (17:32 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Fri, 17 Feb 2006 17:32:37 +0000 (17:32 +0000)
Fix the gencgc verification code for raw-slot-at-end
structure layout.

src/runtime/gencgc.c
version.lisp-expr

index 3721c88..837ada6 100644 (file)
@@ -46,6 +46,8 @@
 #include "genesis/simple-fun.h"
 #include "save.h"
 #include "genesis/hash-table.h"
+#include "genesis/instance.h"
+#include "genesis/layout.h"
 
 /* forward declarations */
 page_index_t  gc_find_freeish_pages(long *restart_page_ptr, long nbytes,
@@ -3279,11 +3281,24 @@ verify_space(lispobj *start, size_t words)
                 case SINGLE_FLOAT_WIDETAG:
 #endif
                 case UNBOUND_MARKER_WIDETAG:
-                case INSTANCE_HEADER_WIDETAG:
                 case FDEFN_WIDETAG:
                     count = 1;
                     break;
 
+                case INSTANCE_HEADER_WIDETAG:
+                    {
+                        lispobj nuntagged;
+                        long ntotal = HeaderValue(thing);
+                        lispobj layout = ((struct instance *)start)->slots[0];
+                        if (!layout) {
+                            count = 1;
+                            break;
+                        }
+                        nuntagged = ((struct layout *)native_pointer(layout))->n_untagged_slots;
+                        verify_space(start + 1, ntotal - fixnum_value(nuntagged));
+                        count = ntotal + 1;
+                        break;
+                    }
                 case CODE_HEADER_WIDETAG:
                     {
                         lispobj object = *start;
index 29d8be7..df55c64 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.9.9.32"
+"0.9.9.33"