8054720: Modifications of I/O methods for instrumentation purposes
authorbpb
Wed, 20 Aug 2014 11:30:13 -0700
changeset 26190 d183677673d9
parent 26189 1868b96bbc6e
child 26191 a0ff4b39d34b
8054720: Modifications of I/O methods for instrumentation purposes Summary: Wrap some native methods in Java methods. Reviewed-by: rriggs
jdk/make/mapfiles/libjava/mapfile-vers
jdk/make/mapfiles/libjava/reorder-sparc
jdk/make/mapfiles/libjava/reorder-sparcv9
jdk/make/mapfiles/libjava/reorder-x86
jdk/src/java.base/share/classes/java/io/FileInputStream.java
jdk/src/java.base/share/classes/java/io/FileOutputStream.java
jdk/src/java.base/share/classes/java/io/RandomAccessFile.java
jdk/src/java.base/share/classes/java/net/SocketInputStream.java
jdk/src/java.base/share/native/libjava/FileInputStream.c
jdk/src/java.base/share/native/libjava/RandomAccessFile.c
jdk/src/java.base/unix/native/libjava/FileOutputStream_md.c
jdk/src/java.base/windows/native/libjava/FileOutputStream_md.c
--- a/jdk/make/mapfiles/libjava/mapfile-vers	Wed Aug 20 11:06:38 2014 -0700
+++ b/jdk/make/mapfiles/libjava/mapfile-vers	Wed Aug 20 11:30:13 2014 -0700
@@ -78,13 +78,13 @@
 		Java_java_io_FileInputStream_available;
 		Java_java_io_FileInputStream_close0;
 		Java_java_io_FileInputStream_initIDs;
-		Java_java_io_FileInputStream_open;
+		Java_java_io_FileInputStream_open0;
 		Java_java_io_FileInputStream_read0;
 		Java_java_io_FileInputStream_readBytes;
 		Java_java_io_FileInputStream_skip;
 		Java_java_io_FileOutputStream_close0;
 		Java_java_io_FileOutputStream_initIDs;
-		Java_java_io_FileOutputStream_open;
+		Java_java_io_FileOutputStream_open0;
 		Java_java_io_FileOutputStream_write;
 		Java_java_io_FileOutputStream_writeBytes;
 		Java_java_io_ObjectInputStream_bytesToDoubles;
@@ -97,7 +97,7 @@
 		Java_java_io_RandomAccessFile_getFilePointer;
 		Java_java_io_RandomAccessFile_initIDs;
 		Java_java_io_RandomAccessFile_length;
-		Java_java_io_RandomAccessFile_open;
+		Java_java_io_RandomAccessFile_open0;
 		Java_java_io_RandomAccessFile_read0;
 		Java_java_io_RandomAccessFile_readBytes;
 		Java_java_io_RandomAccessFile_seek0;
--- a/jdk/make/mapfiles/libjava/reorder-sparc	Wed Aug 20 11:06:38 2014 -0700
+++ b/jdk/make/mapfiles/libjava/reorder-sparc	Wed Aug 20 11:30:13 2014 -0700
@@ -44,7 +44,7 @@
 text: .text%Java_java_io_UnixFileSystem_canonicalize;
 text: .text%JNU_GetStringPlatformChars;
 text: .text%JNU_ReleaseStringPlatformChars;
-text: .text%Java_java_io_FileInputStream_open;
+text: .text%Java_java_io_FileInputStream_open0;
 text: .text%fileOpen;
 text: .text%Java_java_io_FileInputStream_readBytes;
 text: .text%readBytes;
--- a/jdk/make/mapfiles/libjava/reorder-sparcv9	Wed Aug 20 11:06:38 2014 -0700
+++ b/jdk/make/mapfiles/libjava/reorder-sparcv9	Wed Aug 20 11:30:13 2014 -0700
@@ -47,7 +47,7 @@
 text: .text%Java_java_io_UnixFileSystem_canonicalize;
 text: .text%JNU_GetStringPlatformChars;
 text: .text%JNU_ReleaseStringPlatformChars;
-text: .text%Java_java_io_FileInputStream_open;
+text: .text%Java_java_io_FileInputStream_open0;
 text: .text%fileOpen;
 text: .text%Java_java_io_FileInputStream_readBytes;
 text: .text%readBytes;
