summaryrefslogtreecommitdiff
path: root/gc.c
AgeCommit message (Collapse)Author
2012-04-13* gc.c (obj_free): show entire flags too.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35313 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-12* gc.c (GET_HEAP_HEADER, NUM_IN_SLOT): parenthesise macro parameters.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35310 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-29* st.c (st_update): pass pointer to key to the callback function.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35172 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-29* st.c (st_update): add existing parameter to the callback function.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35170 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-18fix condition for freenobu
* gc.c (aligned_free): fix condition for free. memalign() and posix_memalign() are not defined together normally. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35084 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-18* gc.c (aligned_malloc, aligned_free): added fallback implementationsyugui
for platforms like OSX Leopard. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35083 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-18* gc.c (free_method_entry_i): method entry may be innobu
unlinked_method_entry_list. [ruby-core:43383][Bug #6171] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35080 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-13Bug #5350nobu
* gc.c: add ObjectSpace::WeakMap. [ruby-dev:44565][Bug #5350] * lib/weakref.rb: use WeakMap instead of _id2ref. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34995 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-21* gc.c : remove gc_clear_mark_on_sweep_slots() and usenari
rest_sweep() instead of it, because some dead objects might be marked in next the mark phase by false pointers. [ruby-core:42672] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34719 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-19revert r34691 and r34689nari
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34695 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-19* gc.c (gc_clear_mark_on_sweep_slots): remove a unused variable.nari
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34691 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-19* gc.c (gc_clear_mark_on_sweep_slots): uses slot_sweep() fornari
unsweeped slots, because some dead objects might be marked in next the mark phase by false pointers. [ruby-core:42672] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34689 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-15* cont.c (rb_fiber_reset_root_local_storage): add a new function tonagachika
restore rb_thread_t::local_storage. * cont.c (rb_obj_is_fiber): add a new function to tell finalizer to prevent fibers from destroy. * gc.c (rb_objspace_call_finalizer): don't sweep fibers at finalizing objspace. * internal.h (rb_fiber_reset_root_local_storage, rb_obj_is_fiber): add prototypes. * vm.c (ruby_vm_destruct): reset main thread's local_storage before free main thread. rb_thread_t::local_storage is replaced by fiber's local storage when forked from fiber, and it should be already freed when the fiber was destroyed. * test/ruby/test_fiber.rb (test_fork_from_fiber): add test for fork from fiber. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34629 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-15* gc.c (HEAP_BITMAP_LIMIT): HEAP_BITMAP_LIMIT is computed on thenari
basis of HEAP_SIZE because it must covers a whole heap block. [ruby-trunk - Bug #6006] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34618 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-14* gc.c (CEILDIV): rename to a appropriate name.nari
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34599 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-14* gc.c (assign_heap_slot): SEGV happens cause on 64-bit platformnari
sometime there should be `objs-=2` instead of `objs--`. patched by Sokolov Yura. https://github.com/ruby/ruby/pull/92 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34597 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-13* gc.c (HEAP_OBJ_LIMIT, HEAP_BITMAP_LIMIT): HEAP_OBJ_LIMIT usednari
`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 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34581 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-31* configure.in (HEAP_ALIGN_LOG): HEAP_ALIGN_LOG should be pagenari
size in OpenBSD. [ruby-core:42158][Bug #5901] * gc.c : avoid to redefine. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34404 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-27* gc.c (HEAP_ALIGN, HEAP_ALIGN_MASK): DRY, let compiler calculatenobu
from HEAP_ALIGN_LOG. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34381 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-17* gc.c (aligned_malloc, aligned_free): covered missing definednobu
operators and fixes for cygwin. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34323 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-11* gc.c (ruby_mimmalloc): don't set allocated size to header.nagachika
ruby_mimmalloc() doesn't increment allocated_size/allocations and decrement them in ruby_xfree() cause inconsistency. * gc.c (ruby_xfree): don't decrement allocated_size/allocations if allocated size record is 0. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34269 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-10* gc.c (HEAP_OBJ_LIMIT): suppress narrowing down warning from gcc 4.2.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34261 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-10* gc.c: in fact, i686-linux doesn't need to define _XOPEN_SOURCE 600.naruse
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34258 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-10* gc.c (ruby_mimmalloc): defined for objects need not rb_objspace,naruse
but should return pointer suitable for ruby_xfree; main vm and main thread. patched by Sokolov Yura. https://github.com/ruby/ruby/pull/79 * internal.h: ditto. * vm.c (Init_BareVM): use ruby_mimmalloc. * ext/dl/cfunc.c: #include <ruby/util.h>. * ext/syslog/syslog.c: use xfree because it is allocated by ruby_strdup. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34257 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-09* gc.c (run_finalizer): clear rb_thread_t::errinfo when ignorenagachika
an exception under rb_protect(). [ruby-dev:45113] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34250 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-09* gc.c : don't embed struct heaps_slot to a heap block because itnari
can causes copy-on-write of memory page on heap block when its free_next is rewirted. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34247 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-09* gc.c: free_slots is changed Singly linked list. clearnari
free_slots before sweep. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34242 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-08* gc.c: i686-linux needs to define _XOPEN_SOURCE 600 for posix_memalign.naruse
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34239 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-08* gc.c (rb_objspace_free): global_List is allocated with xmalloc.naruse
patched by Sokolov Yura. https://github.com/ruby/ruby/pull/78 * dln_find.c: remove useless replacement of free. * ext/readline/readline.c (readline_attempted_completion_function): strings for readline must allocated with malloc. * process.c (run_exec_dup2): use free; see also r20950. * re.c (onig_new_with_source): use malloc for oniguruma. * vm.c (ruby_vm_destruct): use free for VMs. * vm.c (thread_free): use free for threads. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34238 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-08* gc.c : consider header bytes which are used by malloc.nari
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34235 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-08* gc.c (aligned_free): support MinGW. Patch by Hiroshi Shirosaki.nari
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34234 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-08* gc.c (slot_sweep): add a assertion instead of a debug print.nari
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34233 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-07* gc.c: get rid of implicit narrowing conversion.kosaki
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34230 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-07* configure.in: check posix_memalign(3) and menalign(3).naruse
* gc.c (aligned_malloc): use configure's result instead of _POSIX_C_SOURCE and _XOPEN_SOURCE because they can't be used to check availability at least on FreeBSD. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34226 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-07* gc.c: use Bitmap Marking algorithm to avoid copy-on-write ofnari
memory pages. See [ruby-dev:45085] [Feature #5839] [ruby-core:41916]. * include/ruby/ruby.h : FL_MARK rename to FL_RESERVED1. * node.h : ditto. * debug.c : ditto. * object.c (rb_obj_clone): FL_MARK move to a bitmap. * class.c (rb_singleton_class_clone): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34225 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-26* node.h, node.c, parse.y: implement a parser part for keyword arguments. ↵mame
This is a preparation for keyword argument (see [ruby-core:40290]). * gc.c (gc_mark_children): bookkeeping. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34135 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-26* node.h, parse.y (new_args_gen), compile.c (iseq_set_arguments): use struct ↵mame
rb_args_info instead of NODEs. This is a preparation for keyword argument (see [ruby-core:40290]). * node.c (dump_node), gc.c (gc_mark_children, obj_free): bookkeeping. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34134 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-05* bignum.c (big_rshift), compile.c (validate_label,nobu
iseq_build_from_ary_exception), cont.c (cont_capture), dir.c (dir_open_dir), gc.c (objspace_each_objects), io.c (pipe_open) (rb_io_advise), parse.y (parser_compile_string) (rb_parser_compile_file), proc.c (binding_free), process.c (rb_proc_exec_n, rb_seteuid_core, proc_setegid, rb_setegid_core) (p_uid_exchange, p_gid_exchange), regparse.c (strdup_with_null), signal.c (sig_dfl), vm.c (rb_iseq_eval, rb_iseq_eval_main), vm_insnhelper.c (vm_expandarray): suppress unused-but-set-variable warnings. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33951 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-28* gc.c (initial_params): static. it seems to be forgetten at r33501.usa
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33882 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-21* gc.c (initial_params): pack in a struct.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33501 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-21* gc.c (rb_gc_set_params): set parameters always.nobu
[ruby-dev:44648] [Bug #5467] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33500 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-13* gc.c (rb_gc_finalize_deferred, rb_objspace_call_finalizer):nobu
should use ATOMIC_EXCHANGE() to check the previous value. [ruby-dev:44596] [Bug #5439] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33460 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-04* class.c (class_alloc): allocate extra memory after containingnobu
object setup to get rid of rare-but-potential memory leak. * gc.c (gc_mark_children): skip marking extended members if ptr is NULL. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33400 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-04* gc.c (rb_gc_set_params): ruby_verbose can be Qnil, so use RTEST.naruse
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33395 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-03* gc.c (rb_gc_set_params): output GC parameter change messages onlynagachika
if -w/-v options are specified. these messages are output to stderr, not to stdout. [ruby-core:39795] [Bug #5380] * test/ruby/test_gc.rb (test_gc_parameter): add test for it. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33379 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-01* gc.c (add_heap_slots, init_heap): reset heaps_inc zero whennagachika
heap slots are expanded by environment variable RUBY_HEAP_MIN_SLOTS. [ruby-core:39777] [Bug #5380] * test/ruby/test_gc.rb (test_gc_parameter): add test for it. * test/ruby/envutil.rb (assert_normal_exit): add :child_env option to enable pass environemnt variables to child process. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33368 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-29* gc.c (slot_sweep, rb_gc_finalize_deferred)nobu
(rb_objspace_call_finalizer, rb_gc): run finalizers sequencially. [ruby-dev:44562] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33361 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-29* gc.c (is_id_value, is_live_object): extract from id2ref().nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33359 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-29* gc.c (run_finalizer): use object instead of object id.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33358 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-29* use RB_TYPE_P which is optimized for constant types, instead ofnobu
comparison with TYPE. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33357 b2dd03c8-39d4-4d8f-98ff-823fe69b080e