summaryrefslogtreecommitdiffhomepage
path: root/src/gc.c
AgeCommit message (Collapse)Author
2018-04-18Turn off major GC mode before full GC; fix #4000Yukihiro "Matz" Matsumoto
2018-04-14Invoke full GC when too many objects allocated during GC; fix #3998Yukihiro "Matz" Matsumoto
When object allocation rate during incremental GC is too high, the `gc->majorgc_old_threshold` becomes too big. This means major GC start slower and old objects stay longer (and consume too much memory).
2018-04-14Change `MAJOR_GC_INC_RATIO` to 120; ref #3998Yukihiro "Matz" Matsumoto
Because 200% is consumes too much memory for some cases.
2018-04-14Remove `DEFAULT_` from `DEFAULT_MAJOR_GC_INC_RATIO`; ref #3998Yukihiro "Matz" Matsumoto
Because unlike other GC ratio constants, it's not a default value.
2018-02-02Fix possible memory access error.Takeshi Watanabe
2017-11-29Need to free contexts when freeing fibers.Yukihiro "Matz" Matsumoto
Memory leak fixed; ref #3711
2017-11-22Should have marked all ensure stack entries; fix #3855 fix #3856Yukihiro "Matz" Matsumoto
2017-11-19Invoke `mrb_full_gc()` before `ObjectSpace.count_objects`.Yukihiro "Matz" Matsumoto
2017-11-04Merge branch 'master' of github.com:mruby/mrubyYAMAMOTO Masaya
2017-10-31Need to mark fibers referenced from `env`; fix #3837Yukihiro "Matz" Matsumoto
The issue #3837 is a regression of #3819. I was mistakenly removed a important code to mark fibers from `env`.
2017-10-28Heavily refactored how lexical scope links are implemented; fix #3821Yukihiro "Matz" Matsumoto
Instead of `irep` links, we added a `upper` link to `struct RProc`. To make a space for the `upper` link, we moved `target_class` reference. If a `Proc` does not have `env`, `target_class` is saved in an `union` shared with `env` (if a `Proc` has env, you can tell it by `MRB_PROC_ENV_P()). Otherwise `target_class` is referenced from `env->c`. We removed links in `env` as well. This change removes 2 members from `mrb_irep` struct, thus saving 2 words per method/proc/block. This also fixes potential memory leaks due to the circular references caused by a link from `mrb_irep`.
2017-10-11Add MRB_WITHOUT_FLOATYAMAMOTO Masaya
2017-10-11Use division expression instead of some floating point literalsYAMAMOTO Masaya
2017-10-01Add new type of shared string: `RSTR_FSHARED`.Yukihiro "Matz" Matsumoto
`RSTR_FSHARED` use frozen strings as shared body instead of `struct mrb_shared_string`. This reduces allocation from literal strings.
2017-09-29Cut links from `irep` in heaps finalization.Yukihiro "Matz" Matsumoto
2017-09-27fix: src\gc.c(1425): warning C4244: '=': conversion from 'mrb_int' to 'int', ↵Tomasz Dąbrowski
possible loss of data
2017-09-27fix: src\gc.c(1392): warning C4244: '=': conversion from 'mrb_int' to 'int', ↵Tomasz Dąbrowski
possible loss of data
2017-09-27fix: src\gc.c(559): warning C4244: '=': conversion from 'mrb_int' to 'int', ↵Tomasz Dąbrowski
possible loss of data
2017-09-05Avoid recursion from `mark_context()`.Yukihiro "Matz" Matsumoto
2017-09-04Restructure `irep->outer` chain; fix #3804Yukihiro "Matz" Matsumoto
Instead of `irep -> proc` chain, we use `irep -> irep` chain to avoid GC bugs like #3804. We added `target_class` reference to `mrb_irep` struct. That means one more word consumption per `irep`.
2017-08-30Need to mark `mrb->range_class`; fix #3797Yukihiro "Matz" Matsumoto
2017-08-29Revert "Clear `irep->outer` when no `Proc` reference the `irep`; fix #3793"Yukihiro "Matz" Matsumoto
This reverts commit 15d48efa4bf6a6b999dab99720fb9fe3c4a06ef0.
2017-08-28Clear `irep->outer` when no `Proc` reference the `irep`; fix #3793Yukihiro "Matz" Matsumoto
2017-08-19Call `mrb_full_gc` before `gc_each_objects`; ref #3782Yukihiro "Matz" Matsumoto
Otherwise dead object may be seen from `#each_object`.
2017-08-05`proc->body.irep` may be NULL; fix #3761Yukihiro "Matz" Matsumoto
2017-08-01Implements `Module::nesting' (15.2.2.3.2); ref #600, #3200Yukihiro "Matz" Matsumoto
2017-07-27Embed small size array elements in the heap.Yukihiro "Matz" Matsumoto
It reduces the memory consumption and sometimes improve the performance as well. For example, the consumed memory size of `bench/bm_ao_render.rb` is reduced from 1.2GB to 1GB, and its total execution time become 18.795 sec from 22.229 sec.
2017-07-18Simplify `mrb_gc_arena_restore()` to reduce overhead.Yukihiro "Matz" Matsumoto
It will no longer shrink arena region. Instead `vm.c` uses a static function `mrb_gc_arena_shrink()` to shrink.
2017-07-12Avoid float operation to shrink arena buffer size.Yukihiro "Matz" Matsumoto
2017-06-22No need to mark stacks of terminated fibers; fix #3720Yukihiro "Matz" Matsumoto
2017-06-17Merge pull request #3706 from MasahikoSawada/fix_typoYukihiro "Matz" Matsumoto
Fix a typo in gc.c.
2017-06-17Mark the GC arena in `final_marking_phase`.Yukihiro "Matz" Matsumoto
Arena can be modified during the marking phase.
2017-06-17Mark the root context in `final_marking_phase`.Yukihiro "Matz" Matsumoto
Because the root context cannot be marked from fibers.
2017-06-17Mark global variables in `final_marking_phase`; fix #3704Yukihiro "Matz" Matsumoto
2017-06-17Correct comments in gc.cYukihiro "Matz" Matsumoto
2017-06-17Fix a typo in gc.c.Masahiko Sawada
2017-06-16Allow `break` from a block called by `mrb_yield`; close #3359Yukihiro "Matz" Matsumoto
This means #3701 is now OK to merge.
2017-06-16Use `MRB_THROW` instead of `mrb_exc_raise`.Yukihiro "Matz" Matsumoto
2017-06-15Mark the exception object in the final marking phase; ref #3702Yukihiro "Matz" Matsumoto
2017-06-03Prohibit changing generational mode during GC disabled; fix #3689Yukihiro "Matz" Matsumoto
2017-06-01Avoid invoking GC when disabled or iterating; fix #3681Yukihiro "Matz" Matsumoto
2017-06-01Simplify ensure stack management; fix #3683Yukihiro "Matz" Matsumoto
2017-05-31Simplify the logic in `mrb_realloc`; ref #3679Yukihiro "Matz" Matsumoto
2017-05-29Mark the current context (not root) in final marking.Yukihiro "Matz" Matsumoto
2017-05-25Revert 01f7825; fix #3650Yukihiro "Matz" Matsumoto
Redundant `mark_context() is far better than crashes.
2017-05-25Avoid marking possibly freed stack; #3550 #3612Yukihiro "Matz" Matsumoto
2017-05-23Simplify backtrace mechanism; fix #3633 #3634 #3644Yukihiro "Matz" Matsumoto
Instead of preserving a backtrace in `mrb_state`, `mrb_exc_set` keeps packed backtrace in an exception object. `#backtrace` unpacks it to an array of strings.
2017-05-23Remove class info from backtrace lines.Yukihiro "Matz" Matsumoto
2017-05-23Use index in `each_object`.Yukihiro "Matz" Matsumoto
2017-04-25Stop invoking GC before `each_object` to avoid test failure; #3616Yukihiro "Matz" Matsumoto