summaryrefslogtreecommitdiffhomepage
path: root/src/state.c
AgeCommit message (Collapse)Author
2017-05-31Revert 4566c80; fix #3679Yukihiro "Matz" Matsumoto
The patch deallocate the memory in `mrb_default_allocf` but that hinders GC in `mrb_realloc`.
2017-05-25Free given pointer if `realloc()` fails; fix #3658Yukihiro "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-04-03Unify `else` clause styleYukihiro "Matz" Matsumoto
2017-01-23Fix a double free problem in codegen.c; fix #3378Yukihiro "Matz" Matsumoto
This issue was first reported by https://hackerone.com/geeknik The fix was proposed by @titanous
2016-06-10add temporary workaround for irep memory corruptionYukihiro "Matz" Matsumoto
need to find out real memory bug that appears in full-debug/mrbtest
2015-12-29Support backtrace after method callsKouhei Sutou
GitHub: fix #2902, #2917 The current implementation traverses stack to retrieve backtrace. But stack will be changed when some operations are occurred. It means that backtrace may be broken after some operations. This change (1) saves the minimum information to retrieve backtrace when exception is raised and (2) restores backtrace from the minimum information when backtrace is needed. It reduces overhead for creating backtrace Ruby objects. The space for the minimum information is reused by multiple exceptions. So memory allocation isn't occurred for each exception.
2015-11-27include changed from by quotes ("") to by brackets (<>); close #3032Yukihiro "Matz" Matsumoto
2015-10-19Clean up GC codefurunkel
2015-09-12Don't crash if NULL is passed to mrb_closeTatsuhiro Tsujikawa
Sometimes it is very useful just return from mrb_close if NULL is passed as mrb. This is the same spirit of free(3), which just does nothing if NULL is passed.
2014-08-29Fix mismatches for MRB_API declarations.Tatsuhiko Kubo
2014-08-20Fix error handling for mrb_open_allocf().Tatsuhiko Kubo
When DISABLE_GEMS is not defined and a return value of mrb_open_core() is NULL, mrb_open_allocf() may cause SEGV.
2014-08-04add MRB_API modifiers to mruby API functionsYukihiro "Matz" Matsumoto
2014-07-24Merge pull request #2477 from take-cheeze/allocf_udYukihiro "Matz" Matsumoto
Add field `allocf_ud` to replace current `ud`.
2014-07-21since #1441, NaN boxing with 64bit pointer works; close #2476Yukihiro "Matz" Matsumoto
2014-07-17Add field `allocf_ud` to replace current `ud`.take_cheeze
Since some use it as `mrb_state` associated user data.
2014-07-03Merge pull request #2442 from suzukaze/use-mrb-str-nofree-macroYukihiro "Matz" Matsumoto
Use RSTR_NOFREE_P in state.c
2014-07-03Use *_EMBED_* macro in state.cJun Hiroe
2014-07-03Use RSTR_NOFREE_P in state.cJun Hiroe
2014-06-23refacor mrb_open_core() to reduce a local variableYukihiro "Matz" Matsumoto
2014-06-23rename mrb_open_without_mrbgems to mrb_open_coretake_cheeze
2014-06-23make default allocf public to use it with mrb_open_without_mrbgemstake_cheeze
2014-06-23add mrb_open_without_mrbgems APItake_cheeze
2014-06-16Add fixed state atexit stack feature.take_cheeze
Adds following macros: * MRB_FIXED_STATE_ATEXIT_STACK (not defined by default) * When defined enables fixed state atexit stack. * MRB_FIXED_STATE_ATEXIT_STACK_SIZE (default value: 5) * This macro will be ignored when `MRB_FIXED_STATE_ATEXIT_STACK` isn't defined. * When `mrb_state_atexit` is called more than this value it will raise runtime error.
2014-06-10rename mrb_atexit to mrb_state_atexit to clarify a func will be called at ↵Yukihiro "Matz" Matsumoto
the end of state, not process; ref #2211
2014-06-08Use `_Static_assert` when C11 is available and use it in pointer size check.take_cheeze
2014-06-06Release `mrb->atexit_stack` on `mrb_close`.take_cheeze
2014-05-08Add API `mrb_atexit()`.take_cheeze
`mrb_final_mrbgems` will be called as mrb_state atexit function. Maybe useful in #1844.
2014-04-28presreve local variables names in irep->lvYukihiro "Matz" Matsumoto
2014-04-14should always initialize header flags for pooled stringsYukihiro "Matz" Matsumoto
2014-04-12Delegate irep string free to mrb_gc_free_strksss
2014-03-26Merge pull request #1948 from monaka/pr-remove-unused-null-checkYukihiro "Matz" Matsumoto
Remove redundant NULL checks.
2014-03-26Remove redundant NULL checks.Masaki Muranaka
mrb_malloc causes an exception when memory was empty.
2014-03-25mrb_str_pool add string capaksss
2014-03-23mrb_str_pool use embed-stringksss
2014-03-06make embed string when create literalsksss
2014-03-06embed small stringksss
use flags 4 for *this object is embed* use flags 8~64 for *embed string length*
2014-03-01need to initialize flags for pooled strings; close #1768Yukihiro "Matz" Matsumoto
2014-02-06use mrb_str_new_lit() more widelyYukihiro "Matz" Matsumoto
2014-01-07remove superfluous includescremno
- reduce compile time by a little bit (full-core: ~0.7s for me) - thanks to 'include-what-you-use' for some help - include Standard C header files before any other (coding style)
2013-12-25wrong operator precedence fixedYukihiro "Matz" Matsumoto
2013-12-25avoid copying when the original string comes with MRB_STR_NOFREEYukihiro "Matz" Matsumoto
2013-12-24remove MRB_IREP_ARRAY_INIT_SIZE which is no longer usedYukihiro "Matz" Matsumoto
2013-11-27float objects in pool are objects when MRB_WORD_BOXING is setYukihiro "Matz" Matsumoto
2013-11-22Make mrb->arena variable sized. Use MRB_GC_FIXED_ARENA for old behavior.Yukihiro "Matz" Matsumoto
You will not see "arena overflow" error anymore, but I encourage gem authors to check your gems with MRB_GC_FIXED_ARENA to avoid memory broat.
2013-11-20rename API mrb_str_dup_static() -> mrb_str_pool()Yukihiro "Matz" Matsumoto
2013-11-20need to free pooled string bodies as wellYukihiro "Matz" Matsumoto
2013-11-19irep->pool struct pool -> mrb_valueMiura Hideki
2013-11-15enum mrb_vtype varies on compile time configuration, namely MRB_NAN_BOXINGYukihiro "Matz" Matsumoto
2013-11-08allow irep to be GCedYukihiro "Matz" Matsumoto