RFR: 8150676: Use BufferNode index
Kim Barrett
kim.barrett at oracle.com
Fri Mar 4 00:01:22 UTC 2016
>> One thing that makes it tricky is the aforesaid line 136 assertion,
>> which I found very helpful, but which requires some additional code
>> (such as line 132) to make it work. That is, this suffices,
>>
>> for ( ; src < dst; ++src) {
>> if (retain_entry(entry, g1h)) {
>> while (src < --dst) {
>> if (!retain_entry(*dst, g1h)) {
>> *dst = entry;
>> break;
>> }
>> }
>> }
>> }
>> _index = pointer_delta(dst, buf, 1);
>>
>> but I find it less convincing without the final assert, which doesn't
>> hold with this version.
After thinking about it some more, I’m planning to switch to the above version,
and just avoid the complexity needed to arrange the final assert(src == dst).
Of course, keeping comments similar to the previous version about the search
stages, plus a comment at the end of the loop that dst points to the lowest retained
entry, or the end of the buffer if all entries are filtered out. I was also going to
describe the final value of src too, but then asked myself why I was describing the
somewhat complicated state of a dead variable.
More information about the hotspot-gc-dev
mailing list