summaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)Author
2021-10-08codegen.c: peephole optimize `OP_MOVE` after `OP_ARRAY` or `OP_HASH`.Yukihiro "Matz" Matsumoto
When the length operand is zero, we don't need `OP_MOVE` but adjust the destination operand instead.
2021-10-07Merge pull request #5554 from ↵Yukihiro "Matz" Matsumoto
mruby/dependabot/github_actions/github/super-linter-4.8.1 build(deps): bump github/super-linter from 4.8.0 to 4.8.1
2021-10-06codedump.c: remove trailing extra newline.Yukihiro "Matz" Matsumoto
The bug was introduced in 8be78bd.
2021-10-05io.c: hide internal method names in backtrace.Yukihiro "Matz" Matsumoto
2021-10-04build(deps): bump github/super-linter from 4.8.0 to 4.8.1dependabot[bot]
Bumps [github/super-linter](https://github.com/github/super-linter) from 4.8.0 to 4.8.1. - [Release notes](https://github.com/github/super-linter/releases) - [Changelog](https://github.com/github/super-linter/blob/main/docs/release-process.md) - [Commits](https://github.com/github/super-linter/compare/v4.8.0...v4.8.1) --- updated-dependencies: - dependency-name: github/super-linter dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]>
2021-10-04codegen.c: no `OP_ARGARY` is needed here.Yukihiro "Matz" Matsumoto
2021-10-03mruby/ops.h: add new instructions `OP_GETIDX` and `OP_SETIDX`.Yukihiro "Matz" Matsumoto
Which represent `obj[int]` and `obj[int]=val` respectively where `obj` is either `string`, `array` or `hash`, so that index access could be faster. When `obj` is not assumed type or `R(a+1)` is not integer, the instructions fallback to method calls.
2021-10-02Merge branch 'dearblue-inline-struct-gem'Yukihiro "Matz" Matsumoto
2021-10-02Merge branch 'inline-struct-gem' of https://github.com/dearblue/mruby into ↵Yukihiro "Matz" Matsumoto
dearblue-inline-struct-gem
2021-10-01SECURITY.md: add scope description.Yukihiro "Matz" Matsumoto
2021-09-30TODO.md: update.Yukihiro "Matz" Matsumoto
2021-09-30dreamcast_shelf.rb: remove unnecessary gem lines.Yukihiro "Matz" Matsumoto
- `mruby-binding-core` should be handle through dependency - `mruby-inline-struct` is only for tests
2021-09-30value.h: introduce `MRB_TT_STRUCT` for `mruby-struct`.Yukihiro "Matz" Matsumoto
2021-09-28Merge pull request #5553 from ↵Yukihiro "Matz" Matsumoto
mruby/dependabot/github_actions/github/super-linter-4.8.0 build(deps): bump github/super-linter from 4.7.3 to 4.8.0
2021-09-28build(deps): bump github/super-linter from 4.7.3 to 4.8.0dependabot[bot]
Bumps [github/super-linter](https://github.com/github/super-linter) from 4.7.3 to 4.8.0. - [Release notes](https://github.com/github/super-linter/releases) - [Changelog](https://github.com/github/super-linter/blob/master/docs/release-process.md) - [Commits](https://github.com/github/super-linter/compare/v4.7.3...v4.8.0) --- updated-dependencies: - dependency-name: github/super-linter dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]>
2021-09-27parse.y: `__ENCODING__` should be determined in run-time; fix #5552Yukihiro "Matz" Matsumoto
It used to be compiled to the static string in the compiler. But the encoding status actually depends on the runtime configuration. A new method `Kernel#__ENCODING__` is introduced to implement the feature.
2021-09-26codegen.c: should not `loop_push()` before constant folding.Yukihiro "Matz" Matsumoto
Otherwise, the following code will crash: ```ruby 1.times{{}until 1; break} ```
2021-09-25mrbconf.h: rename a configuration macro for no truncate floats.Yukihiro "Matz" Matsumoto
Rename `MRB_WORDBOX_USE_HEAP_FLOAT` to `MRB_WORDBOX_NO_FLOAT_TRUNCATE'.
2021-09-24Revert "vm.c: add assertions instead of `mrb_ensure_hash_type()`."Yukihiro "Matz" Matsumoto
This reverts commit 913a0a5a036664ab0d12a1af40b652412301c89f. In some cases, `OP_HASHADD` operand may not be `Hash`. We should check explicitly in those cases.
2021-09-24codegen.c: refactor `NODE_WHILE` and `NODE_UNTIL`.Yukihiro "Matz" Matsumoto
2021-09-24codegen.c: add short circuit constant folding for `NODE_AND`, `NODE_OR`.Yukihiro "Matz" Matsumoto
2021-09-24codegen.c: refactor `NODE_IF` generation for boolean constants.Yukihiro "Matz" Matsumoto
In addition, add `NODE_SYM` for always true expression.
2021-09-23codegen.c: need to check `no_peephole()` before constant folding.Yukihiro "Matz" Matsumoto
2021-09-23codegen.c: separate maximum stack size from `GEN_LIT_ARY_MAX`.Yukihiro "Matz" Matsumoto
2021-09-22error.c: stop calling `initialize` from VM exceptions.Yukihiro "Matz" Matsumoto
The invocation of `initialize` hook can cause infinite recursion too easily. We stop invoking the method for safety, at the cost of less flexibility. The `initialize` methods (e.g. ones defined in `mrblib/10error.rb`) are called only from `NoMethodError.new(args..)` forms.
2021-09-21vm.c: add assertions instead of `mrb_ensure_hash_type()`.Yukihiro "Matz" Matsumoto
2021-09-20Create SECURITY.mdYukihiro "Matz" Matsumoto
2021-09-20Update `struct` initializer to work with relatively older `C++`.Yukihiro "Matz" Matsumoto
2021-09-20codedump.c: add cosmetic tabs before variable labels.Yukihiro "Matz" Matsumoto
2021-09-20codegen.c (gen_addsub): use `mrb_int_sub_overflow()`.Yukihiro "Matz" Matsumoto
2021-09-20codegen.c: avoid constant folding `OP_LOADI16` across branch target.Yukihiro "Matz" Matsumoto
2021-09-20codegen.c: `gen_move` should generate proper `OP_LOADI16`.Yukihiro "Matz" Matsumoto
2021-09-20codegen.c: rename `loopinfo->acc` to `reg`.Yukihiro "Matz" Matsumoto
`acc` meant `accumulator` but it is not an accumulator but just a register position.
2021-09-20codegen.c: check `no_peephole(s)` before `mrb_last_insn(s)`.Yukihiro "Matz" Matsumoto
2021-09-20codegen.c (mrb_last_insn): no previous instruction on top.Yukihiro "Matz" Matsumoto
2021-09-19vm.c: add array assertions.Yukihiro "Matz" Matsumoto
2021-09-19codegen.c: unify `OP_ARYPUSH` and `OP_ARYPUSH_N`.Yukihiro "Matz" Matsumoto
- `OP_ARYPUSH` now takes operand for the number of pushing elements - the code generator consume the stack no more than `64` for `mruby/c`
2021-09-17ops.h: add `OP_ARYPUSH_N` instruction.Yukihiro "Matz" Matsumoto
Add n elements at once. Reduces instructions for huge array initialization. In addition, `gen_value` function in `codegen.c` was refactored and clarified.
2021-09-17AUTHORS: update. [ci skip]Yukihiro "Matz" Matsumoto
2021-09-16AUTHORS: update. [ci skip]Yukihiro "Matz" Matsumoto
2021-09-15Use `struct` initializer instead of `memset`.Yukihiro "Matz" Matsumoto
2021-09-14sprintf.c: `width` may have been `INT_MAX`.Yukihiro "Matz" Matsumoto
Now `width` is limited to `INT16_MIN..INT16_MAX`.
2021-09-13parse.y: `cons_free` unused node (empty string node).Yukihiro "Matz" Matsumoto
2021-09-13parse.y: allow non-local variable access from hash value omission.Yukihiro "Matz" Matsumoto
For example, `{p:}` (means `{p:p}`) and `{String:}` (`{String:String}`) should be allowed like CRuby.
2021-09-13parse.y: allow value omission in Hash literals introduced in Ruby3.1.Yukihiro "Matz" Matsumoto
`{x:, y:}` now is a syntax sugar of `{x: x, y: y}`. This fix also includes the update of #4815 fix.
2021-09-12parse.y: fix `nint` (int to node) and `intn` (node to int).Yukihiro "Matz" Matsumoto
2021-09-12parse.y: avoid adding zero length strings.Yukihiro "Matz" Matsumoto
2021-09-11codedump.c: avoid printing `OP_EXT?` prefix.Yukihiro "Matz" Matsumoto
2021-09-10ops.h: update `OP_HASHADD` description.Yukihiro "Matz" Matsumoto
2021-09-10array.c: forgot to adjust tail position in `mrb_ary_splice`.Yukihiro "Matz" Matsumoto