9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package java.nio;
27
28 import jdk.internal.HotSpotIntrinsicCandidate;
29 import jdk.internal.misc.Unsafe;
30
31 import java.util.Spliterator;
32
33 /**
34 * A container for data of a specific primitive type.
35 *
36 * <p> A buffer is a linear, finite sequence of elements of a specific
37 * primitive type. Aside from its content, the essential properties of a
38 * buffer are its capacity, limit, and position: </p>
39 *
40 * <blockquote>
41 *
42 * <p> A buffer's <i>capacity</i> is the number of elements it contains. The
43 * capacity of a buffer is never negative and never changes. </p>
44 *
45 * <p> A buffer's <i>limit</i> is the index of the first element that should
46 * not be read or written. A buffer's limit is never negative and is never
47 * greater than its capacity. </p>
48 *
688 }
689
690 final int markValue() { // package-private
691 return mark;
692 }
693
694 final void truncate() { // package-private
695 mark = -1;
696 position = 0;
697 limit = 0;
698 capacity = 0;
699 }
700
701 final void discardMark() { // package-private
702 mark = -1;
703 }
704
705 static void checkBounds(int off, int len, int size) { // package-private
706 if ((off | len | (off + len) | (size - (off + len))) < 0)
707 throw new IndexOutOfBoundsException();
708 }
709
710 }
|
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package java.nio;
27
28 import jdk.internal.HotSpotIntrinsicCandidate;
29 import jdk.internal.misc.JavaNioAccess;
30 import jdk.internal.misc.SharedSecrets;
31 import jdk.internal.misc.Unsafe;
32
33 import java.util.Spliterator;
34
35 /**
36 * A container for data of a specific primitive type.
37 *
38 * <p> A buffer is a linear, finite sequence of elements of a specific
39 * primitive type. Aside from its content, the essential properties of a
40 * buffer are its capacity, limit, and position: </p>
41 *
42 * <blockquote>
43 *
44 * <p> A buffer's <i>capacity</i> is the number of elements it contains. The
45 * capacity of a buffer is never negative and never changes. </p>
46 *
47 * <p> A buffer's <i>limit</i> is the index of the first element that should
48 * not be read or written. A buffer's limit is never negative and is never
49 * greater than its capacity. </p>
50 *
690 }
691
692 final int markValue() { // package-private
693 return mark;
694 }
695
696 final void truncate() { // package-private
697 mark = -1;
698 position = 0;
699 limit = 0;
700 capacity = 0;
701 }
702
703 final void discardMark() { // package-private
704 mark = -1;
705 }
706
707 static void checkBounds(int off, int len, int size) { // package-private
708 if ((off | len | (off + len) | (size - (off + len))) < 0)
709 throw new IndexOutOfBoundsException();
710 }
711
712 static {
713 // setup access to this package in SharedSecrets
714 SharedSecrets.setJavaNioAccess(
715 new JavaNioAccess() {
716 @Override
717 public JavaNioAccess.BufferPool getDirectBufferPool() {
718 return Bits.BUFFER_POOL;
719 }
720 @Override
721 public ByteBuffer newDirectByteBuffer(long addr, int cap, Object ob) {
722 return new DirectByteBuffer(addr, cap, ob);
723 }
724 @Override
725 public void truncate(Buffer buf) {
726 buf.truncate();
727 }
728 });
729 }
730
731 }
|