Statistics of memory usage during interpretation.
This commit is contained in:
@@ -26,6 +26,7 @@
|
||||
#include "globals.h"
|
||||
#include "mem-config.h"
|
||||
#include "mem-heap.h"
|
||||
#include "mem-poolman.h"
|
||||
|
||||
/**
|
||||
* Representation of NULL value for compressed pointers
|
||||
|
||||
@@ -807,6 +807,18 @@ mem_heap_get_stats (mem_heap_stats_t *out_heap_stats_p) /**< out: heap stats */
|
||||
*out_heap_stats_p = mem_heap_stats;
|
||||
} /* mem_heap_get_stats */
|
||||
|
||||
/**
|
||||
* Reset peak values in memory usage statistics
|
||||
*/
|
||||
void
|
||||
mem_heap_stats_reset_peak (void)
|
||||
{
|
||||
mem_heap_stats.peak_allocated_chunks = mem_heap_stats.allocated_chunks;
|
||||
mem_heap_stats.peak_allocated_blocks = mem_heap_stats.allocated_blocks;
|
||||
mem_heap_stats.peak_allocated_bytes = mem_heap_stats.allocated_bytes;
|
||||
mem_heap_stats.peak_waste_bytes = mem_heap_stats.waste_bytes;
|
||||
} /* mem_heap_stats_reset_peak */
|
||||
|
||||
/**
|
||||
* Initalize heap memory usage statistics account structure
|
||||
*/
|
||||
@@ -840,21 +852,37 @@ mem_heap_stat_alloc_block (mem_block_header_t *block_header_p) /**< allocated bl
|
||||
{
|
||||
mem_heap_stats.peak_allocated_blocks = mem_heap_stats.allocated_blocks;
|
||||
}
|
||||
if (mem_heap_stats.allocated_blocks > mem_heap_stats.global_peak_allocated_blocks)
|
||||
{
|
||||
mem_heap_stats.global_peak_allocated_blocks = mem_heap_stats.allocated_blocks;
|
||||
}
|
||||
|
||||
if (mem_heap_stats.allocated_chunks > mem_heap_stats.peak_allocated_chunks)
|
||||
{
|
||||
mem_heap_stats.peak_allocated_chunks = mem_heap_stats.allocated_chunks;
|
||||
}
|
||||
if (mem_heap_stats.allocated_chunks > mem_heap_stats.global_peak_allocated_chunks)
|
||||
{
|
||||
mem_heap_stats.global_peak_allocated_chunks = mem_heap_stats.allocated_chunks;
|
||||
}
|
||||
|
||||
if (mem_heap_stats.allocated_bytes > mem_heap_stats.peak_allocated_bytes)
|
||||
{
|
||||
mem_heap_stats.peak_allocated_bytes = mem_heap_stats.allocated_bytes;
|
||||
}
|
||||
if (mem_heap_stats.allocated_bytes > mem_heap_stats.global_peak_allocated_bytes)
|
||||
{
|
||||
mem_heap_stats.global_peak_allocated_bytes = mem_heap_stats.allocated_bytes;
|
||||
}
|
||||
|
||||
if (mem_heap_stats.waste_bytes > mem_heap_stats.peak_waste_bytes)
|
||||
{
|
||||
mem_heap_stats.peak_waste_bytes = mem_heap_stats.waste_bytes;
|
||||
}
|
||||
if (mem_heap_stats.waste_bytes > mem_heap_stats.global_peak_waste_bytes)
|
||||
{
|
||||
mem_heap_stats.global_peak_waste_bytes = mem_heap_stats.waste_bytes;
|
||||
}
|
||||
|
||||
JERRY_ASSERT(mem_heap_stats.allocated_blocks <= mem_heap_stats.blocks);
|
||||
JERRY_ASSERT(mem_heap_stats.allocated_bytes <= mem_heap_stats.size);
|
||||
|
||||
@@ -57,19 +57,24 @@ typedef struct
|
||||
|
||||
size_t allocated_chunks; /**< currently allocated chunks */
|
||||
size_t peak_allocated_chunks; /**< peak allocated chunks */
|
||||
size_t global_peak_allocated_chunks; /**< non-resettable peak allocated chunks */
|
||||
|
||||
size_t allocated_blocks; /**< currently allocated blocks */
|
||||
size_t peak_allocated_blocks; /**< peak allocated blocks */
|
||||
size_t global_peak_allocated_blocks; /**< non-resettable peak allocated blocks */
|
||||
|
||||
size_t allocated_bytes; /**< currently allocated bytes */
|
||||
size_t peak_allocated_bytes; /**< peak allocated bytes */
|
||||
size_t global_peak_allocated_bytes; /**< non-resettable peak allocated bytes */
|
||||
|
||||
size_t waste_bytes; /**< bytes waste due to blocks filled partially
|
||||
and due to block headers */
|
||||
size_t peak_waste_bytes; /**< peak bytes waste */
|
||||
size_t global_peak_waste_bytes; /**< non-resettable peak bytes waste */
|
||||
} mem_heap_stats_t;
|
||||
|
||||
extern void mem_heap_get_stats (mem_heap_stats_t *out_heap_stats_p);
|
||||
extern void mem_heap_stats_reset_peak (void);
|
||||
#endif /* MEM_STATS */
|
||||
|
||||
/**
|
||||
|
||||
@@ -225,6 +225,16 @@ mem_pools_get_stats (mem_pools_stats_t *out_pools_stats_p) /**< out: pools' stat
|
||||
*out_pools_stats_p = mem_pools_stats;
|
||||
} /* mem_pools_get_stats */
|
||||
|
||||
/**
|
||||
* Reset peak values in memory usage statistics
|
||||
*/
|
||||
void
|
||||
mem_pools_stats_reset_peak (void)
|
||||
{
|
||||
mem_pools_stats.peak_pools_count = mem_pools_stats.pools_count;
|
||||
mem_pools_stats.peak_allocated_chunks = mem_pools_stats.allocated_chunks;
|
||||
} /* mem_pools_stats_reset_peak */
|
||||
|
||||
/**
|
||||
* Initalize pools' memory usage statistics account structure
|
||||
*/
|
||||
@@ -247,6 +257,10 @@ mem_pools_stat_alloc_pool (void)
|
||||
{
|
||||
mem_pools_stats.peak_pools_count = mem_pools_stats.pools_count;
|
||||
}
|
||||
if (mem_pools_stats.pools_count > mem_pools_stats.global_peak_pools_count)
|
||||
{
|
||||
mem_pools_stats.global_peak_pools_count = mem_pools_stats.pools_count;
|
||||
}
|
||||
} /* mem_pools_stat_alloc_pool */
|
||||
|
||||
/**
|
||||
@@ -276,6 +290,10 @@ mem_pools_stat_alloc_chunk (void)
|
||||
{
|
||||
mem_pools_stats.peak_allocated_chunks = mem_pools_stats.allocated_chunks;
|
||||
}
|
||||
if (mem_pools_stats.allocated_chunks > mem_pools_stats.global_peak_allocated_chunks)
|
||||
{
|
||||
mem_pools_stats.global_peak_allocated_chunks = mem_pools_stats.allocated_chunks;
|
||||
}
|
||||
} /* mem_pools_stat_alloc_chunk */
|
||||
|
||||
/**
|
||||
|
||||
@@ -46,17 +46,24 @@ typedef struct
|
||||
/** peak pools' count */
|
||||
size_t peak_pools_count;
|
||||
|
||||
/** non-resettable peak pools' count */
|
||||
size_t global_peak_pools_count;
|
||||
|
||||
/** allocated chunks count */
|
||||
size_t allocated_chunks;
|
||||
|
||||
/** peak allocated chunks count */
|
||||
size_t peak_allocated_chunks;
|
||||
|
||||
/** non-resettable peak allocated chunks count */
|
||||
size_t global_peak_allocated_chunks;
|
||||
|
||||
/** free chunks count */
|
||||
size_t free_chunks;
|
||||
} mem_pools_stats_t;
|
||||
|
||||
extern void mem_pools_get_stats (mem_pools_stats_t *out_pools_stats_p);
|
||||
extern void mem_pools_stats_reset_peak (void);
|
||||
#endif /* MEM_STATS */
|
||||
|
||||
#endif /* JERRY_MEM_POOLMAN_H */
|
||||
|
||||
Reference in New Issue
Block a user