xo-object: improve GC unittest + prep to integrate w/ xo::reflect
This commit is contained in:
parent
ff5b0cfb8a
commit
432e0efce2
8 changed files with 305 additions and 120 deletions
|
|
@ -6,11 +6,12 @@ set(SELF_SRCS
|
|||
ArenaAlloc.cpp
|
||||
ListAlloc.cpp
|
||||
GC.cpp
|
||||
GcStatistics.cpp
|
||||
Object.cpp
|
||||
Forwarding1.cpp
|
||||
)
|
||||
|
||||
xo_add_shared_library4(${SELF_LIB} ${PROJECT_NAME}Targets ${PROJECT_VERSION} 1 ${SELF_SRCS})
|
||||
xo_dependency(${SELF_LIB} indentlog)
|
||||
xo_dependency(${SELF_LIB} reflect)
|
||||
|
||||
#end CMakeLists.txt
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
* author: Roland Conybeare, Jul 2025
|
||||
*/
|
||||
|
||||
#include "GcStatistics.hpp"
|
||||
#include "GC.hpp"
|
||||
#include "Object.hpp"
|
||||
#include "xo/indentlog/scope.hpp"
|
||||
|
|
@ -67,6 +68,31 @@ namespace xo {
|
|||
os << "<GcStatistics"
|
||||
<< xtag("gen_v", gen_v_)
|
||||
<< xtag("total_allocated", total_allocated_)
|
||||
<< xtag("total_promoted_sab", total_promoted_sab_)
|
||||
// total_promoted
|
||||
// n_mtuation
|
||||
// n_logged_mutation
|
||||
// n_xgen_mutation
|
||||
// n_xckp_mutation
|
||||
// << xtag("per_type_stats", per_type_stats_)
|
||||
<< ">";
|
||||
}
|
||||
|
||||
void
|
||||
GcStatisticsExt::display(std::ostream & os) const
|
||||
{
|
||||
os << "<GcStatisticsExt"
|
||||
<< xtag("gen_v", gen_v_)
|
||||
<< xtag("total_allocated", total_allocated_)
|
||||
<< xtag("total_promoted_sab", total_promoted_)
|
||||
<< xtag("nursery_z", nursery_z_)
|
||||
<< xtag("nursery_before_ckp_z", nursery_before_checkpoint_z_)
|
||||
<< xtag("nursery_after_ckp_z", nursery_after_checkpoint_z_)
|
||||
<< xtag("tenured_z", tenured_z_)
|
||||
<< xtag("n_mutation", n_mutation_)
|
||||
<< xtag("n_logged_mutation", n_logged_mutation_)
|
||||
<< xtag("n_xgen_mutation", n_xgen_mutation_)
|
||||
<< xtag("n_xkcp_mutation", n_xckp_mutation_)
|
||||
// << xtag("per_type_stats", per_type_stats_)
|
||||
<< ">";
|
||||
}
|
||||
|
|
@ -228,6 +254,18 @@ namespace xo {
|
|||
return config_.debug_flag_;
|
||||
}
|
||||
|
||||
GcStatisticsExt
|
||||
GC::get_gc_statistics() const
|
||||
{
|
||||
GcStatisticsExt retval = GcStatisticsExt(this->native_gc_statistics());
|
||||
|
||||
retval.nursery_z_ = nursery_[role2int(role::to_space)]->size();
|
||||
retval.nursery_before_checkpoint_z_ = nursery_[role2int(role::to_space)]->before_checkpoint();
|
||||
retval.tenured_z_ = tenured_[role2int(role::to_space)]->size();
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
generation_result
|
||||
GC::fromspace_generation_of(const void * x) const
|
||||
{
|
||||
|
|
|
|||
68
src/alloc/GcStatistics.cpp
Normal file
68
src/alloc/GcStatistics.cpp
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
/* GcStatistics.cpp
|
||||
*
|
||||
* author: Roland Conybeare, Aug 2025
|
||||
*/
|
||||
|
||||
#include "GcStatistics.hpp"
|
||||
#include "xo/indentlog/print/pretty_vector.hpp"
|
||||
|
||||
namespace xo {
|
||||
namespace print {
|
||||
bool
|
||||
ppdetail<xo::gc::PerGenerationStatistics>::print_pretty(const ppindentinfo & ppii,
|
||||
const xo::gc::PerGenerationStatistics & x)
|
||||
{
|
||||
return ppii.pps()->pretty_struct(ppii,
|
||||
"PerGenerationStatistics",
|
||||
refrtag("used_z", x.used_z_),
|
||||
refrtag("n_gc", x.n_gc_),
|
||||
refrtag("new_alloc_z", x.new_alloc_z_),
|
||||
refrtag("scanned_z", x.scanned_z_),
|
||||
refrtag("survive_z", x.survive_z_),
|
||||
refrtag("promote_z", x.promote_z_)
|
||||
);
|
||||
}
|
||||
|
||||
bool
|
||||
ppdetail<xo::gc::GcStatistics>::print_pretty(const ppindentinfo & ppii,
|
||||
const xo::gc::GcStatistics & x)
|
||||
{
|
||||
return ppii.pps()->pretty_struct(ppii,
|
||||
"GcStatistics",
|
||||
refrtag("gen_v", x.gen_v_),
|
||||
refrtag("total_allocated", x.total_allocated_),
|
||||
refrtag("total_promoted_sab", x.total_promoted_sab_),
|
||||
refrtag("total_promoted", x.total_promoted_),
|
||||
refrtag("n_mutation", x.n_mutation_),
|
||||
refrtag("n_logged_mutation", x.n_logged_mutation_),
|
||||
refrtag("n_xgen_mutation", x.n_xgen_mutation_),
|
||||
refrtag("n_xckp_mutation", x.n_xckp_mutation_)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
ppdetail<xo::gc::GcStatisticsExt>::print_pretty(const ppindentinfo & ppii,
|
||||
const xo::gc::GcStatisticsExt & x)
|
||||
{
|
||||
return ppii.pps()->pretty_struct(ppii,
|
||||
"GcStatisticsExt",
|
||||
refrtag("gen_v", x.gen_v_),
|
||||
refrtag("total_allocated", x.total_allocated_),
|
||||
refrtag("total_promoted_sab", x.total_promoted_sab_),
|
||||
refrtag("total_promoted", x.total_promoted_),
|
||||
refrtag("n_mutation", x.n_mutation_),
|
||||
refrtag("n_logged_mutation", x.n_logged_mutation_),
|
||||
refrtag("n_xgen_mutation", x.n_xgen_mutation_),
|
||||
refrtag("n_xckp_mutation", x.n_xckp_mutation_),
|
||||
refrtag("nursery_z", x.nursery_z_),
|
||||
refrtag("nursery_before_checkpoint_z", x.nursery_before_checkpoint_z_),
|
||||
refrtag("nursery_after_checkpoint_z", x.nursery_after_checkpoint_z_),
|
||||
refrtag("tenured_z", x.tenured_z_));
|
||||
}
|
||||
|
||||
|
||||
} /*namespace print*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end GcStatistics.cpp */
|
||||
Loading…
Add table
Add a link
Reference in a new issue