Closed qinsoon closed 1 year ago
Does this impact performance in any way? Have you tested it with the previous benchmarks? I'm just wondering whether it would help at least a bit since it removes those locks.
Does this impact performance in any way? Have you tested it with the previous benchmarks? I'm just wondering whether it would help at least a bit since it removes those locks.
I haven't tested that. It should improve the stack scanning. But I am not sure how much it matters for the whole GC time. I see this PR as a cleanup rather than an optimization. But anyway, I will run the benchmarks.
This is the result (compared with Julia GC). It seems we only see a clear improvement in pidigits
. I think the reason is that stack scanning is a fixed cost per GC and we trigger much more GCs in pidigits
than other benchmarks. So the improvement is only visible for pidigits
.
This PR is based on https://github.com/mmtk/mmtk-julia/pull/86.
Scanning::scan_roots_in_mutator_thread
.scan_gcstack()
, which is implemented in Rust, and used for object scanning. It would be better to remove our implementation for it in C.scan_vm_specific_roots
, and call it inScanning::scan_vm_specific_roots
.RootsWorkFactory
in CROOT_NODES/EDGES
as they are no longer used.