summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-07-22* 2019-07-22git
2019-07-22Run test-tool in the order of the testsNobuyoshi Nakada
2019-07-21common.mk: `make check` now includes `make test-tool`Yusuke Endoh
And `make test-tool` includes `make test-testframework`. This change may be arguable because I'm unsure who is an intended user of `make check`: a normal user, or Ruby-core developer. Normal users don't have to run `make test-tool` for testing their installation, but Ruby committers should run it before they commit anything. In this case, I'd be conservative; `make check` includes `test-tool`. If normal users often report a failure of `make test-tool`, then we can consider to split `make check` for two sets of target users.
2019-07-21tool/test/runner.rb: support --test-target-dir optionYusuke Endoh
tool/test/runner.rb had been copied from test/runner.rb. test/runner.rb was for `make test-all`, and tool/test/runner.rb was for `make test-testframework` and `make test-tool`. But I want to avoid the code clones. This change makes tool/test/runner.rb support --test-target-dir option which allows tool/test/runner.rb to run `make test-all`. Now we can remove test/runner.rb.
2019-07-21* 2019-07-21git
2019-07-21Update simplecov and doclie to the latest version.Hiroshi SHIBATA
2019-07-20Move travis coroutine check to cron only.Samuel Williams
2019-07-20--debug was not functional eitherTakashi Kokubun
Even after 19d592dc82a31adf0bb6f027392cae69615c2394, the retry seems not functional. Let's just add --debug from the beginning because an output of each step is collapsed and we don't see `make up` output so often.
2019-07-20file.c: add a NORETURN declaration for statx_notimplementYusuke Endoh
clang complains the lack.
2019-07-20Explain what's benchmark/lib/load.rb [ci skip]Takashi Kokubun
I'm actually not using this, but ko1 is.
2019-07-20Upgrade benchmark-driver.gem againTakashi Kokubun
because v0.14.18 was actually not working with `make run`. In `make run`, `Gem` is defined but `Gem::Version` isn't. v0.14.19 checks `defined?(Gem::Version)` instead of `defined?(Gem)`.
2019-07-20Upgrade benchmark-driver.gem versionTakashi Kokubun
This is to make `make run` with benchmark/lib/load.rb work for ko1 https://github.com/benchmark-driver/benchmark-driver/compare/v0.14.17...v0.14.18
2019-07-20array.c: factor out a complex condition of assertYusuke Endoh
ARY_SHARED_P and ARY_EMBED_P included: assert(!FL_TEST((ary), ELTS_SHARED) || !FL_TEST((ary), RARRAY_EMBED_FLAG)), The two predicate macros are used in many other assert conditions, which caused memory bloat during C compilation. This change factors out the assertion above to a function. Now gcc consumes 160 MB instead of 250 MB to compile array.c.
2019-07-19Only disable GC around reference updatingAaron Patterson
This is the only place that can change the size of the object id tables and cause a GC.
2019-07-19Document use of ensure and else at method level [ci skip]Jeremy Evans
2019-07-19Remove section on performance advantage of not using a block parameter [ci skip]Jeremy Evans
Improvements in Ruby 2.5 and 2.6 make this section no longer accurate.
2019-07-19Remove mention of Proc.new with implicit block [ci skip]Jeremy Evans
This support is now deprecated and will be removed in Ruby 3.
2019-07-19Document evaluation order of arguments [ci skip]Jeremy Evans
Fixes [Misc #8905]
2019-07-19Document required keyword argument syntax [ci skip]Jeremy Evans
Fixes [Bug #8952]
2019-07-20* 2019-07-20git
2019-07-20Some keywords, "true", "false", and "nil" should be treated as a variableaycabta
2019-07-19array.c: use assert in macro instead of in a functionYusuke Endoh
The old code lost information of lineno. Now, an assertion error will output a correct lineno (but now gcc 8 requires 250 MB, unfortunately).
2019-07-19array.c: factor out `assert(RB_TYPE_P(ary, T_ARRAY))` to a functionYusuke Endoh
The assertion blows up gcc 8 by consuming approx. 1.8 GB memory. This change reduces the amount of memory required to about 200 MB. A follow-up of ae750799c1b28b06d02e50cd26450b9903516526.
2019-07-19Add documentation to `fiber_pool_allocate_memory`.Samuel Williams
2019-07-19Fix 32-bit build and typo.Samuel Williams
"Therefore, `fiber_pool_stack_free(&vacancy->stack)` can do the wrong thing..." should be "... `fiber_pool_stack_free(stack)` ...".
2019-07-19Ensure that madvise does not clobber vacancy data.Samuel Williams
After calling `fiber_pool_vacancy_reset`, `vacancy->stack` and `stack` are no longer in sync. Therefore, `fiber_pool_stack_free(&vacancy->stack)` can do the wrong thing and clobber the vacancy data. Additionally, when testing using VM_CHECK_MODE > 0, use MADV_DONTNEED if possible, to catch issues w.r.t. clobbered vacancy data earlier.
2019-07-19fix debug counter for Hash counts.Koichi Sasada
Change debug_counters for Hash object counts: * obj_hash_under4 (1-3) -> obj_hash_1_4 (1-4) * obj_hash_ge4 (4-7) -> obj_hash_5_8 (5-8) * obj_hash_ge8 (>=8) -> obj_hash_g8 (> 8) For example on rdoc benchmark: [RUBY_DEBUG_COUNTER] obj_hash_empty 554,900 [RUBY_DEBUG_COUNTER] obj_hash_under4 572,998 [RUBY_DEBUG_COUNTER] obj_hash_ge4 1,825 [RUBY_DEBUG_COUNTER] obj_hash_ge8 2,344 [RUBY_DEBUG_COUNTER] obj_hash_empty 553,097 [RUBY_DEBUG_COUNTER] obj_hash_1_4 571,880 [RUBY_DEBUG_COUNTER] obj_hash_5_8 982 [RUBY_DEBUG_COUNTER] obj_hash_g8 2,189
2019-07-19Use FL_TEST_RAW() to check flags.Koichi Sasada
FL_TEST() uses FL_ABLE() which test data types. However, in array.c we don't need to check it (all of them should be T_ARRAY), so I changed from FL_TEST() to FL_TEST_RAW() which does not check FL_ABLE(). Instead of FL_ABLE(), add assertion to check given object is a T_ARRAY object. For example, rb_ary_free() becomes slim: with FL_TEST(): 0000000000006a30 <rb_ary_free>: 6a30: 40 f6 c7 07 test $0x7,%dil 6a34: 48 8b 07 mov (%rdi),%rax 6a37: 75 09 jne 6a42 <rb_ary_free+0x12> 6a39: 48 f7 c7 f7 ff ff ff test $0xfffffffffffffff7,%rdi 6a40: 75 1e jne 6a60 <rb_ary_free+0x30> 6a42: a9 00 00 00 02 test $0x2000000,%eax 6a47: 74 07 je 6a50 <rb_ary_free+0x20> 6a49: f3 c3 repz retq 6a4b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 6a50: 48 8b 7f 20 mov 0x20(%rdi),%rdi 6a54: e9 00 00 00 00 jmpq 6a59 <rb_ary_free+0x29> 6a59: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 6a60: 89 c2 mov %eax,%edx 6a62: 83 e2 1f and $0x1f,%edx 6a65: 83 fa 1b cmp $0x1b,%edx 6a68: 74 d8 je 6a42 <rb_ary_free+0x12> 6a6a: f6 c4 60 test $0x60,%ah 6a6d: 74 d3 je 6a42 <rb_ary_free+0x12> 6a6f: eb d8 jmp 6a49 <rb_ary_free+0x19>``` with FL_TEST_RAW(): 0000000000006a30 <rb_ary_free>: 6a30: 48 f7 07 00 60 00 02 testq $0x2006000,(%rdi) 6a37: 74 07 je 6a40 <rb_ary_free+0x10> 6a39: f3 c3 repz retq 6a3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 6a40: 48 8b 7f 20 mov 0x20(%rdi),%rdi 6a44: e9 00 00 00 00 jmpq 6a49 <rb_ary_free+0x19>
2019-07-19* expand tabs.git
2019-07-19fix shared array terminology.Koichi Sasada
Shared arrays created by Array#dup and so on points a shared_root object to manage lifetime of Array buffer. However, sometimes shared_root is called only shared so it is confusing. So I fixed these wording "shared" to "shared_root". * RArray::heap::aux::shared -> RArray::heap::aux::shared_root * ARY_SHARED() -> ARY_SHARED_ROOT() * ARY_SHARED_NUM() -> ARY_SHARED_ROOT_REFCNT() Also, add some debug_counters to count shared array objects. * ary_shared_create: shared ary by Array#dup and so on. * ary_shared: finished in shard. * ary_shared_root_occupied: shared_root but has only 1 refcnt. The number (ary_shared - ary_shared_root_occupied) is meaningful.
2019-07-19In some situations, `vm_stack` can be NULL, but `cfp` is valid.Samuel Williams
2019-07-19Add assertions to `coroutine_initialize_main`.Samuel Williams
2019-07-19Split assertions to check which one fails.Samuel Williams
2019-07-19Better usage of `rb_ec_clear_vm_stack` to maintain invariants.Samuel Williams
2019-07-19Improve ec assertions.Samuel Williams
2019-07-19respect NDEBUG.Koichi Sasada
ruby/ruby.h includes ruby/assert.h, and RUBY_NDEBUG is defined by checking NDEBUG. In other words, NDEBUG is only seen just after ruby/ruby.h. This patch also cheks NDEBUG just after including ruby_assert.h. Without this patch, assertions in array.c are always enabled.
2019-07-19Remove doc/etc.rd.ja [ci skip]Kazuhiro NISHIYAMA
[Feature #16003] [ruby-dev:50814]
2019-07-19initialize only Fiber's cfp.Koichi Sasada
fiber->cont.saved_ec.cfp should be initialized by NULL because no vm_stack is allocated. However, cont_init() captures current Fiber's cfp for continuation, so it should only initialize fibers.
2019-07-19Revert "Ensure cfp is initialized to NULL."Samuel Williams
This reverts commit d7fdf45a4ae1bcb6fac30a24b025d4f20149ba0a.
2019-07-19Fix showing doc of "nil.to_s", nil doesn't have #nameaycabta
2019-07-19Ensure cfp is initialized to NULL.Samuel Williams
`cont_init` didn't initialize `cont->saved_ec.cfp`. Calling `cont_mark` would result in an invalid `cfp` in `rb_execution_context_mark`. Because fibers lazy-initialize the stack, fibers that are created but not resumed could cause this problem to occur.
2019-07-19Remove `rb_vm_push_frame` as it is no longer used.Samuel Williams
2019-07-19Ripper#validate_object: check if the object is hiddenNobuyoshi Nakada
2019-07-19Update before commitNobuyoshi Nakada
2019-07-19Moved RIPPER_DEBUG methods to Ripper from KernelNobuyoshi Nakada
2019-07-19Fixed build error with RIPPER_DEBUGNobuyoshi Nakada
2019-07-19* 2019-07-19git
2019-07-19Adjust styles and indentsNobuyoshi Nakada
2019-07-19Use Qnull instead of 0 and QundefNobuyoshi Nakada
2019-07-18check saved_ec.cfpKoichi Sasada