Implement GCMemoryInfo.TotalCommittedBytes#40
Merged
Merged
Conversation
hez2010
pushed a commit
to hez2010/Satori
that referenced
this pull request
Jun 24, 2025
hez2010
pushed a commit
to hez2010/Satori
that referenced
this pull request
Jan 10, 2026
hez2010
pushed a commit
to hez2010/Satori
that referenced
this pull request
Jan 10, 2026
allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
hez2010
pushed a commit
to hez2010/Satori
that referenced
this pull request
Jan 10, 2026
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
Copilot AI
pushed a commit
to hez2010/Satori
that referenced
this pull request
Jan 10, 2026
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
hez2010
pushed a commit
to hez2010/Satori
that referenced
this pull request
Jan 10, 2026
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
hez2010
pushed a commit
to hez2010/Satori
that referenced
this pull request
Jan 10, 2026
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
hez2010
pushed a commit
to hez2010/Satori
that referenced
this pull request
Jan 11, 2026
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
hez2010
pushed a commit
to hez2010/Satori
that referenced
this pull request
Jan 11, 2026
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
hez2010
pushed a commit
to hez2010/Satori
that referenced
this pull request
Jan 11, 2026
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
hez2010
pushed a commit
to hez2010/Satori
that referenced
this pull request
Jan 12, 2026
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
hez2010
pushed a commit
to hez2010/Satori
that referenced
this pull request
Jan 12, 2026
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
hez2010
pushed a commit
to hez2010/Satori
that referenced
this pull request
Jan 12, 2026
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
hez2010
pushed a commit
to hez2010/Satori
that referenced
this pull request
Jan 12, 2026
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
hez2010
pushed a commit
to hez2010/Satori
that referenced
this pull request
Jan 12, 2026
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
hez2010
pushed a commit
to hez2010/Satori
that referenced
this pull request
Feb 1, 2026
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
VSadov
added a commit
that referenced
this pull request
Feb 4, 2026
hez2010
pushed a commit
to hez2010/Satori
that referenced
this pull request
Feb 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.