summaryrefslogtreecommitdiffhomepage
path: root/src/vm.c
AgeCommit message (Collapse)Author
2020-06-25Remove unnecessary stack adjustment in `OP_CALL`.Yukihiro "Matz" Matsumoto
2020-06-25Change flag names in preparation of `REnv` refactoring.Yukihiro "Matz" Matsumoto
2020-05-28Check `c->eidx` before decrement in `ecall()`; close #4977Yukihiro "Matz" Matsumoto
2020-05-24Do not destruct rest arguments for __send__Yusuke Endoh
Formerly, `__send__(*args)` modified `args` with `Array#shift`. This bug affects optcarrot. This changeset avoids the array destruction by using `args = args[1, len-1]`.
2020-05-10Get an irep symbol if it's `OP_GETSV` or `OP_SETSV`dearblue
2020-05-07Add a new instruction `OP_LOADI16`.Yukihiro "Matz" Matsumoto
Which loads 16bit integer to the register. The instruction number should be reorder on massive instruction refactoring. The instruction is added for `mruby/c` which had performance issue with `OP_EXT`. With this instruction, `mruby/c` VM can just raise errors on `OP_EXT` extension instructions.
2020-05-07Remove `mrb_run` from `MRB_API`; #4488Yukihiro "Matz" Matsumoto
`mrb_run` requires to push callinfo stack before calling, which is very hard from outside of `vm.c`. So there should be virtually no correct usage of the function, hence the cause of #4488. We removed it. You can use `mrb_top_run(mrb, proc, self, 0)` instead of `mrb_run(mrb, proc self)`.
2020-04-22Make `mrb_obj_instance_eval` to use `mrb_singleton_class_ptr`; #4973Yukihiro "Matz" Matsumoto
2020-04-21Fix the bug by `#instance_eval` called via a method object; fix #4973Yukihiro "Matz" Matsumoto
The tranpoline code in 6a0b68f8b was wrong; reverted.
2020-04-21Simplified `mrb_obj_instance_eval`; ref #4973Yukihiro "Matz" Matsumoto
2020-03-31Fix `mrb_funcall_with_block()` uses more GC arenadearblue
If `mrb->jmp` is `NULL` and the function `mrb_funcall_with_block()` is called, GC Arena is returned from the function with over-used. - A normal (no global exodus) return will consume two GC Arena's. - In the event of an exception, five GC Arena are consumed. This patch reduces consumption in both cases to one.
2020-01-29Removed junk.Yukihiro "Matz" Matsumoto
My cat stepped on the keyboard at the last moment before the commit.
2020-01-29Remove unused local variable `mid`; ref #4936Yukihiro "Matz" Matsumoto
2020-01-27Fixed backtrace message for top-level blocks; fix #4936Yukihiro "Matz" Matsumoto
In top-level, `mid` is `NULL`. We used to ignore 'mid` update for `NULL`.
2020-01-08Add `MRB_WITHOUT_FLOAT` guard to `<math.h>`.Yukihiro "Matz" Matsumoto
2019-09-26Use type predicate macros instead of `mrb_type` if possibleKOBAYASHI Shuji
For efficiency with `MRB_WORD_BOXING` (implement type predicate macros for all `enum mrb_vtype`).
2019-09-25Rename symbol-to-string functions; close #4684Yukihiro "Matz" Matsumoto
* mrb_sym2name -> mrb_sym_name * mrb_sym2name_len -> mrb_sym_name_len * mrb_sym2str -> mrb_sym_str
2019-09-18Fix `super` from aliased methods to work correctly; fix #4718Yukihiro "Matz" Matsumoto
We needed to preserve the original method name somewhere. We kept it in the `env` structure pointed from aliased methods. #1457 and #1531 tried to address this issue. But this patch is more memory efficient. Limitation: this fix does not support `super` from methods defined by `define_method`. This limitation may be addressed in the future, but it's low priority.
2019-09-16Raise `ArgumentError` by `aspec` check; ref #4688Yukihiro "Matz" Matsumoto
This is partial `aspec` check that only checks `MRB_ARGS_NONE()`.
2019-08-23Fix `RBreak` exceeding 6 words on 32-bit mode w/o boxing and `MRB_USE_FLOAT`KOBAYASHI Shuji
ref: https://github.com/mruby/mruby/pull/4483#issuecomment-498001736 In this configuration, `tt` of `RBreak::val` is set into `RBreak::flags`.
2019-08-18Prohibit changes to iseq in principledearblue
2019-08-16Avoid creating unnecessary empty arrays on splat.Yukihiro "Matz" Matsumoto
But this changes requires `OP_ARYCAT` and `OP_ARYPUSH` to accept `nil` as their first operand. Alternative VMs (e.g. `mruby/c`) that understand mruby bytecode need to be updated.
2019-08-05Use new specifiers/modifiers of `mrb_vfromat()`KOBAYASHI Shuji
The binary sizes (gems are only `mruby-bin-mruby`) are reduced slightly in my environment than before the introduction of new specifiers/modifiers (5116789a) with this change. ------------+-------------------+-------------------+-------- BINARY | BEFORE (5116789a) | AFTER (This PR) | RATIO ------------+-------------------+-------------------+-------- mruby | 593416 bytes | 593208 bytes | -0.04% libmruby.a | 769048 bytes | 767264 bytes | -0.23% ------------+-------------------+-------------------+-------- BTW, I accidentally changed `tasks/toolchains/visualcpp.rake` at #4613, so I put it back.
2019-07-18Clear `env` before top-level execution; fix #4581Yukihiro "Matz" Matsumoto
2019-05-26Move `mrb_mod_s_nesting()` to `mruby-metaprog` gem from the coreKOBAYASHI Shuji
2019-04-23Fixed the condition in `mrb_funcall_with_block`; fix #4389Yukihiro "Matz" Matsumoto
2019-04-16Fixed a bug in recursive `mrb_top_run` calls; fix #4384Yukihiro "Matz" Matsumoto
2019-04-14Extract similar codes to macros for math opcode in `mrb_vm_exec`KOBAYASHI Shuji
2019-04-13Fix broken NaN with `MRB_NAN_BOXING`KOBAYASHI Shuji
Example: $ bin/mruby -e '(Float::INFINITY - Float::INFINITY).nan?' zsh: segmentation fault Cause: `SET_FLOAT_VALUE` is not used. It is needed for normalizing NaN. Treatment: In my environment, this issue could be reproduced only when `infinity - infinity`, however `SET_FLOAT_VALUE` should be used in all arithmetic operations (regardless of boxing setting), I think. So I fixed all similar codes by extracting to macro.
2019-04-12Small refactoring in `mrb_funcall_with_block`.Yukihiro "Matz" Matsumoto
2019-04-06Remove unused `mrb_proc_cfunc_p()`KOBAYASHI Shuji
2019-03-26Fix missing `MRB_API` prefix for functions below; clse #4267Yukihiro "Matz" Matsumoto
Functions to add prototypes to headers: * mrb_ary_splice() * mrb_notimplement() * mrb_vformat() * mrb_cstr_to_dbl() * mrb_cstr_to_inum() Functions to be made `static` (`MRB_API` was not needed): * mrb_mod_module_function() * mrb_obj_hash() * mrb_str_len_to_inum() Functions to remove `MRB_API` from definitions (referenced from within `libmruby`): * mrb_mod_cv_defined() * mrb_mod_cv_get() * mrb_f_send()
2019-02-11No strict argument check for blocks when keyword arguments exist; ref #4270Yukihiro "Matz" Matsumoto
2018-12-23Suppress a struct initializer warningKOBAYASHI Shuji
Suppress a compiler (clang) warning bellow: src/vm.c:104:38: warning: suggest braces around initialization of subobject [-Wmissing-braces] const mrb_value mrb_value_zero = { 0 }; ^ {}
2018-12-10Need to clear stack before invoking a block; fix #4181Yukihiro "Matz" Matsumoto
2018-11-20Restrict total recursion number of `ecall()`; fix #3789Yukihiro "Matz" Matsumoto
2018-11-19Add Hash type check for `OP_KARG` and `OP_KEY_P`; ref #4166Yukihiro "Matz" Matsumoto
2018-11-19The current context may be changed in `mrb_vm_exec`; ref #3668 #4104Yukihiro "Matz" Matsumoto
2018-11-19Protect Fiber from GC in `ecall()`; fix #4104Yukihiro "Matz" Matsumoto
2018-11-15The saved `pc` from `ERR_PC_SET` was wrong; fix #4138Yukihiro "Matz" Matsumoto
The saving `pc` position should be beginning of the instruction. But after `mruby 2.0` byte code modification, the `pc` variable points the beginning of the next instruction. We save the previous position in a local variable `pc0`.
2018-11-05Fixed wrong `ArgumentError` with keyword arguments; fix #4159Yukihiro "Matz" Matsumoto
2018-11-05Fixed a bug in argument number check with kwargs; fix #4159Yukihiro "Matz" Matsumoto
2018-11-02Remove reserved symbols for now.Yukihiro "Matz" Matsumoto
It should be done by planned embedded symbols.
2018-11-02Merge pull request #4151 from take-cheeze/remove_op_symidxYukihiro "Matz" Matsumoto
Reduce instruction size
2018-11-01Silence Appveyor's VC compilation warnings.Yukihiro "Matz" Matsumoto
2018-11-01Fixed a bug in INIT_DISPATCH for non direct threading; fix #4153Hiroshi Mimaki
2018-10-29Fix operatortake-cheeze
2018-10-29Fix SEGVtake-cheeze
2018-10-29Reduce instruction sizetake-cheeze
2018-10-29We need no write barrier here; ref #4143Yukihiro "Matz" Matsumoto