summaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)Author
2021-04-03Reorganize `mcall()` in `mruby-method`.dearblue
Use `mrb_exec_irep()`. If possible, re-entry into the VM will be suppressed. Note that due to the effect of being a tail-call, the backtrace of `Method#call` will be lost, and it will look as if the target method was called directly. This change fixes the problem of infinite loops when redefining methods that make block calls using `mruby-method`. ```console % bin/mruby -e 'mm = method(:proc); define_method(:proc, ->(*a, &b) { mm.call(*a, &b) }); p proc { 1 }' trace (most recent call last): [257] -e:1 [256] -e:1:in proc [255] -e:1:in proc ...SNIP... [1] -e:1:in proc -e:1:in proc: stack level too deep (SystemStackError) ```
2021-04-03Make `mrb_exec_irep()` allow non-VM to enter.dearblue
Change the old `mrb_exec_irep()` as-is to static `mrb_exec_irep_vm()`. Extract the VM entry part from the old `exec_irep()` in `mruby-eval/src/eval.c` and make it the core of the new `mrb_exec_irep()`.
2021-04-03chore: fix spellingJohn Bampton
2021-04-03Merge pull request #5397 from dearblue/c++dumpYukihiro "Matz" Matsumoto
Fix build failures with `enable_debug` and `enable_cxx_abi`
2021-04-03Merge pull request #5398 from jbampton/fix-authors-linkYukihiro "Matz" Matsumoto
Fix the Authors link in the README
2021-04-03Merge pull request #5399 from jbampton/fix-spellingYukihiro "Matz" Matsumoto
chore: fix spelling
2021-04-03chore: fix spellingJohn Bampton
2021-04-03Fix the Authors link in the READMEJohn Bampton
2021-04-03Fix build failures with `enable_debug` and `enable_cxx_abi`dearblue
Under C++, there is no implicit conversion from `int` to `enum`, which caused a compilation error.
2021-04-02Merge branch 'shuujii-define-MRB_NO_GEMS-if-disable_libmruby-is-specified'Yukihiro "Matz" Matsumoto
2021-04-02Merge branch 'define-MRB_NO_GEMS-if-disable_libmruby-is-specified' of ↵Yukihiro "Matz" Matsumoto
https://github.com/shuujii/mruby into shuujii-define-MRB_NO_GEMS-if-disable_libmruby-is-specified
2021-04-02Merge pull request #5396 from shuujii/fix-build-with-MRB_USE_ALL_SYMBOLSYukihiro "Matz" Matsumoto
Fix build with `MRB_USE_ALL_SYMBOLS`
2021-04-01vm.c: change the default error message for undefined `super` method.Yukihiro "Matz" Matsumoto
- (old) `undefined method 'foo'` - (new) `no superclass method 'foo'`
2021-03-31Fix build with `MRB_USE_ALL_SYMBOLS`KOBAYASHI Shuji
2021-03-31codegen.c: `s->ainfo` should be zero along with `OP_ENTER(0)`.Yukihiro "Matz" Matsumoto
2021-03-31codegen.c: `yield` outside of method is now `SyntaxError`.Yukihiro "Matz" Matsumoto
2021-03-31backtrace.c: change `missing-lineno` to `0` for cosmetic reason; #5394Yukihiro "Matz" Matsumoto
2021-03-31Merge pull request #5394 from fundamental/partial-backtraceYukihiro "Matz" Matsumoto
Add support for partial backtraces
2021-03-31vm.c: resolve `int` and `mrb_int` mixture.Yukihiro "Matz" Matsumoto
2021-03-31rational.c: add explicit cast from `mrb_int` to `mrb_float`.Yukihiro "Matz" Matsumoto
2021-03-31should have removed `codegen error:` prefix from the test.Yukihiro "Matz" Matsumoto
2021-03-31codegen.c: remove `codegen error:` prefix from error messages.Yukihiro "Matz" Matsumoto
2021-03-31codegen.c: `ainfo` may be negative.Yukihiro "Matz" Matsumoto
When argument information is not available. So it should not happen for `yield` (error). In contrast, the error from `super` should be handled in run time (ignored).
2021-03-31Merge pull request #5395 from fundamental/mrbc-debug-cstructYukihiro "Matz" Matsumoto
mrbc: Dump debug info with -g option
2021-03-30Disable tests on backtraces w/ unknown line numbersfundamental
2021-03-30mrbc: Dump debug info with -g optionfundamental
Adds debug source information (line/file) when mrbc uses -g. This commit results in usable backtraces for all gems when build_config is setup with enable_debug.
2021-03-30Add support for partial backtracesfundamental
When debug information is omitted within ireps, show that a stack frame existed rather than silently hiding it.
2021-03-29src/vm.c: calling C function may raise global jumps; fix #5391Yukihiro "Matz" Matsumoto
2021-03-29Merge pull request #5392 from mruby/revert-5391-throwYukihiro "Matz" Matsumoto
Revert "Fix `SIGSEGV` with mruby-method + mruby-catch"
2021-03-29Revert "Fix `SIGSEGV` with mruby-method + mruby-catch"revert-5391-throwYukihiro "Matz" Matsumoto
2021-03-29Merge pull request #5391 from dearblue/throwYukihiro "Matz" Matsumoto
Fix `SIGSEGV` with mruby-method + mruby-catch
2021-03-28numeric.c: function renaming.Yukihiro "Matz" Matsumoto
- `mrb_num_div_int(mrb,x,y)` -> `mrb_div_int(mrb,x,y)` - `mrb_num_div_flo(mrb,x,y)` -> `mrb_div_flo(x,y)` They are internal function not supposed to be used outside of the core.
2021-03-27Fix `SIGSEGV` with mruby-method + mruby-catchdearblue
Previously, the following code would cause a `SIGSEGV`. ```ruby mm = method(:throw) define_method(:throw, ->(*args) { mm.call(*args) }) catch { |tag| throw tag } ``` I think the reason is in the `mrb_yield_with_class()` function: - Even if a C function is called, `CI_ACC_SKIP` is used - `cipop()` is not done if globally jumping from a C function
2021-03-27Move default `Integer#/` from `rational.c` to `complex.c`.Yukihiro "Matz" Matsumoto
2021-03-26complex.rb: add test for arithmetic operators. [ci skip]Yukihiro "Matz" Matsumoto
Tests for (`Float` or `Integer`) `op` `Complex`. Also added test dependency to `mruby-rational` since `int_div` definition relies on `Rational` when `MRB_USE_RATIONAL` is defined.
2021-03-26rational.rb: add test for arithmetic operators.Yukihiro "Matz" Matsumoto
Tests for (`Float` or `Integer`) `op` `Rational`.
2021-03-25rational.c: fix wrong `funcall` method in `rational_mul`.Yukihiro "Matz" Matsumoto
2021-03-25rational.c: inline `mrb_rational_eq()`.Yukihiro "Matz" Matsumoto
It removes non-static function, so that strictly saying, it's an incompatible change. But the function was added recently and I am sure no one uses it yet.
2021-03-24rational.c: implement `Rational#<=>` in C.Yukihiro "Matz" Matsumoto
2021-03-24rational.c: implement `Rational#/` and `#quo` in C.Yukihiro "Matz" Matsumoto
2021-03-24rational.c: implement `Rational#*` in C.Yukihiro "Matz" Matsumoto
2021-03-24rational.c: implement `Rational#-` in C.Yukihiro "Matz" Matsumoto
2021-03-24fixup! rational.c: prepare utility function `rat_to_flo()`.Yukihiro "Matz" Matsumoto
2021-03-24rational.c: prepare utility function `rat_to_flo()`.Yukihiro "Matz" Matsumoto
This function takes `struct mrb_rational*` and returns converted `mrb_float` value.
2021-03-24rational.c: implement `Rational#+` in C.Yukihiro "Matz" Matsumoto
2021-03-24complex.c: use `mrb_num_div_flo` to avoid copying function.Yukihiro "Matz" Matsumoto
This change relies that `mrb_num_div_flo` does not use `mrb` inside.
2021-03-24rational.c: check integer overflow in `rational_minus`.Yukihiro "Matz" Matsumoto
2021-03-24complex.rb: unary plus (`+@`) to return self avoiding copying.Yukihiro "Matz" Matsumoto
2021-03-24complex.c: implement `Complex` addition and subtraction in C.Yukihiro "Matz" Matsumoto
2021-03-24complex.c: override float division to support `Complex`.Yukihiro "Matz" Matsumoto