nagachika
981097a739
merge revision(s) 8a586af33b: [Backport #21838 ]
...
[PATCH] Don't force major GC when there are allocatable slots
[Bug #21838 ]
When we have allocatable slots, we can grow the heap instead of forcing
a major GC. This prevents major GC to be ran very often in certain situations.
See the ticket for more details.
On ruby-bench, we can see that this patch doesn't cause any significant
regressions:
-------------- ----------- ---------- --------- ----------- ---------- --------- -------------- -------------
bench master (ms) stddev (%) RSS (MiB) branch (ms) stddev (%) RSS (MiB) branch 1st itr master/branch
activerecord 148.2 0.3 59.2 150.0 0.8 69.7 1.015 0.988
chunky-png 435.2 0.3 72.9 438.8 0.1 66.7 0.993 0.992
erubi-rails 733.8 1.2 118.7 704.8 0.2 98.3 1.077 1.041
hexapdf 1400.4 1.1 247.0 1405.0 0.9 223.7 0.986 0.997
liquid-c 32.5 3.3 32.8 32.5 2.1 30.7 1.042 0.999
liquid-compile 31.0 1.7 35.1 33.4 3.9 32.8 0.938 0.928
liquid-render 84.7 0.4 30.8 86.3 0.4 30.8 0.981 0.982
lobsters 594.7 0.6 310.5 596.6 0.4 306.0 1.057 0.997
mail 75.6 2.8 53.3 76.9 0.7 53.2 0.968 0.982
psych-load 1122.8 1.2 29.2 1145.1 0.4 31.7 0.964 0.981
railsbench 1244.7 0.3 115.5 1254.8 1.1 115.2 0.939 0.992
rubocop 103.7 0.5 94.1 104.3 0.5 92.4 0.985 0.994
ruby-lsp 88.3 0.6 78.5 88.5 1.2 77.9 0.992 0.997
sequel 26.9 0.9 33.6 28.3 1.4 32.1 0.954 0.952
shipit 1119.3 1.5 171.4 1075.7 2.1 162.5 1.873 1.040
-------------- ----------- ---------- --------- ----------- ---------- --------- -------------- -------------
2026-01-25 18:21:53 +09:00
Peter Zhu
a58675386c
Prefix asan_poison_object with rb
2024-12-19 09:14:34 -05:00
Peter Zhu
fcd44eee09
Fix compaction in ASAN with RGENGC_CHECK_MODE enabled
2024-12-19 09:14:34 -05:00
Peter Zhu
16750a47d0
Don't calculate the aligned slot when unlocking page
...
If we try to use GET_PAGE_HEADER, it can trigger the read barrier. If we
try to align on the slot then we end up unlocking the heap page of a
lower memory address.
2024-12-19 09:14:34 -05:00
Peter Zhu
f02e31294c
Don't unpoison a NULL object
2024-12-19 09:14:34 -05:00
Peter Zhu
a126560196
Unpoison memory before accessing next element of freelist
2024-12-19 09:14:34 -05:00
Peter Zhu
d28368d27f
Move special constant check in rb_gc_location to gc.c
2024-12-16 13:32:35 -05:00
John Hawthorn and Matthew Draper
36f49eb2b4
Fix compilation with MALLOC_ALLOCATED_SIZE
...
Previously compilation failed with -DMALLOC_ALLOCATED_SIZE=1
Co-authored-by: Matthew Draper <matthew@trebex.net >
2024-12-11 16:58:35 -08:00
Nobuyoshi Nakada
f243733564
[Bug #20941 ] Bail out when recursing no memory
2024-12-11 16:12:04 +09:00
Peter Zhu
eedb30d385
Use rb_gc_enable/rb_gc_disable_no_rest instead of ruby_disable_gc
...
We should use the rb_gc_enable/rb_gc_disable_no_rest APIs instead of
directly setting the ruby_disable_gc variable.
2024-12-05 16:21:37 -05:00
Peter Zhu
7ccad5b9f8
darray.h does not depend on internal/bits.h
...
darray.h no longer depends on internal/bits.h, so we can remove it.
2024-12-05 14:12:56 -05:00
Peter Zhu
ce1ad1b816
Standardize on the name "modular GC"
...
We have name fragmentation for this feature, including "shared GC",
"modular GC", and "external GC". This commit standardizes the feature
name to "modular GC" and the implementation to "GC library".
2024-12-05 10:33:26 -05:00
卜部昌平
25ad7e8e6c
rb_gc_impl_malloc can return NULL
...
Let there be rooms for each GC implementations how to handle multi
threaded situations. They can be totally reentrant, or can have
their own mutex, or can rely on rb_thread_call_with_gvl.
In any ways the allocator (has been, but now officially is)
expected to run properly without a GVL. This means there need be
a way for them to inform the interpreter about their allocation
failures, without relying on raising exceptions.
Let them do so by returning NULL.
2024-11-29 23:19:05 +09:00
Matt Valentine-House and Peter Zhu
d61933e503
Use extconf to build external GC modules
...
Co-Authored-By: Peter Zhu <peter@peterzhu.ca >
2024-11-25 13:05:23 +00:00