dearblue
4c196dcdaa
Reorganize mcall() in mruby-method.
...
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-03 21:20:59 +09:00
dearblue
dd34ac647f
Make mrb_exec_irep() allow non-VM to enter.
...
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-03 21:17:48 +09:00
Yukihiro "Matz" Matsumoto
fb8e12f37c
Merge pull request #5397 from dearblue/c++dump
...
Fix build failures with `enable_debug` and `enable_cxx_abi`
2021-04-03 18:44:17 +09:00
Yukihiro "Matz" Matsumoto
474ec3e5c6
Merge pull request #5398 from jbampton/fix-authors-link
...
Fix the Authors link in the README
2021-04-03 17:58:30 +09:00
Yukihiro "Matz" Matsumoto
7561bed32a
Merge pull request #5399 from jbampton/fix-spelling
...
chore: fix spelling
2021-04-03 17:57:08 +09:00
John Bampton
ce2b8aa05e
chore: fix spelling
2021-04-03 18:14:25 +10:00
John Bampton
049c1d0a45
Fix the Authors link in the README
2021-04-03 17:43:04 +10:00
dearblue
3e48f4eebc
Fix build failures with enable_debug and enable_cxx_abi
...
Under C++, there is no implicit conversion from `int` to `enum`, which caused a compilation error.
2021-04-03 16:22:40 +09:00
Yukihiro "Matz" Matsumoto
aca59de88e
Merge branch 'shuujii-define-MRB_NO_GEMS-if-disable_libmruby-is-specified'
2021-04-02 07:55:43 +09:00
Yukihiro "Matz" Matsumoto
ade9368510
Merge branch 'define-MRB_NO_GEMS-if-disable_libmruby-is-specified' of https://github.com/shuujii/mruby into shuujii-define-MRB_NO_GEMS-if-disable_libmruby-is-specified
2021-04-02 07:53:27 +09:00
Yukihiro "Matz" Matsumoto
f68c0d092c
Merge pull request #5396 from shuujii/fix-build-with-MRB_USE_ALL_SYMBOLS
...
Fix build with `MRB_USE_ALL_SYMBOLS`
2021-04-02 07:44:14 +09:00
Yukihiro "Matz" Matsumoto
bda242a135
vm.c: change the default error message for undefined super method.
...
- (old) `undefined method 'foo'`
- (new) `no superclass method 'foo'`
2021-04-01 08:42:30 +09:00
KOBAYASHI Shuji
4309a5b1f4
Fix build with MRB_USE_ALL_SYMBOLS
2021-03-31 19:10:39 +09:00
Yukihiro "Matz" Matsumoto
d5a4d5e393
codegen.c: s->ainfo should be zero along with OP_ENTER(0).
2021-03-31 17:20:14 +09:00
Yukihiro "Matz" Matsumoto
9f85c5e483
codegen.c: yield outside of method is now SyntaxError.
2021-03-31 15:57:43 +09:00
Yukihiro "Matz" Matsumoto
a7ca5a9b6e
backtrace.c: change missing-lineno to 0 for cosmetic reason; #5394
2021-03-31 15:41:19 +09:00
Yukihiro "Matz" Matsumoto
f2da051367
Merge pull request #5394 from fundamental/partial-backtrace
...
Add support for partial backtraces
2021-03-31 15:39:47 +09:00
Yukihiro "Matz" Matsumoto
b7c23a4a14
vm.c: resolve int and mrb_int mixture.
2021-03-31 11:46:21 +09:00
Yukihiro "Matz" Matsumoto
9038a1ca40
rational.c: add explicit cast from mrb_int to mrb_float.
2021-03-31 11:39:59 +09:00
Yukihiro "Matz" Matsumoto
590c1073fc
should have removed codegen error: prefix from the test.
2021-03-31 11:35:56 +09:00
Yukihiro "Matz" Matsumoto
cb8dabeb8c
codegen.c: remove codegen error: prefix from error messages.
2021-03-31 10:48:18 +09:00
Yukihiro "Matz" Matsumoto
4428ce6050
codegen.c: ainfo may be negative.
...
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-31 10:48:17 +09:00
Yukihiro "Matz" Matsumoto
87f113e19d
Merge pull request #5395 from fundamental/mrbc-debug-cstruct
...
mrbc: Dump debug info with -g option
2021-03-31 10:48:01 +09:00
fundamental
c146e81c4a
Disable tests on backtraces w/ unknown line numbers
2021-03-30 20:26:10 -04:00
fundamental
5266f76346
mrbc: Dump debug info with -g option
...
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-30 19:26:12 -04:00
fundamental
49f0da6821
Add support for partial backtraces
...
When debug information is omitted within ireps, show that a stack
frame existed rather than silently hiding it.
2021-03-30 19:16:15 -04:00
Yukihiro "Matz" Matsumoto
a963e29b67
src/vm.c: calling C function may raise global jumps; fix #5391
2021-03-29 17:28:32 +09:00
Yukihiro "Matz" Matsumoto
3c2186f050
Merge pull request #5392 from mruby/revert-5391-throw
...
Revert "Fix `SIGSEGV` with mruby-method + mruby-catch"
2021-03-29 17:27:17 +09:00
Yukihiro "Matz" Matsumoto
4d3a1198f8
Revert "Fix SIGSEGV with mruby-method + mruby-catch"
2021-03-29 17:26:42 +09:00
Yukihiro "Matz" Matsumoto
76e4de7486
Merge pull request #5391 from dearblue/throw
...
Fix `SIGSEGV` with mruby-method + mruby-catch
2021-03-29 17:11:21 +09:00
Yukihiro "Matz" Matsumoto
a5244b02c5
numeric.c: function renaming.
...
- `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-28 08:35:29 +09:00
dearblue
6c097c7113
Fix SIGSEGV with mruby-method + mruby-catch
...
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-27 17:35:02 +09:00
Yukihiro "Matz" Matsumoto
c2f929ad0f
Move default Integer#/ from rational.c to complex.c.
2021-03-27 12:38:16 +09:00
Yukihiro "Matz" Matsumoto
01a8edea35
complex.rb: add test for arithmetic operators. [ci skip]
...
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-26 17:20:25 +09:00
Yukihiro "Matz" Matsumoto
9492e389b8
rational.rb: add test for arithmetic operators.
...
Tests for (`Float` or `Integer`) `op` `Rational`.
2021-03-26 07:37:50 +09:00
Yukihiro "Matz" Matsumoto
6d89047637
rational.c: fix wrong funcall method in rational_mul.
2021-03-25 22:31:32 +09:00
Yukihiro "Matz" Matsumoto
0aff83dcdc
rational.c: inline mrb_rational_eq().
...
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-25 08:28:41 +09:00
Yukihiro "Matz" Matsumoto
4a0c14e3bd
rational.c: implement Rational#<=> in C.
2021-03-24 19:49:20 +09:00
Yukihiro "Matz" Matsumoto
3a2075343c
rational.c: implement Rational#/ and #quo in C.
2021-03-24 19:21:38 +09:00
Yukihiro "Matz" Matsumoto
f05f6f4d11
rational.c: implement Rational#* in C.
2021-03-24 19:11:02 +09:00
Yukihiro "Matz" Matsumoto
9d058342a5
rational.c: implement Rational#- in C.
2021-03-24 19:01:58 +09:00
Yukihiro "Matz" Matsumoto
7a35b64251
fixup! rational.c: prepare utility function rat_to_flo().
2021-03-24 19:01:38 +09:00
Yukihiro "Matz" Matsumoto
ac4fe26fbb
rational.c: prepare utility function rat_to_flo().
...
This function takes `struct mrb_rational*` and returns converted
`mrb_float` value.
2021-03-24 18:59:35 +09:00
Yukihiro "Matz" Matsumoto
7ca7bee9b3
rational.c: implement Rational#+ in C.
2021-03-24 13:57:49 +09:00
Yukihiro "Matz" Matsumoto
5a4958af26
complex.c: use mrb_num_div_flo to avoid copying function.
...
This change relies that `mrb_num_div_flo` does not use `mrb` inside.
2021-03-24 13:56:08 +09:00
Yukihiro "Matz" Matsumoto
092bba64e7
rational.c: check integer overflow in rational_minus.
2021-03-24 13:28:01 +09:00
Yukihiro "Matz" Matsumoto
49f75703cc
complex.rb: unary plus (+@) to return self avoiding copying.
2021-03-24 11:06:48 +09:00
Yukihiro "Matz" Matsumoto
9ed212ef9e
complex.c: implement Complex addition and subtraction in C.
2021-03-24 11:06:14 +09:00
Yukihiro "Matz" Matsumoto
fa3ac351ff
complex.c: override float division to support Complex.
2021-03-24 11:04:58 +09:00
Yukihiro "Matz" Matsumoto
afb3c00e8c
Use div_flo (copy of mrb_num_div_flo) for float division.
2021-03-24 10:56:01 +09:00