summaryrefslogtreecommitdiffhomepage
path: root/mrbgems
AgeCommit message (Collapse)Author
2021-08-03numeric_ext.c: define `modulo` and `remainder` methods for `Integer`.Yukihiro "Matz" Matsumoto
2021-08-03numeric_ext.c: remove unnecessary prefix `mrb_` from static functions.Yukihiro "Matz" Matsumoto
2021-08-02codegen.c: allow constant folding for negative integer modulo.Yukihiro "Matz" Matsumoto
2021-08-02mrdb.c: do not skip `OP_JMP` on step execution.Yukihiro "Matz" Matsumoto
2021-08-02codegen.c: refactor `readint()` to read `MRB_INT_MIN`.Yukihiro "Matz" Matsumoto
2021-08-02test/driver.c: remove unused constants related to `FIXNUM`.Yukihiro "Matz" Matsumoto
2021-08-02codegen.c: fix a bug in bit shift constant folding.Yukihiro "Matz" Matsumoto
2021-08-02codegen.c: refactor unary operator optimization.Yukihiro "Matz" Matsumoto
2021-08-02codegen.c: constant folding binary operators, <<, >>, %, &, |, ^.Yukihiro "Matz" Matsumoto
2021-08-01codegen.c: eliminate loop if condition is constant.Yukihiro "Matz" Matsumoto
For example, `while false; ...; end` should be removed.
2021-08-01codegen.c: peephole optimize OP_JMPxxx.Yukihiro "Matz" Matsumoto
2021-07-31codegen.c: allow constant folding for mul / div.Yukihiro "Matz" Matsumoto
2021-07-31codegen.c: `mrb_prev_pc()` to take previous instruction position.Yukihiro "Matz" Matsumoto
It rescans `s->iseq` so that peephole optimizer can take multiple previous instructions for constant folding, etc.
2021-07-29codegen.c: order instructions in natural order for loops.Yukihiro "Matz" Matsumoto
`while` and `until` generates in `cond` `jmpif` `body` `jmp` order. It used to be in `jmp` `body` `cond` `jmpif` order.
2021-07-28codegen.c: labels should be `uint32_t`.Yukihiro "Matz" Matsumoto
2021-07-28codegen.c: fix `loopinfo` structure members.Yukihiro "Matz" Matsumoto
- `pc0`: `next` destination - `pc1`: `redo` destination (renamed from `pc2`) - `pc3`: `break` destination (renamed from `pc3`) old `pc1` was unused so removed.
2021-07-28codegen.c: removed bytecode when the value of `while` is not used.Yukihiro "Matz" Matsumoto
2021-07-28codegen.c: fixed a bug when value is taken from `while` and `until`.Yukihiro "Matz" Matsumoto
```ruby p ((while true; p 1; break; end)) ``` should print `1 nil` but was `1`.
2021-07-26parse.y: fix an integer cast warning.Yukihiro "Matz" Matsumoto
2021-07-26parse.y: `mrb_int_read()` returns `mrb_int` not `unsigned long`.Yukihiro "Matz" Matsumoto
Also, now too big capture group index just gives `nil`, not error.
2021-07-26parse.y: unify redundant functions `yywarn()` and `yywarning()`.Yukihiro "Matz" Matsumoto
2021-07-26test/binding.rb: remove a duplicated test.Yukihiro "Matz" Matsumoto
2021-07-25time.c: fixed a potential buffer overflow in `time_zonename`.Yukihiro "Matz" Matsumoto
2021-07-25time.c: fixed `time_zonename` buffer size bug.Yukihiro "Matz" Matsumoto
2021-07-25time.c: stop returning `LOCAL` for the zone name from `Time.zone`.Yukihiro "Matz" Matsumoto
2021-07-25time.c: update the document for `Time#usec`; close #5515Yukihiro "Matz" Matsumoto
2021-07-25pack.c: fixed sign comparison warning.Yukihiro "Matz" Matsumoto
2021-07-25parse.y: replace `strtoul()` by `mrb_int_read()`.Yukihiro "Matz" Matsumoto
2021-07-25Remove redundant include headers.Yukihiro "Matz" Matsumoto
- stdlib.h - stddef.h - stdint.h - stdarg.h - limits.h - float.h
2021-07-23codegen.c: fixed a bug in `OP_LOADI32` peephole optimization.Yukihiro "Matz" Matsumoto
2021-07-22codegen.c: `get_int_operand()` to support `OP_LOADL` (int in pool).Yukihiro "Matz" Matsumoto
2021-07-22codegen.c: add constant folding for unary numeric operators (+, -, ~).Yukihiro "Matz" Matsumoto
2021-07-22codegen.c: compare symbol names directly avoiding string conversion.Yukihiro "Matz" Matsumoto
2021-07-21codegen.c: skip `-@` call if the argument is a literal integer.Yukihiro "Matz" Matsumoto
2021-07-21codegen.c: move `gen_setxv()` after `new_sym()`.Yukihiro "Matz" Matsumoto
2021-07-21codegen.c: introduce `gen_int()` to generate integer instructions.Yukihiro "Matz" Matsumoto
2021-07-21codegen.c: add peephole optimization for `OP_LOADI32` before `OP_MOVE`.Yukihiro "Matz" Matsumoto
2021-07-21codegen.c: add peephole optimization for `OP_LOADI16` before `OP_MOVE`.Yukihiro "Matz" Matsumoto
2021-07-21codegen.c: a new function `get_int_operand`.Yukihiro "Matz" Matsumoto
2021-07-20codegen.c: negative zero equals to positive zero.Yukihiro "Matz" Matsumoto
`OP_LOADI Rn -0` should be `OP_LOADI_0`.
2021-07-20codegen.c: allow `OP_EXT` before `OP_ADDI` and `OP_SUBI`.Yukihiro "Matz" Matsumoto
This is preparation for integer constant folding.
2021-07-19Remove unused prototypes for `mrb_proc_merge_lvar()`; ref #5511Yukihiro "Matz" Matsumoto
2021-07-19Merge pull request #5511 from dearblue/binding.3Yukihiro "Matz" Matsumoto
Explicit write barrier for binding
2021-07-17Explicit write barrier for bindingdearblue
2021-07-17Avoid implicit casting from void pointers for C++dearblue
2021-07-17codegen.c: optimize variable assignments after `OP_MOVE`.Yukihiro "Matz" Matsumoto
- `OP_SETGV` - `OP_SETIV` - `OP_SETCV` - `OP_SETCONST`
2021-07-17codegen.c: optimize `OP_SETUPVAR` after `OP_MOVE`.Yukihiro "Matz" Matsumoto
2021-07-16codegen.c: add new peephole optimization for `OP_MOVE`.Yukihiro "Matz" Matsumoto
If `OP_MOVE` comes after `OP_GETUPVAR`, you can skip move and redirect the destination register of `OP_GETUPVAR`.
2021-07-16codegen.c: add new peephole optimization for `OP_GETUPVAR`.Yukihiro "Matz" Matsumoto
When `OP_GETUPVAR` is generated right after `OP_SETUPVAR`, there is no need to read the upvar back to the register, e.g. 3 008 OP_ADDI R2 1 3 011 OP_SETUPVAR R2 1 0 4 015 OP_GETUPVAR R2 1 0 4 019 OP_LOADI_2 R3 `OP_GETUPVAR` at the address `015` is useless. We can skip it like: 3 008 OP_ADDI R2 1 3 011 OP_SETUPVAR R2 1 0 4 015 OP_LOADI_2 R3
2021-07-15codegen.c: `gen_jmpdst` always needs to generate relative address.Yukihiro "Matz" Matsumoto