summaryrefslogtreecommitdiffhomepage
path: root/src/vm.c
AgeCommit message (Collapse)Author
2018-08-25Add bytecode support for `MRB_WORD_BOXING`.Yukihiro "Matz" Matsumoto
2018-08-25New bytecode implementation of mruby VM.Yukihiro "Matz" Matsumoto
2018-08-25Remove utility functions: `mrb_vm_iv_{get,set}`.Yukihiro "Matz" Matsumoto
2018-08-25Remove `nregs` member from `mrb_callinfo`.Yukihiro "Matz" Matsumoto
This means reducing one word per a call frame.
2018-07-31Removed unused instruction: `OP_KDICT`.Yukihiro "Matz" Matsumoto
2018-07-31Fixed a small bug in keyword argument parsing.Yukihiro "Matz" Matsumoto
def m(a=1,**k) p [a,k] end m(a: 1)
2018-07-30Keyword argument implemented.Yukihiro "Matz" Matsumoto
2018-07-30New bytecode implementation of mruby VM.Yukihiro "Matz" Matsumoto
2018-06-14Restore GC arena after raised exceptions; ref #4042Yukihiro "Matz" Matsumoto
2018-06-11Revert "No longer need to insert write barriers for fibers."Yukihiro "Matz" Matsumoto
This reverts commit c6736357a72049a0eb2a31ccabcc3cd2baba7c9e. The assumption was wrong and caused the issue; fix #4020
2018-06-11Retrieve `b` operand from the instruction (for debugging); ref #4020Yukihiro "Matz" Matsumoto
2018-06-07Merge pull request #4039 from i110/i110/fix-broken-lexical-variablesYukihiro "Matz" Matsumoto
fix broken lexical variables
2018-06-07Export `stack_extend` function (renamed `mrb_stack_extend`); fix #3219Yukihiro "Matz" Matsumoto
This change is required to support #4038.
2018-06-06Revert "Fix heap use after free on mruby-aws-sigv4."Ichito Nagata
This reverts commit b8869498b7b1458af1cf2a5ccc7644849f826230.
2018-06-03fix env->stack misadjustingIchito Nagata
2018-05-03`env` referred from top-level callinfo should not be unshared; fix #4019Yukihiro "Matz" Matsumoto
Because `mirb` keeps top-level environment across each iteration.
2018-04-28Update `OP_APOST` description; ref #4008Yukihiro "Matz" Matsumoto
2018-04-27Fix heap use after free on mruby-aws-sigv4.Takeshi Watanabe
2018-04-13No longer need to insert write barriers for fibers.Yukihiro "Matz" Matsumoto
Those barriers are inserted to fix #3699 but all living fibers are marked from `mark_context()` anyway now.
2018-04-13The #3871 fix caused wrong `break from proc-closure` error; fix #3996Yukihiro "Matz" Matsumoto
2018-04-13Add `fallthrough` comment to silence gcc warning.Yukihiro "Matz" Matsumoto
2018-04-13Silence gcc initializer warning.Yukihiro "Matz" Matsumoto
2018-04-11Check length of env stack before accessing upvar; fix #3995Yukihiro "Matz" Matsumoto
2018-04-05Adjust environment when `mrb_exec_irep` happened.Takeshi Watanabe
2018-03-22Need to keep block argument in `mrb_exec_irep`; fix #3973Yukihiro "Matz" Matsumoto
2018-03-20Needed to set `ci->proc` in `OP_SUPER`; fix #3966Yukihiro "Matz" Matsumoto
2018-02-09Check `ensure` proc is NULL before calling; fix #3943Yukihiro "Matz" Matsumoto
2018-01-30Need not to pop `callinfo` on `OP_STOP`.Yukihiro "Matz" Matsumoto
2017-12-23`super` should raise `TypeError` when the receiver is switched; fix #3911Yukihiro "Matz" Matsumoto
The receiver can be switched using `#instance_eval` etc.
2017-12-23Avoid infinite recursion in `method_missing`; ref #3908Yukihiro "Matz" Matsumoto
2017-12-23May need more stack space in `mrb_funcall_with_block`; fix #3908Yukihiro "Matz" Matsumoto
2017-12-23Should not overwrite `ci->target_class` in `mrb_exec_irep()`.Yukihiro "Matz" Matsumoto
For example, the following code behaved wrong: ```ruby Object.instance_exec(1,2,3){|*a| def foo 42 end } p foo() ```
2017-12-20Fixed method look-up for `method_missing` in OP_SUPER; ref #3905Yukihiro "Matz" Matsumoto
Method look-up for `OP_SUPER` should start from the superclass of the `target_class` but if it fails, the look-up for `method_missing` should start from the class of the receiver. The following code explains the case: ```ruby class Bar def foo super end end class Foo<Bar def method_missing(mid, *) p mid end end ``` Foo.new.foo
2017-12-20The superclass info should be taken from `TARGET_CLASS(ci->proc).Yukihiro "Matz" Matsumoto
Not from `ci->target_class` that may be switched using `class_eval` etc. fix #3899, fix #3906 We found out there is a mruby specific limitation that `super` may be screwed up when a method is defined in a module and `super` is called in the block with the target class switched (for example, `super` in `class_eval` block). Now we raise `RuntimeError` for such cases. The following code works in CRuby but not in mruby. ``` module M def foo "aaa".singleton_class.class_eval{super 2} end end class Foo def foo(*); end end class Bar<Foo include M end Bar.new.foo ```
2017-12-16Need to set `ci->proc` before calling methods; fix #3902Yukihiro "Matz" Matsumoto
2017-12-16Need to clear exception handler on `return`; fix #3898Yukihiro "Matz" Matsumoto
2017-12-13Retrieve operands at the beginning of `OP_SCLASS`.Yukihiro "Matz" Matsumoto
2017-12-07Cancel df3507660 that does not do any good.Yukihiro "Matz" Matsumoto
2017-12-07Avoid updating to reallocated stack in `OP_RETURN`; fix #3870Yukihiro "Matz" Matsumoto
The code was introduced to address #3175 but it's no longer needed.
2017-12-06The `ci` should not be equal to `cibase` with `OP_R_BREAK`; #3871Yukihiro "Matz" Matsumoto
2017-12-06The proc with top-level env must be 'proc-closure'; fix #3871Yukihiro "Matz" Matsumoto
2017-12-06Limit `ecall()` depth to 32 (default).Yukihiro "Matz" Matsumoto
2017-12-05Need to set `ci->proc` when we have `RProc` structure.Yukihiro "Matz" Matsumoto
Mentioned in https://qiita.com/bamchoh/items/eabebbbb330cb0e0470a
2017-12-04Need to unshare env stack on `break`; fix #3866Yukihiro "Matz" Matsumoto
2017-12-04Check if `ci->proc` is not `NULL` and `MRB_PROC_CFUNC_P()`; fix #3867Yukihiro "Matz" Matsumoto
2017-12-01The stack shift width should be determined by `p->upper`; fix #3864Yukihiro "Matz" Matsumoto
And check required register number from `ci->proc` as well. The fixes for #3859 and #3862 were incomplete.
2017-11-30Avoid calling `mrb_env_unshare()` when `env` is `NULL`.Yukihiro "Matz" Matsumoto
Small performance improvement by reducing function invocations.
2017-11-30Avoid double free() of env stack; fix #3860Yukihiro "Matz" Matsumoto
Should turn on `MRB_ENV_STACK_UNSHARED` flag only after env stack reallocation. `malloc()` may fail.
2017-11-30Wrong stack adjustment in `ecall()` (f35f975 #3859); fix #3862Yukihiro "Matz" Matsumoto
2017-11-29Clear `c->prev` on fiber termination.Yukihiro "Matz" Matsumoto