dearblue
8ecfacefca
Prohibit Class#allocate in a different way
...
The method introduced by #5979 causes a fault by swapping classes.
```console
% bin/mruby -e 'Method = Proc; p Object.method(:inspect)'
zsh: segmentation fault (core dumped) bin/mruby -e 'Method = Proc; p Object.method(:inspect)'
```
After applying this patch, a `TypeError` exception will be raised.
```console
% bin/mruby -e 'Method = Proc; p Object.method(:inspect)'
trace (most recent call last):
[1] -e:1
-e:1:in method: allocation failure of Proc (TypeError)
```
However, if the `mrb_vtype` is the same object, the same care must still be taken as before.
```console
% bin/mruby -e 'Method = Binding; p method(:puts).eval("12345")'
trace (most recent call last):
[1] -e:1
-e:1:in eval: wrong argument type nil (expected Proc) (TypeError)
```
2023-12-22 21:59:34 +09:00
Yukihiro "Matz" Matsumoto
fa75865a33
Merge pull request #6121 from dearblue/separate-breaks
...
Separate unwinding process for `break` / `return`
2023-12-22 16:12:12 +09:00
Yukihiro "Matz" Matsumoto
97b522d778
src/fmt_fp.c: change condition order for memory safety
2023-12-22 15:35:21 +09:00
Yukihiro "Matz" Matsumoto
34c5d96e86
allof.c: mrb_default_allocf() definition in the separate file
...
So that the user can define their own version of mrb_default_alloc
function to override memory allocation of mruby.
2023-12-21 15:28:04 +09:00
dearblue
859f1b3002
Separate unwinding process for break / return
2023-12-20 21:54:53 +09:00
Yukihiro "Matz" Matsumoto
992bd49344
Merge pull request #6116 from dearblue/send-branch
...
Improve branching in the execution part of the `OP_SEND` block
2023-12-18 12:17:39 +09:00
Yukihiro "Matz" Matsumoto
e8a36235d8
Merge pull request #6115 from dearblue/loop-inclusion
...
Replace `for` and `CHECKPOINT` block comprehensions
2023-12-18 12:16:38 +09:00
dearblue
990e18ad59
Improve branching in the execution part of the OP_SEND block
...
The `MRB_METHOD_CFUNC_P()` macro contains several branches, which will be replaced by simple branches.
2023-12-15 21:46:00 +09:00
dearblue
7144eab350
Replace for and CHECKPOINT block comprehensions
...
I think it will make the eyes less tired for a process flow.
2023-12-15 21:46:00 +09:00
dearblue
e9904ddb2a
Move L_RAISE and L_BREAK blocks to OP_RAISEIF
...
`OP_RAISEIF` should be easier to relate than `OP_RETURN`.
2023-12-15 21:46:00 +09:00
Yukihiro "Matz" Matsumoto
5311d1aa1b
Merge pull request #6106 from dearblue/fiber-limits-ease
...
Ease fiber limitations
2023-12-13 16:10:42 +09:00
Yukihiro "Matz" Matsumoto
ae8dcb82ba
vm.c: CINFO_SKIP should not be called with prev_jmp == NULL
...
We have added assertion to ensure.
2023-12-12 16:49:11 +09:00
dearblue
38c7936c94
Remove unreachable code in OP_R_BREAK
...
Termination of fiber by `break` results in a `LocalJumpError`, so the indicated code will not be executed.
2023-12-11 21:25:08 +09:00
dearblue
73c8330cbd
RBreak remembers the CI location
...
It is now possible to specify return destination directly.
This allows callinfo to distinguish between calls to the same proc object.
At the same time, the `Kernel#catch` method is adjusted.
By removing the previously required double lambda object, the REnv object is no longer created as well.
2023-12-07 21:33:14 +09:00
Yukihiro "Matz" Matsumoto
5a258f0872
Merge pull request #6109 from dearblue/fix-6108
...
Needs `cipop()` before crossing the C boundary
2023-12-06 15:57:16 +09:00
Yukihiro "Matz" Matsumoto
9c2af6aaed
load.c: replace mrbc_ prefix by mrb_ccontext
2023-12-06 15:29:02 +09:00
dearblue
ca9e8d91e4
Needs cipop() before crossing the C boundary
...
fix #6108
2023-12-05 22:03:38 +09:00
dearblue
42308c42b5
Fix CI misalignment between Fiber#resume and Fiber.yield
...
When a fiber switched by `Fiber.yield` is resumed by `Fiber#resume` by C, it is necessary to pop CI with `fiber_switch()`.
Previously, CI misalignment caused inconsistencies, including crashes, on the next `Fiber#resume`.
2023-12-04 22:32:57 +09:00
dearblue
568309b25a
Propagating exceptions to the caller of Fiber#resume
...
Need to return control from `mrb_vm_exec()` to the caller if `Fiber#resume` was done from C.
2023-12-04 22:32:57 +09:00
Yukihiro "Matz" Matsumoto
87453fb70b
vm.c (CI_PROC_SET): consider alias proc
2023-12-03 22:38:31 +09:00
Yukihiro "Matz" Matsumoto
e8da16cdf5
vm.c (exec_irep): need to support aliases
2023-12-03 22:38:30 +09:00
Yukihiro "Matz" Matsumoto
ccdd81eb69
Merge pull request #6101 from dearblue/unwinding
...
Reorganization of unwinding at `break` / `return`.
2023-11-22 08:11:15 +09:00
Yukihiro "Matz" Matsumoto
f2dc76e3b5
Change alias handling to avoid using mid in Env; ref 6098
...
Since `Env` objects are shared by Blocks/Procs in the same context,
making multiple aliases in one context screws up with alias names.
New implementation uses alias bodies (Procs) to refer new names.
As a side effect, `__callee__` stop working correctly for aliases.
To fix this `__callee__` problem, we need to keep alias method names in
`callinfo`, which consumes more memory. We are wondering that is worth
the compatibility.
2023-11-21 09:37:17 +09:00
Yukihiro "Matz" Matsumoto
9c1c9ba8e5
vm.c: rename local variable m to p
...
`m` usually stands for a method but this one was `struct RProc*`.
2023-11-19 23:21:05 +09:00
Yukihiro "Matz" Matsumoto
91b4da3a2b
class.c: keep alias flag in proc object; fix #6098
2023-11-16 17:18:28 +09:00
Yukihiro "Matz" Matsumoto
9959d4fc66
range.c: use presym for symbol initialization
2023-11-16 16:30:40 +09:00
Yukihiro "Matz" Matsumoto
a94005b740
range.c: use presym to initialize Range class
2023-11-16 16:27:57 +09:00
dearblue
2e881d3297
Reorganization of unwinding at break / return.
...
The unwinding process that has been done at each point in time is now done in a merged block after looking for the last ci to `break` / `return`.
2023-11-12 20:39:33 +09:00
Yukihiro "Matz" Matsumoto
76d0ff9a45
error.c: use presym for error initialization
2023-11-11 23:49:32 +09:00
Yukihiro "Matz" Matsumoto
8e6f4a79a8
hash.c: use presym to initialize Hash class
2023-11-11 23:48:31 +09:00
Yukihiro "Matz" Matsumoto
df1d397da5
numeric.c: use presym to initialize numeric classes
2023-11-11 23:48:31 +09:00
Yukihiro "Matz" Matsumoto
5084716e6b
class.c: use presym to undefine Module methods
2023-11-11 23:48:23 +09:00
Yukihiro "Matz" Matsumoto
d5a69ac8c7
proc.c: use presym to initialize Proc class
2023-11-07 21:40:45 +09:00
Yukihiro "Matz" Matsumoto
e41bbaa67a
class.c: move Proc class allocation to proc.c
2023-11-07 21:40:45 +09:00
Yukihiro "Matz" Matsumoto
eb906bd4c1
array.c: use presyms to define the class
2023-11-07 21:40:44 +09:00
Yukihiro "Matz" Matsumoto
1dec82d82f
object.c: use presyms to define classes
2023-11-07 21:40:44 +09:00
Yukihiro "Matz" Matsumoto
4fd63cfb9d
kernel.c: use presym to define a module
2023-11-07 21:40:44 +09:00
Yukihiro "Matz" Matsumoto
bc012deef9
object.c (mrb_eql): avoid mrb_funcall_argv() when possible
2023-11-02 13:20:10 +09:00
Yukihiro "Matz" Matsumoto
7db4050040
enum.c: use presym
2023-11-02 13:15:45 +09:00
Yukihiro "Matz" Matsumoto
1e3d47760f
Merge pull request #6090 from LanzaSchneider/patch-1
...
fix(class.c): typo in format specifiers
2023-11-02 08:20:39 +09:00
Yukihiro "Matz" Matsumoto
8708186692
Merge pull request #6091 from dearblue/binding.5
...
Fixed acquisition of wrong target class in `Kernel#binding`
2023-11-01 23:05:50 +09:00
Yukihiro "Matz" Matsumoto
c99b67db65
gc.c: use presym for GC initialization
2023-11-01 22:24:57 +09:00
Yukihiro "Matz" Matsumoto
c080d16150
string.c: use presym to define String class
2023-11-01 22:23:35 +09:00
Yukihiro "Matz" Matsumoto
571cb54f38
compar.c: remove unused file
2023-11-01 22:21:59 +09:00
dearblue
0b25c9d224
Fixed acquisition of wrong target class in Kernel#binding
...
fixed #6089
2023-10-28 18:24:41 +09:00
Lanza
4ae0bacc6e
fix(class.c): typo in format specifiers
2023-10-28 13:47:05 +08:00
Yukihiro "Matz" Matsumoto
ac73793a8f
range.c: use mrb_define_method_id() which directly use symbols
2023-10-25 22:01:54 +09:00
Yukihiro "Matz" Matsumoto
7a08c7042f
string.c: move __ENCODING__ from kernel.c
2023-10-25 15:05:10 +09:00
Yukihiro "Matz" Matsumoto
0443f14fd0
array.c,hash.c,numeric.c,string.c: use mrb_define_method_id()
...
For primary class libraries.
2023-10-23 15:23:08 +09:00
Yukihiro "Matz" Matsumoto
8ad825dc3b
class.c,kernel.c,object.c: use mrb_define_method_id()
...
Instead of mrb_define_method(), so that symbol resolution can be done in
compile-time.
2023-10-23 15:18:26 +09:00