RFR: 8150676: Use BufferNode index (original) (raw)

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 (retainentry(entry, g1h)) { while (src < --dst) { if (!retainentry(*dst, g1h)) { *dst = entry; break; } } } } index = pointerdelta(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