On Mon, May 14, 2018 at 7:33 AM, Claes Redestad <claes.redes...@oracle.com> wrote:
> >> I would prefer having only one comodification check for a bulk operation, >> but I understand that checking at each step is more compatible with the >> default implementation. >> >> 594 for (int i = 0; i < s; i++) { >> 595 if (!Objects.equals(es[i], otherEs[i])) { >> 596 other.checkForComodification(otherModCount); >> 597 checkForComodification(expectedModCount); >> 598 return false; >> 599 } >> 600 } >> >> > Perhaps you misread as I think the patch does what I think you're > suggesting and only checks once. True, this is subtly > different in behavior from the current implementation > which is fail-fast. > Oh right, I did miss that. I would probably micro-refactor that into boolean result = true; ... + other.checkForComodification(otherModCount); + checkForComodification(expectedModCount); + return result; if only to save bytecode. > While it shouldn't matter semantically, it could in theory mean a > measurable delay in throwing a CME when dealing > with large lists. As CMEs in ArrayLists could be considered a coding > error - and the speedup of only checking once > for a bulk operation like equal is significant - I think it's a reasonable > trade-off to go ahead with this. Completely agree.