Hash Date Message
8bccb5f2662f8bce023714a68786f401046557bc 2008-07-02 *gc.c (gc_lazy_sweep) : use lazy sweep algorithm for response performance gain. (garbage_collect_force) : mark and lazysweep invoke, after erasing all mark. (GC_NOT_LAZY_SWEEP) : not lazy sweep flag. for debug.
9f2208b40cc1b1d901399f6a3df8ca43c57d34a3 2008-07-02 write changelog
5c72ffe769b5552d7abb5fe050aba555b37c7278 2008-07-02 format changelog.
5b72919469f87d74e4f5f833b8c78e385372cb5c 2008-07-04
52f780c07f6499bc04961fe7bada72a1d08ea49d 2008-07-05
130e72025328746295d2efe45a6856f8d9ff154b 2008-08-11
fccc094568069e040e08ab6c8a87dbbb7712eb31 2008-08-12
5b3278b74a1a7edb0885b0ccbfe86ab8f3a53813 2008-08-12
c56ef25cf9b6d923f2af45e536c121388c3aab75 2008-09-04 * gc.c (gc_profile_record_get): to static function. (gc_profile_result): ditto. (gc_profile_report): ditto.
ee1e8e1a9ba9e2232d6df7ae115b09d6dbd5ac0c 2008-10-25 * gc.c (gc_profile_result): bug fix. The millisecond is 1/1000.
5cb55eca6fac360c94fd5fa54566609dfc3db45c 2009-03-23 * gc.c (init_heap): set default to heap slots length if HEAP_OBJ_LIMIT is larger than HEAP_MIN_SLOTS. [Bug #1310] (set_heaps_increment): increment next_heaps_length if next_heaps_length and heaps_used are same.
57b83a5191be20c49d5d4cff77582170a507cf88 2009-05-13 * gc.c: add longlife garbage collection. [ruby-dev:38423] (NORMAL_HEAPS_USED): new macro. (LONGLIFE_ALLOCATE_HEAPS_MIN): ditto. (add_longlife_heaps_slot): new function. (rb_newobj_from_longlife_heap): ditto. (rb_newobj_longlife): ditto. (rb_node_newnode_longlife): ditto. (rb_gc_write_barrier): ditto. (remembered_set_recycle): ditto. (rb_gc_mark_remembered_set): ditto. (clear_mark_longlife_heaps): ditto. (gc_sweep_for_longlife): ditto. (assign_heap_slot): new argumnent to longlife heaps slot. (add_freelist): ditto. (gc_sweep): avoid lonlife heap slot. set longlife_collection flag at add heap. (rb_gc_force_recycle): avoid mark object and remembered_set object. (garbage_collect): add longlife collection. (rb_gc_start): invoke longlife collection. (gc_profile_record_get): for longlife collction profile. (gc_profile_result): ditto.
832d5a832961b8cd6b58ec91079fa24af099f458 2009-05-16 * iseq.c (rb_iseq_clone): use longlife object and insert write barrier.
de5f15bbe4bf2c8038f265df061233f3aa709477 2009-08-10 * gc.c: reject unused longlife gc.
51b7ec84a2d183bf726d200f1111753ddc9c9dc3 2009-08-10 * ChangeLog: sign why.
915fe3d78465182f8bd9e3b16644d90f30e95e7b 2009-08-11 * ChangeLog: fixed typo.
ca64478089a6c43f56eef1d11a0ed8ac2d402f73 2010-05-28 * gc.c : use simple lazy sweep algorithm for response performance gain. See [ruby-dev:41067].
a8cd15c96c02827f593d9a63fae66c2cdac5bdb6 2010-05-30 * gc.c (gc_mark_all_clear): don't call obj_free() in gc_mark_all_clear(), because obj_free() may make T_ZOMBIE objects.
28754d0aa9a61d401fad2791deda139338ba2df0 2010-06-06 * gc.c: set_heaps_increment is not called before gc_makrs of lazy sweeping because live_num not contain finalize objects. So call set_heaps_increment after lazy sweeping if free_num are not enough. And move free_min to struct rb_objspace for above. [ruby-dev:41499]
12b76ec890836ee650b7985851116594d6469309 2010-06-29 * gc.c (unlink_heap_slot, slot_sweep): unlink heaps_slot of heaps_slot linked list if heaps_slot is empty at slot_sweep. fixed [ruby-dev:41543], [ruby-core:24894].
81cc3b26550324e94cc50d24d113174cd4339062 2010-07-20 * gc.c: don't call after_gc_sweep() after when garbage_collect() was called, because rb_sweep_method_entry() free live unlinked method entries. [ruby-core:31169]
e5731864074cc642c2b4e77d74334ca2b72302d8 2010-08-14 * test/objspace/test_objspace.rb: added test for objspace.
a5207399bd3c32965c06cb27ae78537ffbf8da82 2010-08-16 * gc.c (gc_profile_result): use size_t. based on patches from Tomoaki NISHIYAMA <tomoakin@kenroku.kanazawa-u.ac.jp> at [ruby-dev:42042].
66c25e4ca14fda15c4a0d5cd619e573060ebd756 2010-08-16 * gc.c (gc_profile_result): Index begins with 1.
a29dc5676415163b0e2416a07de4a9d8055a4670 2010-10-21 * gc.c (rb_objspace_each_objects): don't lazy sweep in rb_objspace_each_objects. [Bug #3940] [ruby-dev:42369]
11c43f7ae9b9264171c9e5394772f155aa18afa4 2011-06-11 * gc.c: expand heap if initial_heap_min_slots is bigger than HEAP_MIN_SLOTS.
8c79b8b6b86f9c5a9dff46c0e6c99cf935b7f399 2011-06-14 * gc.c: use size_t.
b6135f1cd7eede03d43d8fe21c1923c68fd8749e 2011-06-14 * gc.c (rb_gc_set_params): call initial_expand_heap if initial_heap_min_slots is set.
17bb77fd776ab39b7fb6b90c45feb6a7899a62ef 2011-07-07 * gc.c: change water_mark value value that may call gc_mark(lev <= GC_LEVEL_MAX) in gc_mark(). In ruby_stack_check(), water_mark is a value that may call some C function. Fixes Bug #3781
c3e05262697f64218259b63acfd6933958c62eae 2011-07-08 * configure.in: can't subtract void *.
e26cead1e99e10ab3e672e0894ebdc8c277c833c 2011-08-09 * gc.c (gc_lazy_sweep): if sweep target slots are not found, we try heap_increment() because it might be able to expand the heap. [Bug #5127] [ruby-dev:44285]
599071b700aa7176a2bb762c2d9781d02013f27c 2011-09-08 * gc.c (Init_GC): defined GC::Profiler.raw_data. based on the patch by Eric Hodel. [ruby-core:37857] [Bug #4991]
50675fdba1125a841ed494cb98737c97bd748900 2012-01-07 * gc.c: use Bitmap Marking algorithm to avoid copy-on-write of memory pages. See [ruby-dev:45085] [Feature #5839] [ruby-core:41916].
94fd32b80a585750427836a1e22d05c0ee3d09ad 2012-01-08 * gc.c (slot_sweep): add a assertion instead of a debug print.
cd73f29465310e55f36e001a7964f4be3d2a833a 2012-01-08 * gc.c (aligned_free): support MinGW. Patch by Hiroshi Shirosaki.
5393622dad7f5204333b8aa6a39263a961bdc77a 2012-01-08 * gc.c : consider header bytes which are used by malloc.
2cf2416ea09ca63efb8469650809bd5fd1707460 2012-01-09 * gc.c: free_slots is changed Singly linked list. clear free_slots before sweep.
b78bddee35fa426bf9286bcb3af4170282369a91 2012-01-09 * gc.c : don't embed struct heaps_slot to a heap block because it can causes copy-on-write of memory page on heap block when its free_next is rewirted.
a42cc41ba1abacd37e1922965fae641e537a6b5f 2012-01-31 * configure.in (HEAP_ALIGN_LOG): HEAP_ALIGN_LOG should be page size in OpenBSD. [ruby-core:42158][Bug #5901]
261400e7a9b4e8774a058e9a6f53fc885329c5f8 2012-02-13 * gc.c (HEAP_OBJ_LIMIT, HEAP_BITMAP_LIMIT): HEAP_OBJ_LIMIT used `sizeof(struct heaps_slot)` while heap is currently allocated with `struct heaps_header`. HEAP_BITMAP_LIMIT were calculated from `HEAP_OBJ_LIMIT/sizeof(uintptr_t)` - one Byte for each object, not one Bit. [Bug #6006] patched by Sokolov Yura. https://github.com/ruby/ruby/pull/92
64e7aedceef872e8f942cb8eb672d0bc32c13984 2012-02-14 * gc.c (assign_heap_slot): SEGV happens cause on 64-bit platform sometime there should be `objs-=2` instead of `objs--`. patched by Sokolov Yura. https://github.com/ruby/ruby/pull/92
c104867ebc1471854d5506b5a2be3dd0992f587f 2012-02-14 added bug ref
0da31416f1b0d3b24e09fb19a6576bb3254c7e91 2012-02-14 * gc.c (CEILDIV): rename to a appropriate name.
8b4b4032f711766c3863c40fff33acde9a5bc331 2012-02-15 * gc.c (HEAP_BITMAP_LIMIT): HEAP_BITMAP_LIMIT is computed on the basis of HEAP_SIZE because it must covers a whole heap block. [ruby-trunk - Bug #6006]
55e6e9e3848433ccb095b352545bb97b0fb21603 2012-02-19 * gc.c (gc_clear_mark_on_sweep_slots): uses slot_sweep() for unsweeped slots, because some dead objects might be marked in next the mark phase by false pointers. [ruby-core:42672]
f0e9fa3cb12a9f9a14b5b77d872bce8cc027b829 2012-02-19 * gc.c (gc_clear_mark_on_sweep_slots): remove a unused variable.
87a15a6981b8c44c15667f01914e64add1348a6d 2012-02-19 revert r34691 and r34689
0d44bf83dac7d4abd939273aeccd9182a2b353b8 2012-02-21 * gc.c : remove gc_clear_mark_on_sweep_slots() and use rest_sweep() instead of it, because some dead objects might be marked in next the mark phase by false pointers. [ruby-core:42672]
c98fd7da8a7b9a1e388daf4a68e41a1d8d3d64d2 2012-02-21 revert a file which is committed wrong.
e2f4f34467f90bc9bc30891c9cdb4aa82fa0e37c 2012-05-28 * gc.c (obj_free): doesn't free a method table if it doesn't exits. [ruby-dev:44436] * test/ruby/test_gc.rb (class TestGc): added the test case for this issue.
3fcf82e27815db04da819a67bd112513f057a8b2 2012-05-28 * ChangeLog: fix a typo.
631b6d5aaddf5eca047462113dafe1c8e3a78b14 2012-07-28 * gc.c: remove unused initialization.
b79bf14ff26e11765c1605c7da9a3e72902c92d8 2012-08-02 * gc.c: return true or false. Patch by Dirkjan Bussink. [Bug #6821]
d7a33316825d3393f1f7e50ab76926b6891b5a89 2012-08-04 * gc.c (gc_mark_children): use gc_mark_ptr instead of marking a object directly.
de0c788bb4d337d3bc2bb3f6fcac4b26cdccb8b8 2012-08-04 * gc.c: use inline functions instead of macros, and close up related codes for the profiler.
dd124a0f841f2e25daa4f4e3c9854618176a7743 2012-08-05 * gc.c: just move functions and so on. I don't touch any internal implementation.
8f1c81c610eb11b74f52fa1ae0a6b704ebced43e 2012-08-05 * gc.c : if ENABLE_VM_OBJSPACE is 1, rest_sweep is not defined. remove unused declarations.
cf4aa712e4124862bf453f1ffc1e8ae432efb1f9 2012-08-05 add references
8d53a08ed81ae1dbaabef79fcf0b0e759de2e82f 2012-10-03 * gc.c: Use the non-recursive marking instead of recursion. The recursion marking of CRuby needs checking stack overflow and the fail-safe system, but these systems not good at partial points, for example, marking deep tree structures. [ruby-dev:46184] [Feature #7095]
2f9f17ac98597d54aa241a6ccea5b458c2759d7a 2012-10-04 * gc.c (rb_objspace_call_finalizer): call gc_mark_stacked_objects at suitable point.
ec62e301965c12a5e1e0f931a8b0152d374a1912 2012-10-04 * gc.c (init_heap): call init_mark_stack before to allocate altstack. This change avoid the stack overflow at the signal handler on 32bit, but I don't understand reason... [Feature #7095]
271f069c7f07391fe9626ca01f4d4a8076fb6c04 2012-10-05 * gc.c (chain_finalized_object): remove to check a mark flag and marking since all objects are certainly unmarked with rest_sweep.
c38ee00226517bae961fe19cc5ad4f11b91c69fc 2012-10-05 ChangeLog: fix a miss
4c0f022f45a9221c2f97b2d21a9eb476f40b1d93 2012-10-05 revert r37091
3376ea81f95fb295bc4172a3bafb50481a166263 2012-10-05 fix comments
c3a46d6acab5ab063cc6b5808c2b344f110bef12 2012-10-20 * include/ruby/ruby.h: add C APIs. VALUE rb_newobj_of(VALUE klass, VALUE flags) #define NEWOBJ_OF(obj,type,klass,flags) These allow to change a allocation strategy depending on klass or flags.
f0a435c18725318eae1bfb3dfd15c457f511d814 2012-10-24 * gc.c (free_object_aquire): rename to match the behavior of this function.
bda726223f88b12e31634daecbe75cecb1885640 2012-10-24 fix the function name which is not grammatically correct.
a4ba41a29d9d0281f7e62ef94ffbd778a34c91db 2012-10-24 rename it to a more fitting name
9fd08911c0ab12591735c133769ef1828e5bd9c0 2012-10-31 * gc.c (gc_prof_mark_timer_stop): count is not initialized.
25a973e84b1e9879977010b3825b59faa740ff0d 2012-10-31 * gc.c (gc_profile_record): don't define unused variables when GC_PROFILE_MORE_DETAIL is 0.
805b08f2925f5ceec67bf472e76e869bbddc8c39 2012-11-03 * eval.c (f_current_dirname): add the new method for Kernel. This method almotst same as File.dirname(__FILE__). One different behavior is it returns nil when __FILE__ returns nil. [Feature #3346]
e2f951656f952d73e16a60b75767cae8e651c532 2012-11-03 * NEWS: add a news about rb_newobj_of() and NEWOBJ_OF().
4166390229eea57c350f964fd0abf050ce3781d8 2012-11-03 * NEWS: add a news about GC::Profiler.raw_data.
8a9097e83cd942584af77778abb033eba56bc7eb 2012-11-10 * gc.c: move immutable fields from struct heaps_slot and struct sorted_heaps_slot into struct heaps_header. Based on a patch from Sokolov Yura [Feature #6199][ruby-core:43592]
fe9fc6df018402de830f42b63ea25d927c8726a8 2012-11-21 * gc.c (gc_profile_clear): realloc profile records if its size is higher than the threshold, GC_PROFILE_RECORD_DEFAULT_SIZE * 2.
7d0cabb8f881798da1332becf60096a09fbb6c01 2012-11-21 * gc.c (garbage_collect): remove a duplicative probe.
cda3a0c75e25b36169c3fa56068803cca9229242 2012-11-21 * test/ruby/test_gc.rb (test_profiler_clear): fix wrong method calls [Bug #7419] [ruby-core:49828].
66db637a9fc0e03b4b25e213e2e96ddf5b53597f 2012-11-22 * gc.c (is_swept_object): extract from is_dead_object().
1d8d7a3eec54a5440a1942c0b589c228138834ae 2012-11-27 * NEWS: add improvements of the garbage collector.
59770bf960aba2ef14cb5306606bbb6a64d38188 2012-11-29 * gc.c (rb_objspace_call_finalizer): finalize_deferred may free up a object which is reachable from a part after this function, e.g. ruby_vm_destruct(). [ruby-dev:46647] [Bug #7452]
6b627e6cd6dca18c5decff895af7bcdc623d05a9 2012-11-29 fix a revisited typo.
a22bb18e3e1f48f1155819351bd40c681f971fe0 2012-11-29 * gc.c : remove a unused function.
ab012bda4a0bdfb720fdf4debbf401f6923f401f 2012-12-05 * gc.c (getrusage_time): uses clock_gettime() with CLOCK_PROCESS_CPUTIME_ID when available, which provides a 1ns precision on linux. [ruby-core:50495] [Bug #7500]
4a572d5bb46451f171c30e09f88a2dcf67478006 2012-12-05 add a contributor name
f04dd0f08b20ce48cc10fa88bab08b1941b3c558 2012-12-10 * lib/irb/magic-file.rb: set a encoding, which is detected from the file to read, to the internal encoding. [Bug #4281][ruby-dev:43036]
8ad15646889383f5546922bc5bb6f3f5a7391dfa 2013-01-24 * eval.c (f_current_dirname): Add documentation about "__dir__ returns always an absolute path". [Bug #7729]
b5c0c4ee08196e5f6d7767e49012a13d66965f57 2013-01-24 fix NEWS of __dir__
892e8efd47343925b76cd12da965109f084a1817 2013-01-24 fix documents. __dir__ is a shorthand File.realdirpath(__FILE__).
68d131d6a50898dc605a739caa76b494b65c6393 2013-01-26 fix typos
2f7ca893a35abcde7e994c582055bd672c459058 2013-03-13 * gc.c: allow to tune growth of heap by environment variable RUBY_HEAP_SLOTS_GROWTH_FACTOR. patched by tmm1(Aman Gupta). [Feature #8015] [ruby-core:53131]
8283be280c62c15e04fa8d4c2c5145ceaa39de18 2013-03-14 * NEWS: describe RUBY_HEAP_SLOTS_GROWTH_FACTOR.
03c7f0ca43a65b18d81387f82bf91e5d5bc14bee 2013-03-18 * gc.c: Fix unlimited memory growth with large values of RUBY_FREE_MIN. patched by tmm1(Aman Gupta). [Bug #8095] [ruby-core:53405]
1bc93a15912ab418bd54c0c064a47c557798eae9 2013-03-18 * gc.c: Avoid unnecessary heap growth. patched by tmm1(Aman Gupta). [Bug #8093] [ruby-core:53393]
80329d3a66bf007d85a35c624d6514b0ddc814ca 2013-03-18 * gc.c: Improve accuracy of objspace_live_num() and allocated/freed counters. patched by tmm1(Aman Gupta). [Bug #8092] [ruby-core:53392]
3ad60679e37ac36b2d76b12f31036864733bb59f 2013-03-24 * gc.c: We have no chance to expand the heap when lazy sweeping is restricted. So collecting is often invoked if there is not enough free space in the heap. Try to expand heap when this is the case.
e54daddac4e5583e62ef9d665d4f3d4a859478c9 2013-03-24 * gc.c (GC_ENABLE_LAZY_SWEEP): new macro to switch lazy sweeping for debugging. [Feature #8024] [ruby-dev:47135]
02ff09770569a4ed74daab731376cb01925312e5 2013-03-24 * proc.c (bm_free): need to clean up the mark flag of a free and unlinked method entry. [Bug #8100] [ruby-core:53439]
15d26c3fd9a95f6fa14bc4faae7e1b8e9a07e2b3 2013-06-06 * ext/objspace/object_tracing.c: allocation_info function isn't called by any other file.
fbece268c7c58c32970b581712c8c3d662b20ed1 2013-06-06 * ext/objspace/object_tracing.c: rename allocation_info to lookup_allocation_info. At times I confused "struct allocation_info" with "function allocation_info".
f0b087220c0e7622a29615b25f2f82a6cbacba34 2013-11-09 * internal.h: prototype declarations of gc.c collect up.
5e73aa6e241ecd2896fe673ab20cc51295d091bd 2013-11-09 Revert "* internal.h: prototype declarations of gc.c collect up."
baf3cf128e451c3bf099bc68ec7918973d9a81f6 2013-11-09 * ext/objspace/object_tracing.c: use declarations in internal.h.
9d2f54b3e9eb242da781970c5df458611f5ec332 2013-11-22 * include/ruby/intern.h (rb_gc_set_params): Deprecate rb_gc_set_params because it's only used in ruby internal.
f29e925701471aa9a44b2d6ba38074daa3b6d33d 2013-11-22 * include/ruby/intern.h, internal.h: Expose rb_gc_count().
fe398529a6e5ef8ccd7a3fb08020a93e8a3a3d05 2013-11-23 add NEWS about rb_gc_set_params() and rb_gc_count()
53f1de2f49cafeba1f1c7f0674c976f3c0bb4be0 2013-12-03 * object.c (rb_obj_clone): Protect FL_PROMOTED and FL_WB_PROTECTED flags of a destination object.
7e1f3c636b317571141c9a0ca778a088f7c22ccb 2013-12-03 * object.c (rb_obj_clone): don't copy FL_WB_PROTECTED of a original object.
537ee14ff4cde6b765640a86217b7442090d1e76 2014-03-07 * parse.y (ENC_SINGLE): Unused macro removed.
90b70738427567dc065ad75b32fa932b280c304a 2014-03-26 * parse.y: support Symbol GC. [ruby-trunk Feature #9634] See this ticket about Symbol GC.
17a6f9227a060a75c5c99a297fb8d3cd488ae777 2014-03-26 cast to int to silence clang compile error
b9ea13595003eebdf18db97b8177285f215ce94f 2014-03-26 * internal.h (USE_SYMBOL_GC): enable Symbol GC by default (USE_SYMBOL_GC == 1).
e6dcb3b174d6bfaafe623a0e4a8270989e1eca9b 2014-03-26 [DOC] Add NEWS about Symbol GC
7c9f1aa3d5172340b6b2a0aafdad5528b523a287 2014-03-27 [DOC] Fix NEWS about Symbol GC
6ee891d6a7cb2278f43c5da3590939a548587682 2014-04-28 * gc.c: Fix typos. These are undefined variables.
ec0cfc3a3193a5015dbc7e0b07980e00f2b2bfd9 2014-04-28 * gc.c: This argument must be a pointer.
ca319081ce97f0c6db7695f919d9bbd74ed8921d 2014-04-30 * gc.c (gc_after_sweep): suppress unnecessary expanding heap. Tomb heap pages are freed pages here, so expanding heap is not required.
63e8293147fcaf2d107175bd7013dca7d81fbcb9 2014-06-24 internal structure
a5c91a3811fa80214a6cce5b8b5ba2e5e1642423 2014-09-21 * st.c (numberof): unused. internal.h has same macro.
5390e3211900652e7ffd59b806a2cad5ad0947e0 2014-09-21 * parse.y (parser_class_nest): unused variable after YARV merged (r11439).
a3307d5e5aff2865a2d25dac2e211654efc2e2e0 2014-09-21 * st.c (do_hash_bin): unused macro.