#include <OSD_MemInfo.hxx>
+#if defined(__EMSCRIPTEN__)
+ #include <emscripten.h>
+
+ //! Return WebAssembly heap size in bytes.
+ EM_JS(size_t, OSD_MemInfo_getModuleHeapLength, (), {
+ return Module.HEAP8.length;
+ });
+#endif
+
// =======================================================================
// function : OSD_MemInfo
// purpose :
}
}
-#elif (defined(__linux__) || defined(__linux) || defined(__EMSCRIPTEN__))
- const struct mallinfo aMI = mallinfo();
- if (IsActive (MemHeapUsage))
+#elif defined(__EMSCRIPTEN__)
+ if (IsActive (MemHeapUsage)
+ || IsActive (MemWorkingSet)
+ || IsActive (MemWorkingSetPeak))
{
- myCounters[MemHeapUsage] = aMI.uordblks;
+ // /proc/%d/status is not emulated - get more info from mallinfo()
+ const struct mallinfo aMI = mallinfo();
+ if (IsActive (MemHeapUsage))
+ {
+ myCounters[MemHeapUsage] = aMI.uordblks;
+ }
+ if (IsActive (MemWorkingSet))
+ {
+ myCounters[MemWorkingSet] = aMI.uordblks;
+ }
+ if (IsActive (MemWorkingSetPeak))
+ {
+ myCounters[MemWorkingSetPeak] = aMI.usmblks;
+ }
}
-#if defined(__EMSCRIPTEN__)
- // /proc/%d/status is not emulated - get more info from mallinfo()
- if (IsActive (MemWorkingSet))
+ if (IsActive (MemVirtual))
{
- myCounters[MemWorkingSet] = aMI.uordblks;
+ myCounters[MemVirtual] = OSD_MemInfo_getModuleHeapLength();
}
- if (IsActive (MemWorkingSetPeak))
+#elif (defined(__linux__) || defined(__linux))
+ if (IsActive (MemHeapUsage))
{
- myCounters[MemWorkingSetPeak] = aMI.usmblks;
+ const struct mallinfo aMI = mallinfo();
+ myCounters[MemHeapUsage] = aMI.uordblks;
+ }
+
+ if (!IsActive (MemVirtual)
+ && !IsActive (MemWorkingSet)
+ && !IsActive (MemWorkingSetPeak)
+ && !IsActive (MemPrivate))
+ {
+ return;
}
-#endif
// use procfs on Linux
char aBuff[4096];