summaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)Author
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-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-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.
2020-07-20Avoid accessing `obj.tt` of `mrb_value`; #5040Yukihiro "Matz" Matsumoto
The old code compiles only on `MRB_NO_BOXING`.
2020-07-20Replace 0 by `MRB_EACH_OBJ_OK`; #5040Yukihiro "Matz" Matsumoto
2020-07-19Skip `MRB_TT_FREE` and `MRB_TT_BREAK` in `each_object`.Yukihiro "Matz" Matsumoto
2020-07-19Reorder members of `struct os_each_object_data` to stop warnings.Yukihiro "Matz" Matsumoto
`mrb_value` may or may not be struct according to configuration.
2020-07-19Should have updated the arg spec for `memsize_of`&`memsize_of_all`; #5040Yukihiro "Matz" Matsumoto
2020-07-19Use `c` specifier for `mrb_get_args`.Yukihiro "Matz" Matsumoto
2020-07-19Add new specifier `c` to `mrb_get_args`.Yukihiro "Matz" Matsumoto
`C` retrieves a `mrb_value` that refers a class/module. `c` retrieves a `struct RClass*` pointer to a class/module.
2020-07-19Fix `memsize_of_all` to count all objects if no argument given; #5040Yukihiro "Matz" Matsumoto