summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-03-18Use alloca again instead of malloc and freek0kubun
by changing interface of `mjit_copy_cache_from_main_thread`. This is also fixing deadlock introduced by r67299. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67300 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-18Resurrect r67287 and r67288k0kubun
I noticed that r67287 was illegal because memory allocated by `alloca` was used after the stack is expired. So I just replaced that with `malloc` and `free` for now. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67299 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-18* 2019-03-19svn
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67298 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-18Revert "Eliminate mjit_copy_job_t reference from mjit_worker"k0kubun
This reverts commit ba51ae0109ee1d1fa7ca90b43da115ea68d7214a. CI is failing again... git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67297 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-18Eliminate mjit_copy_job_t reference from mjit_workerk0kubun
Take 2 of r67287. For some reasons, passing pointer of pointer on stack to a function and assigning an addresse to a pointer dereferenced from the pointer seems not working on mswin. So I achieved to return multiple values by returning struct instead of taking pointers. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67296 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-18parse.y: numbered parameter in lambdanobu
* parse.y (lambda): support numbered parameters, only when no argument list including empty parentheses, like empty vertical bars. [ruby-core:91859] [Bug #15672] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67295 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-18Revert "Try disabling Travis cache on darwin"k0kubun
This reverts commit 6b136a044205f6e6b66df68cd2da2a9c3e952a7d. This does not seem to work: https://travis-ci.org/ruby/ruby/jobs/507646193#L2478 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67294 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-18Merge https://github.com/rubygems/rubygems/pull/2684k0kubun
to make CI stable. See the PR for details. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67293 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-18parse.y: continue after invalid namenobu
* parse.y (set_yylval_noname): continue after an invalid global, instance, class variable name, without "unexpected end-of-file" error. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67292 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-18Revert "Request inline cache values from mjit_compile"k0kubun
This reverts commit 4161674b2fbea6bdd01783ac5d3b39d88db22972. Revert "Eliminate mjit_copy_job_t reference from mjit_worker" This reverts commit d86a1aa045959dfbf5cd472eae0d043180259727. Reverting them because of CI failures git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67291 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-18Pack rb_iseq_constant_body from 296 to 288 bytesnobu
[Fix GH-2099] From: Lourens Naudé <lourens@bearmetal.eu> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67290 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-18parse.y: parser_numbered_paramnobu
* parse.y (parser_numbered_param): hoisted out the contextual check for numbered parameters. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67289 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-17Request inline cache values from mjit_compilek0kubun
rather than preparing beforehand. By having this change, implementing inlining by calling `mjit_copy_cache_from_main_thread` for inlined methods was made possible. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67288 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-17Eliminate mjit_copy_job_t reference from mjit_workerk0kubun
and make `copy_cache_from_main_thread` easier to use. For implementing inlining later, I'll use `copy_cache_from_main_thread` inside `mjit_compile`. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67287 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-17Drop rb_mjit_unit from mjit_copy_jobk0kubun
and guard iseq from GC by marking iseq in mjit_copy_job. This is a refactoring for implementing inlining later and should not be fixing or introducing any bugs. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67286 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-17Fix a typo [ci skip]kazu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67285 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-17* 2019-03-18svn
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67284 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-17Fix typos [ci skip]kazu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67283 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-17Fix a typo [ci skip]kazu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67282 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-17Try disabling Travis cache on darwink0kubun
to check if it resolves "Permission denied" problem. https://travis-ci.org/ruby/ruby/jobs/507381339 https://travis-ci.org/ruby/ruby/jobs/507392198 TBH I'm not exactly sure why it happens, but I don't have infinite time to understand this. It would be appreciated to identify the root cause and remove `DISABLE_CACHE` again if you're sure your patch fixes the problem. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67281 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-17Roughly increase Azure Pipelines fetch depthk0kubun
because --depth=1 may randomly break checkout: https://dev.azure.com/rubylang/ruby/_build/results?buildId=208&view=logs&jobId=7ded14dc-7a77-59da-f40a-71e137ad96c0&taskId=2045950f-1dcd-54a4-4c23-fae2521239c1&lineStart=1554&lineEnd=1555&colStart=1&colEnd=1 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67280 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-17Update NEWS for --jit option changes [ci skip]k0kubun
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67279 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-17Numbered parameters [Feature #4475]nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67278 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-17Change defaults of --jit optionsk0kubun
* --jit-min-calls: 5 -> 10000 --jit-min-calls=5 obviously can compile non hotspot. This was not a problem for MJIT-benchmarks and Optcarrot because the former has very few hot optimiziable methods and the latter is likely to trigger compilation of hotspot by its intensive calls to optimizable hotspot methods and has a very short window to allow limited compilations. In real-world applications, it has more time to compile more methods and it pressures computer's limited resources like icache. We should avoid compiling too many methods. Also compiling many methods exhausts time budget for compilation in one ruby process lifetime and delays the "JIT compaction" of Ruby 2.6. JVM is known to use 1,500 for C1 (client) compiler and 10,000 for C2 (server) compiler for -XX:CompileThreshold by default. https://docs.oracle.com/javase/8/embedded/develop-apps-platforms/codecache.htm When things are called X,000 times, requiring 10,000 can eliminate compilation of methods which are called only once in these X,000 iterations and obviously not hotspot. And in fact things like unicorn-worker-killer restarts unicorn process every 4096 requests. So I felt 10,000 is good for such an environment. * --jit-max-cache: 1000 -> 100 By the same reason stated above, we should not allow compiling many methods especially on MJIT which has a larger overhead due to poor code locality by dlopen and whose code is also likely to be bigger by just inlining many VM instructions with -O3 rather than directly generating low-level code. In JVM -XX:ReservedCodeCacheSize is 32M for reserved and 48M for maximum. --jit-max-cache=1,000 could be closer to it, but in this case MJIT's compilation is slow due to data synchronization between threads (to be improved in Ruby 2.7 though) and we do not want to delay the "JIT compaction" for a long time. So I chose a really conservative number for this, but by having method inlining in the future, wider range could be optimized even with this value. * Optcarrot --disable-gems, --benchmark Lan_Master.nes 12 attempts. No significant impact. | r67276 | r67276 --jit | after --jit | |:-------------------|:------------------|:------------------| | 50.44369263063978 | 72.87390680773056 | 73.47873485047297 | | 50.58788746124193 | 78.06820808947026 | 78.29723420171945 | | 50.77509250801378 | 80.29010348842613 | 78.94689404460769 | | 50.935361702064405 | 80.42796829926374 | 80.39539527351525 | | 51.27352672981195 | 81.98758158033202 | 81.6754198664817 | | 51.720715743242124 | 82.00118535811626 | 82.22960569251283 | | 51.89643169822524 | 82.2290091613556 | 82.5013636146388 | | 51.95895898113868 | 82.37318990939565 | 82.74002377794454 | | 52.10124886807968 | 82.48796686037502 | 83.23354941183932 | | 52.292280637519376 | 83.0265226541066 | 84.01552618012572 | | 52.51856237784144 | 83.8797360318052 | 84.8588319093393 | | 52.65076845986818 | 84.80037351256634 | 85.13577756273656 | * Railsbench `WARMUP=20000 BENCHMARK=1000 bin/bench` of https://github.com/k0kubun/railsbench. It gets closer to --disable=jit. | | r67276 | r67276 | after | | | | --jit | --jit | |:----------|:-------|:-------|:-------| | req/s | 891.3 | 742.2 | 841.5 | |:----------|:-------|:-------|:-------| | 50%ile ms | 1.00 | 1.21 | 1.08 | | 66%ile ms | 1.02 | 1.24 | 1.09 | | 75%ile ms | 1.03 | 1.28 | 1.10 | | 80%ile ms | 1.03 | 1.30 | 1.11 | | 90%ile ms | 1.09 | 1.42 | 1.15 | | 95%ile ms | 1.32 | 1.65 | 1.27 | | 98%ile ms | 4.79 | 2.23 | 1.81 | | 99%ile ms | 5.68 | 7.52 | 6.64 | |100%ile ms | 6.52 | 9.69 | 8.59 | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67277 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-17Drop invalid trailing comma in JSON objectk0kubun
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67276 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-16Ignore test-bundled-gems failure on CI for nowk0kubun
ktsj-san recognizes this issue and it's intentionally left failing now. As failure notification of this task is NOT indicating ruby is broken, let's stop notifying the failure fo rnow. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67275 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-16* 2019-03-17svn
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67274 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-16Do not build Azure Pipelines on Pull Requestk0kubun
For 2 reasons: * bundled_gems tend to be left broken (like now) * We don't want Slack notification for pull request and it can't be disabled on Azure Pipelines git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67273 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-16Notify AppVeyor results to multiple channelsk0kubun
and simplified config by using dedicated webhook URL. Sadly AppVeyor YAML does not support alias and so we need to copy-paste the request body. memo: https://slack-files2.s3-us-west-2.amazonaws.com/bot_icons/2018-02-10/314363543719_48.png is the URL used by `provider: Slack` git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67272 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-16* 2019-03-16svn
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67271 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-16dsym should be treated as string [ruby-core:91852] [Bug #15670]ktsj
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67270 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-15Increase the number of curl retriesk0kubun
Because retrying 5 times failed. https://ci.appveyor.com/project/ruby/ruby/builds/23063048/job/k9lykaagfaex74gg git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67269 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-15* expand tabs.svn
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67267 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-15node.h: introduce nd_brace to determine if a hash literal is a keywordmame
NODE_HASH#nd_brace is a flag that is 1 for `foo({ k: 1 })` and 0 for `foo(k: 1)`. nd_alen had been abused for the flag (and the implementation is completely the same), but an explicit name is better to read. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67266 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-15NEWS: adjust indents and escape brackets not to be labeled listsnobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67265 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-15Show the source line at an invalid class/instance variablenobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67264 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-14* 2019-03-15svn
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67262 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-14tool/make-snapshot: Use 6-spaces indent for SIZE and digestsnagachika
to align with release note markdown. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67261 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-14Skip Bundler's test made fail by r67226k0kubun
Possible fix would be https://github.com/bundler/bundler/pull/7038, but Ruby script ending with `^~~` could be wrongly stripped by that? git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67257 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-14compile.c: fix the corner case of rest and keyword argumentsmame
See https://bugs.ruby-lang.org/issues/10856#note-20 . [Bug #10856] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67256 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-14compile.c (setup_args): process arguments forwardmame
For unknown reason, setup_args processed the arguments from the last to the first. This is not only difficult to read, but also inefficient in some cases. For example, the arguments of `foo(*a1, *a2, *a3)` was compiled like `a1.dup << (a2.dup << a3)`. The second dup (`a2.dup`) is not needed. This change refactors the function so that it processes the arguments forward: `foo(*a1, *a2, *a3)` is compiled as `a1.dup << a2 << a3`, and in my opinion, the source code is now much more readable. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67255 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-14parse.y: no punctuation instance/class variablesnobu
* parse.y (parse_atmark): exclude punctuation follows @ marks, whereas it is inclusive after $ mark as some punctuation global variables exist. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67254 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-14* expand tabs.svn
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67253 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-14compile.c: factor out "compile_args" from "compile_array"mame
compile_array function had three usages: array literal, hash literal, and method arguments. I think the third is completely different than the first and second. For example, method arguments and popped are meaningless; keywords_ptr and flag parameter for array/hash literal is also unused. This change refactors them: a function "compile_args" is created for the third, and removes no longer used parameters of "compile_array". git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67252 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-14parse.y: show invalid global variable linenobu
* parse.y (parse_gvar): show the source line erred by invalid global variable, and indicate the variable including the wrong punctuation. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67251 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-14Hoisted out ruby_show_error_linenobu
* parse.y (ruby_show_error_line): hoisted out from parser_yyerror. * parse.y (regx_options): revert r67226 and show the error line separately. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67250 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-14More initializations of YYLTYPEnobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67249 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-14* 2019-03-14svn
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67248 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-14Guard out the test when it is run under root permissionmame
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67247 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-13* 2019-03-13svn
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67244 b2dd03c8-39d4-4d8f-98ff-823fe69b080e