--- a/jdk/make/mapfiles/libjava/reorder-x86	Wed Aug 20 11:06:38 2014 -0700
+++ b/jdk/make/mapfiles/libjava/reorder-x86	Wed Aug 20 11:30:13 2014 -0700
@@ -57,7 +57,7 @@
 text: .text%Java_java_lang_ClassLoader_00024NativeLibrary_find;
 text: .text%Java_java_lang_Float_floatToIntBits;
 text: .text%Java_java_lang_Double_doubleToLongBits;
-text: .text%Java_java_io_FileInputStream_open;
+text: .text%Java_java_io_FileInputStream_open0;
 text: .text%fileOpen;
 text: .text%Java_java_io_UnixFileSystem_getLength;
 text: .text%Java_java_io_FileInputStream_readBytes;
@@ -90,7 +90,7 @@
 text: .text%JNU_CallMethodByName;
 text: .text%JNU_CallMethodByNameV;
 text: .text%Java_java_util_logging_FileHandler_lockFile;
-text: .text%Java_java_io_FileOutputStream_open;
+text: .text%Java_java_io_FileOutputStream_open0;
 text: .text%Java_java_io_UnixFileSystem_createDirectory;
 text: .text%Java_java_io_UnixFileSystem_getLastModifiedTime;
 text: .text%Java_java_util_prefs_FileSystemPreferences_lockFile0;
--- a/jdk/src/java.base/share/classes/java/io/FileInputStream.java	Wed Aug 20 11:06:38 2014 -0700
+++ b/jdk/src/java.base/share/classes/java/io/FileInputStream.java	Wed Aug 20 11:30:13 2014 -0700
@@ -184,7 +184,16 @@
      * Opens the specified file for reading.
      * @param name the name of the file
      */
-    private native void open(String name) throws FileNotFoundException;
+    private native void open0(String name) throws FileNotFoundException;
+
+    // wrap native call to allow instrumentation
+    /**
+     * Opens the specified file for reading.
+     * @param name the name of the file
+     */
+    private void open(String name) throws FileNotFoundException {
+        open0(name);
+    }
 
     /**
      * Reads a byte of data from this input stream. This method blocks
--- a/jdk/src/java.base/share/classes/java/io/FileOutputStream.java	Wed Aug 20 11:06:38 2014 -0700
+++ b/jdk/src/java.base/share/classes/java/io/FileOutputStream.java	Wed Aug 20 11:30:13 2014 -0700
@@ -256,9 +256,20 @@
      * @param name name of file to be opened
      * @param append whether the file is to be opened in append mode
      */
-    private native void open(String name, boolean append)
+    private native void open0(String name, boolean append)
         throws FileNotFoundException;
 
+    // wrap native call to allow instrumentation
+    /**
+     * Opens a file, with the specified name, for overwriting or appending.
+     * @param name name of file to be opened
+     * @param append whether the file is to be opened in append mode
+     */
+    private void open(String name, boolean append)
+        throws FileNotFoundException {
+        open0(name, append);
+    }
+
     /**
      * Writes the specified byte to this file output stream.
      *
--- a/jdk/src/java.base/share/classes/java/io/RandomAccessFile.java	Wed Aug 20 11:06:38 2014 -0700
+++ b/jdk/src/java.base/share/classes/java/io/RandomAccessFile.java	Wed Aug 20 11:30:13 2014 -0700
@@ -296,9 +296,26 @@
      * @param mode the mode flags, a combination of the O_ constants
      *             defined above
      */
-    private native void open(String name, int mode)
+    private native void open0(String name, int mode)
         throws FileNotFoundException;
 
