summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* constify again.Koichi Sasada2019-07-225-23/+23
| | | | | | | | | | | | | | | | | | | | Same as last commit, make some fields `const`. include/ruby/ruby.h: * Rasic::klass * RArray::heap::aux::shared_root * RRegexp::src internal.h: * rb_classext_struct::origin_, redefined_class * vm_svar::cref_or_me, lastline, backref, others * vm_throw_data::throw_obj * vm_ifunc::data * MEMO::v1, v2, u3::value While modifying this patch, I found write-barrier miss on rb_classext_struct::redefined_class. Also vm_throw_data::throw_state is only `int` so change the type.
* [ruby/date] Describe what is meant by valid in the Date.valid_date? rdocJeremy Evans2019-07-221-0/+3
| | | | https://github.com/ruby/date/commit/8eca79d1f0
* constify RHash::ifnone.Koichi Sasada2019-07-222-2/+2
| | | | | | | RHash::ifnone should be protected by write-barriers so this field should be const. However, to introduce GC.compact, the const was removed. This commit revert this removing `const` and modify gc.c `TYPED_UPDATE_IF_MOVED` to remove `const` forcely by a type cast.
* Fixed exception messageNobuyoshi Nakada2019-07-221-1/+1
|
* Only the first argument can be --test-target-dir optionNobuyoshi Nakada2019-07-222-13/+11
| | | | | Raise the proper exception when that option is not given but non-option argument is.
* Update rake-12.3.3.Hiroshi SHIBATA2019-07-221-1/+1
|
* * 2019-07-22git2019-07-221-1/+1
|
* Run test-tool in the order of the testsNobuyoshi Nakada2019-07-221-2/+2
|
* common.mk: `make check` now includes `make test-tool`Yusuke Endoh2019-07-211-4/+3
| | | | | | | | | | | | | 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.
* tool/test/runner.rb: support --test-target-dir optionYusuke Endoh2019-07-214-49/+20
| | | | | | | | | | | 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-21git2019-07-211-1/+1
|
* Update simplecov and doclie to the latest version.Hiroshi SHIBATA2019-07-211-2/+2
|
* Move travis coroutine check to cron only.Samuel Williams2019-07-201-2/+2
|
* --debug was not functional eitherTakashi Kokubun2019-07-201-1/+1
| | | | | | 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.
* file.c: add a NORETURN declaration for statx_notimplementYusuke Endoh2019-07-201-0/+2
| | | | clang complains the lack.
* Explain what's benchmark/lib/load.rb [ci skip]Takashi Kokubun2019-07-201-0/+16
| | | | I'm actually not using this, but ko1 is.
* Upgrade benchmark-driver.gem againTakashi Kokubun2019-07-201-1/+1
| | | | | | 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)`.
* Upgrade benchmark-driver.gem versionTakashi Kokubun2019-07-201-1/+1
| | | | | 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
* array.c: factor out a complex condition of assertYusuke Endoh2019-07-201-2/+8
| | | | | | | | | | | 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.
* Only disable GC around reference updatingAaron Patterson2019-07-191-2/+3
| | | | | This is the only place that can change the size of the object id tables and cause a GC.
* Document use of ensure and else at method level [ci skip]Jeremy Evans2019-07-191-0/+22
|
* Remove section on performance advantage of not using a block parameter [ci skip]Jeremy Evans2019-07-191-5/+0
| | | | | Improvements in Ruby 2.5 and 2.6 make this section no longer accurate.
* Remove mention of Proc.new with implicit block [ci skip]Jeremy Evans2019-07-191-4/+0
| | | | This support is now deprecated and will be removed in Ruby 3.
* Document evaluation order of arguments [ci skip]Jeremy Evans2019-07-191-0/+19
| | | | Fixes [Misc #8905]
* Document required keyword argument syntax [ci skip]Jeremy Evans2019-07-191-0/+11
| | | | Fixes [Bug #8952]
* * 2019-07-20git2019-07-201-1/+1
|
* Some keywords, "true", "false", and "nil" should be treated as a variableaycabta2019-07-201-1/+1
|
* array.c: use assert in macro instead of in a functionYusuke Endoh2019-07-191-7/+7
| | | | | The old code lost information of lineno. Now, an assertion error will output a correct lineno (but now gcc 8 requires 250 MB, unfortunately).
* array.c: factor out `assert(RB_TYPE_P(ary, T_ARRAY))` to a functionYusuke Endoh2019-07-191-4/+10
| | | | | | | 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.
* Add documentation to `fiber_pool_allocate_memory`.Samuel Williams2019-07-191-0/+7
|
* Fix 32-bit build and typo.Samuel Williams2019-07-191-2/+2
| | | | | "Therefore, `fiber_pool_stack_free(&vacancy->stack)` can do the wrong thing..." should be "... `fiber_pool_stack_free(stack)` ...".
* Ensure that madvise does not clobber vacancy data.Samuel Williams2019-07-191-5/+19
| | | | | | | | | 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.
* fix debug counter for Hash counts.Koichi Sasada2019-07-192-12/+12
| | | | | | | | | | | | | | | | | | | 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
* Use FL_TEST_RAW() to check flags.Koichi Sasada2019-07-191-10/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* * expand tabs.git2019-07-192-20/+20
|
* fix shared array terminology.Koichi Sasada2019-07-194-57/+75
| | | | | | | | | | | | | | | | | | 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.
* In some situations, `vm_stack` can be NULL, but `cfp` is valid.Samuel Williams2019-07-191-4/+0
|
* Add assertions to `coroutine_initialize_main`.Samuel Williams2019-07-191-2/+3
|
* Split assertions to check which one fails.Samuel Williams2019-07-191-1/+3
|
* Better usage of `rb_ec_clear_vm_stack` to maintain invariants.Samuel Williams2019-07-192-7/+8
|
* Improve ec assertions.Samuel Williams2019-07-192-17/+7
|
* respect NDEBUG.Koichi Sasada2019-07-191-0/+5
| | | | | | | | | 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.
* Remove doc/etc.rd.ja [ci skip]Kazuhiro NISHIYAMA2019-07-191-75/+0
| | | | [Feature #16003] [ruby-dev:50814]
* initialize only Fiber's cfp.Koichi Sasada2019-07-191-0/+1
| | | | | | | 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.
* Revert "Ensure cfp is initialized to NULL."Samuel Williams2019-07-191-6/+0
| | | | This reverts commit d7fdf45a4ae1bcb6fac30a24b025d4f20149ba0a.
* Fix showing doc of "nil.to_s", nil doesn't have #nameaycabta2019-07-192-1/+8
|
* Ensure cfp is initialized to NULL.Samuel Williams2019-07-191-0/+6
| | | | | | | `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.
* Remove `rb_vm_push_frame` as it is no longer used.Samuel Williams2019-07-194-39/+1
|
* Ripper#validate_object: check if the object is hiddenNobuyoshi Nakada2019-07-191-5/+10
|
* Update before commitNobuyoshi Nakada2019-07-191-1/+1
|