1.0.43.8: ALLOCATION-INFORMATION also provides the actual page
authorNikodemus Siivola <nikodemus@random-state.net>
Thu, 30 Sep 2010 08:33:40 +0000 (08:33 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Thu, 30 Sep 2010 08:33:40 +0000 (08:33 +0000)
 Important for figuring out why garbage is retained and why a page
 keeps getting dirty.

NEWS
contrib/sb-introspect/introspect.lisp
contrib/sb-introspect/test-driver.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index 477fba4..c5427fa 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,8 @@
 changes relative to sbcl-1.0.43:
   * enhancement: RUN-PROGRAM accepts :EXTERNAL-FORMAT argument to select the
     external-format for its :INPUT, :OUTPUT, AND :ERROR :STREAMs.
+  * enhancement: ALLOCATION-INFORMATION also provides the page the object
+    resides on.
   * bug fix: compiler failed to derive the result-type of MAKE-ARRAY as
     (AND VECTOR (NOT SIMPLE-ARRAY)) when appropriate. (lp#309130)
   * bug fix: (THE (VALUES ...)) in LOAD-TIME-VALUE caused a compiler-error.
index c5bb86a..c5d80af 100644 (file)
@@ -787,6 +787,15 @@ For :HEAP objects the secondary value is a plist:
     even if :PINNED in NIL if the GC has not had the need to mark the the page
     as pinned. (GENCGC and :SPACE :DYNAMIC only.)
 
+  :WRITE-PROTECTED
+    Indicates that the page on which the object starts is write-protected,
+    which indicates for :BOXED objects that it hasn't been written to since
+    the last GC of its generation. (GENCGC and :SPACE :DYNAMIC only.)
+
+  :PAGE
+    The index of the page the object resides on. (GENGC and :SPACE :DYNAMIC
+    only.)
+
 For :STACK objects secondary value is the thread on whose stack the object is
 allocated.
 
@@ -834,7 +843,8 @@ Experimental: interface subject to change."
                                    :write-protected (logbitp 0 flags)
                                    :boxed (logbitp 2 flags)
                                    :pinned (logbitp 5 flags)
-                                   :large (logbitp 6 flags)))))
+                                   :large (logbitp 6 flags)
+                                   :page index))))
                        (list :space space))
                    #-gencgc
                    (list :space space))))))
index f40e99b..0a8abaf 100644 (file)
          ;; FIXME: This is the canonical GENCGC result. On PPC we sometimes get
          ;; :LARGE T, which doesn't seem right -- but ignore that for now.
          '(:space :dynamic :generation 6 :write-protected t :boxed t :pinned nil :large nil)
-         :ignore #+ppc '(:large) #-ppc nil)
+         :ignore (list :page #+ppc :large))
     #-gencgc
     (tai :cons :heap
          ;; FIXME: Figure out what's the right cheney-result. SPARC at least
index 390aa85..c5bb9df 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".)
-"1.0.43.7"
+"1.0.43.8"