1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/bootstraptest
Koichi Sasada 2f50936cb9 Ractor.make_shareable(obj)
Introduce new method Ractor.make_shareable(obj) which tries to make
obj shareable object. Protocol is here.

(1) If obj is shareable, it is shareable.
(2) If obj is not a shareable object and if obj can be shareable
    object if it is frozen, then freeze obj. If obj has reachable
    objects (rs), do rs.each{|o| Ractor.make_shareable(o)}
    recursively (recursion is not Ruby-level, but C-level).
(3) Otherwise, raise Ractor::Error. Now T_DATA is not a shareable
    object even if the object is frozen.

If the method finished without error, given obj is marked as
a sharable object.

To allow makng a shareable frozen T_DATA object, then set
`RUBY_TYPED_FROZEN_SHAREABLE` as type->flags. On default,
this flag is not set. It means user defined T_DATA objects are
not allowed to become shareable objects when it is frozen.

You can make any object  shareable by setting FL_SHAREABLE flag,
so if you know that the T_DATA object is shareable (== thread-safe),
set this flag, at creation time for example. `Ractor` object is one
example, which is not a frozen, but a shareable object.
2020-10-21 07:59:24 +09:00
..
pending.rb Moved already resolved test 2020-04-27 10:39:07 +09:00
runner.rb display stderr output even if core dump files 2020-07-29 18:45:39 +09:00
test_attr.rb
test_autoload.rb
test_block.rb
test_class.rb
test_env.rb
test_eval.rb Turn class variable warnings into exceptions 2020-04-10 00:29:05 -07:00
test_exception.rb
test_fiber.rb Improved fiber benchmarks. Increase number of iterations. 2019-07-12 11:56:51 +12:00
test_finalizer.rb
test_flip.rb
test_flow.rb Make proc/Proc.new without block an error instead of warning 2020-06-10 17:49:54 -07:00
test_fork.rb
test_gc.rb
test_insns.rb Remove test for putiseq insn 2020-09-24 09:56:12 +09:00
test_io.rb
test_jump.rb Make yield in singleton class definitions in methods a SyntaxError 2020-02-11 12:44:23 -08:00
test_literal.rb st.c (rb_hash_bulk_insert_into_st_table): avoid out-of-bounds write 2019-01-15 14:19:19 +00:00
test_literal_suffix.rb parse.y: more token names 2019-01-21 10:24:56 +00:00
test_load.rb
test_marshal.rb
test_massign.rb
test_method.rb
test_objectspace.rb Use a monotonically increasing number for object_id 2019-11-07 09:31:07 -08:00
test_proc.rb Make proc/Proc.new without block an error instead of warning 2020-06-10 17:49:54 -07:00
test_ractor.rb Ractor.make_shareable(obj) 2020-10-21 07:59:24 +09:00
test_string.rb
test_struct.rb
test_syntax.rb Turn class variable warnings into exceptions 2020-04-10 00:29:05 -07:00
test_thread.rb should check pending interrupts correctly. 2020-04-09 12:51:51 +09:00