Yukihiro "Matz" Matsumoto
25faa74d23
array.c (mrb_ary_unshift_m): small refactoring
...
Unify size error by `ary_too_big()` function.
2022-12-04 22:45:35 +09:00
Yukihiro "Matz" Matsumoto
eb988c9025
cdump.c (cdump_pool): simplify IREP_TT_FLOAT dump.
2022-11-25 16:17:29 +09:00
Yukihiro "Matz" Matsumoto
c39ee489e1
Remove non formatting fprintf().
2022-11-25 16:17:29 +09:00
dearblue
61b60273ea
Print errors by calling mrb_print_backtrace() without backtrace
...
- In case of `NoMemoryError` exceptions, the error message is now printed directly.
- Replaced `mrb_p()` used by #4250 with `mrb_print_error()`.
ref. squashed commit f1523d2404
ref. subcommit da7d7f881b
ref. subcommit d9c7b6be6e
2022-11-20 20:58:03 +09:00
Yukihiro "Matz" Matsumoto
9c5dc42e59
small cosmetic changes.
...
I prefer `i++` style unless absolutely necessary.
This commit is an addition to 41e4148.
2022-11-19 17:11:56 +09:00
Yukihiro "Matz" Matsumoto
7ab7608094
small cosmetic changes.
...
I prefer `i++` style unless absolutely necessary.
2022-11-19 17:11:56 +09:00
Yukihiro "Matz" Matsumoto
89a34e1b7e
Revert "error.c (mrb_sys_fail): errno argument removed from _sys_fail."
...
Intermediate function calls may update `errno`.
This reverts commit a099ca44f4 .
2022-11-19 17:11:56 +09:00
Yukihiro "Matz" Matsumoto
a099ca44f4
error.c (mrb_sys_fail): errno argument removed from _sys_fail.
...
As a side effect, `errno.h` dependency removed from `error.c`.
2022-11-15 13:27:32 +09:00
dearblue
f9b13d27b5
Changed prepare_missing() parameters
...
- Now that it is called after `cipush()`, pass in a new ci pointer.
- Removed the parameters `clsp`, `a`, and `c`, which are no longer needed since they now operate directly on `ci`.
- Change the parameter `super`, which is treated as a boolean, to `mrb_bool`.
- Leave the parameter `mid`.
Because if `prepare_missing()` raises the exception `NoMethodError`, `ci->mid` must not be set when suppressing extra information on the stack trace.
However, set `ci->mid` here, since the preparation is completed at the end of the function.
2022-11-12 20:56:46 +09:00
Yukihiro "Matz" Matsumoto
98cc66070b
readnum.c: provide obsolete functions.
...
- mrb_int_read()
- mrb_float_read()
Both functions should not be use and this file should not be linked.
This is just for compatibility.
2022-11-07 16:09:31 +09:00
Yukihiro "Matz" Matsumoto
4a888a34bb
readfloat.c (mrb_read_float): a new function.
...
We no longer use `mrb_float_read()` that depends on `errno`.
2022-11-07 16:09:31 +09:00
Yukihiro "Matz" Matsumoto
4e9773ae3d
readint.c (mrb_int_read): new function.
...
We no longer use `mrb_read_int` which is kinda compatible with `strtol`.
2022-11-07 16:09:31 +09:00
dearblue
5db5b27aa0
Using mrb_realloc() with stack_extend_alloc()
...
Raising a `SystemStackError` exception in an out-of-memory situation will generate backtrace information.
This can eventually lead to a `NoMemoryError` exception, and this process flow is completely undesirable.
In effect, this change means that it will include a revert of commit 0dbb9e6e41 .
2022-11-05 20:34:49 +09:00
dearblue
97c075ad68
Reduce memory copy in mrb_str_inspect() with UTF-8
2022-11-04 22:13:07 +09:00
Yukihiro "Matz" Matsumoto
b7240056f8
vm.c (funcall_args_capture): fix integer size mixture.
2022-11-04 12:07:00 +09:00
Yukihiro "Matz" Matsumoto
bf642becc2
internal.h: aggregate prototypes to internal.h.
...
- mrb_f_send()
- mrb_ci_nregs()
2022-11-02 14:24:42 +09:00
Yukihiro "Matz" Matsumoto
c68d3dcbac
vm.c: stop wrapping implementation by extern "C".
2022-11-02 14:22:04 +09:00
Yukihiro "Matz" Matsumoto
37fac6c089
throw.h: avoid using static member in C++ struct; fix #5846
...
The initialization causes linkage error with gcc (not clang), caused by
the following gcc bug:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86254
2022-11-02 14:22:03 +09:00
Yukihiro "Matz" Matsumoto
a4b41fe53c
Merge pull request #5843 from dearblue/simple-raise
...
Simplify the `L_RAISE` block
2022-11-01 00:06:06 +09:00
Yukihiro "Matz" Matsumoto
734fe47de4
Merge pull request #5841 from dearblue/raise-in-vm
...
Use macro in `mrb_vm_exec()` exception raising
2022-10-31 13:04:23 +09:00
dearblue
8a62bf25c8
Simplify the L_RAISE block
...
The current flow of the `L_RAISE` block is as follows:
```mermaid
flowchart LR
raise((raise))
raise --> citop{"top of call info?"}
citop -- YES --> chftop{"no catch handler?"}
citop -- NO --> chf{"no catch handler?"}
chftop -- YES --> fiber{"root of fiber?"}
chftop -- NO --> vmexec((vmexec))
fiber -- YES --> vmstop((vmstop))
fiber -- NO --> fswitch["switch fiber"]
fswitch --> citop
chf -- YES --> cipop["cipop"]
chf -- NO --> vmexec((vmexec))
cipop --> citop
```
This patch makes the catch handler search first:
```mermaid
flowchart LR
raise((raise))
raise --> chf{"no catch handler?"}
chf -- NO --> vmexec((vmexec))
chf -- YES --> citop{"top of call info?"}
citop -- YES --> fiber{"root of fiber?"}
citop -- NO --> cipop["cipop"]
cipop --> chf
fiber -- YES --> vmstop((vmstop))
fiber -- NO --> fswitch["switch fiber"]
fswitch --> chf
```
2022-10-30 23:05:29 +09:00
fn ⌃ ⌥
273fcbc347
ops.h: update OP_ARYDUP instruction and rename to OP_ARYSPLAT.
...
Transforms the value of a splat inside a return statement (similar
to an array). For example, `return *nil` should return `nil.to_a`,
while `return *1` should return `[1]`
2022-10-29 19:54:34 -07:00
dearblue
1de8fda2ec
Use macro in mrb_vm_exec() exception raising
...
Introduce the macro functions `RAISE_EXC()`, `RAISE_FORMAT()` and `RAISE_LIT()`.
2022-10-30 11:04:38 +09:00
fn ⌃ ⌥
55c423fc55
kernel.c (mrb_cmp_m): use mrb_equal instead of mrb_obj_equal.
...
`Kernel#<=>` should also call `#==` to check if the objects are equal.
2022-10-28 06:19:37 -07:00
Yukihiro "Matz" Matsumoto
4f8ab59e79
Merge pull request #5819 from FnControlRuby/allocate
...
class.c (mrb_instance_alloc): raise error if NilClass/FalseClass
2022-10-28 15:19:24 +09:00
fn ⌃ ⌥
c1697a9c4e
kernel.c (mrb_cmp_m): implement Kernel#<=>
2022-10-26 09:04:29 -07:00
John Bampton
8208a836ff
Fix spelling: floating point -> floating-point
...
https://en.wikipedia.org/wiki/Floating-point_arithmetic
2022-10-27 00:09:12 +10:00
John Bampton
664c9e533b
Remove unneeded trailing semi-colons from C files
2022-10-26 20:07:18 +10:00
fn ⌃ ⌥
91f8245a0c
class.c (mrb_instance_alloc): raise error if NilClass/FalseClass.
...
MRB_TT_FALSE is equal to 0, so we have to explicitly check if the
class is either NilClass or FalseClass.
2022-10-24 07:57:28 -07:00
Yukihiro "Matz" Matsumoto
33f97bccba
array.c (mrb_ary_unshift): use mrb_get_argc() and mrb_get_argv().
2022-10-21 13:31:32 +09:00
Yukihiro "Matz" Matsumoto
da8ef29fba
array.c (mrb_ary_push_m): fixed a stupid bug.
2022-10-19 17:14:49 +09:00
Yukihiro "Matz" Matsumoto
bdb51d1af4
array.c (mrb_ary_push_m): adjust function order.
...
ary_modify() and ary_expand_capa() may cause garbage collection and may
make argv invalid (in the future).
2022-10-18 17:11:07 +09:00
Yukihiro "Matz" Matsumoto
3f286f1bfd
array.c: make ary_modify_check() an alias to mrb_check_frozen().
2022-10-17 21:59:22 +09:00
Yukihiro "Matz" Matsumoto
4cefb2cccd
class.c (mt_get): fix a bug regarding inline method cache.
2022-10-10 22:23:10 +09:00
Yukihiro "Matz" Matsumoto
5d13733352
vm.c (OP_ENTER): address fast path.
...
For method of fixed arguments only (no rest arguments, no keyword
arguments). Makes Fibonacci benchmark and ao_bench 4-5% faster.
2022-10-07 12:01:13 +09:00
dearblue
dbc78cd861
Added documentation for mrb_singleton_class()
2022-10-06 21:56:07 +09:00
Yukihiro "Matz" Matsumoto
268f6dcab3
numeric.c (mrb_float_to_integer): isinf/isnan takes any float values.
...
So don't need to cast to `float`, just use `mrb_float`.
2022-10-04 11:05:15 +09:00
Yukihiro "Matz" Matsumoto
62e0e3eebe
class.c (mrb_get_args_a): adjust spacing [ci skip]
2022-10-04 11:05:15 +09:00
Yukihiro "Matz" Matsumoto
b73802d437
vm.c (cipop): wrong callinfo shifts fixed; ref #5791
2022-09-28 16:57:11 +09:00
Yukihiro "Matz" Matsumoto
0c475708de
vm.c (cipop): use mrb_object_dead_p() to detect reclaimed block; #5791
2022-09-26 07:50:41 +09:00
Yukihiro "Matz" Matsumoto
993c8c1053
gc.c (final_marking_phase): move exception clearing after marking; #5789
2022-09-24 23:08:28 +09:00
Yukihiro "Matz" Matsumoto
d9061bd969
numeric.c: update documents [ci skip].
2022-09-23 22:13:28 +09:00
Yukihiro "Matz" Matsumoto
81f98a3925
vm.c (cipop): check type of the callinfo::blk; fix #5791
...
Since `callinfo::blk` is not marked in the GC, it may be reclaimed in
the sweep phase. When it reclaimed, it will become either (a) a non Proc
object, or (b) a Proc object that happen to have the same address.
For case (a), adding `b->tt == MRB_TT_PROC` check works. We should avoid
the following `MRB_PROC_STRICT_P()` and `MRB_PROC_ENV()` operations for
non Proc objects.
For case (b), `MRB_PROC_ENV(b) == CI_ENV(&c->ci[-1])` check should work.
Unrelated Proc objects should be filtered by the check.
We don't need to clear `callinfo::blk` by `NULL` because the callinfo
struct will be discarded afterward in the `cipop()` function.
2022-09-19 08:35:36 +09:00
Yukihiro "Matz" Matsumoto
5b62fbc0fc
array.c (mrb_ary_concat_m): Array#concat to take multiple arguments.
2022-09-19 08:25:00 +09:00
Yukihiro "Matz" Matsumoto
bd1310c9f9
gc.c (incremental_gc_finish): rename the function.
...
incremental_gc_until() are always called with MRB_GC_STATE_ROOT.
So no need to supply it from outside.
2022-09-17 16:43:06 +09:00
Yukihiro "Matz" Matsumoto
97a419f540
gc.c (clear_error_object): need to mark class of error objects; ref #5789
2022-09-13 22:20:34 +09:00
Yukihiro "Matz" Matsumoto
b5677bff1f
gc.c (final_marking_phase): clear error objects before sweep; close #5789
...
Some error objects are referenced from `mrb_state`, and previously they
are simply marked as root objects. But when they are not referenced from
other part of the program, they are no longer used at the current incarnation.
That means we can safely reclaim their child objects (their messages and
backtrace information).
2022-09-13 07:16:38 +09:00
Yukihiro "Matz" Matsumoto
966d90e182
src/readfloat.c: renamed from readflt.c
2022-09-05 07:30:13 +09:00
Yukihiro "Matz" Matsumoto
4669d43f50
error.h: move rbreak_tag definitions to src/vm.c.
2022-09-05 07:30:12 +09:00
Yukihiro "Matz" Matsumoto
eecb6cc080
vm.c (cipush): push block information in the callinfoa; fix #5786
2022-09-01 18:57:19 +09:00