Closed qinsoon closed 2 months ago
This PR passed tests with https://github.com/mmtk/julia/pull/63. However, if we turn on stress copying in Immix, it segfaults in the building process. I am still looking into this.
This PR passed tests with mmtk/julia#63. However, if we turn on stress copying in Immix, it segfaults in the building process. I am still looking into this.
The problem is now solved. We further pin julia values in julia_to_scm_
.
This PR may show slowdown from previous moving plans:
ptls->root_task
, ptls->current_task
, ptls->next_task
, ptls->previous_task
may point to the same task, the task's stack will be scanned multiple times.I plan to focus on correctness and allowing more objects to be moved first, and do optimization in future PRs. Now we still want to remove the TPin for the global roots table. However, if requested, I can work on the performance right now within this PR.
This uses conservative stack scanning to find object references from the execution stack, and pins those values. The changes in the PR include:
jl_save_context_for_conservative_scanning
for the first thread that is blocked for the GC.moving
or thenon_moving
feature.