summaryrefslogtreecommitdiff
path: root/bootstraptest
AgeCommit message (Collapse)Author
2021-10-20Polymorphic opt_send_without_blockAlan Wu
2021-10-20YJIT: hash specialization for opt_arefAlan Wu
Make it lazy and add a hash specialization in addition to the array specialization.
2021-10-20YJIT: lazy polymorphic getinstancevariableAlan Wu
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
2021-10-20Remove trailing whitespacesMaxime Chevalier-Boisvert
2021-10-20Make Blocks depend on BOPSAaron Patterson
When a BOP is redefined, the BOP redefinition callback will invalidate any blocks that depend on BOPS. This allows us to eliminate runtime checks for BOP redefinition.
2021-10-20Machinery to implement deferred compilationMaxime Chevalier-Boisvert
2021-10-20Rename test filesMaxime Chevalier-Boisvert
2021-10-20Implement support for variadic C functionsMaxime Chevalier-Boisvert
2021-10-20Stop using UJIT.install_entry in btestAlan Wu
CI runs on some platforms uJIT doesn't support. They don't have UJIT.install_entry. Maybe we want something like `install_entry_if_possible`.
2021-10-20Mark and update object references in generated codeAlan Wu
Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com>
2021-10-20Check for ::Array, not T_ARRAY in opt_arefAlan Wu
2021-10-20Add regression test for extended table bounds checkAlan Wu
2021-10-20Added more tests to `make btest`Maxime Chevalier-Boisvert
2021-10-20Add another torture test to `make btest`Maxime Chevalier-Boisvert
2021-10-20Add failing test identified by Aaron PattersonMaxime Chevalier-Boisvert
2021-10-20Added failing test to `make btest`Maxime Chevalier-Boisvert
2021-10-20Added synthetic torture test with 30K tiny methodsMaxime Chevalier-Boisvert
2021-10-20Fixed two bugs in JIT-to-JIT calls (thanks Alan!)Maxime Chevalier-Boisvert
2021-10-20Moved ujit code invalidation test into bootstraptestMaxime Chevalier-Boisvert
2021-10-06Fix Ractor.make_shareable changing locals for ProcsAlan Wu
env_copy() uses rb_ary_delete_at() with a loop counting up while iterating through the list of read only locals. rb_ary_delete_at() can shift elements in the array to an index lesser than the loop index, causing locals to be missed and set to Qfalse in the returned environment. Iterate through the locals in reverse instead, this way the shifting never happens for locals that are yet to be visited and we process all the locals in the array. [Bug #18023] Notes: Merged: https://github.com/ruby/ruby/pull/4940 Merged-By: XrXr
2021-08-24[Bug #18117] Fix Ractor race condition with GCPeter Zhu
rb_objspace_reachable_objects_from requires that the GC not be active. Since the Ractor barrier is not executed for incremental sweeping, Ractor may call rb_objspace_reachable_objects_from after sweeping has started to share objects. This causes a crash that looks like the following: ``` <internal:ractor>:627: [BUG] rb_objspace_reachable_objects_from() is not supported while during_gc == true ``` Co-authored-by: Vinicius Stock <vinicius.stock@shopify.com> Notes: Merged: https://github.com/ruby/ruby/pull/4755
2021-07-01Replace copy coroutine with pthread implementation.Samuel Williams
2021-06-29Prefer qualified names under ThreadNobuyoshi Nakada
2021-06-23Evacuate transient heap when enabling ractorseileencodes
If the GC has been disabled we need to re-enable it so we can evacuate the transient heap. Fixes https://bugs.ruby-lang.org/issues/17985 [Bug #17985] [ruby-core:104260] Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org> Notes: Merged: https://github.com/ruby/ruby/pull/4596
2021-05-25bootstraptest/test_ractor.rb: Skip an assertion on Travis arm64.Jun Aruga
Skip the assertion to test the `Ractor.select` from multiple ractors that rarely fails on Travis arm64. See <https://bugs.ruby-lang.org/issues/17878>. Notes: Merged: https://github.com/ruby/ruby/pull/4518
2021-03-07Make Ractor stdio belonging to the Ractor [Bug #17672]Nobuyoshi Nakada
Defer making ractor stdio until ractor started. Before ractor started, created objects belong to the caller ractor instead of the created ractor. Notes: Merged: https://github.com/ruby/ruby/pull/4241 Merged-By: nobu <nobu@ruby-lang.org>
2021-02-18Ractor.allocate should not be allowedKoichi Sasada
Ractor.allocate and Ractor#dup should not be allowed like Thread. [Bug #17642] Notes: Merged: https://github.com/ruby/ruby/pull/4198
2021-02-10Fixed race in dtoa [Bug #17612]Nobuyoshi Nakada
Fixed the race condition when replacing `freelist` entry with its chained next element. At acquiring an entry, hold the entry once with the special value, then release by replacing it with the next element again after acquired. If another thread is holding the same entry at that time, spinning until the entry gets released. Co-Authored-By: Koichi Sasada <ko1@atdot.net> Notes: Merged: https://github.com/ruby/ruby/pull/4167
2021-02-01Implement NameError::message#clone for RactorNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/4142
2021-01-22fix Ractor.yield(obj, move: true)Koichi Sasada
Ractor.yield(obj, move: true) and Ractor.select(..., yield_value: obj, move: true) tried to yield a value with move semantices, but if the trial is faild, the obj should not become a moved object. To keep this rule, `wait_moving` wait status is introduced. New yield/take process: (1) If a ractor tried to yield (move:true), make taking racotr's wait status `wait_moving` and make a moved object by `ractor_move(obj)` and wakeup taking ractor. (2) If a ractor tried to take a message from a ractor waiting fo yielding (move:true), wakeup the ractor and wait for (1). Notes: Merged: https://github.com/ruby/ruby/pull/4105
2021-01-13Rename RubyVM::MJIT to RubyVM::JITTakashi Kokubun
because the name "MJIT" is an internal code name, it's inconsistent with --jit while they are related to each other, and I want to discourage future JIT implementation-specific (e.g. MJIT-specific) APIs by this rename. [Feature #17490]
2021-01-05enable constant cache on ractorsKoichi Sasada
constant cache `IC` is accessed by non-atomic manner and there are thread-safety issues, so Ruby 3.0 disables to use const cache on non-main ractors. This patch enables it by introducing `imemo_constcache` and allocates it by every re-fill of const cache like `imemo_callcache`. [Bug #17510] Now `IC` only has one entry `IC::entry` and it points to `iseq_inline_constant_cache_entry`, managed by T_IMEMO object. `IC` is atomic data structure so `rb_mjit_before_vm_ic_update()` and `rb_mjit_after_vm_ic_update()` is not needed. Notes: Merged: https://github.com/ruby/ruby/pull/4022
2020-12-22add Ractor.mainKoichi Sasada
It returns main Ractor, like Thread.main. [Feature #17418] Notes: Merged: https://github.com/ruby/ruby/pull/3963
2020-12-22add Ractor#[]/#[]= for ractor local storageKoichi Sasada
This API is similar to plain old Thread#[]/Fiber#[] interface with symbol key. Notes: Merged: https://github.com/ruby/ruby/pull/3962
2020-12-22TracePoint.new(&block) should be ractor-localKoichi Sasada
TracePoint should be ractor-local because the Proc can violate the Ractor-safe. Notes: Merged: https://github.com/ruby/ruby/pull/3943
2020-12-21fix Ractor.make_shareable() with Class/ModuleKoichi Sasada
To check shareable-ness, rb_ractor_shareable_p() is needed for Class/Module objects isntead of checking flags.
2020-12-19add "copy: true" option for Ractor.make_shareableKoichi Sasada
Ractor.make_shareable(obj) tries to make obj a shareable object by changing the attribute of obj and traversable objects from obj (mainly freeze them). "copy: true" option is more conservative approach by make deep copied object and make it sharable. It doesn't affect any existing objects.
2020-12-16strip trailing spaces [ci skip]Nobuyoshi Nakada
2020-12-16Ractor#receive_if to receive only matched messagesKoichi Sasada
Instead of Ractor.receive, Ractor.receive_if can provide a pattern by a block and you can choose the receiving message. [Feature #17378] Notes: Merged: https://github.com/ruby/ruby/pull/3862
2020-12-13Debug the command used for gdb dumpTakashi Kokubun
It's not working http://ci.rvm.jp/results/trunk-mjit@phosphorus-docker/3288206. I'm debugging why.
2020-12-13@ruby is the target Ruby in bootstraptestTakashi Kokubun
2020-12-12Dump a backtrace with gdbTakashi Kokubun
Because Ruby often fails to dump a C backtrace.
2020-12-12trap on non-main ractorKoichi Sasada
trap can accept blopck/Proc and it can violate Rator isolation, so the Proc should be isolatable when trap is used on non-main ractor. Notes: Merged: https://github.com/ruby/ruby/pull/3888
2020-12-12fix ivar with shareable objects issueKoichi Sasada
Instance variables of sharable objects are accessible only from main ractor, so we need to check it correctly. Notes: Merged: https://github.com/ruby/ruby/pull/3887
2020-12-10Save a core file from bootstraptestTakashi Kokubun
2020-12-10ObjectSpace._id2ref should not support unshareableKoichi Sasada
ObjectSpace._id2ref(id) can return any objects even if they are unshareable, so this patch raises RangeError if it runs on multi-ractor mode and the found object is unshareable. Notes: Merged: https://github.com/ruby/ruby/pull/3878
2020-12-08Add test that `Ractor.make_shareable` calls user defined `#freeze`Marc-Andre Lafortune
Notes: Merged: https://github.com/ruby/ruby/pull/3694
2020-12-07Removed deprecated Time#succNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/3841
2020-12-07Ractor.select requires an argument or yield_valueMarc-Andre Lafortune
Notes: Merged: https://github.com/ruby/ruby/pull/3848
2020-12-07fix Thread's interrupt and Ractor#take issueKoichi Sasada
Thread's interrupt set Ractor's wakeup_status as interrupted, but the status remains next Ractor communication API. This patch makes to ignore the previous interrupt state. [Bug #17366] Also this patch solves the Thread#kill and Ractor#take issues.