mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
check main-ractor or not first
On non-multi-ractor-mode, the cost of rb_ractor_main_p() is low so check it first.
This commit is contained in:
parent
762be87759
commit
631eaa8510
Notes:
git
2020-10-21 23:52:37 +09:00
1 changed files with 3 additions and 2 deletions
|
@ -923,7 +923,8 @@ generic_ivtbl(VALUE obj, ID id, bool force_check_ractor)
|
|||
ASSERT_vm_locking();
|
||||
|
||||
if ((force_check_ractor || rb_is_instance_id(id)) && // not internal ID
|
||||
UNLIKELY(rb_ractor_shareable_p(obj) && !rb_ractor_main_p())) {
|
||||
UNLIKELY(!rb_ractor_main_p()) &&
|
||||
UNLIKELY(rb_ractor_shareable_p(obj))) {
|
||||
rb_raise(rb_eRuntimeError, "can not access instance variables of shareable objects from non-main Ractors");
|
||||
}
|
||||
return generic_iv_tbl_;
|
||||
|
@ -2952,7 +2953,7 @@ rb_const_set(VALUE klass, ID id, VALUE val)
|
|||
QUOTE_ID(id));
|
||||
}
|
||||
|
||||
if (!rb_ractor_shareable_p(val) && !rb_ractor_main_p()) {
|
||||
if (!rb_ractor_main_p() && !rb_ractor_shareable_p(val)) {
|
||||
rb_raise(rb_eNameError, "can not set constants with non-shareable objects by non-main Ractors");
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue