From: Dave Love Date: Tue, 21 Jan 2003 16:56:38 +0000 (+0000) Subject: (Fgc_status): Print zombie list. X-Git-Tag: ttn-vms-21-2-B4~11553 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=83fc9c63ea72d892d0d0b315a4dee478f3e71934;p=emacs.git (Fgc_status): Print zombie list. (mark_maybe_object) [GC_MARK_STACK==GC_USE_GCPROS_CHECK_ZOMBIES]: Fix assignment of zombies. (Fgarbage_collect) [GC_MARK_STACK==GC_USE_GCPROS_CHECK_ZOMBIES]: Don't take car of non-cons. --- diff --git a/src/ChangeLog b/src/ChangeLog index 5303b23abd2..b08445ecd46 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,15 @@ +2003-01-21 Dave Love + + * alloc.c (Fgc_status): Print zombie list. + (mark_maybe_object) [GC_MARK_STACK==GC_USE_GCPROS_CHECK_ZOMBIES]: + Fix assignment of zombies. + (Fgarbage_collect) [GC_MARK_STACK==GC_USE_GCPROS_CHECK_ZOMBIES]: + Don't take car of non-cons. + + * s/sol2-5.h (GC_SETJMP_WORKS, GC_MARK_STACK): Define. + + * s/sunos4-0.h (GC_SETJMP_WORKS, GC_MARK_STACK): Define. + 2003-01-20 David Ponce * w32menu.c (digest_single_submenu): Declare all args. diff --git a/src/alloc.c b/src/alloc.c index c61a0d9fa83..10c4f6f235d 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -3337,15 +3337,19 @@ DEFUN ("gc-status", Fgc_status, Sgc_status, 0, 0, "", doc: /* Show information about live and zombie objects. */) () { - Lisp_Object args[7]; - args[0] = build_string ("%d GCs, avg live/zombies = %.2f/%.2f (%f%%), max %d/%d"); + Lisp_Object args[8], zombie_list = Qnil; + int i; + for (i = 0; i < nzombies; i++) + zombie_list = Fcons (zombies[i], zombie_list); + args[0] = build_string ("%d GCs, avg live/zombies = %.2f/%.2f (%f%%), max %d/%d\nzombies: %S"); args[1] = make_number (ngcs); args[2] = make_float (avg_live); args[3] = make_float (avg_zombies); args[4] = make_float (avg_zombies / avg_live / 100); args[5] = make_number (max_live); args[6] = make_number (max_zombies); - return Fmessage (7, args); + args[7] = zombie_list; + return Fmessage (8, args); } #endif /* GC_MARK_STACK == GC_USE_GCPROS_CHECK_ZOMBIES */ @@ -3427,7 +3431,7 @@ mark_maybe_object (obj) { #if GC_MARK_STACK == GC_USE_GCPROS_CHECK_ZOMBIES if (nzombies < MAX_ZOMBIES) - zombies[nzombies] = *p; + zombies[nzombies] = obj; ++nzombies; #endif mark_object (&obj); @@ -4342,7 +4346,8 @@ Garbage collection happens automatically if you cons more than double nlive = 0; for (i = 0; i < 7; ++i) - nlive += XFASTINT (XCAR (total[i])); + if (CONSP (total[i])) + nlive += XFASTINT (XCAR (total[i])); avg_live = (avg_live * ngcs + nlive) / (ngcs + 1); max_live = max (nlive, max_live);