Yukihiro "Matz" Matsumoto
8dde647a51
add temporary workaround for irep memory corruption
...
need to find out real memory bug that appears in full-debug/mrbtest
2016-06-10 10:04:52 +09:00
Kouhei Sutou
a561bdb25f
Support backtrace after method calls
...
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-12-29 20:36:12 +09:00
Yukihiro "Matz" Matsumoto
5c405dea3d
include changed from by quotes ("") to by brackets (<>); close #3032
2015-11-27 17:48:23 +09:00
furunkel
3ab2f9371e
Clean up GC code
2015-10-19 22:29:43 +02:00
Tatsuhiro Tsujikawa
a085c04e37
Don't crash if NULL is passed to mrb_close
...
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.
2015-09-12 12:11:10 +09:00
Tatsuhiko Kubo
5fa30aeaea
Fix mismatches for MRB_API declarations.
2014-08-29 01:06:22 +09:00
Tatsuhiko Kubo
53a7549e1c
Fix error handling for mrb_open_allocf().
...
When DISABLE_GEMS is not defined and
a return value of mrb_open_core() is NULL,
mrb_open_allocf() may cause SEGV.
2014-08-20 05:15:21 +09:00
Yukihiro "Matz" Matsumoto
206f89e209
add MRB_API modifiers to mruby API functions
2014-08-04 00:47:08 +09:00
Yukihiro "Matz" Matsumoto
875c07a742
Merge pull request #2477 from take-cheeze/allocf_ud
...
Add field `allocf_ud` to replace current `ud`.
2014-07-24 23:22:58 +09:00
Yukihiro "Matz" Matsumoto
4cc9e5d8b1
since #1441 , NaN boxing with 64bit pointer works; close #2476
2014-07-21 21:55:52 +09:00
take_cheeze
fc9a91c4a6
Add field allocf_ud to replace current ud.
...
Since some use it as `mrb_state` associated user data.
2014-07-17 21:48:17 +09:00
Yukihiro "Matz" Matsumoto
d2910a162d
Merge pull request #2442 from suzukaze/use-mrb-str-nofree-macro
...
Use RSTR_NOFREE_P in state.c
2014-07-03 21:45:28 +09:00
Jun Hiroe
569ea74021
Use *_EMBED_* macro in state.c
2014-07-03 18:26:42 +09:00
Jun Hiroe
bd82d7c794
Use RSTR_NOFREE_P in state.c
2014-07-03 18:10:51 +09:00
Yukihiro "Matz" Matsumoto
ac0addd98f
refacor mrb_open_core() to reduce a local variable
2014-06-23 20:06:17 +09:00
take_cheeze
baca365caa
rename mrb_open_without_mrbgems to mrb_open_core
2014-06-23 20:06:17 +09:00
take_cheeze
36813c87f6
make default allocf public to use it with mrb_open_without_mrbgems
2014-06-23 20:06:17 +09:00
take_cheeze
6bb56ed920
add mrb_open_without_mrbgems API
2014-06-23 20:06:17 +09:00
take_cheeze
62f41ddd3b
Add fixed state atexit stack feature.
...
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-16 16:03:35 +09:00
Yukihiro "Matz" Matsumoto
fe95f44013
rename mrb_atexit to mrb_state_atexit to clarify a func will be called at the end of state, not process; ref #2211
2014-06-10 17:59:56 +09:00
take_cheeze
4a27dd0e8a
Use _Static_assert when C11 is available and use it in pointer size check.
2014-06-08 23:16:51 +09:00
take_cheeze
4c1fb65d85
Release mrb->atexit_stack on mrb_close.
2014-06-06 01:04:12 +09:00
take_cheeze
64300b2c43
Add API mrb_atexit().
...
`mrb_final_mrbgems` will be called as mrb_state atexit function.
Maybe useful in #1844 .
2014-05-08 22:19:14 +09:00
Yukihiro "Matz" Matsumoto
3244ddf0c3
presreve local variables names in irep->lv
2014-04-28 07:29:37 +09:00
Yukihiro "Matz" Matsumoto
4685a43dd6
should always initialize header flags for pooled strings
2014-04-14 16:55:28 +09:00
ksss
e08998be8f
Delegate irep string free to mrb_gc_free_str
2014-04-12 04:44:56 +00:00
Yukihiro "Matz" Matsumoto
306b1d3c51
Merge pull request #1948 from monaka/pr-remove-unused-null-check
...
Remove redundant NULL checks.
2014-03-26 13:32:18 +09:00
Masaki Muranaka
dcff9012e3
Remove redundant NULL checks.
...
mrb_malloc causes an exception when memory was empty.
2014-03-26 11:21:20 +09:00
ksss
ebf6da7e30
mrb_str_pool add string capa
2014-03-25 08:44:59 +09:00
ksss
b0f10b5c3d
mrb_str_pool use embed-string
2014-03-23 08:04:54 +00:00
ksss
54132e4364
make embed string when create literals
2014-03-06 13:47:51 +00:00
ksss
4070b5987a
embed small string
...
use flags 4 for *this object is embed*
use flags 8~64 for *embed string length*
2014-03-06 13:12:08 +00:00
Yukihiro "Matz" Matsumoto
78f2902c06
need to initialize flags for pooled strings; close #1768
2014-03-01 10:48:22 +09:00
Yukihiro "Matz" Matsumoto
7ba4612956
use mrb_str_new_lit() more widely
2014-02-06 08:54:47 +09:00
cremno
aa655b9ee1
remove superfluous includes
...
- 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)
2014-01-07 17:56:30 +01:00
Yukihiro "Matz" Matsumoto
c70e2f7099
wrong operator precedence fixed
2013-12-25 13:30:03 +09:00
Yukihiro "Matz" Matsumoto
673d9183cf
avoid copying when the original string comes with MRB_STR_NOFREE
2013-12-25 10:30:48 +09:00
Yukihiro "Matz" Matsumoto
9fab01caee
remove MRB_IREP_ARRAY_INIT_SIZE which is no longer used
2013-12-24 07:26:35 +09:00
Yukihiro "Matz" Matsumoto
9ac386923d
float objects in pool are objects when MRB_WORD_BOXING is set
2013-11-27 17:29:28 +09:00
Yukihiro "Matz" Matsumoto
07b8a5b042
Make mrb->arena variable sized. Use MRB_GC_FIXED_ARENA for old behavior.
...
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-22 09:20:06 +09:00
Yukihiro "Matz" Matsumoto
fb386011df
rename API mrb_str_dup_static() -> mrb_str_pool()
2013-11-20 08:37:16 +09:00
Yukihiro "Matz" Matsumoto
217595c325
need to free pooled string bodies as well
2013-11-20 07:38:53 +09:00
Miura Hideki
54c5b12fb7
irep->pool struct pool -> mrb_value
2013-11-19 20:38:02 +09:00
Yukihiro "Matz" Matsumoto
71354b91cb
enum mrb_vtype varies on compile time configuration, namely MRB_NAN_BOXING
2013-11-15 02:45:52 +09:00
Yukihiro "Matz" Matsumoto
de790bdc27
allow irep to be GCed
2013-11-08 20:39:50 +09:00
Yukihiro "Matz" Matsumoto
c8936754e8
wrong return value from read_lineno_record()
2013-11-07 08:20:03 +09:00
Yukihiro "Matz" Matsumoto
d8913dae3f
forgot to free irep->reps
2013-11-07 04:22:10 +09:00
Yukihiro "Matz" Matsumoto
677a2ac226
irep->pool not to be GCed
2013-11-07 04:20:46 +09:00
Yukihiro "Matz" Matsumoto
e92d4e2680
modified to use irep->reps to reference child ireps. preparation for
...
removing irep array from mrb_state. note that instructions OP_LAMBDA,
OP_EXEC and OP_EPUSH are incompatible, and dumped mrb format has changed.
2013-11-07 03:54:22 +09:00
Cremno
12997cebc3
BUG: mrb_irep_free (access of freed memory)
2013-09-03 21:21:49 +02:00