On Thu, May 9, 2013 at 5:38 AM, Alan Bateman <alan.bate...@oracle.com>wrote:
> On 08/05/2013 23:05, Martin Buchholz wrote: > >> Alan (et al): Ping. >> >> I've looked through the webrev. > > The scary part is subsequenceRaw where the offsets including the position. > I don't see anything obviously wrong and the tests should catch any issues. > I don't see any issue conditionally generating the isDirect/order methods > although it should been harmless. > Yes, it's scary, but it's much scarier to me carrying around relative positions than absolute because position() can change at any time if there is a data race. So after bounds checking we must work with absolute positions, or at least must when working with Unsafe. --- Existing code is a little schizoid about checking for the possibility of limit() < position(), as can happen with a data race. Sometimes checked; sometimes not. Sometimes assert()ed. Sometimes adjusted. Probably the right thing is to check and throw ConcurrentModificationException if detected. But not in this changeset. int pos = this.position(); int lim = this.limit(); assert (pos <= lim); int rem = (pos <= lim ? lim - pos : 0);