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
Zhang Xiaohui
d3e17eedee
Check if irep->reps is NULL in lv_defined_p
2020-11-18 17:07:20 +08:00
Yukihiro "Matz" Matsumoto
e0df303547
Merge pull request #5143 from shuujii/use-mrb_int_value-instead-of-mrb_fixnum_value-in-src-hash.c
...
Use `mrb_int_value` instead of `mrb_fixnum_value` in `src/hash.c`
2020-11-18 17:29:34 +09:00
Zhang Xiaohui
eca6266524
Check if irep->reps is NULL
2020-11-18 14:41:27 +08:00
KOBAYASHI Shuji
4cea788970
Use mrb_int_value instead of mrb_fixnum_value in src/hash.c
2020-11-18 15:13:42 +09:00
Yukihiro "Matz" Matsumoto
7c80edb577
Revert half of 9fbf0ef8.
...
I misunderstand the meaning of #4483 . Sorry.
2020-11-17 22:47:25 +09:00
Yukihiro "Matz" Matsumoto
a8cd364ece
Detect overflow in flo_shift().
2020-11-17 16:20:53 +09:00
Yukihiro "Matz" Matsumoto
9fbf0ef886
Refactoring integer ranges.
...
- Remove `mrb_ssize`
- Fix `MRB_FIXNUM_{MIN,MAX}` to 32 bits on `MRB_NAN_BOXING`
2020-11-17 12:41:10 +09:00
Yukihiro "Matz" Matsumoto
354934d398
Refactor integer division.
2020-11-17 07:10:31 +09:00
Yukihiro "Matz" Matsumoto
37a1884749
Simplify mrb_num_div_int().
2020-11-17 00:24:43 +09:00
Yukihiro "Matz" Matsumoto
2609f0a2b3
Merge pull request #5139 from shuujii/avoid-undefined-behavior
...
Avoid undefined behavior
2020-11-16 22:49:03 +09:00
KOBAYASHI Shuji
7c470e25b8
Avoid undefined behavior
...
### ASAN report (`MRB_INT32`)
```console
$ bin/mruby -ve '-0x40000000'
mruby 3.0.0preview (2020-10-16)
00001 NODE_SCOPE:
00001 NODE_BEGIN:
00001 NODE_NEGATE:
00001 NODE_INT 40000000 base 16
irep 0x6070000001e0 nregs=2 nlocals=1 pools=0 syms=0 reps=0 iseq=9
file: -e
/mruby/src/codedump.c:173:49: runtime error: left shift of 49152 by 16 places cannot be represented in type 'int'
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /mruby/src/codedump.c:173:49 in
1 000 OP_LOADI32 R1 -1073741824
1 006 OP_RETURN R1
1 008 OP_STOP
/mruby/src/vm.c:1138:7: runtime error: left shift of 49152 by 16 places cannot be represented in type 'mrb_int' (aka 'int')
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /mruby/src/vm.c:1138:7 in
```
2020-11-16 20:20:30 +09:00
KOBAYASHI Shuji
cbc3dbedb4
Simplify obj_free
2020-11-16 16:40:37 +09:00
KOBAYASHI Shuji
acc114003b
Fix that large integer is not GCed with Word-boxing
...
### Example (32-bit Word-boxing)
```ruby
# example.rb
int_count = ObjectSpace.count_objects[:T_INTEGER]||0
int = 1<<30
p (ObjectSpace.count_objects[:T_INTEGER]||0) - int_count
int = nil
GC.start
p (ObjectSpace.count_objects[:T_INTEGER]||0) - int_count
```
#### Before this patch:
```console
$ bin/mruby example.rb
1
1
```
#### After this patch:
```console
$ bin/mruby example.rb
1
0
```
2020-11-15 16:45:03 +09:00
Yukihiro "Matz" Matsumoto
8a5dfa92ab
Integer overflow in operations should cause RangeError.
2020-11-14 20:44:07 +09:00
Yukihiro "Matz" Matsumoto
19450df41e
Integer operation should result in Integer.
...
Should raise `RangeError` if the operation overflows.
2020-11-14 19:38:27 +09:00
dearblue
368f8a5da6
Don't use private structs with mrb_mt_foreach()
...
The `MRB_API` function `mrb_mt_foreach()` previously used the private structure `struct mt_elem`.
Therefore, use `mrb_method_t` instead.
2020-11-14 11:30:34 +09:00
KOBAYASHI Shuji
292a096118
Include size of iv table in ObjectSpace.memsize_of to Hash object
2020-11-13 16:59:45 +09:00
KOBAYASHI Shuji
ac4eb99629
Rename mrb_os_memsize_of_hash_table to mrb_hash_memsize
...
* The term `hash_table` can be misleading because the return value of this
function includes memory usage of entire `Hash` object, including not only
hash table part but also entry list part, etc.
* This function takes a `Hash` object as a receiver and is defined in
`src/hash.c`, so it is natural to have a `mrb_hash_` prefix.
2020-11-13 16:18:32 +09:00
Yukihiro "Matz" Matsumoto
af13cfb7d5
Merge pull request #5122 from shuujii/change-name-and-usage-of-presym-macros
...
Change name and usage of presym macros
2020-11-13 14:05:26 +09:00