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
Yukihiro "Matz" Matsumoto
7d99830211
super may be called from a block; fix #3723
2017-07-01 12:45:27 +09:00
Yukihiro "Matz" Matsumoto
d0a7e01d9c
Should call ecall() before callinfo adjustment; fix #3715
2017-06-21 02:51:55 +09:00
Miura Hideki
0fa94f9ead
#3711 fix
2017-06-20 12:50:00 +09:00
Yukihiro "Matz" Matsumoto
a985847224
Store operands to local variables.
...
Mostly for debugging purpose.
2017-06-17 08:39:43 +09:00
Yukihiro "Matz" Matsumoto
d4d99dd6d7
Allow break from a block called by mrb_yield; close #3359
...
This means #3701 is now OK to merge.
2017-06-16 11:34:11 +09:00
Yukihiro "Matz" Matsumoto
6a66ce10b3
Need to unshare env from top callinfo; fix #3685
2017-06-16 08:25:34 +09:00
Yukihiro "Matz" Matsumoto
ebd6636a1e
Call write barriers for stack-modified fibers; fix #3699
2017-06-15 23:20:36 +09:00
Yukihiro "Matz" Matsumoto
b298e241c8
Protect the last exception object from GC in ecall; fix #3702
2017-06-15 14:57:18 +09:00
Yukihiro "Matz" Matsumoto
52443c80e2
Save the register value in a local variable for ease of debugging.
2017-06-15 14:52:58 +09:00
Yukihiro "Matz" Matsumoto
988e2ced03
Ensure size of the stack before handling exceptions; fix #3693
2017-06-15 13:37:27 +09:00
Yukihiro "Matz" Matsumoto
af6041f1d0
Ensure size of the stack in OP_CALL.
2017-06-15 13:36:36 +09:00
Yukihiro "Matz" Matsumoto
b979226871
Clear stack in OP_CALL; fix #3694
2017-06-14 02:49:07 +09:00
Yukihiro "Matz" Matsumoto
7830b841c7
Fixed uninitialized local variable bug; ref #3692
2017-06-14 01:55:05 +09:00
Yukihiro "Matz" Matsumoto
edb5b3672b
Avoid out-of-bound access of VM stack in OP_SENDB; fix #3692
2017-06-14 00:46:21 +09:00
Yukihiro "Matz" Matsumoto
788cea2b43
Revert "Simplify rescue stack management; ref #3683 "
...
This reverts commit eb5a606fe2 and
079f310fbc .
The rescue stack works differently from ensure stack, so the change
caused #3686 and #3688 . It might take long to solve the problems,
so that I would revert the changes for now. Fix #3688
2017-06-03 23:32:15 +09:00
Yukihiro "Matz" Matsumoto
935649b844
Check if a block is a lambda before marking it orphan; ref #3640
2017-06-03 13:48:09 +09:00
Yukihiro "Matz" Matsumoto
c041206ad1
Add checks for break from proc-closure; fix #3640
2017-06-03 12:44:29 +09:00
Yukihiro "Matz" Matsumoto
ab85d3c814
Make break in lambdas work as return according to CRuby behavior.
2017-06-02 14:22:18 +09:00
Yukihiro "Matz" Matsumoto
079f310fbc
Adjust ridx if mrb_yield terminated by break; fix #3686
...
This issue is related to #3640 .
2017-06-02 11:26:32 +09:00
Yukihiro "Matz" Matsumoto
87cc0344cd
Call stack_clear() after stack_extend(); fix #3682
2017-06-01 19:35:15 +09:00
Yukihiro "Matz" Matsumoto
eb5a606fe2
Simplify rescue stack management; ref #3683
2017-06-01 19:18:24 +09:00
Yukihiro "Matz" Matsumoto
7ff90b52d8
Simplify ensure stack management; fix #3683
2017-06-01 19:17:48 +09:00
Yukihiro "Matz" Matsumoto
72b635f7d2
Hide OP_EXEC lambda body from ObjectSpace#each_object; fix #3680
2017-06-01 15:40:07 +09:00
Yukihiro "Matz" Matsumoto
b0f2bc39db
Clear VM stack in OP_EXEC; ref #3678
2017-06-01 08:45:56 +09:00