8238920: Better Buffer support

Reviewed-by: alanb, ahgross, rhalade, psandoz
This commit is contained in:
Brian Burkhalter 2020-03-17 14:05:19 -07:00
parent 800f133a29
commit c90e523e0a

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -364,8 +364,8 @@ public abstract class Buffer {
if (newLimit > capacity | newLimit < 0)
throw createLimitException(newLimit);
limit = newLimit;
if (position > limit) position = limit;
if (mark > limit) mark = -1;
if (position > newLimit) position = newLimit;
if (mark > newLimit) mark = -1;
return this;
}
@ -689,16 +689,18 @@ public abstract class Buffer {
* @return The current position value, before it is incremented
*/
final int nextGetIndex() { // package-private
if (position >= limit)
int p = position;
if (p >= limit)
throw new BufferUnderflowException();
return position++;
position = p + 1;
return p;
}
final int nextGetIndex(int nb) { // package-private
if (limit - position < nb)
throw new BufferUnderflowException();
int p = position;
position += nb;
if (limit - p < nb)
throw new BufferUnderflowException();
position = p + nb;
return p;
}
@ -710,16 +712,18 @@ public abstract class Buffer {
* @return The current position value, before it is incremented
*/
final int nextPutIndex() { // package-private
if (position >= limit)
int p = position;
if (p >= limit)
throw new BufferOverflowException();
return position++;
position = p + 1;
return p;
}
final int nextPutIndex(int nb) { // package-private
if (limit - position < nb)
throw new BufferOverflowException();
int p = position;
position += nb;
if (limit - p < nb)
throw new BufferOverflowException();
position = p + nb;
return p;
}