head	1.2;
access;
symbols;
locks; strict;
comment	@# @;


1.2
date	2013.02.20.00.52.22;	author svnexp;	state dead;
branches;
next	1.1;

1.1
date	2012.10.28.17.03.28;	author flo;	state Exp;
branches;
next	;


desc
@@


1.2
log
@## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/312608
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
@
text
@commit b44dc8e
Author: Jan Beich <jbeich@@tormail.org>
Date:   Fri Oct 12 18:49:59 2012 +0000

    Bug 762445 - Add jemalloc3 glue for heap-committed, heap-dirty in about:memory.
---
 memory/build/mozjemalloc_compat.c | 34 ++++++++++++++++++++++++++++------
 1 file changed, 28 insertions(+), 6 deletions(-)

diff --git memory/build/mozjemalloc_compat.c memory/build/mozjemalloc_compat.c
index 94ad96e..7adfef5 100644
--- memory/build/mozjemalloc_compat.c
+++ memory/build/mozjemalloc_compat.c
@@@@ -11,15 +11,50 @@@@
 #define wrap(a) je_ ## a
 #endif
 
-extern MOZ_IMPORT_API(int)
+/*
+ *  CTL_* macros are from memory/jemalloc/src/src/stats.c with changes:
+ *  - drop `t' argument to avoid redundancy in calculating type size
+ *  - require `i' argument for arena number explicitly
+ */
+
+#define	CTL_GET(n, v) do {						\
+	size_t sz = sizeof(v);						\
+	wrap(mallctl)(n, &v, &sz, NULL, 0);				\
+} while (0)
+
+#define	CTL_I_GET(n, v, i) do {						\
+	size_t mib[6];							\
+	size_t miblen = sizeof(mib) / sizeof(mib[0]);			\
+	size_t sz = sizeof(v);						\
+	wrap(mallctlnametomib)(n, mib, &miblen);			\
+	mib[2] = i;							\
+	wrap(mallctlbymib)(mib, miblen, &v, &sz, NULL, 0);		\
+} while (0)
+
+MOZ_IMPORT_API(int)
 wrap(mallctl)(const char*, void*, size_t*, void*, size_t);
+MOZ_IMPORT_API(int)
+wrap(mallctlnametomib)(const char *name, size_t *mibp, size_t *miblenp);
+MOZ_IMPORT_API(int)
+wrap(mallctlbymib)(const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen);
 
 MOZ_EXPORT_API(void)
 jemalloc_stats(jemalloc_stats_t *stats)
 {
-  size_t size = sizeof(stats->mapped);
-  wrap(mallctl)("stats.mapped", &stats->mapped, &size, NULL, 0);
-  wrap(mallctl)("stats.allocated", &stats->allocated, &size, NULL, 0);
-  stats->committed = -1;
-  stats->dirty = -1;
+  unsigned narenas;
+  size_t active, allocated, mapped, page, pdirty;
+
+  CTL_GET("arenas.narenas", narenas);
+  CTL_GET("arenas.page", page);
+  CTL_GET("stats.active", active);
+  CTL_GET("stats.allocated", allocated);
+  CTL_GET("stats.mapped", mapped);
+
+  /* get the summation for all arenas, i == narenas */
+  CTL_I_GET("stats.arenas.0.pdirty", pdirty, narenas);
+
+  stats->allocated = allocated;
+  stats->mapped = mapped;
+  stats->dirty = pdirty * page;
+  stats->committed = active + stats->dirty;
 }
@


1.1
log
@SVN rev 306558 on 2012-10-28 17:03:28Z by flo

- Update www/firefox{,-i18n} to 16.0.2
- Update seamonkey to 2.13.2
- Update ESR ports and libxul to 10.0.10
- Update nspr to 4.9.3
- Update nss to 3.14
- with GNOMEVFS2 option build its extension, too [1]
- make heap-committed and heap-dirty reporters work in about:memory
- properly mark QT4 as experimental (needs love upstream)
- *miscellaneous cleanups and fixups*

mail/thunderbird will be updated once the tarballs are available.

PR:		ports/173052 [1]
Security:	6b3b1b97-207c-11e2-a03f-c8600054b392
Feature safe:	yes
In collaboration with:	Jan Beich <jbeich@@tormail.org>
@
text
@@

