diff options
author | Koichi Sasada <[email protected]> | 2020-10-16 15:20:40 +0900 |
---|---|---|
committer | Koichi Sasada <[email protected]> | 2020-10-17 08:18:04 +0900 |
commit | f6661f50854e0cdccb03ee516a21ce62adf6c802 () | |
tree | 72668d7b8a8cdbe7f84234bdd99e93a9049a7918 /st.c | |
parent | 91ec5f9e39cf54dd7a157addb778293853571f13 (diff) |
sync RClass::ext::iv_index_tbl
iv_index_tbl manages instance variable indexes (ID -> index). This data structure should be synchronized with other ractors so introduce some VM locks. This also introduced atomic ivar cache used by set/getinlinecache instructions. To make updating ivar cache (IVC), we changed iv_index_tbl data structure to manage (ID -> entry) and an entry points serial and index. IVC points to this entry so that cache update becomes atomically.
Notes: Merged: https://.com/ruby/ruby/pull/3662
-rw-r--r-- | st.c | 15 |
1 files changed, 15 insertions, 0 deletions
@@ -2238,4 +2238,19 @@ rb_hash_bulk_insert_into_st_table(long argc, const VALUE *argv, VALUE hash) else st_insert_generic(tab, argc, argv, hash); } #endif |