KOBAYASHI Shuji
abc6c990a6
Remove unnecessary _set_output_format call
...
Three-digit exponent issue was fixed via another workaround (63b8f5c ).
2019-04-03 18:54:25 +09:00
dearblue
eb6aee117b
mrb_default_allocf() is default allocator for NULL safe
2019-02-09 20:22:08 +09:00
KOBAYASHI Shuji
0e04c46261
Use 2 digits exponent format for printf family on old MSVC
...
For conforming C standard.
2019-01-13 23:24:57 +09:00
Yukihiro "Matz" Matsumoto
61f49690e4
Remove filename&lines from mrb_irep struct.
...
This patch slightly reduce memory consumption (2% for my test).
2018-11-15 21:01:56 +09:00
YAMAMOTO Masaya
625f9f6fa3
Merge branch 'master' of github.com:mruby/mruby
2017-11-04 01:23:12 +09:00
Yukihiro "Matz" Matsumoto
e4662d77e7
Should not use FSHARED state for string from irep pools; fix #3829
...
This strings in `irep` pools may be freed forcefully in `mrb_irep_free`.
This commit probably fixes #3817 as well.
2017-11-03 08:24:47 +09:00
Yukihiro "Matz" Matsumoto
93f5f22577
Heavily refactored how lexical scope links are implemented; fix #3821
...
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-28 00:29:30 +09:00
Yukihiro "Matz" Matsumoto
f2394859e3
Add main.define_method
2017-10-19 10:39:06 +09:00
YAMAMOTO Masaya
acdc2d1f24
Add MRB_WITHOUT_FLOAT
2017-10-11 17:58:11 +09:00
Yukihiro "Matz" Matsumoto
7edbe428ca
Add new type of shared string: RSTR_FSHARED.
...
`RSTR_FSHARED` use frozen strings as shared body instead of
`struct mrb_shared_string`. This reduces allocation from
literal strings.
2017-10-01 16:24:43 +09:00
Yukihiro "Matz" Matsumoto
473b7d0efd
Cut links from irep in heaps finalization.
2017-09-29 00:18:55 +09:00
Tomasz Dąbrowski
6cde950017
fix: src\state.c(66): warning C4200: nonstandard extension used: zero-sized array in struct/union
2017-09-27 22:22:05 +02:00
Yukihiro "Matz" Matsumoto
3acaa44a70
Restructure irep->outer chain; fix #3804
...
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-09-04 06:51:31 +09:00
Yukihiro "Matz" Matsumoto
8bf492f127
Reduce integer type mismatch warnings in VC.
2017-08-12 09:35:35 +09:00
Yukihiro "Matz" Matsumoto
7dbbd77407
Revert 4566c80; fix #3679
...
The patch deallocate the memory in `mrb_default_allocf` but that
hinders GC in `mrb_realloc`.
2017-05-31 23:01:04 +09:00
Yukihiro "Matz" Matsumoto
4566c80d7b
Free given pointer if realloc() fails; fix #3658
2017-05-25 12:36:38 +09:00
Yukihiro "Matz" Matsumoto
9644ad51b4
Simplify backtrace mechanism; fix #3633 #3634 #3644
...
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-23 23:50:42 +09:00
Yukihiro "Matz" Matsumoto
77331d127b
Unify else clause style
2017-04-03 16:56:27 +09:00
Yukihiro "Matz" Matsumoto
f0f095bc13
Fix a double free problem in codegen.c; fix #3378
...
This issue was first reported by https://hackerone.com/geeknik
The fix was proposed by @titanous
2017-01-23 16:53:31 +09:00
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