From owner-freebsd-gecko@FreeBSD.ORG Tue Dec 3 11:44:09 2013 Return-Path: Delivered-To: freebsd-gecko@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D317278D for ; Tue, 3 Dec 2013 11:44:09 +0000 (UTC) Received: from trillian.chruetertee.ch (trillian.chruetertee.ch [217.150.244.247]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 62E851CF5 for ; Tue, 3 Dec 2013 11:44:09 +0000 (UTC) Received: from trillian.chruetertee.ch (trillian [217.150.244.247]) by trillian.chruetertee.ch (8.14.4/8.14.3) with ESMTP id rB3Bi7HJ050769 for ; Tue, 3 Dec 2013 11:44:07 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: (from www@localhost) by trillian.chruetertee.ch (8.14.4/8.14.3/Submit) id rB3Bi2vq049533 for freebsd-gecko@freebsd.org; Tue, 3 Dec 2013 11:44:02 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Date: Tue, 3 Dec 2013 11:44:02 GMT Message-Id: <201312031144.rB3Bi2vq049533@trillian.chruetertee.ch> X-Authentication-Warning: trillian.chruetertee.ch: www set sender to svn-freebsd-gecko@chruetertee.ch using -f From: svn-freebsd-gecko@chruetertee.ch To: freebsd-gecko@freebsd.org Subject: [SVN-Commit] r1425 - in trunk: mail/thunderbird/files www/firefox/files www/libxul/files www/seamonkey/files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list Reply-To: freebsd-gecko@freebsd.org List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Dec 2013 11:44:09 -0000 Author: jbeich Date: Tue Dec 3 11:44:02 2013 New Revision: 1425 Log: expose private reporter in about:memory It's implemented as a sum of PRES field in procstat(1) e.g., $ procstat -v $(pgrep firefox) | awk '{ rss+=$5; prss+=$6 } END { printf "private % 8d Kb\nresident % 8d Kb\n", prss*4096/1024, rss*4096/1024 }' private 31080 Kb resident 491600 Kb The value may be slightly different from how ki_rssize calculates resident pages. Added: trunk/mail/thunderbird/files/patch-bug945046 trunk/www/firefox/files/patch-bug945046 trunk/www/libxul/files/patch-bug945046 trunk/www/seamonkey/files/patch-bug945046 Added: trunk/mail/thunderbird/files/patch-bug945046 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/mail/thunderbird/files/patch-bug945046 Tue Dec 3 11:44:02 2013 (r1425) @@ -0,0 +1,130 @@ +diff --git config/system-headers config/system-headers +index 432cba6..18a9627 100644 +--- mozilla/config/system-headers ++++ mozilla/config/system-headers +@@ -1131,3 +1131,4 @@ unicode/unum.h + unicode/ustring.h + unicode/utypes.h + #endif ++libutil.h +diff --git js/src/config/system-headers js/src/config/system-headers +index 432cba6..18a9627 100644 +--- mozilla/js/src/config/system-headers ++++ mozilla/js/src/config/system-headers +@@ -1131,3 +1131,4 @@ unicode/unum.h + unicode/ustring.h + unicode/utypes.h + #endif ++libutil.h +diff --git toolkit/library/Makefile.in toolkit/library/Makefile.in +index 9975621..b4b037d 100644 +--- mozilla/toolkit/library/Makefile.in ++++ mozilla/toolkit/library/Makefile.in +@@ -289,6 +289,10 @@ OS_LIBS += $(call EXPAND_LIBNAME,kvm) + EXTRA_DSO_LDOPTS += -Wl,--warn-unresolved-symbols + endif + ++ifeq ($(OS_ARCH),FreeBSD) ++OS_LIBS += $(call EXPAND_LIBNAME,util) ++endif ++ + ifeq ($(OS_ARCH),WINNT) + OS_LIBS += $(call EXPAND_LIBNAME,shell32 ole32 version winspool comdlg32 imm32 msimg32 shlwapi psapi ws2_32 dbghelp rasapi32 rasdlg iphlpapi uxtheme setupapi secur32 sensorsapi portabledeviceguids windowscodecs wininet wbemuuid) + ifdef ACCESSIBILITY +diff --git xpcom/base/nsMemoryReporterManager.cpp xpcom/base/nsMemoryReporterManager.cpp +index b8147c8..0ffb34e 100644 +--- mozilla/xpcom/base/nsMemoryReporterManager.cpp ++++ mozilla/xpcom/base/nsMemoryReporterManager.cpp +@@ -153,6 +153,43 @@ static nsresult GetResidentFast(int64_t + return GetResident(n); + } + ++#ifdef __FreeBSD__ ++#include ++ ++static nsresult ++GetKinfoVmentrySelf(int64_t* prss) ++{ ++ int cnt; ++ struct kinfo_vmentry *vmmap, *kve; ++ if ((vmmap = kinfo_getvmmap(getpid(), &cnt)) == NULL) ++ return NS_ERROR_FAILURE; ++ ++ if (prss) ++ *prss = 0; ++ ++ for (int i = 0; i < cnt; i++) { ++ kve = &vmmap[i]; ++ if (prss) ++ *prss += kve->kve_private_resident; ++ } ++ ++ free(vmmap); ++ return NS_OK; ++} ++ ++#define HAVE_PRIVATE_REPORTER ++static nsresult ++GetPrivate(int64_t* aN) ++{ ++ int64_t priv; ++ nsresult rv = GetKinfoVmentrySelf(&priv); ++ if (NS_SUCCEEDED(rv)) ++ *aN = priv * getpagesize(); ++ ++ return NS_OK; ++} ++#endif // FreeBSD ++ + #elif defined(SOLARIS) + + #include +@@ -327,6 +364,24 @@ static nsresult GetResidentFast(int64_t + } + + #define HAVE_PRIVATE_REPORTER ++static nsresult ++GetPrivate(int64_t* aN) ++{ ++ PROCESS_MEMORY_COUNTERS_EX pmcex; ++ pmcex.cb = sizeof(PROCESS_MEMORY_COUNTERS_EX); ++ ++ if (!GetProcessMemoryInfo( ++ GetCurrentProcess(), ++ (PPROCESS_MEMORY_COUNTERS) &pmcex, sizeof(pmcex))) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ *aN = pmcex.PrivateUsage; ++ return NS_OK; ++} ++#endif // XP_ ++ ++#ifdef HAVE_PRIVATE_REPORTER + class PrivateReporter MOZ_FINAL : public MemoryReporterBase + { + public: +@@ -339,21 +394,10 @@ public: + + NS_IMETHOD GetAmount(int64_t *aAmount) + { +- PROCESS_MEMORY_COUNTERS_EX pmcex; +- pmcex.cb = sizeof(PROCESS_MEMORY_COUNTERS_EX); +- +- if (!GetProcessMemoryInfo( +- GetCurrentProcess(), +- (PPROCESS_MEMORY_COUNTERS) &pmcex, sizeof(pmcex))) { +- return NS_ERROR_FAILURE; +- } +- +- *aAmount = pmcex.PrivateUsage; +- return NS_OK; ++ return GetPrivate(aAmount); + } + }; +- +-#endif // XP_ ++#endif + + #ifdef HAVE_VSIZE_AND_RESIDENT_REPORTERS + class VsizeReporter MOZ_FINAL : public MemoryReporterBase Added: trunk/www/firefox/files/patch-bug945046 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/www/firefox/files/patch-bug945046 Tue Dec 3 11:44:02 2013 (r1425) @@ -0,0 +1,130 @@ +diff --git config/system-headers config/system-headers +index 432cba6..18a9627 100644 +--- config/system-headers ++++ config/system-headers +@@ -1131,3 +1131,4 @@ unicode/unum.h + unicode/ustring.h + unicode/utypes.h + #endif ++libutil.h +diff --git js/src/config/system-headers js/src/config/system-headers +index 432cba6..18a9627 100644 +--- js/src/config/system-headers ++++ js/src/config/system-headers +@@ -1131,3 +1131,4 @@ unicode/unum.h + unicode/ustring.h + unicode/utypes.h + #endif ++libutil.h +diff --git toolkit/library/Makefile.in toolkit/library/Makefile.in +index 9975621..b4b037d 100644 +--- toolkit/library/Makefile.in ++++ toolkit/library/Makefile.in +@@ -289,6 +289,10 @@ OS_LIBS += $(call EXPAND_LIBNAME,kvm) + EXTRA_DSO_LDOPTS += -Wl,--warn-unresolved-symbols + endif + ++ifeq ($(OS_ARCH),FreeBSD) ++OS_LIBS += $(call EXPAND_LIBNAME,util) ++endif ++ + ifeq ($(OS_ARCH),WINNT) + OS_LIBS += $(call EXPAND_LIBNAME,shell32 ole32 version winspool comdlg32 imm32 msimg32 shlwapi psapi ws2_32 dbghelp rasapi32 rasdlg iphlpapi uxtheme setupapi secur32 sensorsapi portabledeviceguids windowscodecs wininet wbemuuid) + ifdef ACCESSIBILITY +diff --git xpcom/base/nsMemoryReporterManager.cpp xpcom/base/nsMemoryReporterManager.cpp +index b8147c8..0ffb34e 100644 +--- xpcom/base/nsMemoryReporterManager.cpp ++++ xpcom/base/nsMemoryReporterManager.cpp +@@ -196,6 +196,43 @@ static nsresult GetResidentFast(int64_t* + return GetResident(aN); + } + ++#ifdef __FreeBSD__ ++#include ++ ++static nsresult ++GetKinfoVmentrySelf(int64_t* prss) ++{ ++ int cnt; ++ struct kinfo_vmentry *vmmap, *kve; ++ if ((vmmap = kinfo_getvmmap(getpid(), &cnt)) == NULL) ++ return NS_ERROR_FAILURE; ++ ++ if (prss) ++ *prss = 0; ++ ++ for (int i = 0; i < cnt; i++) { ++ kve = &vmmap[i]; ++ if (prss) ++ *prss += kve->kve_private_resident; ++ } ++ ++ free(vmmap); ++ return NS_OK; ++} ++ ++#define HAVE_PRIVATE_REPORTER ++static nsresult ++GetPrivate(int64_t* aN) ++{ ++ int64_t priv; ++ nsresult rv = GetKinfoVmentrySelf(&priv); ++ if (NS_SUCCEEDED(rv)) ++ *aN = priv * getpagesize(); ++ ++ return NS_OK; ++} ++#endif // FreeBSD ++ + #elif defined(SOLARIS) + + #include +@@ -370,6 +407,24 @@ static nsresult GetResidentFast(int64_t* + } + + #define HAVE_PRIVATE_REPORTER ++static nsresult ++GetPrivate(int64_t* aN) ++{ ++ PROCESS_MEMORY_COUNTERS_EX pmcex; ++ pmcex.cb = sizeof(PROCESS_MEMORY_COUNTERS_EX); ++ ++ if (!GetProcessMemoryInfo( ++ GetCurrentProcess(), ++ (PPROCESS_MEMORY_COUNTERS) &pmcex, sizeof(pmcex))) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ *aN = pmcex.PrivateUsage; ++ return NS_OK; ++} ++#endif // XP_ ++ ++#ifdef HAVE_PRIVATE_REPORTER + class PrivateReporter MOZ_FINAL : public MemoryUniReporter + { + public: +@@ -382,21 +437,10 @@ public: + + NS_IMETHOD GetAmount(int64_t* aAmount) + { +- PROCESS_MEMORY_COUNTERS_EX pmcex; +- pmcex.cb = sizeof(PROCESS_MEMORY_COUNTERS_EX); +- +- if (!GetProcessMemoryInfo( +- GetCurrentProcess(), +- (PPROCESS_MEMORY_COUNTERS) &pmcex, sizeof(pmcex))) { +- return NS_ERROR_FAILURE; +- } +- +- *aAmount = pmcex.PrivateUsage; +- return NS_OK; ++ return GetPrivate(aAmount); + } + }; +- +-#endif // XP_ ++#endif + + #ifdef HAVE_VSIZE_AND_RESIDENT_REPORTERS + class VsizeReporter MOZ_FINAL : public MemoryUniReporter Added: trunk/www/libxul/files/patch-bug945046 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/www/libxul/files/patch-bug945046 Tue Dec 3 11:44:02 2013 (r1425) @@ -0,0 +1,130 @@ +diff --git config/system-headers config/system-headers +index 432cba6..18a9627 100644 +--- config/system-headers ++++ config/system-headers +@@ -1131,3 +1131,4 @@ unicode/unum.h + unicode/ustring.h + unicode/utypes.h + #endif ++libutil.h +diff --git js/src/config/system-headers js/src/config/system-headers +index 432cba6..18a9627 100644 +--- js/src/config/system-headers ++++ js/src/config/system-headers +@@ -1131,3 +1131,4 @@ unicode/unum.h + unicode/ustring.h + unicode/utypes.h + #endif ++libutil.h +diff --git toolkit/library/Makefile.in toolkit/library/Makefile.in +index 9975621..b4b037d 100644 +--- toolkit/library/Makefile.in ++++ toolkit/library/Makefile.in +@@ -289,6 +289,10 @@ OS_LIBS += $(call EXPAND_LIBNAME,kvm) + EXTRA_DSO_LDOPTS += -Wl,--warn-unresolved-symbols + endif + ++ifeq ($(OS_ARCH),FreeBSD) ++OS_LIBS += $(call EXPAND_LIBNAME,util) ++endif ++ + ifeq ($(OS_ARCH),WINNT) + OS_LIBS += $(call EXPAND_LIBNAME,shell32 ole32 version winspool comdlg32 imm32 msimg32 shlwapi psapi ws2_32 dbghelp rasapi32 rasdlg iphlpapi uxtheme setupapi secur32 sensorsapi portabledeviceguids windowscodecs wininet wbemuuid) + ifdef ACCESSIBILITY +diff --git xpcom/base/nsMemoryReporterManager.cpp xpcom/base/nsMemoryReporterManager.cpp +index b8147c8..0ffb34e 100644 +--- xpcom/base/nsMemoryReporterManager.cpp ++++ xpcom/base/nsMemoryReporterManager.cpp +@@ -153,6 +153,43 @@ static nsresult GetResidentFast(int64_t + return GetResident(n); + } + ++#ifdef __FreeBSD__ ++#include ++ ++static nsresult ++GetKinfoVmentrySelf(int64_t* prss) ++{ ++ int cnt; ++ struct kinfo_vmentry *vmmap, *kve; ++ if ((vmmap = kinfo_getvmmap(getpid(), &cnt)) == NULL) ++ return NS_ERROR_FAILURE; ++ ++ if (prss) ++ *prss = 0; ++ ++ for (int i = 0; i < cnt; i++) { ++ kve = &vmmap[i]; ++ if (prss) ++ *prss += kve->kve_private_resident; ++ } ++ ++ free(vmmap); ++ return NS_OK; ++} ++ ++#define HAVE_PRIVATE_REPORTER ++static nsresult ++GetPrivate(int64_t* aN) ++{ ++ int64_t priv; ++ nsresult rv = GetKinfoVmentrySelf(&priv); ++ if (NS_SUCCEEDED(rv)) ++ *aN = priv * getpagesize(); ++ ++ return NS_OK; ++} ++#endif // FreeBSD ++ + #elif defined(SOLARIS) + + #include +@@ -327,6 +364,24 @@ static nsresult GetResidentFast(int64_t + } + + #define HAVE_PRIVATE_REPORTER ++static nsresult ++GetPrivate(int64_t* aN) ++{ ++ PROCESS_MEMORY_COUNTERS_EX pmcex; ++ pmcex.cb = sizeof(PROCESS_MEMORY_COUNTERS_EX); ++ ++ if (!GetProcessMemoryInfo( ++ GetCurrentProcess(), ++ (PPROCESS_MEMORY_COUNTERS) &pmcex, sizeof(pmcex))) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ *aN = pmcex.PrivateUsage; ++ return NS_OK; ++} ++#endif // XP_ ++ ++#ifdef HAVE_PRIVATE_REPORTER + class PrivateReporter MOZ_FINAL : public MemoryReporterBase + { + public: +@@ -339,21 +394,10 @@ public: + + NS_IMETHOD GetAmount(int64_t *aAmount) + { +- PROCESS_MEMORY_COUNTERS_EX pmcex; +- pmcex.cb = sizeof(PROCESS_MEMORY_COUNTERS_EX); +- +- if (!GetProcessMemoryInfo( +- GetCurrentProcess(), +- (PPROCESS_MEMORY_COUNTERS) &pmcex, sizeof(pmcex))) { +- return NS_ERROR_FAILURE; +- } +- +- *aAmount = pmcex.PrivateUsage; +- return NS_OK; ++ return GetPrivate(aAmount); + } + }; +- +-#endif // XP_ ++#endif + + #ifdef HAVE_VSIZE_AND_RESIDENT_REPORTERS + class VsizeReporter MOZ_FINAL : public MemoryReporterBase Added: trunk/www/seamonkey/files/patch-bug945046 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/www/seamonkey/files/patch-bug945046 Tue Dec 3 11:44:02 2013 (r1425) @@ -0,0 +1,130 @@ +diff --git config/system-headers config/system-headers +index 432cba6..18a9627 100644 +--- mozilla/config/system-headers ++++ mozilla/config/system-headers +@@ -1131,3 +1131,4 @@ unicode/unum.h + unicode/ustring.h + unicode/utypes.h + #endif ++libutil.h +diff --git js/src/config/system-headers js/src/config/system-headers +index 432cba6..18a9627 100644 +--- mozilla/js/src/config/system-headers ++++ mozilla/js/src/config/system-headers +@@ -1131,3 +1131,4 @@ unicode/unum.h + unicode/ustring.h + unicode/utypes.h + #endif ++libutil.h +diff --git toolkit/library/Makefile.in toolkit/library/Makefile.in +index 9975621..b4b037d 100644 +--- mozilla/toolkit/library/Makefile.in ++++ mozilla/toolkit/library/Makefile.in +@@ -289,6 +289,10 @@ OS_LIBS += $(call EXPAND_LIBNAME,kvm) + EXTRA_DSO_LDOPTS += -Wl,--warn-unresolved-symbols + endif + ++ifeq ($(OS_ARCH),FreeBSD) ++OS_LIBS += $(call EXPAND_LIBNAME,util) ++endif ++ + ifeq ($(OS_ARCH),WINNT) + OS_LIBS += $(call EXPAND_LIBNAME,shell32 ole32 version winspool comdlg32 imm32 msimg32 shlwapi psapi ws2_32 dbghelp rasapi32 rasdlg iphlpapi uxtheme setupapi secur32 sensorsapi portabledeviceguids windowscodecs wininet wbemuuid) + ifdef ACCESSIBILITY +diff --git xpcom/base/nsMemoryReporterManager.cpp xpcom/base/nsMemoryReporterManager.cpp +index b8147c8..0ffb34e 100644 +--- mozilla/xpcom/base/nsMemoryReporterManager.cpp ++++ mozilla/xpcom/base/nsMemoryReporterManager.cpp +@@ -153,6 +153,43 @@ static nsresult GetResidentFast(int64_t + return GetResident(n); + } + ++#ifdef __FreeBSD__ ++#include ++ ++static nsresult ++GetKinfoVmentrySelf(int64_t* prss) ++{ ++ int cnt; ++ struct kinfo_vmentry *vmmap, *kve; ++ if ((vmmap = kinfo_getvmmap(getpid(), &cnt)) == NULL) ++ return NS_ERROR_FAILURE; ++ ++ if (prss) ++ *prss = 0; ++ ++ for (int i = 0; i < cnt; i++) { ++ kve = &vmmap[i]; ++ if (prss) ++ *prss += kve->kve_private_resident; ++ } ++ ++ free(vmmap); ++ return NS_OK; ++} ++ ++#define HAVE_PRIVATE_REPORTER ++static nsresult ++GetPrivate(int64_t* aN) ++{ ++ int64_t priv; ++ nsresult rv = GetKinfoVmentrySelf(&priv); ++ if (NS_SUCCEEDED(rv)) ++ *aN = priv * getpagesize(); ++ ++ return NS_OK; ++} ++#endif // FreeBSD ++ + #elif defined(SOLARIS) + + #include +@@ -327,6 +364,24 @@ static nsresult GetResidentFast(int64_t + } + + #define HAVE_PRIVATE_REPORTER ++static nsresult ++GetPrivate(int64_t* aN) ++{ ++ PROCESS_MEMORY_COUNTERS_EX pmcex; ++ pmcex.cb = sizeof(PROCESS_MEMORY_COUNTERS_EX); ++ ++ if (!GetProcessMemoryInfo( ++ GetCurrentProcess(), ++ (PPROCESS_MEMORY_COUNTERS) &pmcex, sizeof(pmcex))) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ *aN = pmcex.PrivateUsage; ++ return NS_OK; ++} ++#endif // XP_ ++ ++#ifdef HAVE_PRIVATE_REPORTER + class PrivateReporter MOZ_FINAL : public MemoryReporterBase + { + public: +@@ -339,21 +394,10 @@ public: + + NS_IMETHOD GetAmount(int64_t *aAmount) + { +- PROCESS_MEMORY_COUNTERS_EX pmcex; +- pmcex.cb = sizeof(PROCESS_MEMORY_COUNTERS_EX); +- +- if (!GetProcessMemoryInfo( +- GetCurrentProcess(), +- (PPROCESS_MEMORY_COUNTERS) &pmcex, sizeof(pmcex))) { +- return NS_ERROR_FAILURE; +- } +- +- *aAmount = pmcex.PrivateUsage; +- return NS_OK; ++ return GetPrivate(aAmount); + } + }; +- +-#endif // XP_ ++#endif + + #ifdef HAVE_VSIZE_AND_RESIDENT_REPORTERS + class VsizeReporter MOZ_FINAL : public MemoryReporterBase