home *** CD-ROM | disk | FTP | other *** search
- package java.nio;
-
- import sun.misc.Cleaner;
- import sun.misc.Unsafe;
- import sun.nio.ch.DirectBuffer;
-
- class DirectIntBufferS extends IntBuffer implements DirectBuffer {
- protected static final Unsafe unsafe = Bits.unsafe();
- protected static final boolean unaligned = Bits.unaligned();
- protected Object viewedBuffer = null;
-
- public Object viewedBuffer() {
- return this.viewedBuffer;
- }
-
- public Cleaner cleaner() {
- return null;
- }
-
- DirectIntBufferS(DirectBuffer var1, int var2, int var3, int var4, int var5, int var6) {
- super(var2, var3, var4, var5);
- this.address = var1.address() + (long)var6;
- this.viewedBuffer = var1;
- }
-
- public IntBuffer slice() {
- int var1 = this.position();
- int var2 = this.limit();
-
- assert var1 <= var2;
-
- int var3 = var1 <= var2 ? var2 - var1 : 0;
- int var4 = var1 << 2;
-
- assert var4 >= 0;
-
- return new DirectIntBufferS(this, -1, 0, var3, var3, var4);
- }
-
- public IntBuffer duplicate() {
- return new DirectIntBufferS(this, this.markValue(), this.position(), this.limit(), this.capacity(), 0);
- }
-
- public IntBuffer asReadOnlyBuffer() {
- return new DirectIntBufferRS(this, this.markValue(), this.position(), this.limit(), this.capacity(), 0);
- }
-
- public long address() {
- return this.address;
- }
-
- // $FF: renamed from: ix (int) long
- private long method_0(int var1) {
- return this.address + (long)(var1 << 2);
- }
-
- public int get() {
- return Bits.swap(unsafe.getInt(this.method_0(this.nextGetIndex())));
- }
-
- public int get(int var1) {
- return Bits.swap(unsafe.getInt(this.method_0(this.checkIndex(var1))));
- }
-
- public IntBuffer get(int[] var1, int var2, int var3) {
- if (var3 << 2 > 6) {
- checkBounds(var2, var3, var1.length);
- int var4 = this.position();
- int var5 = this.limit();
-
- assert var4 <= var5;
-
- int var6 = var4 <= var5 ? var5 - var4 : 0;
- if (var3 > var6) {
- throw new BufferUnderflowException();
- }
-
- if (this.order() != ByteOrder.nativeOrder()) {
- Bits.copyToIntArray(this.method_0(var4), var1, (long)(var2 << 2), (long)(var3 << 2));
- } else {
- Bits.copyToByteArray(this.method_0(var4), var1, (long)(var2 << 2), (long)(var3 << 2));
- }
-
- this.position(var4 + var3);
- } else {
- super.get(var1, var2, var3);
- }
-
- return this;
- }
-
- public IntBuffer put(int var1) {
- unsafe.putInt(this.method_0(this.nextPutIndex()), Bits.swap(var1));
- return this;
- }
-
- public IntBuffer put(int var1, int var2) {
- unsafe.putInt(this.method_0(this.checkIndex(var1)), Bits.swap(var2));
- return this;
- }
-
- public IntBuffer put(IntBuffer var1) {
- if (var1 instanceof DirectIntBufferS) {
- if (var1 == this) {
- throw new IllegalArgumentException();
- }
-
- DirectIntBufferS var2 = (DirectIntBufferS)var1;
- int var3 = var2.position();
- int var4 = var2.limit();
-
- assert var3 <= var4;
-
- int var5 = var3 <= var4 ? var4 - var3 : 0;
- int var6 = this.position();
- int var7 = this.limit();
-
- assert var6 <= var7;
-
- int var8 = var6 <= var7 ? var7 - var6 : 0;
- if (var5 > var8) {
- throw new BufferOverflowException();
- }
-
- unsafe.copyMemory(var2.method_0(var3), this.method_0(var6), (long)(var5 << 2));
- var2.position(var3 + var5);
- this.position(var6 + var5);
- } else if (var1.hb != null) {
- int var9 = var1.position();
- int var10 = var1.limit();
-
- assert var9 <= var10;
-
- int var11 = var9 <= var10 ? var10 - var9 : 0;
- this.put(var1.hb, var1.offset + var9, var11);
- var1.position(var9 + var11);
- } else {
- super.put(var1);
- }
-
- return this;
- }
-
- public IntBuffer put(int[] var1, int var2, int var3) {
- if (var3 << 2 > 6) {
- checkBounds(var2, var3, var1.length);
- int var4 = this.position();
- int var5 = this.limit();
-
- assert var4 <= var5;
-
- int var6 = var4 <= var5 ? var5 - var4 : 0;
- if (var3 > var6) {
- throw new BufferOverflowException();
- }
-
- if (this.order() != ByteOrder.nativeOrder()) {
- Bits.copyFromIntArray(var1, (long)(var2 << 2), this.method_0(var4), (long)(var3 << 2));
- } else {
- Bits.copyFromByteArray(var1, (long)(var2 << 2), this.method_0(var4), (long)(var3 << 2));
- }
-
- this.position(var4 + var3);
- } else {
- super.put(var1, var2, var3);
- }
-
- return this;
- }
-
- public IntBuffer compact() {
- int var1 = this.position();
- int var2 = this.limit();
-
- assert var1 <= var2;
-
- int var3 = var1 <= var2 ? var2 - var1 : 0;
- unsafe.copyMemory(this.method_0(var1), this.method_0(0), (long)(var3 << 2));
- this.position(var3);
- this.limit(this.capacity());
- return this;
- }
-
- public boolean isDirect() {
- return true;
- }
-
- public boolean isReadOnly() {
- return false;
- }
-
- public ByteOrder order() {
- return ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN ? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN;
- }
- }
-