📝 add comments
Nasal Interpreter Test / mac-aarch64 (push) Waiting to run Details
Nasal Interpreter Test / linux-x86_64 (push) Waiting to run Details

This commit is contained in:
ValKmjolnir 2025-03-15 02:14:44 +08:00
parent a85a4e37c1
commit a83978c553
2 changed files with 31 additions and 9 deletions

View File

@ -13,14 +13,14 @@ void gc::do_mark_sweep() {
}
auto mark_end = clk::now();
sweep();
// if (!in_sweep_stage) {
// for (auto i : memory) {
// if (i->mark == nas_val::gc_status::found) {
// i->mark = nas_val::gc_status::uncollected;
// }
// }
// }
auto sweep_end = clk::now();
if (!in_sweep_stage) {
for (auto i : memory) {
if (i->mark == nas_val::gc_status::found) {
i->mark = nas_val::gc_status::uncollected;
}
}
}
auto total_time = (sweep_end-begin).count();
auto mark_time = (mark_end-begin).count();
@ -208,6 +208,7 @@ void gc::sweep() {
in_sweep_stage = false;
current_sweep_index = 0;
}
return;
}
void gc::extend(const vm_type type) {
@ -444,13 +445,18 @@ void gc::info() const {
var gc::alloc(const vm_type type) {
const u32 index = static_cast<u32>(type)-static_cast<u32>(vm_type::vm_str);
++alloc_count[index];
if (unused[index].empty()) {
// if still in incremental sweep stage? do it
// if not in incremental sweep stage, run a new gc cycle
if (in_sweep_stage || unused[index].empty()) {
++gc_count[index];
do_mark_sweep();
}
// if in incremental sweep stage, but the unused list is empty,
// do it until the unused list has something
while (unused[index].empty() && in_sweep_stage) {
do_mark_sweep();
}
// after all gc stages, still get empty list, extend
if (unused[index].empty()) {
extend(type);
}

View File

@ -31,7 +31,7 @@ var test_func = func(test_processes...) {
println("+----------------------");
}
var MAX_ITER_NUM = 5e4;
var MAX_ITER_NUM = 1e5;
var append_vec = func {
var res = [];
@ -132,6 +132,22 @@ for (var i = 0; i < 10; i += 1) {
append_hash_vec_hash,
append_hash_vec_hash,
append_tree,
append_tree,
append_tree,
append_hash_vec_hash,
append_hash_vec_hash,
append_hash_vec_hash,
append_tree,
append_tree,
append_tree,
append_hash_vec_hash,
append_hash_vec_hash,
append_hash_vec_hash,
append_tree,
append_tree,
append_tree