Yukihiro "Matz" Matsumoto
c1c8c25e70
Merge pull request #5223 from shuujii/ensure-initialization-of-RVALUE_zero-in-mrb_obj_alloc
...
Ensure initialization of `RVALUE_zero` in `mrb_obj_alloc`
2020-12-15 22:32:32 +09:00
John Bampton
4fa3359d44
refactor: remove trailing whitespace from C, Header, Ruby and YAML files
...
Lint
2020-12-15 19:44:02 +10:00
KOBAYASHI Shuji
d5cb54d4df
Ensure initialization of RVALUE_zero in mrb_obj_alloc
...
Union initialization initializes the first member. The first member of
`RVALUE` is `struct free_obj`, but because it is only 4-words, it seems that
initialization after the 5th word is not ensured.
Therefore, I created 6-words `struct RVALUE_initializer` for initialization
and made it the first member.
2020-12-15 17:48:06 +09:00
John Bampton
940dec5e7d
Fix spelling
2020-12-13 18:38:22 +10:00
Yukihiro "Matz" Matsumoto
116e128b1a
Remove positive check for unsigned integer; close #5218
2020-12-12 18:25:47 +09:00
Yukihiro "Matz" Matsumoto
ed29d74bfd
Make type of pc arguments in debug.c consistent; close #5218
...
They used to be `size_t`, `uint32_t` and `ptrdiff_t`. Now all of them
made to be `uint32_t`.
2020-12-07 13:59:00 +09:00
Yukihiro "Matz" Matsumoto
00d1fd0e6f
Fixed a bug with modules prepended many times.
...
Adjust insertion point in `fix_prepend_module()`.
2020-12-05 08:01:05 +09:00
Yukihiro "Matz" Matsumoto
3972df57fe
Make Module#include and Module#prepend behave like Ruby3.0.
...
Module#include and Module#prepend now affect classes and modules
that have already included or prepended the receiver, mirroring the
behavior if the arguments were included in the receiver before
the other modules and classes included or prepended the receiver.
```ruby
class C; end
module M1; end
module M2; end
C.include M1
M1.include M2
p C.ancestors #=> [C, M1, M2, Object, Kernel, BasicObject]
```
2020-12-04 22:02:37 +09:00
Yukihiro "Matz" Matsumoto
dd0715fd58
Print implicit operands for some instructions.
2020-12-02 09:44:34 +09:00
Yukihiro "Matz" Matsumoto
25985876b8
Remove a newline.
2020-12-02 09:44:07 +09:00
KOBAYASHI Shuji
5c205e6ea1
Revert "Create presym files for each build target" ( 58ba883e)
...
Due to the above changes, it may not work with the existing build
configurations in cross-compilation (even if we can build without presym),
therefore revert it once (ref https://github.com/mruby/mruby/pull/5202#issuecomment-735412643 ). Sorry for the lack of consideration.
2020-12-01 12:16:55 +09:00
Yukihiro "Matz" Matsumoto
98d5aa8d74
Fix OP_JMPUW address bug.
2020-12-01 00:25:09 +09:00
Yukihiro "Matz" Matsumoto
1c361f8a22
Merge pull request #5206 from dearblue/dumpirep
...
Improves dump irep
2020-11-30 23:21:19 +09:00
dearblue
3bc9453c9a
Integrate the output of the catch handler table into iseq
...
Alleviates confusingness.
ref #5203
2020-11-30 22:56:59 +09:00
dearblue
a56b601f56
Fixed irep size measurement by dump; ref #5203
2020-11-30 22:56:41 +09:00
dearblue
0ecb0fd97b
Fixed print catch handler address in codedump; ref #5200
...
It became 32 bits in #5200 , but only the upper 16 bits were printed.
2020-11-30 22:36:26 +09:00
KOBAYASHI Shuji
82f3e4d31b
Use MRB_SYM in src/gc.c
2020-11-29 19:01:48 +09:00
Yukihiro "Matz" Matsumoto
d4439479cf
Merge pull request #5203 from komainu8/fix-heap-buffer-overflow
...
Fix heap buffer overflow when dump irep
2020-11-29 16:24:30 +09:00
Horimoto Yasuhiro
df13d418c3
Fix heap buffer overflow when dump irep
...
Currently, the size of writing in heap by write_irep_record() is
bigger than The size that is calculated by get_irep_record_size.
Therefore, irep is dumped over the size of allocating memory when we
execute dump_irep().
2020-11-29 15:57:44 +09:00
dearblue
b0cea30f32
Change the catch handler address to 32 bits
...
Follow commit 7150c67539 .
2020-11-29 13:48:45 +09:00
KOBAYASHI Shuji
58ba883ee9
Create presym files for each build target
...
Previously, presym files were always created in `build/{presym,presym.inc}`.
However, this constraint is inconvenient because it is common to use
multiple build configurations and build targets in a single mruby tree.
Therefore, change to create presym file for each build target.
2020-11-26 19:05:07 +09:00
Yukihiro "Matz" Matsumoto
63d4e8eca2
Fix a bug in find_symbol(); fix #5192
2020-11-26 13:18:45 +09:00
Yukihiro "Matz" Matsumoto
7150c67539
Make OP_JMP* operand address to be relative.
...
Jump target address is `operand (16bit)` + `address of next instruction`.
In addition, `ilen` was made `uint32_t` so that `iseq` length limitation
of 65536 is removed. Only jump target address should be within signed
16bit (-32768 .. 32767).
2020-11-26 10:34:31 +09:00
Yukihiro "Matz" Matsumoto
a33f9d7b65
Small refactoring regarding symbols for clarity.
2020-11-26 09:42:08 +09:00
Yukihiro "Matz" Matsumoto
50b57f6ff1
Include mruby.h instead of mrbconf.h directly.
2020-11-26 09:14:12 +09:00
Yukihiro "Matz" Matsumoto
2daf1987f9
Avoid memory leak when mrb_read_irep() fails.
2020-11-26 09:04:30 +09:00
Yukihiro "Matz" Matsumoto
71f9add1c5
Move inline iseq in array.c to array.rb.
...
There's no efficiency difference since `cdump` is implemented.
2020-11-25 23:14:38 +09:00
KOBAYASHI Shuji
a7b50be35b
Fix C source compilation with MRB_USE_ALL_SYMBOLS; ref #5187
...
However, compiling by `mrbc` fails with another issue (#5116 ).
2020-11-25 10:17:52 +09:00
Yukihiro "Matz" Matsumoto
4d21a68d35
Add #include <mrbconf.h> at the head of fmt_fp.c; #5185
2020-11-24 20:01:24 +09:00
Yukihiro "Matz" Matsumoto
9e114fc913
Merge pull request #5186 from shuujii/optimize-presym_find
...
Optimize `presym_find`
2020-11-24 16:58:09 +09:00
Yukihiro "Matz" Matsumoto
e55abd2390
Fix compiler errors from MRB_NO_FLOAT; #5185
...
Also added `no-float.rb` target in `build_config`.
2020-11-24 16:54:39 +09:00
KOBAYASHI Shuji
db00fb238b
Optimize presym_find
...
Chang to compare string length first.
### Benchmark
#### Code
* https://github.com/shuujii/mruby-presym_find-benchmark
#### Result
```console
Previous: 10.240772M i/s (25M times in 2.441222s)
New: 16.412985M i/s (25M times in 1.523184s)
```
2020-11-24 16:30:52 +09:00
Wataru Ashihara
01dc2265ff
Fix unintended variable shadowing
2020-11-23 14:48:14 +09:00
Yukihiro "Matz" Matsumoto
39a11f323e
Remove mrb_str_buf_new() and MRB_STR_BUF_MIN_SIZE; close #5171
2020-11-22 22:54:21 +09:00
dearblue
fd3576e888
Fix GC mark leaks for MRB_TT_BREAK; fix #5168
2020-11-22 15:09:01 +09:00
KOBAYASHI Shuji
1864816d1e
Fix size of local variable array in struct dumped file
2020-11-22 13:32:45 +09:00
Yukihiro "Matz" Matsumoto
e02d0ff78c
Merge pull request #5167 from dearblue/singleton-method
...
Improved `Object#define_singleton_method`
2020-11-22 00:02:34 +09:00
dearblue
b2bfcabae2
Improved Object#define_singleton_method
...
Integrate the implementation with `Module#define_method`.
- Introduce the internal function `mrb_mod_define_method_m()` (no static)
- The `Object#define_singleton_method` method can now accept a second argument
2020-11-21 22:31:13 +09:00
KOBAYASHI Shuji
3d056d084a
Rename MRB_{ENABLE,DISABLE}_ to MRB_{USE,NO}_; close #5163
...
| Previous Name | New Name |
|------------------------------|-------------------------|
| MRB_ENABLE_ALL_SYMBOLS | MRB_USE_ALL_SYMBOLS |
| MRB_ENABLE_SYMBOLL_ALL | MRB_USE_ALL_SYMBOLS |
| MRB_ENABLE_CXX_ABI | MRB_USE_CXX_ABI |
| MRB_ENABLE_CXX_EXCEPTION | MRB_USE_CXX_EXCEPTION |
| MRB_ENABLE_DEBUG_HOOK | MRB_USE_DEBUG_HOOK |
| MRB_DISABLE_DIRECT_THREADING | MRB_NO_DIRECT_THREADING |
| MRB_DISABLE_STDIO | MRB_NO_STDIO |
| ENABLE_LINENOISE | MRB_USE_LINENOISE |
| ENABLE_READLINE | MRB_USE_READLINE |
| DISABLE_MIRB_UNDERSCORE | MRB_NO_MIRB_UNDERSCORE |
| DISABLE_GEMS | MRB_NO_GEMS |
* `MRB_ENABLE_SYMBOLL_ALL` seems to be a typo, so it is fixed.
* `MRB_` prefix is added to those without.
* The previous names can also be used for compatibility.
2020-11-21 21:14:40 +09:00
Yukihiro "Matz" Matsumoto
c6c18c32b0
Merge pull request #5162 from shuujii/move-some-.rake-files-to-tasks-directory-for-consistency
...
Move some `.rake` files to `tasks` directory for consistency
2020-11-21 16:07:03 +09:00
Yukihiro "Matz" Matsumoto
00751ccbcd
Reserve OP_SENDVK for the future keyword arguments like Ruby3.0.
2020-11-21 15:50:17 +09:00
Yukihiro "Matz" Matsumoto
59e581ed78
Fix infinite loop bug from super when method is prepended.
2020-11-21 15:50:16 +09:00
Yukihiro "Matz" Matsumoto
a7bcbd8bdc
Fix module order of #include; ruby-bug:7844
2020-11-21 15:50:16 +09:00
dearblue
7f9b4e056d
Unable for the MRB_TT_CPTR object to have a singleton class
...
This object is treated as an immediate value.
2020-11-21 15:36:56 +09:00
KOBAYASHI Shuji
551bf0c635
Move some .rake files to tasks directory for consistency
2020-11-21 15:36:46 +09:00
Yukihiro "Matz" Matsumoto
1974aa0f72
Update Float#to_s to keep trailing zero as CRuby does; ref 68cebb6
2020-11-21 14:38:13 +09:00
KOBAYASHI Shuji
aaa12911e2
Refactor src/mruby_core.rake
2020-11-20 17:55:26 +09:00
Yukihiro "Matz" Matsumoto
a211a326de
Revert "Check if irep->reps is NULL in lv_defined_p"
2020-11-18 18:47:46 +09:00
Yukihiro "Matz" Matsumoto
e7d0baaf3b
Use mrb_int_value() instead of mrb_fixnum_value(); fix #5142
2020-11-18 18:38:53 +09:00
Yukihiro "Matz" Matsumoto
b9c80a5357
Merge pull request #5147 from hifoolno/patch1
...
Check if irep->reps is NULL in lv_defined_p
2020-11-18 18:13:31 +09:00