1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/bootstraptest
Alan Wu b74d6563a6 Extract yjit_force_iv_index and make it work when object is frozen
In an effort to simplify the logic YJIT generates for accessing instance
variable, YJIT ensures that a given name-to-index mapping exists at
compile time. In the case that the mapping doesn't exist, it was created
by using rb_ivar_set() with Qundef on the sample object we see at
compile time. This hack isn't fine if the sample object happens to be
frozen, in which case YJIT would raise a FrozenError unexpectedly.

To deal with this, make a new function that only reserves the mapping
but doesn't touch the object. This is rb_obj_ensure_iv_index_mapping().
This new function superceeds the functionality of rb_iv_index_tbl_lookup()
so it was removed.

Reported by and includes a test case from John Hawthorn <john@hawthorn.email>

Fixes: GH-282
2021-10-20 18:19:43 -04:00
..
pending.rb
runner.rb
test_attr.rb
test_autoload.rb
test_block.rb
test_class.rb
test_env.rb
test_eval.rb
test_exception.rb
test_fiber.rb Replace copy coroutine with pthread implementation. 2021-07-01 11:23:03 +12:00
test_finalizer.rb
test_flip.rb
test_flow.rb
test_fork.rb
test_gc.rb
test_insns.rb Prefer qualified names under Thread 2021-06-29 11:41:10 +09:00
test_io.rb
test_jump.rb
test_literal.rb
test_literal_suffix.rb
test_load.rb
test_marshal.rb
test_massign.rb
test_method.rb
test_objectspace.rb
test_proc.rb
test_ractor.rb Fix Ractor.make_shareable changing locals for Procs 2021-10-06 15:38:33 -04:00
test_string.rb
test_struct.rb
test_syntax.rb
test_thread.rb
test_yjit.rb Extract yjit_force_iv_index and make it work when object is frozen 2021-10-20 18:19:43 -04:00
test_yjit_30k_ifelse.rb Rename test files 2021-10-20 18:19:31 -04:00
test_yjit_30k_methods.rb Rename test files 2021-10-20 18:19:31 -04:00