Tomasz Dąbrowski
999ce87129
fix: src\vm.c(2631): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
2017-09-27 22:22:05 +02:00
Tomasz Dąbrowski
77d6a953ff
fix: src\vm.c(1757): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
2017-09-27 22:22:05 +02:00
Tomasz Dąbrowski
ebd45b1072
fix: src\vm.c(1744): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
2017-09-27 22:22:05 +02:00
Tomasz Dąbrowski
0bff4b6a09
fix: src\vm.c(1702): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
2017-09-27 22:22:05 +02:00
Tomasz Dąbrowski
885916c84b
fix: src\vm.c(708): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
2017-09-27 22:22:05 +02:00
Tomasz Dąbrowski
e88fc10679
fix: src\vm.c(704): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
2017-09-27 22:22:05 +02:00
Tomasz Dąbrowski
ec7f478eda
fix: src\vm.c(457): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
2017-09-27 22:22:05 +02:00
Tomasz Dąbrowski
67ab8406b8
fix: src\vm.c(445): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
2017-09-27 22:22:05 +02:00
Tomasz Dąbrowski
23cc698134
fix: src\vm.c(438): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
2017-09-27 22:22:05 +02:00
Yukihiro "Matz" Matsumoto
7450a774a5
The first instruction was skipped mistakenly in ensure clause; fix #3811
2017-09-23 10:12:04 +09:00
Yukihiro "Matz" Matsumoto
0ceaa0960a
OP_EPOP operand may be bigger than mrb->c->eidx; fix #3810
2017-09-22 13:00:58 +09:00
Yukihiro "Matz" Matsumoto
5760226e71
Remove temporary limitation of OP_EPOP.
...
After f68f5f6 , the operand of `OP_EPOP` should have been `1`.
Now we have removed the limitation.
2017-09-12 12:41:02 +09:00
Yukihiro "Matz" Matsumoto
d6e41c3e51
The callinfo stack may be reallocated in cipush; fix rest of #3809
...
fix #3809
2017-09-11 23:13:47 +09:00
Yukihiro "Matz" Matsumoto
3d8c1a7e97
The ensure stack may be empty at OP_EPOP; fix 1st part of #3809
2017-09-11 22:46:34 +09:00
Yukihiro "Matz" Matsumoto
f68f5f6b97
Avoid crossing C function boundary from OP_EPOP; ref #3789
2017-09-05 21:12:36 +09: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
483a038d39
Fixed a critical typo; ref #3798
2017-08-30 16:51:17 +09:00
Yukihiro "Matz" Matsumoto
8976f47e0a
Need to update ci after callinfo stack reallocation; fix #3796
2017-08-29 11:06:34 +09:00
Yukihiro "Matz" Matsumoto
60104ce41d
Silence compiler warning regarding float condition; fix #3790
2017-08-26 02:02:45 +09:00
Christopher Aue
64e5208404
Asserted bidx < ci->nregs for OP_SEND and OP_SUPER
2017-08-23 15:18:06 +02:00
Yukihiro "Matz" Matsumoto
f1767fd079
Separate mrb_str_buf_new and mrb_str_new_capa.
...
`mrb_str_buf_new` is an old function that ensures capacity size of
`MRB_STR_BUF_MIN_SIZE` minimum. Usually one need to use
`mrb_str_new_capa` instead.
2017-08-18 22:17:48 +09:00
Christopher Aue
6b0860ce61
Reset ci in OP_SUPER after potential realloc
2017-08-18 13:11:08 +02:00
Christopher Aue
d5ac785b31
Reintroduced not storing converted proc directly in the stack
2017-08-12 23:59:40 +02:00
Christopher Aue
198df61039
Removed unneeded ci->nregs checks in OP_SEND and OP_SUPER
...
Because of #3504 `ci->nregs = bidx+1` was introduced in b64f08784c .
This led to the follow up error #3551 whose fix introduced the `if (bidx >= ci->nregs)`
check in 071164b799 and the `stack_extend(mrb, ci->nregs)`
in 93d802987e .
Then, the code causing #3504 reappeared again in #3590 . The fix for it moved the code
dealing with the block in OP_SUPER from below the `cipush` to above the `cipush`
in d9fb8b69b0 . The `if (bidx >= ci->nregs) { ... }` from
then on works with the original callinfo and not the pushed one. `ci->nregs` needed to
be modified for the pushed one because it is initialized to 0. But for the original ci
it is propertly set and a check is not needed.
2017-08-12 23:27:17 +02:00
Christopher Aue
f2d4640998
Extended stack always based on ci->nregs
2017-08-12 14:47:22 +02:00
Christopher Aue
3f591d71c6
Refactored variable usage in OP_SEND and OP_SUPER
2017-08-12 14:31:18 +02:00
Yukihiro "Matz" Matsumoto
baa5d2e3f7
Remove some empty lines; ref #3778
2017-08-11 22:39:31 +09:00
Christopher Aue
58f5115b22
Refactored OP_SEND and OP_SUPER and calculate argc right at the top
2017-08-11 13:42:06 +02:00
Yukihiro "Matz" Matsumoto
ab39ed4f82
Defer mid update after unshift; ref #3776
2017-08-11 13:15:50 +09:00
Yukihiro "Matz" Matsumoto
9feb069124
Merge branch 'super_method_missing_fix' of https://github.com/christopheraue/mruby into christopheraue-super_method_missing_fix
2017-08-11 13:14:32 +09:00
Yukihiro "Matz" Matsumoto
0ff28c9e60
Silence integer type conversion warnings.
2017-08-11 13:10:31 +09:00
Christopher Aue
2249551c63
Fixed calling missing method through super with 126 args
2017-08-10 23:26:39 +02:00
Christopher Aue
2fadddcd20
Replaced tabs with spaces
2017-08-09 21:56:27 +02:00
Yukihiro "Matz" Matsumoto
f9c3ebd29d
Wrong blkargs pos for vararg; ref #3768
2017-08-09 15:23:20 +09:00
Yukihiro "Matz" Matsumoto
0a61df1c34
The block argument offset saved in the env was wrong; fix #3768
...
When the method takes variable number of argument (`argc = -1`),
the block argument offset should be `-1` not `0`.
2017-08-09 12:57:55 +09:00
Yukihiro "Matz" Matsumoto
66e2928bd4
Float values divided by zero should honor signs; fix #3766
...
It also fixes unexpected resurrection of #3745 by #3752
2017-08-08 02:13:11 +09:00
Yukihiro "Matz" Matsumoto
8494557006
Set the current pc as the error position in OP_ERR; ref #3765
2017-08-08 01:55:46 +09:00
Yukihiro "Matz" Matsumoto
9e10afe1d0
Implements `Module::nesting' (15.2.2.3.2); ref #600 , #3200
2017-08-01 15:37:21 +09:00
Yukihiro "Matz" Matsumoto
f26d00d9e8
Embed small size array elements in the heap.
...
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-27 16:13:06 +09:00
Yukihiro "Matz" Matsumoto
5d44f8582e
Remove loop from OP_POPERR.
2017-07-27 10:30:43 +09:00
Yukihiro "Matz" Matsumoto
9fa3d77114
0/0 should not be infinity; fix #3752
2017-07-25 15:11:31 +09:00
Yukihiro "Matz" Matsumoto
308341b990
Clear mrb_callinfo struct by zero initializer.
2017-07-24 16:47:11 +09:00
Yukihiro "Matz" Matsumoto
1c360965e7
Need to unshare env on OP_R_BREAK too.
2017-07-21 10:57:21 +09:00
Yukihiro "Matz" Matsumoto
5fee3f5869
Move NULL check to mrb_env_unshare(); ref #3750
2017-07-21 10:14:15 +09:00
Yukihiro "Matz" Matsumoto
e2c9a30571
Should not raise LocalJumpError on funcall'ed frame; fix #3750
2017-07-21 07:17:21 +09:00
Yukihiro "Matz" Matsumoto
aa3cb0466e
Avoid C undefined behavior of division by zero; close #3745
2017-07-19 09:49:41 +09:00
Yukihiro "Matz" Matsumoto
329938ef15
Simplify mrb_gc_arena_restore() to reduce overhead.
...
It will no longer shrink arena region. Instead `vm.c` uses
a static function `mrb_gc_arena_shrink()` to shrink.
2017-07-18 23:26:36 +09:00
Yukihiro "Matz" Matsumoto
9501b18362
Add inline modifier to cipush() and cipop() functions.
2017-07-12 14:50:44 +09:00
Yukihiro "Matz" Matsumoto
bd66c5d716
Check stack size before accessing env stack; fix #3727
2017-07-05 09:19:06 +09:00
Yukihiro "Matz" Matsumoto
9b8956cdd0
break should not cross fiber-context boundary; fix #3724
2017-07-01 12:45:27 +09:00