summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-02-22Introduce disposable call-cache.Koichi Sasada
This patch contains several ideas: (1) Disposable inline method cache (IMC) for race-free inline method cache * Making call-cache (CC) as a RVALUE (GC target object) and allocate new CC on cache miss. * This technique allows race-free access from parallel processing elements like RCU. (2) Introduce per-Class method cache (pCMC) * Instead of fixed-size global method cache (GMC), pCMC allows flexible cache size. * Caching CCs reduces CC allocation and allow sharing CC's fast-path between same call-info (CI) call-sites. (3) Invalidate an inline method cache by invalidating corresponding method entries (MEs) * Instead of using class serials, we set "invalidated" flag for method entry itself to represent cache invalidation. * Compare with using class serials, the impact of method modification (add/overwrite/delete) is small. * Updating class serials invalidate all method caches of the class and sub-classes. * Proposed approach only invalidate the method cache of only one ME. See [Feature #16614] for more details. Notes: Merged: https://github.com/ruby/ruby/pull/2888
2020-02-22VALUE size packed callinfo (ci).Koichi Sasada
Now, rb_call_info contains how to call the method with tuple of (mid, orig_argc, flags, kwarg). Most of cases, kwarg == NULL and mid+argc+flags only requires 64bits. So this patch packed rb_call_info to VALUE (1 word) on such cases. If we can not represent it in VALUE, then use imemo_callinfo which contains conventional callinfo (rb_callinfo, renamed from rb_call_info). iseq->body->ci_kw_size is removed because all of callinfo is VALUE size (packed ci or a pointer to imemo_callinfo). To access ci information, we need to use these functions: vm_ci_mid(ci), _flag(ci), _argc(ci), _kwarg(ci). struct rb_call_info_kw_arg is renamed to rb_callinfo_kwarg. rb_funcallv_with_cc() and rb_method_basic_definition_p_with_cc() is temporary removed because cd->ci should be marked. Notes: Merged: https://github.com/ruby/ruby/pull/2888
2020-02-22use RUBY_FUNCTION_NAME_STRING instead of __func__ for rp()Koichi Sasada
2020-02-22* 2020-02-22 [ci skip]git
2020-02-22`Proc` made by `Symbol#to_proc` should be a lambda [Bug #16260]Nobuyoshi Nakada
With refinements, too.
2020-02-22`Proc` made by `Symbol#to_proc` should be a lambda [Bug #16260]Nobuyoshi Nakada
2020-02-22Adjusted indent [ci skip]Nobuyoshi Nakada
2020-02-21[ruby/irb] `yield` outside method definition is a syntax errorNobuyoshi Nakada
https://github.com/ruby/irb/commit/dbc7b059c7
2020-02-21Fixed net-pop, smtp, protocol and imap task for sync toolHiroshi SHIBATA
2020-02-21Fixed net-ftp sync task and resync from standalone repoHiroshi SHIBATA
2020-02-21Move an entry of net-ftp to the default gems sectionHiroshi SHIBATA
2020-02-21Promote net-http to the default gems.Hiroshi SHIBATA
test/net/http/test_https.rb: rename fixture methods to read_fixture because it conflicts with test-unit gem.
2020-02-21Move an entry of net-ftp to the default gems sectionHiroshi SHIBATA
2020-02-21Promote net-ftp to default gemsHiroshi SHIBATA
2020-02-21* 2020-02-21 [ci skip]git
2020-02-21Fix typo in NEWS-2.7.0Masataka Pocke Kuwabara
Notes: Merged: https://github.com/ruby/ruby/pull/2918
2020-02-20Prefer alignas() over _Alignas()Yusuke Endoh
to allow Intel C++ compiler to read ruby.h. This is similar to 9930481a239fa7182429f3c3942ea033fb9b0320
2020-02-20Fallback to load version file in ruby core repositoryHiroshi SHIBATA
2020-02-20Move an entry of net-imap to the default gems sectionHiroshi SHIBATA
2020-02-20Promote net-imap to the default gemsHiroshi SHIBATA
2020-02-20[ruby/rdoc] Removed `RDoc::Context::Section#sequence`Nobuyoshi Nakada
It has been deprecated since 2011. https://github.com/ruby/rdoc/commit/5c2aa0f77d
2020-02-20Fixed missing `return`Nobuyoshi Nakada
Get rid of double writing.
2020-02-20comma at the end of enum is a C++11ism卜部昌平
Comma at the end of enum is allowed in C since C99. We can use them internally. However when it comes to extension libraries, they could be written in different C++ versions. We cannot assume sometihng. Public headers shall keep compatibilities.
2020-02-20avoid defining inline卜部昌平
Recent (since 2012 maybe?) MSVC ships a header named xkeycheck.h, which (kindly!) aborts compilation on redefinition of C++ keywords. Let's not define this in case of C++.
2020-02-20ext/-test-/cxxanyargs: prevent have_devel check卜部昌平
The `cxx.try_compile` command in this file kicks `cxx.have_devel?` internally, which recursively calls `cxx.try_link` with a different source code. We don't want that happen (the source code compiled in this file must be the first one). We need to fake the system.
2020-02-20printf can be a macro卜部昌平
Namely glibc has this macro on -DFORTIFY_SOURCE. We have to prevent macro redefinition with different macro body.
2020-02-20hide vm_ep_in_heap_p_卜部昌平
`make leaked-globals` points out that this function is leaked. This has not been detected in our CI because it is defined only when VM_CHECK_MODE is nonzero. Just make it static and everytihng goes well.
2020-02-20fix arity mismatch卜部昌平
This is a ruby method with arity zero. Which means, this function takes one argument (that is self).
2020-02-20TestTime#test_memsize: skip when on GC_DEBUG卜部昌平
GC_DEBUG=1 makes this test fail because it changes the size of struct RVALUE. I don't think the test is useful then. Let's just skip.
2020-02-20suppress clang warnings卜部昌平
Starting clang 11, casts between pointer and (narrower-than-pointer) int are now warned. However all such thing in our repository are guaranteed safe. Let's suppress the warnings.
2020-02-20[DOC] Fixed `ENV.rassoc` result order [ci skip]Nobuyoshi Nakada
2020-02-19hash.c: [DOC] fix typosMarcus Stollsteimer
2020-02-19doc/make_cheatsheet.md: fix typosMarcus Stollsteimer
2020-02-20* 2020-02-20 [ci skip]git
2020-02-20Use `brew upgrade` instead of `brew update`Kazuhiro NISHIYAMA
2020-02-18Avoid jumping to a wrong destinationTakashi Kokubun
when the next insn is already compiled by former branches.
2020-02-19`Proc` made by `Symbol#to_proc` should be a lambda [Bug #16260]Nobuyoshi Nakada
2020-02-19* 2020-02-19 [ci skip]git
2020-02-19support multi-run test for test_readline.rbS-H-GAMELINKS
Notes: Merged: https://github.com/ruby/ruby/pull/2914
2020-02-18Pass keyword arguments to IOs properly [Bug #16639]Nobuyoshi Nakada
2020-02-18* 2020-02-18 [ci skip]git
2020-02-18[ruby/io-console] bump up to 0.5.6Nobuyoshi Nakada
2020-02-18[ruby/io-console] Just ignore the extension on other than CRubyNobuyoshi Nakada
https://github.com/ruby/io-console/commit/41b6f09574
2020-02-17[ruby/irb] Version 1.2.3aycabta
https://github.com/ruby/irb/commit/dd56e06df5
2020-02-17* append newline at EOF. [ci skip]git
2020-02-17Move the entry of net-protocol on docsHiroshi SHIBATA
2020-02-17Promote net-protocol to default gemsHiroshi SHIBATA
2020-02-17Partially revert "test/openssl/test_ssl.rb: skip ↵Yusuke Endoh
OpenSSL::TestSSL#test_fallback_scsv" A skip guard for test_fallback_scsv has been added in upstream repository.
2020-02-17[ruby/openssl] test/openssl/test_ssl: skip test_fallback_scsv if necessaryKazuki Yamaguchi
Run the test case only when the OpenSSL supports both TLS 1.1 and TLS 1.2. Note that the fallback SCSV mechanism is for TLS 1.2 or older and not for 1.3. Fixes: https://github.com/ruby/openssl/issues/336 https://github.com/ruby/openssl/commit/6f2e6d7cf7
2020-02-17[ruby/openssl] ts: simplify OpenSSL::Timestamp::Request#algorithmKazuki Yamaguchi
Stop the special treatment of invalid hashAlgorithm of the message imprint. Those invalid values can only appear after the object is instantiated, before the user sets an actual message digest algorithm. OpenSSL::Timestamp::TokenInfo#algorithm already does the same. Also, remove the test case "test_create_request" since it does not make much sense. Those fields are to be set by the user after creation of the object and checking the initial value is pointless. Fixes: https://github.com/ruby/openssl/issues/335 https://github.com/ruby/openssl/commit/890a6476fa