RFA: 8169556: Wrapping of FileInputStream's native skip and available methods
Roger Riggs
roger.riggs at oracle.com
Fri Mar 10 13:05:03 UTC 2017
Hi Sunny,
yes, the openjdk mail lists filter attachments that don't appear to be text.
The in-line patch is fine.
I think we need approval from the jdk8u maintenance lead and a sponsor
to commit it
(I can volunteer if no one else does).
Thanks, Roger
On 3/10/17 2:33 AM, Chan, Sunny wrote:
> (It seems like the mailing list filtered the attachment so I am going to inline the patch)
>
> Hello,
>
> I would like to propose backporting JDK-8169556 to JDK8u-dev. The patch mostly applies cleanly except for the make/mapfiles/libjava/mapfile-vers. As a result I have attached the JDK 8 patch in the email. The patch has been tested with java.io test cases.
>
> JBS:
> https://bugs.openjdk.java.net/browse/JDK-8169556
>
> JDK9 changeset:
> http://hg.openjdk.java.net/jdk9/jdk9/jdk/rev/47a8e055bab1
>
> JDK9 patch review thread:
> http://mail.openjdk.java.net/pipermail/core-libs-dev/2016-November/044614.html
>
> # HG changeset patch
> # User Sunny Chan <sunny.chan at gs.com>
> # Date 1489128533 0
> # Fri Mar 10 06:48:53 2017 +0000
> # Node ID 0d1759fe196541b8d171c63e4cdfca0b6a20031c
> # Parent d355fca1b03770f97fc6747ee27d55bb839029a9
> 8169556: Wrapping of FileInputStream's native skip and available methods
> Summary: Wrap further native methods in FileInputStreams
> Contributed-by: sunny.chan at gs.com
>
> diff --git a/make/mapfiles/libjava/mapfile-vers b/make/mapfiles/libjava/mapfile-vers
> --- a/make/mapfiles/libjava/mapfile-vers
> +++ b/make/mapfiles/libjava/mapfile-vers
> @@ -76,13 +76,13 @@
> Java_java_io_FileDescriptor_initIDs;
> Java_java_io_FileDescriptor_sync;
> - Java_java_io_FileInputStream_available;
> + Java_java_io_FileInputStream_available0;
> Java_java_io_FileInputStream_close0;
> Java_java_io_FileInputStream_initIDs;
> Java_java_io_FileInputStream_open0;
> Java_java_io_FileInputStream_read0;
> Java_java_io_FileInputStream_readBytes;
> - Java_java_io_FileInputStream_skip;
> + Java_java_io_FileInputStream_skip0;
> Java_java_io_FileOutputStream_close0;
> Java_java_io_FileOutputStream_initIDs;
> Java_java_io_FileOutputStream_open0;
> diff --git a/make/mapfiles/libjava/reorder-sparc b/make/mapfiles/libjava/reorder-sparc
> --- a/make/mapfiles/libjava/reorder-sparc
> +++ b/make/mapfiles/libjava/reorder-sparc
> @@ -48,7 +48,7 @@
> text: .text%fileOpen;
> text: .text%Java_java_io_FileInputStream_readBytes;
> text: .text%readBytes;
> -text: .text%Java_java_io_FileInputStream_available;
> +text: .text%Java_java_io_FileInputStream_available0;
> text: .text%Java_java_io_FileInputStream_close0;
> text: .text%Java_java_lang_System_mapLibraryName;
> text: .text%Java_java_io_UnixFileSystem_getBooleanAttributes0;
> diff --git a/make/mapfiles/libjava/reorder-sparcv9 b/make/mapfiles/libjava/reorder-sparcv9
> --- a/make/mapfiles/libjava/reorder-sparcv9
> +++ b/make/mapfiles/libjava/reorder-sparcv9
> @@ -51,7 +51,7 @@
> text: .text%fileOpen;
> text: .text%Java_java_io_FileInputStream_readBytes;
> text: .text%readBytes;
> -text: .text%Java_java_io_FileInputStream_available;
> +text: .text%Java_java_io_FileInputStream_available0;
> text: .text%Java_java_io_FileInputStream_close0;
> text: .text%Java_java_lang_Compiler_registerNatives;
> text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedExceptionAction_2;
> diff --git a/make/mapfiles/libjava/reorder-x86 b/make/mapfiles/libjava/reorder-x86
> --- a/make/mapfiles/libjava/reorder-x86
> +++ b/make/mapfiles/libjava/reorder-x86
> @@ -78,7 +78,7 @@
> text: .text%JNU_GetEnv;
> text: .text%Java_java_io_UnixFileSystem_checkAccess;
> text: .text%Java_sun_reflect_NativeMethodAccessorImpl_invoke0;
> -text: .text%Java_java_io_FileInputStream_available;
> +text: .text%Java_java_io_FileInputStream_available0;
> text: .text%Java_java_lang_reflect_Array_newArray;
> text: .text%Java_java_lang_Throwable_getStackTraceDepth;
> text: .text%Java_java_lang_Throwable_getStackTraceElement;
> diff --git a/src/share/classes/java/io/FileInputStream.java b/src/share/classes/java/io/FileInputStream.java
> --- a/src/share/classes/java/io/FileInputStream.java
> +++ b/src/share/classes/java/io/FileInputStream.java
> @@ -279,7 +279,11 @@
> * @exception IOException if n is negative, if the stream does not
> * support seek, or if an I/O error occurs.
> */
> - public native long skip(long n) throws IOException;
> + public long skip(long n) throws IOException {
> + return skip0(n);
> + }
> +
> + private native long skip0(long n) throws IOException;
> /**
> * Returns an estimate of the number of remaining bytes that can be read (or
> @@ -298,7 +302,11 @@
> * @exception IOException if this file input stream has been closed by calling
> * {@code close} or an I/O error occurs.
> */
> - public native int available() throws IOException;
> + public int available() throws IOException {
> + return available0();
> + }
> +
> + private native int available0() throws IOException;
> /**
> * Closes this file input stream and releases any system resources
> diff --git a/src/share/native/java/io/FileInputStream.c b/src/share/native/java/io/FileInputStream.c
> --- a/src/share/native/java/io/FileInputStream.c
> +++ b/src/share/native/java/io/FileInputStream.c
> @@ -73,7 +73,7 @@
> }
> JNIEXPORT jlong JNICALL
> -Java_java_io_FileInputStream_skip(JNIEnv *env, jobject this, jlong toSkip) {
> +Java_java_io_FileInputStream_skip0(JNIEnv *env, jobject this, jlong toSkip) {
> jlong cur = jlong_zero;
> jlong end = jlong_zero;
> FD fd = GET_FD(this, fis_fd);
> @@ -90,7 +90,7 @@
> }
> JNIEXPORT jint JNICALL
> -Java_java_io_FileInputStream_available(JNIEnv *env, jobject this) {
> +Java_java_io_FileInputStream_available0(JNIEnv *env, jobject this) {
> jlong ret;
> FD fd = GET_FD(this, fis_fd);
> if (fd == -1) {
>
>
> Sunny Chan
> Executive Director
> Technology
>
> Goldman Sachs (Asia) L.L.C. | 39th Floor | The Center | 99 Queens Road Central | Hong Kong
> Email: sunny.chan at gs.com | Tel: +852 2978 6481 | Fax: +852 2978 0633
>
> Learn more about Goldman Sachs
> GS.com<http://www.goldmansachs.com/> | Blog<http://www.goldmansachs.com/careers/blog/index.html> | LinkedIn<http://www.linkedin.com/company/goldman-sachs/careers> | YouTube<http://www.youtube.com/goldmansachs> | Twitter<http://www.twitter.com/goldmansachs>
>
> This message may contain information that is confidential or privileged. If you are not the intended recipient, please advise the sender immediately and delete this message. See http://www.gs.com/disclaimer/email for further information on confidentiality and the risks inherent in electronic communication.
>
More information about the jdk8u-dev
mailing list