diff options
| author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-04-11 08:47:00 +0000 |
|---|---|---|
| committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-04-11 08:47:00 +0000 |
| commit | 6bc463204ae06fe9c5a72371a6a26a8f0b6b0d29 (patch) | |
| tree | 1a3c8070c2922cdcc982cd79dde2c786dd373dea /include/ruby | |
| parent | 036b55e5a4b29f35a7ee1d40f61474cd98a0a497 (diff) | |
* array.c: make shared arrays WB-protected objects.
Shared arrays were WB-unprotected object because
sharing array can modify shared array's buffer
if it occupied shared array.
[sharing array (ary)] -> [shared array (shared)] -> <buff>
| A
+---------------------------------------+
write `buff' with WB(ary, &buff[i], obj)
-> if `ary' and `shared' are old, then only `ary'
will be remembered.
-> traverse from `ary'. But `shared' is old, so
that written `obj' is not marked.
It cause WB miss so that shared arrays were WB-unprotected.
(WB-unprotected objects are marked everytime if it is living)
This patch insert WB() for `shared' if it is needed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45568 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'include/ruby')
0 files changed, 0 insertions, 0 deletions