+    // wrap native call to allow instrumentation
+    /**
+     * Opens a file and returns the file descriptor.  The file is
+     * opened in read-write mode if the O_RDWR bit in {@code mode}
+     * is true, else the file is opened as read-only.
+     * If the {@code name} refers to a directory, an IOException
+     * is thrown.
+     *
+     * @param name the name of the file
+     * @param mode the mode flags, a combination of the O_ constants
+     *             defined above
+     */
+    private void open(String name, int mode)
+        throws FileNotFoundException {
+        open0(name, mode);
+    }
+
     // 'Read' primitives
 
     /**
--- a/jdk/src/java.base/share/classes/java/net/SocketInputStream.java	Wed Aug 20 11:06:38 2014 -0700
+++ b/jdk/src/java.base/share/classes/java/net/SocketInputStream.java	Wed Aug 20 11:30:13 2014 -0700
@@ -96,6 +96,26 @@
                                    int timeout)
         throws IOException;
 
+    // wrap native call to allow instrumentation
+    /**
+     * Reads into an array of bytes at the specified offset using
+     * the received socket primitive.
+     * @param fd the FileDescriptor
+     * @param b the buffer into which the data is read
+     * @param off the start offset of the data
+     * @param len the maximum number of bytes read
+     * @param timeout the read timeout in ms
+     * @return the actual number of bytes read, -1 is
+     *          returned when the end of the stream is reached.
+     * @exception IOException If an I/O error has occurred.
+     */
+    private int socketRead(FileDescriptor fd,
+                           byte b[], int off, int len,
+                           int timeout)
+        throws IOException {
+        return socketRead0(fd, b, off, len, timeout);
+    }
+
     /**
      * Reads into a byte array data from the socket.
      * @param b the buffer into which the data is read
@@ -147,7 +167,7 @@
         // acquire file descriptor and do the read
         FileDescriptor fd = impl.acquireFD();
         try {
-            n = socketRead0(fd, b, off, length, timeout);
+            n = socketRead(fd, b, off, length, timeout);
             if (n > 0) {
                 return n;
             }
@@ -165,7 +185,7 @@
             impl.setConnectionResetPending();
             impl.acquireFD();
             try {
-                n = socketRead0(fd, b, off, length, timeout);
+                n = socketRead(fd, b, off, length, timeout);
                 if (n > 0) {
                     return n;
                 }
--- a/jdk/src/java.base/share/native/libjava/FileInputStream.c	Wed Aug 20 11:06:38 2014 -0700
+++ b/jdk/src/java.base/share/native/libjava/FileInputStream.c	Wed Aug 20 11:30:13 2014 -0700
@@ -57,7 +57,7 @@
  */
 
 JNIEXPORT void JNICALL
-Java_java_io_FileInputStream_open(JNIEnv *env, jobject this, jstring path) {
+Java_java_io_FileInputStream_open0(JNIEnv *env, jobject this, jstring path) {
     fileOpen(env, this, path, fis_fd, O_RDONLY);
 }
 
--- a/jdk/src/java.base/share/native/libjava/RandomAccessFile.c	Wed Aug 20 11:06:38 2014 -0700
+++ b/jdk/src/java.base/share/native/libjava/RandomAccessFile.c	Wed Aug 20 11:30:13 2014 -0700
@@ -47,8 +47,8 @@
 
 
 JNIEXPORT void JNICALL
-Java_java_io_RandomAccessFile_open(JNIEnv *env,
-                                   jobject this, jstring path, jint mode)
+Java_java_io_RandomAccessFile_open0(JNIEnv *env,
+                                    jobject this, jstring path, jint mode)
 {
     int flags = 0;
     if (mode & java_io_RandomAccessFile_O_RDONLY)
--- a/jdk/src/java.base/unix/native/libjava/FileOutputStream_md.c	Wed Aug 20 11:06:38 2014 -0700
+++ b/jdk/src/java.base/unix/native/libjava/FileOutputStream_md.c	Wed Aug 20 11:30:13 2014 -0700
@@ -53,8 +53,8 @@
  */
 
 JNIEXPORT void JNICALL
-Java_java_io_FileOutputStream_open(JNIEnv *env, jobject this,
-                                   jstring path, jboolean append) {
+Java_java_io_FileOutputStream_open0(JNIEnv *env, jobject this,
+                                    jstring path, jboolean append) {
     fileOpen(env, this, path, fos_fd,
              O_WRONLY | O_CREAT | (append ? O_APPEND : O_TRUNC));
 }
--- a/jdk/src/java.base/windows/native/libjava/FileOutputStream_md.c	Wed Aug 20 11:06:38 2014 -0700
+++ b/jdk/src/java.base/windows/native/libjava/FileOutputStream_md.c	Wed Aug 20 11:30:13 2014 -0700
@@ -54,8 +54,8 @@
  */
 
 JNIEXPORT void JNICALL
-Java_java_io_FileOutputStream_open(JNIEnv *env, jobject this,
-                                   jstring path, jboolean append) {
+Java_java_io_FileOutputStream_open0(JNIEnv *env, jobject this,
+                                    jstring path, jboolean append) {
     fileOpen(env, this, path, fos_fd,
              O_WRONLY | O_CREAT | (append ? O_APPEND : O_TRUNC));
 }