summaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)Author
2020-08-08Reintroduce `mrb_static_assert`; #5051Yukihiro "Matz" Matsumoto
Note that the home brew version of `mrb_static_assert` only works within the function body. This reverts commit 8f99689.
2020-08-07Avoid `division by zero` undefined behavior.Yukihiro "Matz" Matsumoto
2020-08-06Merge pull request #5059 from mruby/stableYukihiro "Matz" Matsumoto
Merge mruby 2.1.2
2020-08-06Merge master.Hiroshi Mimaki
2020-08-06Use `memcpy` to copy stack.Yukihiro "Matz" Matsumoto
2020-08-06Use `memset()` to clear stack unless `MRB_NAN_BOXING`.Yukihiro "Matz" Matsumoto
2020-08-06Remove block clear of `callinfo`.Yukihiro "Matz" Matsumoto
2020-08-06Remove `mrb_static_assert` from the core; #5051Yukihiro "Matz" Matsumoto
2020-08-06Update release date.2.1.2Hiroshi Mimaki
2020-08-05Merge pull request #5052 from dearblue/cistacksYukihiro "Matz" Matsumoto
Extend the `cipush()` and `cipop()` functions
2020-08-05Merge pull request #5058 from dearblue/benchmarkYukihiro "Matz" Matsumoto
Improve `rake benchmark`
2020-08-04Improve `rake benchmark`dearblue
- Use POSIX format instead of GNU extension for `time` command. For example FreeBSD's `time(1)` does not have GNU extensions available. - Sort `benchmark/bm_*.rb`. This is because the order of the bar graph cannot be uniquely determined depending on the result of `Dir.glob`.
2020-08-04Fix wrong condition for `PACK_DIR_HEX`; ref #5057Yukihiro "Matz" Matsumoto
2020-08-03Should not decrement `count` when `PACK_FLAG_COUNT2`; fix #5057Yukihiro "Matz" Matsumoto
2020-08-03Initialized local variables in `mrb_hash_shift()`.Yukihiro "Matz" Matsumoto
2020-07-31Simplify `khash.h`.Yukihiro "Matz" Matsumoto
- Remove ` kh_put_prepare` function used only internally - Remove `n_occupied` member from `kh_` struct
2020-07-31Fix `puts` in `mruby-print` on no argument; 0e9bd24Yukihiro "Matz" Matsumoto
`puts` should print newline when called without arguments.
2020-07-29Use type tag for hash code in `ht_hash_func()`2.1.2-rc2KOBAYASHI Shuji
The function corresponding to `ht_hash_func()` was as follows in the days of khash implementation (before d78acc7a). ```c mrb_hash_ht_hash_func(mrb_state *mrb, mrb_value key) { enum mrb_vtype t = mrb_type(key); ... switch (t) { ... default: hv = mrb_funcall(mrb, key, "hash", 0); h = (khint_t)t ^ (khint_t)mrb_fixnum(hv); break; } ... } ``` When switched to the segmented list implementation (d78acc7a), this function was changed as follows. ```c sg_hash_func(mrb_state *mrb, seglist *t, mrb_value key) { enum mrb_vtype tt = mrb_type(key); ... switch (tt) { ... default: hv = mrb_funcall(mrb, key, "hash", 0); h = (size_t)t ^ (size_t)mrb_fixnum(hv); break; } ... } ``` Since the argument `t` was added, the variable for type tag was changed from `t` to `tt`, but the variable used in the expression of `h` remained `t`. Probably this is an omission of change, so fixed it.
2020-07-29Fix the VM stack handling bug in 'mrb_yield_with_class()`; fix #5042Yukihiro "Matz" Matsumoto
2020-07-29Fixed shift width for `MRB_ENV_SET_BIDX()`dearblue
ref c07f24cd1 and close #5035
2020-07-26Merge pull request #5050 from dearblue/memsize_of2Yukihiro "Matz" Matsumoto
Update document for `ObjectSpace.memsize_of` [ci skip]
2020-07-26Extend the `cipush()` and `cipop()` functionsdearblue
- Returns the updated call info. - Unify the processing around `cipush()`. - `cipop()` restores the stack.
2020-07-26Update document for `ObjectSpace.memsize_of` [ci skip]dearblue
The `recurse` keyword is removed by f00657ead7c3e5f6f9a346d7797a280b5c9f02fa.
2020-07-25Merge pull request #5049 from shuujii/use-type-tag-for-hash-code-in-ht_hash_funcYukihiro "Matz" Matsumoto
Use type tag for hash code in `ht_hash_func()`
2020-07-25Use type tag for hash code in `ht_hash_func()`KOBAYASHI Shuji
The function corresponding to `ht_hash_func()` was as follows in the days of khash implementation (before d78acc7a). ```c mrb_hash_ht_hash_func(mrb_state *mrb, mrb_value key) { enum mrb_vtype t = mrb_type(key); ... switch (t) { ... default: hv = mrb_funcall(mrb, key, "hash", 0); h = (khint_t)t ^ (khint_t)mrb_fixnum(hv); break; } ... } ``` When switched to the segmented list implementation (d78acc7a), this function was changed as follows. ```c sg_hash_func(mrb_state *mrb, seglist *t, mrb_value key) { enum mrb_vtype tt = mrb_type(key); ... switch (tt) { ... default: hv = mrb_funcall(mrb, key, "hash", 0); h = (size_t)t ^ (size_t)mrb_fixnum(hv); break; } ... } ``` Since the argument `t` was added, the variable for type tag was changed from `t` to `tt`, but the variable used in the expression of `h` remained `t`. Probably this is an omission of change, so fixed it.
2020-07-24Change the logic to calculate object (`iv_tbl`) size; #5045Yukihiro "Matz" Matsumoto
2020-07-24Merge pull request #5045 from dearblue/memsize_ofYukihiro "Matz" Matsumoto
Improve `mruby-os-memsize`
2020-07-24Improve prototype for `mrb_objspace_page_slot_size()`; ref #5032dearblue
If it qualify a return type that is not a pointer with `const`, the compiler ignores it.
2020-07-24Avoid using FPU with `mruby-os-memsize`; ref #5032dearblue
And, in the calculation of the instance variable size, the fraction was always rounded down because of division of integers, so fix it. At the same time, test items that are no longer passed due to this change are deleted.
2020-07-24Support without `mruby-method` for `mruby-os-memsize`; ref #5032dearblue
2020-07-24Add NUL terminator to string object size calculation; ref #5032dearblue
2020-07-23`ObjectSpace.count_objects` to support `MRB_TT_ISTRUCT`; #5046Yukihiro "Matz" Matsumoto
2020-07-23Fix a bug with `ht_index` called with `size==0`; fix #5046Yukihiro "Matz" Matsumoto
It happens when a hash made empty calls `rehash`.
2020-07-22Fix `puts` to print newline with empty strings; ref b184772Yukihiro "Matz" Matsumoto
2020-07-22Use more `mrb_field_write_barrier` for instance variables.Yukihiro "Matz" Matsumoto
2020-07-22Use more local variables.Yukihiro "Matz" Matsumoto
To make debugging easy, and to improve the performance little bit.
2020-07-22Move `gray_list` update from `gc_mark_children`.Yukihiro "Matz" Matsumoto
The responsibility moved to caller to avoid confusion. Currently the function is called from only 2 places, so it is relatively easy to ensure not to update `gray_list` in the caller. But the assumption may change in the future.
2020-07-22Avoid using `mrb_ary_modify` from the internal function.Yukihiro "Matz" Matsumoto
`mrb_ary_modify` calls `mrb_write_barrier`, so can cause the same problem of the past `push`. It is provided for use-level API.
2020-07-22Use `mrb_field_write_barrier` instead of `mrb_write_barrier` for `push`.Yukihiro "Matz" Matsumoto
When the array is very big, the simpler `mrb_write_barrier` causes calling `gc_mark_children` for big arrays repeatedly. That would hinder performance very badly.
2020-07-22Define `Array#to_a` to avoid unnecessary loops.Yukihiro "Matz" Matsumoto
2020-07-22Small comment fix in `mrblib/array.c`.Yukihiro "Matz" Matsumoto
2020-07-22Skip unnecessary `mark_context` if `mrb->c == mrb->root_c`.Yukihiro "Matz" Matsumoto
2020-07-22Fixed garbled characters; ref #5041dearblue
2020-07-21Remove unnecessory methods in `mruby-objectspace`; ref #5041dearblue
The `ObjectSpace#memsize_of` and `ObjectSpace#memsize_of_all` in `mruby-objectspace` ware migrated to `mruby-os-memsize` mrbgem.
2020-07-21Fix the VM stack handling bug in 'mrb_yield_with_class()`; fix #5042Yukihiro "Matz" Matsumoto
2020-07-20Implement `Kernel#print` and `Kernel#puts` in C.Yukihiro "Matz" Matsumoto
2020-07-20Merge pull request #5041 from RoryO/extract-memsize-to-gemYukihiro "Matz" Matsumoto
Extract memsize to gem
2020-07-19Adding to authorsRory OConnell
2020-07-19Separate `memsize_of` and `memsize_of_all` to a separate gem; #5040Rory OConnell
Those methods are originally CRuby specific. Co-authored-by: Yukihiro "Matz" Matsumoto <[email protected]>
2020-07-20Remove some tests from `mruby-objectspace` gem; #5040Yukihiro "Matz" Matsumoto
Those tests succeeds only on some configuration.