changeset 9933: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,