Index: modules/nio/src/main/java/java/nio/IntToByteBufferAdapter.java =================================================================== --- modules/nio/src/main/java/java/nio/IntToByteBufferAdapter.java (revision 527392) +++ modules/nio/src/main/java/java/nio/IntToByteBufferAdapter.java (working copy) @@ -16,6 +16,8 @@ package java.nio; +import org.apache.harmony.nio.internal.DirectBuffer; +import org.apache.harmony.luni.platform.PlatformAddress; /** @@ -31,7 +33,7 @@ *

* */ -final class IntToByteBufferAdapter extends IntBuffer { +final class IntToByteBufferAdapter extends IntBuffer implements DirectBuffer { static IntBuffer wrap(ByteBuffer byteBuffer) { return new IntToByteBufferAdapter(byteBuffer.slice()); @@ -44,7 +46,51 @@ this.byteBuffer = byteBuffer; this.byteBuffer.clear(); } + + public PlatformAddress getEffectiveAddress() { + if (byteBuffer instanceof DirectBuffer) { + return ((DirectBuffer)byteBuffer).getEffectiveAddress(); + } else { + assert false : byteBuffer; + return null; + } + } + + public PlatformAddress getBaseAddress() { + if (byteBuffer instanceof DirectBuffer) { + return ((DirectBuffer)byteBuffer).getBaseAddress(); + } else { + assert false : byteBuffer; + return null; + } + } + + public boolean isAddressValid() { + if (byteBuffer instanceof DirectBuffer) { + return ((DirectBuffer)byteBuffer).isAddressValid(); + } else { + assert false : byteBuffer; + return false; + } + } + public void addressValidityCheck() { + if (byteBuffer instanceof DirectBuffer) { + ((DirectBuffer)byteBuffer).addressValidityCheck(); + } else { + assert false : byteBuffer; + } + } + + public void free() { + if (byteBuffer instanceof DirectBuffer) { + ((DirectBuffer)byteBuffer).free(); + } else { + assert false : byteBuffer; + } + } + + public IntBuffer asReadOnlyBuffer() { IntToByteBufferAdapter buf = new IntToByteBufferAdapter(byteBuffer .asReadOnlyBuffer()); Index: modules/nio/src/main/java/java/nio/DoubleToByteBufferAdapter.java =================================================================== --- modules/nio/src/main/java/java/nio/DoubleToByteBufferAdapter.java (revision 527392) +++ modules/nio/src/main/java/java/nio/DoubleToByteBufferAdapter.java (working copy) @@ -16,6 +16,8 @@ package java.nio; +import org.apache.harmony.nio.internal.DirectBuffer; +import org.apache.harmony.luni.platform.PlatformAddress; /** @@ -31,7 +33,7 @@ *

* */ -final class DoubleToByteBufferAdapter extends DoubleBuffer { +final class DoubleToByteBufferAdapter extends DoubleBuffer implements DirectBuffer { static DoubleBuffer wrap(ByteBuffer byteBuffer) { return new DoubleToByteBufferAdapter(byteBuffer.slice()); @@ -45,6 +47,49 @@ this.byteBuffer.clear(); } + public PlatformAddress getEffectiveAddress() { + if (byteBuffer instanceof DirectBuffer) { + return ((DirectBuffer)byteBuffer).getEffectiveAddress(); + } else { + assert false : byteBuffer; + return null; + } + } + + public PlatformAddress getBaseAddress() { + if (byteBuffer instanceof DirectBuffer) { + return ((DirectBuffer)byteBuffer).getBaseAddress(); + } else { + assert false : byteBuffer; + return null; + } + } + + public boolean isAddressValid() { + if (byteBuffer instanceof DirectBuffer) { + return ((DirectBuffer)byteBuffer).isAddressValid(); + } else { + assert false : byteBuffer; + return false; + } + } + + public void addressValidityCheck() { + if (byteBuffer instanceof DirectBuffer) { + ((DirectBuffer)byteBuffer).addressValidityCheck(); + } else { + assert false : byteBuffer; + } + } + + public void free() { + if (byteBuffer instanceof DirectBuffer) { + ((DirectBuffer)byteBuffer).free(); + } else { + assert false : byteBuffer; + } + } + public DoubleBuffer asReadOnlyBuffer() { DoubleToByteBufferAdapter buf = new DoubleToByteBufferAdapter( byteBuffer.asReadOnlyBuffer()); Index: modules/nio/src/main/java/java/nio/CharToByteBufferAdapter.java =================================================================== --- modules/nio/src/main/java/java/nio/CharToByteBufferAdapter.java (revision 527392) +++ modules/nio/src/main/java/java/nio/CharToByteBufferAdapter.java (working copy) @@ -16,6 +16,8 @@ package java.nio; +import org.apache.harmony.nio.internal.DirectBuffer; +import org.apache.harmony.luni.platform.PlatformAddress; /** @@ -31,7 +33,7 @@ *

* */ -final class CharToByteBufferAdapter extends CharBuffer { +final class CharToByteBufferAdapter extends CharBuffer implements DirectBuffer { static CharBuffer wrap(ByteBuffer byteBuffer) { return new CharToByteBufferAdapter(byteBuffer.slice()); @@ -44,7 +46,50 @@ this.byteBuffer = byteBuffer; this.byteBuffer.clear(); } + + public PlatformAddress getEffectiveAddress() { + if (byteBuffer instanceof DirectBuffer) { + return ((DirectBuffer)byteBuffer).getEffectiveAddress(); + } else { + assert false : byteBuffer; + return null; + } + } + public PlatformAddress getBaseAddress() { + if (byteBuffer instanceof DirectBuffer) { + return ((DirectBuffer)byteBuffer).getBaseAddress(); + } else { + assert false : byteBuffer; + return null; + } + } + + public boolean isAddressValid() { + if (byteBuffer instanceof DirectBuffer) { + return ((DirectBuffer)byteBuffer).isAddressValid(); + } else { + assert false : byteBuffer; + return false; + } + } + + public void addressValidityCheck() { + if (byteBuffer instanceof DirectBuffer) { + ((DirectBuffer)byteBuffer).addressValidityCheck(); + } else { + assert false : byteBuffer; + } + } + + public void free() { + if (byteBuffer instanceof DirectBuffer) { + ((DirectBuffer)byteBuffer).free(); + } else { + assert false : byteBuffer; + } + } + public CharBuffer asReadOnlyBuffer() { CharToByteBufferAdapter buf = new CharToByteBufferAdapter(byteBuffer .asReadOnlyBuffer()); Index: modules/nio/src/main/java/java/nio/LongToByteBufferAdapter.java =================================================================== --- modules/nio/src/main/java/java/nio/LongToByteBufferAdapter.java (revision 527392) +++ modules/nio/src/main/java/java/nio/LongToByteBufferAdapter.java (working copy) @@ -16,6 +16,8 @@ package java.nio; +import org.apache.harmony.nio.internal.DirectBuffer; +import org.apache.harmony.luni.platform.PlatformAddress; /** @@ -31,7 +33,7 @@ *

* */ -final class LongToByteBufferAdapter extends LongBuffer { +final class LongToByteBufferAdapter extends LongBuffer implements DirectBuffer { static LongBuffer wrap(ByteBuffer byteBuffer) { return new LongToByteBufferAdapter(byteBuffer.slice()); @@ -44,7 +46,50 @@ this.byteBuffer = byteBuffer; this.byteBuffer.clear(); } + + public PlatformAddress getEffectiveAddress() { + if (byteBuffer instanceof DirectBuffer) { + return ((DirectBuffer)byteBuffer).getEffectiveAddress(); + } else { + assert false : byteBuffer; + return null; + } + } + public PlatformAddress getBaseAddress() { + if (byteBuffer instanceof DirectBuffer) { + return ((DirectBuffer)byteBuffer).getBaseAddress(); + } else { + assert false : byteBuffer; + return null; + } + } + + public boolean isAddressValid() { + if (byteBuffer instanceof DirectBuffer) { + return ((DirectBuffer)byteBuffer).isAddressValid(); + } else { + assert false : byteBuffer; + return false; + } + } + + public void addressValidityCheck() { + if (byteBuffer instanceof DirectBuffer) { + ((DirectBuffer)byteBuffer).addressValidityCheck(); + } else { + assert false : byteBuffer; + } + } + + public void free() { + if (byteBuffer instanceof DirectBuffer) { + ((DirectBuffer)byteBuffer).free(); + } else { + assert false : byteBuffer; + } + } + public LongBuffer asReadOnlyBuffer() { LongToByteBufferAdapter buf = new LongToByteBufferAdapter(byteBuffer .asReadOnlyBuffer()); Index: modules/nio/src/main/java/java/nio/ShortToByteBufferAdapter.java =================================================================== --- modules/nio/src/main/java/java/nio/ShortToByteBufferAdapter.java (revision 527392) +++ modules/nio/src/main/java/java/nio/ShortToByteBufferAdapter.java (working copy) @@ -16,6 +16,8 @@ package java.nio; +import org.apache.harmony.nio.internal.DirectBuffer; +import org.apache.harmony.luni.platform.PlatformAddress; /** @@ -31,7 +33,7 @@ *

* */ -final class ShortToByteBufferAdapter extends ShortBuffer { +final class ShortToByteBufferAdapter extends ShortBuffer implements DirectBuffer { static ShortBuffer wrap(ByteBuffer byteBuffer) { return new ShortToByteBufferAdapter(byteBuffer.slice()); @@ -45,6 +47,49 @@ this.byteBuffer.clear(); } + public PlatformAddress getEffectiveAddress() { + if (byteBuffer instanceof DirectBuffer) { + return ((DirectBuffer)byteBuffer).getEffectiveAddress(); + } else { + assert false : byteBuffer; + return null; + } + } + + public PlatformAddress getBaseAddress() { + if (byteBuffer instanceof DirectBuffer) { + return ((DirectBuffer)byteBuffer).getBaseAddress(); + } else { + assert false : byteBuffer; + return null; + } + } + + public boolean isAddressValid() { + if (byteBuffer instanceof DirectBuffer) { + return ((DirectBuffer)byteBuffer).isAddressValid(); + } else { + assert false : byteBuffer; + return false; + } + } + + public void addressValidityCheck() { + if (byteBuffer instanceof DirectBuffer) { + ((DirectBuffer)byteBuffer).addressValidityCheck(); + } else { + assert false : byteBuffer; + } + } + + public void free() { + if (byteBuffer instanceof DirectBuffer) { + ((DirectBuffer)byteBuffer).free(); + } else { + assert false : byteBuffer; + } + } + public ShortBuffer asReadOnlyBuffer() { ShortToByteBufferAdapter buf = new ShortToByteBufferAdapter(byteBuffer .asReadOnlyBuffer()); Index: modules/nio/src/main/java/java/nio/FloatToByteBufferAdapter.java =================================================================== --- modules/nio/src/main/java/java/nio/FloatToByteBufferAdapter.java (revision 527392) +++ modules/nio/src/main/java/java/nio/FloatToByteBufferAdapter.java (working copy) @@ -16,6 +16,8 @@ package java.nio; +import org.apache.harmony.nio.internal.DirectBuffer; +import org.apache.harmony.luni.platform.PlatformAddress; /** @@ -31,7 +33,7 @@ *

* */ -final class FloatToByteBufferAdapter extends FloatBuffer { +final class FloatToByteBufferAdapter extends FloatBuffer implements DirectBuffer { static FloatBuffer wrap(ByteBuffer byteBuffer) { return new FloatToByteBufferAdapter(byteBuffer.slice()); @@ -45,6 +47,49 @@ this.byteBuffer.clear(); } + public PlatformAddress getEffectiveAddress() { + if (byteBuffer instanceof DirectBuffer) { + return ((DirectBuffer)byteBuffer).getEffectiveAddress(); + } else { + assert false : byteBuffer; + return null; + } + } + + public PlatformAddress getBaseAddress() { + if (byteBuffer instanceof DirectBuffer) { + return ((DirectBuffer)byteBuffer).getBaseAddress(); + } else { + assert false : byteBuffer; + return null; + } + } + + public boolean isAddressValid() { + if (byteBuffer instanceof DirectBuffer) { + return ((DirectBuffer)byteBuffer).isAddressValid(); + } else { + assert false : byteBuffer; + return false; + } + } + + public void addressValidityCheck() { + if (byteBuffer instanceof DirectBuffer) { + ((DirectBuffer)byteBuffer).addressValidityCheck(); + } else { + assert false : byteBuffer; + } + } + + public void free() { + if (byteBuffer instanceof DirectBuffer) { + ((DirectBuffer)byteBuffer).free(); + } else { + assert false : byteBuffer; + } + } + public FloatBuffer asReadOnlyBuffer() { FloatToByteBufferAdapter buf = new FloatToByteBufferAdapter(byteBuffer .asReadOnlyBuffer());