OpenJDK / jdk7u / jdk7u / jdk
changeset 9004:3bdb32006248
8234841: Enhance buffering of byte buffers
Reviewed-by: alanb, ahgross, rhalade, psandoz
author | robm |
---|---|
date | Mon, 30 Mar 2020 05:13:42 +0100 |
parents | 562298bad83c |
children | 41d764523117 |
files | src/share/classes/java/nio/ByteBufferAs-X-Buffer.java.template src/share/classes/java/nio/Direct-X-Buffer.java.template src/share/classes/java/nio/Heap-X-Buffer.java.template src/share/classes/java/nio/StringCharBuffer.java |
diffstat | 4 files changed, 10 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/java/nio/ByteBufferAs-X-Buffer.java.template Mon Apr 06 03:06:09 2020 +0100 +++ b/src/share/classes/java/nio/ByteBufferAs-X-Buffer.java.template Mon Mar 30 05:13:42 2020 +0100 @@ -72,7 +72,6 @@ public $Type$Buffer slice() { int pos = this.position(); int lim = this.limit(); - assert (pos <= lim); int rem = (pos <= lim ? lim - pos : 0); int off = (pos << $LG_BYTES_PER_VALUE$) + offset; assert (off >= 0);
--- a/src/share/classes/java/nio/Direct-X-Buffer.java.template Mon Apr 06 03:06:09 2020 +0100 +++ b/src/share/classes/java/nio/Direct-X-Buffer.java.template Mon Mar 30 05:13:42 2020 +0100 @@ -206,7 +206,6 @@ public $Type$Buffer slice() { int pos = this.position(); int lim = this.limit(); - assert (pos <= lim); int rem = (pos <= lim ? lim - pos : 0); int off = (pos << $LG_BYTES_PER_VALUE$); assert (off >= 0);
--- a/src/share/classes/java/nio/Heap-X-Buffer.java.template Mon Apr 06 03:06:09 2020 +0100 +++ b/src/share/classes/java/nio/Heap-X-Buffer.java.template Mon Mar 30 05:13:42 2020 +0100 @@ -95,13 +95,15 @@ } public $Type$Buffer slice() { - int rem = this.remaining(); + int pos = this.position(); + int lim = this.limit(); + int rem = (pos <= lim ? lim - pos : 0); return new Heap$Type$Buffer$RW$(hb, -1, 0, rem, rem, - this.position() + offset); + pos + offset); } public $Type$Buffer duplicate() {
--- a/src/share/classes/java/nio/StringCharBuffer.java Mon Apr 06 03:06:09 2020 +0100 +++ b/src/share/classes/java/nio/StringCharBuffer.java Mon Mar 30 05:13:42 2020 +0100 @@ -42,12 +42,15 @@ } public CharBuffer slice() { + int pos = this.position(); + int lim = this.limit(); + int rem = (pos <= lim ? lim - pos : 0); return new StringCharBuffer(str, -1, 0, - this.remaining(), - this.remaining(), - offset + this.position()); + rem, + rem, + offset + pos); } private StringCharBuffer(CharSequence s,