summaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)Author
2020-11-18Merge pull request #5143 from ↵Yukihiro "Matz" Matsumoto
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-18Merge pull request #5145 from shuujii/remove-unused-MRubyBuild-enable_bintest=Yukihiro "Matz" Matsumoto
Remove unused `MRuby::Build#enable_{bin,}test=`
2020-11-18Merge pull request #5144 from hifoolno/masterYukihiro "Matz" Matsumoto
Check if irep->reps is NULL
2020-11-18Remove unused `MRuby::Build#enable_{bin,}test=`KOBAYASHI Shuji
The writers seem to be unnecessary because `MRuby::Build#enable_{bin,}test` are used from the beginning.
2020-11-18Check if irep->reps is NULLZhang Xiaohui
2020-11-18Use `mrb_int_value` instead of `mrb_fixnum_value` in `src/hash.c`KOBAYASHI Shuji
2020-11-18Retrieve `irep` from `proc` after `MRB_PROC_CFUNC_P` check; ref #5140Yukihiro "Matz" Matsumoto
2020-11-17Revert half of 9fbf0ef8.Yukihiro "Matz" Matsumoto
I misunderstand the meaning of #4483. Sorry.
2020-11-17Check division overflow (`MRB_INT_MIN` and `-1`).Yukihiro "Matz" Matsumoto
2020-11-17Merge pull request #5141 from ↵Yukihiro "Matz" Matsumoto
shuujii/fix-deprecated-set-env-command-error-on-GitHub-Actions Fix deprecated `set-env` command error on GitHub Actions [ci skip]
2020-11-17Fix deprecated `set-env` command error on GitHub Actions [ci skip]KOBAYASHI Shuji
I tried `$GITHUB_PATH` and `$GITHUB_ENV` instead of `set-env`, but for some reason path was not recognized, so I changed to using `ACTIONS_ALLOW_UNSECURE_COMMANDS`.
2020-11-17Overflown integers should not be fall back to float values.Yukihiro "Matz" Matsumoto
2020-11-17Detect overflow in `flo_shift()`.Yukihiro "Matz" Matsumoto
2020-11-17Refactoring integer ranges.Yukihiro "Matz" Matsumoto
- Remove `mrb_ssize` - Fix `MRB_FIXNUM_{MIN,MAX}` to 32 bits on `MRB_NAN_BOXING`
2020-11-17Scan all active C source files; ref 600e333Yukihiro "Matz" Matsumoto
In addition, `include/mruby.h` will be scanned for error class symbols.
2020-11-17Refactor integer division.Yukihiro "Matz" Matsumoto
2020-11-17Simplify `mrb_num_div_int()`.Yukihiro "Matz" Matsumoto
2020-11-16Allow `int` size combinations for `MRB_WORD_BOXING`.Yukihiro "Matz" Matsumoto
- `MRB_64BIT` and `MRB_INT32` - `MRB_32BIT` and `MRB_INT64`
2020-11-16Merge pull request #5137 from ↵Yukihiro "Matz" Matsumoto
shuujii/use-uintptr_t-instead-of-unsigned-long-in-include-mruby-boxing_word.h Use `uintptr_t` instead of `unsigned long` in `include/mruby/boxing_word.h`
2020-11-16Merge pull request #5139 from shuujii/avoid-undefined-behaviorYukihiro "Matz" Matsumoto
Avoid undefined behavior
2020-11-16Merge pull request #5138 from shuujii/simplify-obj_freeYukihiro "Matz" Matsumoto
Simplify `obj_free`
2020-11-16Avoid undefined behaviorKOBAYASHI Shuji
### 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-16Simplify `obj_free`KOBAYASHI Shuji
2020-11-16Use `uintptr_t` instead of `unsigned long` in `include/mruby/boxing_word.h`KOBAYASHI Shuji
`mrb_bool` on LLP64 environment seems to become false if, for example, `mrb_value` is a pointer whose lower 32 bits are 0.
2020-11-15Merge pull request #5135 from ↵Yukihiro "Matz" Matsumoto
shuujii/fix-paths-of-gem-files-to-be-scanned-for-presym Fix paths of gem files to be scanned for presym
2020-11-15Merge pull request #5134 from ↵Yukihiro "Matz" Matsumoto
shuujii/fix-that-large-integer-is-not-GCed-with-Word-boxing Fix that large integer is not GCed with Word-boxing
2020-11-15Fix paths of gem files to be scanned for presymKOBAYASHI Shuji
When building from outside `MRUBY_ROOT` (e.g. `rake -f`), gem files were not scanned.
2020-11-15Fix that large integer is not GCed with Word-boxingKOBAYASHI Shuji
### 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-15Fixed further wrong condition in overflow detection.Yukihiro "Matz" Matsumoto
2020-11-14Fixed wrong condition in `mrb_int_mul_overflow()`.Yukihiro "Matz" Matsumoto
2020-11-14Change the fallback `mrb_int_mul_overflow()`.Yukihiro "Matz" Matsumoto
2020-11-14Change the type of `rlen` to `uint8_t` in `mrb_irep`.Yukihiro "Matz" Matsumoto
2020-11-14Integer overflow in operations should cause `RangeError`.Yukihiro "Matz" Matsumoto
2020-11-14Allow full `mrb_int` operations in overflow detection.Yukihiro "Matz" Matsumoto
Fix overflow detection in integer operations with `MRB_WORD_BOXING`. This bug made `1073741824 == 1073741824+0` to be `false` on 32bit platforms.
2020-11-14Integer operation should result in Integer.Yukihiro "Matz" Matsumoto
Should raise `RangeError` if the operation overflows.
2020-11-14Scan source files only from `cdump` enabled gems.Yukihiro "Matz" Matsumoto
2020-11-14Merge pull request #5132 from ↵Yukihiro "Matz" Matsumoto
shuujii/remove-redundant-command-execution-in-header_search_paths Remove redundant command execution in `header_search_paths`
2020-11-14Remove redundant command execution in `header_search_paths`KOBAYASHI Shuji
There is no need to execute command in duplicate for the same reason as #5128.
2020-11-14Merge pull request #5131 from ↵Yukihiro "Matz" Matsumoto
shuujii/remove-unused-constant-in-lib-mruby-build-command.rb Remove unused constant in `lib/mruby/build/command.rb`
2020-11-14Merge pull request #5130 from ↵Yukihiro "Matz" Matsumoto
shuujii/workaround-to-build-mirb-with-Homebrews-readline-on-Mac Workaround to build `mirb` with Homebrew's readline on Mac; fix #4537
2020-11-14Remove unused constant in `lib/mruby/build/command.rb`KOBAYASHI Shuji
2020-11-14Workaround to build `mirb` with Homebrew's readline on Mac; fix #4537KOBAYASHI Shuji
2020-11-14Merge pull request #5128 from ↵Yukihiro "Matz" Matsumoto
shuujii/simplify-MRubyCommand-_run-to-avoid-duplicated-compilation Simplify `MRuby::Command#_run` to avoid duplicated compilation
2020-11-14Merge pull request #5129 from dearblue/mrb_mt_foreachYukihiro "Matz" Matsumoto
Don't use private structs with `mrb_mt_foreach()`
2020-11-14Don't use private structs with `mrb_mt_foreach()`dearblue
The `MRB_API` function `mrb_mt_foreach()` previously used the private structure `struct mt_elem`. Therefore, use `mrb_method_t` instead.
2020-11-13Simplify `MRuby::Command#_run` to avoid duplicated compilationKOBAYASHI Shuji
ref: https://github.com/mruby/mruby/pull/4959#discussion_r402086196 Compiles twice because it falls back to `build.filename(command)` when `command` fails. This process was added at 9968af4 to support `ccache gcc` etc. At that time, it seems that it was necessary because `build.filename(command)` quoted the whole `command`, but now it does not quote, so we can just run `build.filename(command)`. ### Example ```console $ echo 1 > src/a.c $ rake -v ``` #### Before this patch: ```console (snip) gcc -std=gnu99 -g -O3 -Wall -Wundef -Wdeclaration-after-statement -Werror-implicit-function-declaration -Wwrite-strings -I"/mruby/mruby/include" -MMD -o "/mruby/mruby/build/host/src/a.o" -c "/mruby/mruby/src/a.c" /mruby/mruby/src/a.c:1:1: error: expected identifier or '(' 1 ^ 1 error generated. gcc -std=gnu99 -g -O3 -Wall -Wundef -Wdeclaration-after-statement -Werror-implicit-function-declaration -Wwrite-strings -I"/mruby/mruby/include" -MMD -o "/mruby/mruby/build/host/src/a.o" -c "/mruby/mruby/src/a.c" /mruby/mruby/src/a.c:1:1: error: expected identifier or '(' 1 ^ 1 error generated. rake aborted! (snip) ``` #### After this patch: ```console (snip) gcc -std=gnu99 -g -O3 -Wall -Wundef -Wdeclaration-after-statement -Werror-implicit-function-declaration -Wwrite-strings -I"/mruby/mruby/include" -MMD -o "/mruby/mruby/build/host/src/a.o" -c "/mruby/mruby/src/a.c" /mruby/mruby/src/a.c:1:1: error: expected identifier or '(' 1 ^ 1 error generated. rake aborted! (snip) ```
2020-11-13Merge pull request #5127 from ↵Yukihiro "Matz" Matsumoto
shuujii/include-size-of-iv-table-in-ObjectSpace.memsize_of-to-Hash-object Include size of iv table in `ObjectSpace.memsize_of` to `Hash` object
2020-11-13Include size of iv table in `ObjectSpace.memsize_of` to `Hash` objectKOBAYASHI Shuji
2020-11-13Merge pull request #5126 from ↵Yukihiro "Matz" Matsumoto
shuujii/use-enable_sanitizer-to-simplify-build_config-clang-asan.rb Use `enable_sanitizer` to simplify `build_config/clang-asan.rb`
2020-11-13Merge pull request #5125 from ↵Yukihiro "Matz" Matsumoto
shuujii/rename-mrb_os_memsize_of_hash_table-to-mrb_hash_memsize Rename `mrb_os_memsize_of_hash_table` to `mrb_hash_memsize`