diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-03-18 09:02:10 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-03-18 09:02:10 +0000 |
commit | ec4624b0f47ee6a99036b1711bd5746cdd99da33 (patch) | |
tree | bd853ce990695ca4895052354726d49381c05fe7 /gems | |
parent | 3b1e28036e318d06b5e2f4f65f709ad483aa40ec (diff) | |
download | ruby-ec4624b0f47ee6a99036b1711bd5746cdd99da33.tar.gz |
* gc.c (gc_writebarrier_generational): add an alternative write
barrier (WB) implementation.
When finding reference from [Old obj] to [New obj] by WB, current
implementation marks [Old obj] as remembered old objects and marks
chilldren of [Old obj] at the beggining of marking.
Added (but disabled) code changes current behaviour. This fix promote
[New obj] to old and marks as a remembered old object. We can assume
"new objects referred from old objects are maybe long-lived old
objects".
Disadvantage of added algorithm is we may promote unwilling
short-lived objects. For example, consider many new objects push and
pop to an old stack object. All of new objects (short-lived objects)
promote to old objects unexpectedly.
To compare these behaviour, I add this new code (but disabled it).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50006 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gems')
0 files changed, 0 insertions, 0 deletions