From 6fd5fc37c44cc49ff0cb587022df4c881683a111 Mon Sep 17 00:00:00 2001 From: Nikodemus Siivola Date: Thu, 30 Sep 2010 08:33:40 +0000 Subject: [PATCH] 1.0.43.8: ALLOCATION-INFORMATION also provides the actual page Important for figuring out why garbage is retained and why a page keeps getting dirty. --- NEWS | 2 ++ contrib/sb-introspect/introspect.lisp | 12 +++++++++++- contrib/sb-introspect/test-driver.lisp | 2 +- version.lisp-expr | 2 +- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index 477fba4..c5427fa 100644 --- 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. diff --git a/contrib/sb-introspect/introspect.lisp b/contrib/sb-introspect/introspect.lisp index c5bb86a..c5d80af 100644 --- a/contrib/sb-introspect/introspect.lisp +++ b/contrib/sb-introspect/introspect.lisp @@ -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)))))) diff --git a/contrib/sb-introspect/test-driver.lisp b/contrib/sb-introspect/test-driver.lisp index f40e99b..0a8abaf 100644 --- a/contrib/sb-introspect/test-driver.lisp +++ b/contrib/sb-introspect/test-driver.lisp @@ -293,7 +293,7 @@ ;; 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 diff --git a/version.lisp-expr b/version.lisp-expr index 390aa85..c5bb9df 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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" -- 1.7.10.4