summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-compiler/core/codegen.c
AgeCommit message (Collapse)Author
2018-09-07Clear terminated spacedearblue
2018-09-06Need to support multiple `**` splats in argument list; fix #4106Yukihiro "Matz" Matsumoto
2018-09-01Avoid warning in MSVC compilation.Yukihiro "Matz" Matsumoto
2018-09-01Too much peephole optimization in `gen_call`; fix #4091Yukihiro "Matz" Matsumoto
It causes trouble for safe navigation operator.
2018-08-30Remove consequent `OP_RETURN` by peephole optimization.Yukihiro "Matz" Matsumoto
2018-08-29Merge branch 'node_negate_fix' of https://github.com/ukrainskiysergey/mruby ↵Yukihiro "Matz" Matsumoto
into ukrainskiysergey-node_negate_fix
2018-08-29Check iseq buffer size before code emission; fix #4090Yukihiro "Matz" Matsumoto
The type of `s->pc` is now `uint16_t` that can be overflowed easily. Need more checks.
2018-08-25Reduce integer casting warnings.Yukihiro "Matz" Matsumoto
2018-08-25fixup! New bytecode implementation of mruby VM.Yukihiro "Matz" Matsumoto
2018-08-25Hash splat `**` should not be ignored.Yukihiro "Matz" Matsumoto
Implemented by adding `OP_HASHCAT` that merges hashes.
2018-08-25New bytecode implementation of mruby VM.Yukihiro "Matz" Matsumoto
2018-08-10Added push() after OP_SENDUkrainskiy Sergey
2018-08-09Small fixUkrainskiy Sergey
2018-08-09Fix weird behavior of the NODE_NEGATEUkrainskiy Sergey
2018-07-31Bytecode support for `mrdb`.Yukihiro "Matz" Matsumoto
2018-07-30Keyword argument implemented.Yukihiro "Matz" Matsumoto
2018-07-30New bytecode implementation of mruby VM.Yukihiro "Matz" Matsumoto
2018-07-10move mrb_irep_remove_lv to codegen.c in mruby-compileryuri
2018-05-01Update `MRB_FLO_TO_STR_FMT` to "%.16g"; fix #4016Yukihiro "Matz" Matsumoto
2018-05-01Fix stack position in multiple assignment; fix #4008Yukihiro "Matz" Matsumoto
This was caused by a patch from #2684.
2018-01-16Limit size of iseq buffer; fix #3927Yukihiro "Matz" Matsumoto
2017-12-15Check if destinations are too distant; fix #3900 fix #3901Yukihiro "Matz" Matsumoto
2017-11-08Simplify `MRB_WITHOUT_FLOAT` condtionYukihiro "Matz" Matsumoto
2017-11-04Merge branch 'master' of github.com:mruby/mrubyYAMAMOTO Masaya
2017-10-28Heavily refactored how lexical scope links are implemented; fix #3821Yukihiro "Matz" Matsumoto
Instead of `irep` links, we added a `upper` link to `struct RProc`. To make a space for the `upper` link, we moved `target_class` reference. If a `Proc` does not have `env`, `target_class` is saved in an `union` shared with `env` (if a `Proc` has env, you can tell it by `MRB_PROC_ENV_P()). Otherwise `target_class` is referenced from `env->c`. We removed links in `env` as well. This change removes 2 members from `mrb_irep` struct, thus saving 2 words per method/proc/block. This also fixes potential memory leaks due to the circular references caused by a link from `mrb_irep`.
2017-10-28Add some peephole optimizationsYukihiro "Matz" Matsumoto
2017-10-11Add MRB_WITHOUT_FLOATYAMAMOTO Masaya
2017-09-12Remove temporary limitation of `OP_EPOP`.Yukihiro "Matz" Matsumoto
After f68f5f6, the operand of `OP_EPOP` should have been `1`. Now we have removed the limitation.
2017-09-05Restrict `OP_EPOP` operand to `1`; ref #3789Yukihiro "Matz" Matsumoto
2017-08-23Fixed register windows of OP_SENDs generated by NODE_{DREGX,REGX}; ref #3783Christopher Aue
2017-08-23Fixed register windows of OP_SENDs generated by NODE_OP_ASGN; ref #3783Christopher Aue
2017-08-23Refactored code around generation of OP_SEND in NODE_OP_ASGNChristopher Aue
2017-08-23Fixed register windows of OP_SENDs generated by NODE_{FOR,SYMBOLS}; ref #3783Christopher Aue
2017-08-23Tested register windows of OP_SENDs generated by NODE_{RESCUE,HASH,ALIAS}; ↵Christopher Aue
ref #3783
2017-08-23Fixed register windows of OP_SENDs generated by ↵Christopher Aue
NODE_{SCALL,CASE,YIELD,UNDEF}; ref #3783
2017-08-19Replace stack `pop()` by `push_n(2); pop_n(3)`; fix #3783Yukihiro "Matz" Matsumoto
To calculate correct register windows size. The fix was suggested by Christopher Aue.
2017-08-12Reduce integer type mismatch warnings in VC.Yukihiro "Matz" Matsumoto
2017-08-09Support `break` within rescue clauses; fix #3767 ref #3721Yukihiro "Matz" Matsumoto
2017-07-12`while`|`until` should have the value from `break`; fix #3735Yukihiro "Matz" Matsumoto
2017-06-23Should raise an exception if `break` called in ensure; fix #3721Yukihiro "Matz" Matsumoto
2017-06-07Handles exceptions from code generation phase; fix #3695Yukihiro "Matz" Matsumoto
2017-06-05Limit recursion level of `codegen()`; fix #3690Yukihiro "Matz" Matsumoto
2017-06-01Check for super using OP_ARGARY; fix #3678Yukihiro "Matz" Matsumoto
It generates a wasted empty array for each `super` call though. It should be fixed in the future, if possible.
2017-05-29Mark the proc object representing top-level as an internal object; #3621Yukihiro "Matz" Matsumoto
2017-05-25Make `gen_assignment()` to support `NODE_SCALL`; ref #3658Yukihiro "Matz" Matsumoto
2017-05-12Change return back to break in the default case.Clayton Smith
2017-04-25Avoid use of `snprintf()` when DISABLE_STDIO is set; fix #3632Yukihiro "Matz" Matsumoto
ref #3492 #3515 #3517
2017-04-22Alias should `push()` extra stack space for blocks.Yukihiro "Matz" Matsumoto
2017-04-18Changed evaluation order of `yield`; ref #3613Yukihiro "Matz" Matsumoto
So that `yield expr_with_error` will cause the error from the argument rather than `LocalJumpError` when no block is given.
2017-04-13Fixed a bug in NODE_XSTR code generation; fix #3605Yukihiro "Matz" Matsumoto