Channels.java (newInputStream, [...]): Optimize when argument is a FileChannelImpl.
* java/nio/channels/Channels.java (newInputStream, newOutputStream): Optimize when argument is a FileChannelImpl. (newInputStream(FileChannelImpl), newOutputStream(FileChannelImpl)): New native methods. * java/nio/channels/natChannels.cc: New file for new native methods. * Makefile.am: Update accordingly. From-SVN: r78867
This commit is contained in:
parent
d79944f484
commit
dd0a905f24
5 changed files with 141 additions and 92 deletions
|
@ -41,8 +41,11 @@ import gnu.java.nio.ChannelInputStream;
|
|||
import gnu.java.nio.ChannelOutputStream;
|
||||
import gnu.java.nio.InputStreamChannel;
|
||||
import gnu.java.nio.OutputStreamChannel;
|
||||
import gnu.java.nio.channels.FileChannelImpl;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.Reader;
|
||||
import java.io.Writer;
|
||||
import java.nio.charset.Charset;
|
||||
|
@ -59,16 +62,23 @@ public final class Channels
|
|||
*/
|
||||
public static InputStream newInputStream(ReadableByteChannel ch)
|
||||
{
|
||||
if (ch instanceof FileChannelImpl)
|
||||
return newInputStream((FileChannelImpl) ch);
|
||||
return new ChannelInputStream(ch);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Constructs a stream that writes bytes to the given channel.
|
||||
*/
|
||||
public static OutputStream newOutputStream(WritableByteChannel ch)
|
||||
{
|
||||
if (ch instanceof FileChannelImpl)
|
||||
return newOutputStream((FileChannelImpl) ch);
|
||||
return new ChannelOutputStream(ch);
|
||||
}
|
||||
|
||||
static native FileInputStream newInputStream(FileChannelImpl ch);
|
||||
static native FileOutputStream newOutputStream(FileChannelImpl ch);
|
||||
|
||||
/**
|
||||
* Constructs a channel that reads bytes from the given stream.
|
||||
|
@ -77,7 +87,7 @@ public final class Channels
|
|||
{
|
||||
return new InputStreamChannel(in);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Constructs a channel that writes bytes to the given stream.
|
||||
*/
|
||||
|
|
36
libjava/java/nio/channels/natChannels.cc
Normal file
36
libjava/java/nio/channels/natChannels.cc
Normal file
|
@ -0,0 +1,36 @@
|
|||
// natChannels.cc - Native part of Channels class.
|
||||
|
||||
/* Copyright (C) 2004 Free Software Foundation
|
||||
|
||||
This file is part of libgcj.
|
||||
|
||||
This software is copyrighted work licensed under the terms of the
|
||||
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
|
||||
details. */
|
||||
|
||||
#include <config.h>
|
||||
#include <gcj/cni.h>
|
||||
|
||||
#include <java/nio/channels/Channels.h>
|
||||
#include <java/io/FileInputStream.h>
|
||||
#include <java/io/FileOutputStream.h>
|
||||
#include <gnu/java/nio/channels/FileChannelImpl.h>
|
||||
|
||||
using java::nio::channels::Channels;
|
||||
using java::io::FileInputStream;
|
||||
using java::io::FileOutputStream;
|
||||
using gnu::java::nio::channels::FileChannelImpl;
|
||||
|
||||
FileInputStream*
|
||||
Channels::newInputStream(FileChannelImpl* ch)
|
||||
{
|
||||
// Needs to be native to bypass Java access protection.
|
||||
return new FileInputStream (ch);
|
||||
}
|
||||
|
||||
FileOutputStream*
|
||||
Channels::newOutputStream(FileChannelImpl* ch)
|
||||
{
|
||||
// Needs to be native to bypass Java access protection.
|
||||
return new FileOutputStream (ch);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue