summaryrefslogtreecommitdiff
path: root/tool
Commit message (Collapse)AuthorAgeFilesLines
* Consider environment variable case-insensitivenessNobuyoshi Nakada2021-11-291-3/+18
|
* Move win32ole.gemspec to the proper placeNobuyoshi Nakada2021-11-261-0/+1
|
* Add win32ole to sync_default_gems.rbNobuyoshi Nakada2021-11-251-0/+6
|
* No need to link and install .pdb anymoreAlan Wu2021-11-241-1/+0
| | | | | | | | With /Z7, no .pdb file is generated, so trying to link it during build fails on my machine even though it's okay on CI. By the way, in my local testing, no .pdb is generated in cwd at runtime even without the /Fd option. I guess we can pass it just in case.
* Ignore LUCENSE files of standard libraries for sync targetHiroshi SHIBATA2021-11-161-5/+13
|
* Added LICENSE entry of vendored net-http-persistent to LEGALHiroshi SHIBATA2021-11-161-0/+1
|
* Added LICENSE entry of vendored connection_pool to LEGALHiroshi SHIBATA2021-11-161-0/+1
|
* Added LICENSE entry of vendored molinillo to LEGALHiroshi SHIBATA2021-11-161-0/+2
|
* Added LICENSE entry of vendored thor to LEGALHiroshi SHIBATA2021-11-161-0/+1
|
* Merge digest-3.0.3.pre3 and ↵Hiroshi SHIBATA2021-11-161-0/+1
| | | | https://github.com/ruby/digest/commit/efd76821b8a467c193c753104c29b476debbb2c9
* Support preview releaseNARUSE, Yui2021-11-161-1/+3
| | | | Also add tag property.
* Relax extention name for macOSHiroshi SHIBATA2021-11-151-1/+1
|
* `Primitive.mandatory_only?` for fast pathKoichi Sasada2021-11-151-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Compare with the C methods, A built-in methods written in Ruby is slower if only mandatory parameters are given because it needs to check the argumens and fill default values for optional and keyword parameters (C methods can check the number of parameters with `argc`, so there are no overhead). Passing mandatory arguments are common (optional arguments are exceptional, in many cases) so it is important to provide the fast path for such common cases. `Primitive.mandatory_only?` is a special builtin function used with `if` expression like that: ```ruby def self.at(time, subsec = false, unit = :microsecond, in: nil) if Primitive.mandatory_only? Primitive.time_s_at1(time) else Primitive.time_s_at(time, subsec, unit, Primitive.arg!(:in)) end end ``` and it makes two ISeq, ``` def self.at(time, subsec = false, unit = :microsecond, in: nil) Primitive.time_s_at(time, subsec, unit, Primitive.arg!(:in)) end def self.at(time) Primitive.time_s_at1(time) end ``` and (2) is pointed by (1). Note that `Primitive.mandatory_only?` should be used only in a condition of an `if` statement and the `if` statement should be equal to the methdo body (you can not put any expression before and after the `if` statement). A method entry with `mandatory_only?` (`Time.at` on the above case) is marked as `iseq_overload`. When the method will be dispatch only with mandatory arguments (`Time.at(0)` for example), make another method entry with ISeq (2) as mandatory only method entry and it will be cached in an inline method cache. The idea is similar discussed in https://bugs.ruby-lang.org/issues/16254 but it only checks mandatory parameters or more, because many cases only mandatory parameters are given. If we find other cases (optional or keyword parameters are used frequently and it hurts performance), we can extend the feature.
* Bundle RBS 1.7.0 (#5105)Soutaro Matsumoto2021-11-121-4/+2
| | | | | | | | | * Bundle RBS 1.7.0 * tool/test-bundled-gems.rb: Use a correct path to Check if rbs is built * tool/test-bundled-gems.rb: lib/rbs/parse.y is no longer created Co-authored-by: Yusuke Endoh <mame@ruby-lang.org>
* Disable experimental warnings in test/runner.rbNobuyoshi Nakada2021-11-101-2/+0
|
* Mark IO::Buffer as experimental.Samuel Williams2021-11-101-0/+2
|
* Filter method names only if filtering method name onlyNobuyoshi Nakada2021-11-091-9/+6
| | | | | | | If sole `filter` option doesn't seem including test case name, match with method name only. And if the filter is a Regexp or String, it never matches method name symbols.
* Bundle rbs 1.7.0.beta.5Yusuke Endoh2021-11-092-0/+18
|
* Skip bundled gem with an extension library under with-static-linked-extYusuke Endoh2021-11-051-0/+4
| | | | | | .. mainly to fix emscripten CI http://rubyci.s3.amazonaws.com/crossruby/crossruby-master-wasm64_emscripten/log/20211104T024621Z.fail.html.gz
* Allow the thread-model to be switched by configure optionYuta Saito2021-10-301-10/+15
| | | | | This change adds --with-thread=IMPL option to the configure. If not supplied, default implementation for each platform will be used.
* Select including thread impl file at config timeYuta Saito2021-10-301-0/+9
|
* Split thread-model config into another ac fileYuta Saito2021-10-301-0/+19
| | | | | This is a first step to allow the thread-model implementation to be switched by configure's option
* Get rid of exponential backtracks found by CodeQLNobuyoshi Nakada2021-10-302-2/+2
| | | | | Since these regexps are used at build/installation, they are not vulnerabilities.
* vm_core.h: Avoid unaligned access to ic_serial on 32-bit machineYusuke Endoh2021-10-291-2/+2
| | | | This caused Bus error on 32 bit Solaris
* Downloader: retry when RFC 2616 noncompliant dates [ci skip]Nobuyoshi Nakada2021-10-281-5/+8
| | | | | | zlib.net rarely returns the current time in RFC 2616 noncompliant format in the response header, and the checksum does not match in that case (maybe creating the tarball on the fly?).
* Properly exclude test cases.Vít Ondruch2021-10-271-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Lets consider the following scenario: ~~~ irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):001:0> p suite OpenSSL::TestEC => OpenSSL::TestEC irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):002:0> p all_test_methods ["test_ECPrivateKey", "test_ECPrivateKey_encrypted", "test_PUBKEY", "test_check_key", "test_derive_key", "test_dh_compute_key", "test_dsa_sign_asn1_FIPS186_3", "test_ec_group", "test_ec_key", "test_ec_point", "test_ec_point_add", "test_ec_point_mul", "test_generate", "test_marshal", "test_sign_verify", "test_sign_verify_raw"] => ["test_ECPrivateKey", "test_ECPrivateKey_encrypted", "test_PUBKEY", "test_check_key", "test_derive_key", "test_dh_compute_key", "test_dsa_sign_asn1_FIPS186_3", "test_ec_group", "test_ec_key", "test_ec_point", "test_ec_point_add", "test_ec_point_mul", "test_generate", "test_marshal", "test_sign_verify", "test_sign_verify_raw"] irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):003:0> p filter /\A(?=.*)(?!.*(?-mix:(?-mix:memory_leak)|(?-mix:OpenSSL::TestEC.test_check_key)))/ => /\A(?=.*)(?!.*(?-mix:(?-mix:memory_leak)|(?-mix:OpenSSL::TestEC.test_check_key)))/ irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):004:0> method = "test_check_key" => "test_check_key" ~~~ The intention here is to exclude the `test_check_key` test case. Unfortunately this does not work as expected, because the negative filter is never checked: ~~~ irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):005:0> filter === method => true irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):006:0> filter === "#{suite}##{method}" => false irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):007:0> filter === method || filter === "#{suite}##{method}" => true ~~~ Therefore always filter against the fully qualified method name `#{suite}##{method}`, which should provide the expected result. However, if plain string filter is used, keep checking also only the method name. This resolves [Bug #16936].
* Revert "introduce check code for mysterious EBADF"Koichi Sasada2021-10-261-15/+2
| | | | This reverts commit 7864efa105921eb3900c843126f2e0db02b9c6ae.
* Revert "check other IO#close calls"Koichi Sasada2021-10-261-20/+17
| | | | This reverts commit a1c4cab11d613d7df037a81a770ee44a23a2e9be.
* check other IO#close callsKoichi Sasada2021-10-251-17/+20
| | | | | http://ci.rvm.jp/results/trunk@ruby-iga/3690333 > tool/lib/test/unit/parallel.rb:68:in `close': Bad file descriptor (Errno::EBADF)
* introduce check code for mysterious EBADFKoichi Sasada2021-10-251-2/+15
| | | | | | | | | | | | | | | | | | parallel test randomly failed with EBADF. This patch checks wich suite causes this error. ex) http://ci.rvm.jp/results/trunk@ruby-iga/3690219 ``` /tmp/ruby/v3/src/trunk/tool/lib/test/unit/parallel.rb:88:in `close': Bad file descriptor (Errno::EBADF) /tmp/ruby/v3/src/trunk/tool/lib/test/unit/parallel.rb:88:in `ensure in _run_suite' /tmp/ruby/v3/src/trunk/tool/lib/test/unit/parallel.rb:89:in `_run_suite' /tmp/ruby/v3/src/trunk/tool/lib/test/unit/parallel.rb:30:in `block in _run_suites' /tmp/ruby/v3/src/trunk/tool/lib/test/unit/parallel.rb:29:in `map' /tmp/ruby/v3/src/trunk/tool/lib/test/unit/parallel.rb:29:in `_run_suites' /tmp/ruby/v3/src/trunk/tool/lib/test/unit/parallel.rb:128:in `run' /tmp/ruby/v3/src/trunk/tool/lib/test/unit/parallel.rb:211:in `<main>' ```
* Cleanup diff against upstream. Add commentsAlan Wu2021-10-201-1/+0
| | | | | I did a `git diff --stat` against upstream and looked at all the files that are outside of YJIT to come up with these minor changes.
* Remove the scraperAaron Patterson2021-10-205-331/+1
| | | | | Now that we're using the jit function entry point, we don't need the scraper. Thank you for your service, scraper. ❤️
* Remove some MicroJIT vestigesAaron Patterson2021-10-205-8/+8
| | | | Just happened to run across this, so lets fix them
* YJIT: lazy polymorphic getinstancevariableAlan Wu2021-10-201-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | Lazily compile out a chain of checks for different known classes and whether `self` embeds its ivars or not. * Remove trailing whitespaces * Get proper addresss in Capstone disassembly * Lowercase address in Capstone disassembly Capstone uses lowercase for jump targets in generated listings. Let's match it. * Use the same successor in getivar guard chains Cuts down on duplication * Address reviews * Fix copypasta error * Add a comment
* Remove trailing whitespacesMaxime Chevalier-Boisvert2021-10-201-1/+1
|
* Yet Another Ruby JIT!Jose Narvaez2021-10-205-13/+13
| | | | Renaming uJIT to YJIT. AKA s/ujit/yjit/g.
* Restore interpreter regs in ujit hook. Implement leave bytecode.Maxime Chevalier-Boisvert2021-10-203-19/+12
|
* Tally instructions when taking side exists for --ujit-statsAlan Wu2021-10-201-0/+5
| | | | | | shopify/ruby#29 Co-authored-by: Maxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com>
* Refactor uJIT code into more files for readabilityMaxime Chevalier-Boisvert2021-10-201-0/+0
|
* Fix typoAlan Wu2021-10-201-1/+1
|
* Include disassembly in MicroJIT scraper outputAlan Wu2021-10-202-13/+25
|
* Add to the MicroJIT scraper an example that passes ecAlan Wu2021-10-204-15/+39
|
* Fix compilation for OPT_THREADED_CODE=2Alan Wu2021-10-201-3/+6
|
* Zero sized array are not standard CAlan Wu2021-10-201-1/+1
|
* Compile with MicroJIT disabled when scrape failsAlan Wu2021-10-202-12/+14
| | | | | This is just so we can build successfully on -O0 and other cases that are not supported by the code scraper.
* endbr64 is fineAlan Wu2021-10-201-1/+1
|
* Preliminary GNU/Linux support for code scraperAlan Wu2021-10-201-5/+77
| | | | Let's see if this works on CI
* Refactor ujit_examples.h generator. Remove dwarfdump dependencyAlan Wu2021-10-205-62/+215
|
* Remove PC argument from ujit instructionsMaxime Chevalier-Boisvert2021-10-201-1/+1
|
* Yeah, this actually works!Alan Wu2021-10-201-1/+1
|