Hi list,

I just commited the attached patch to put the native methods of
java.io.ObjectInputInterface into the VM interface.


Michael


2005-04-16  Michael Koch  <[EMAIL PROTECTED]>

        * include/Makefile.am: Removed java_io_ObjectInputStream.h
        and added java_io_VMObjectInputStream.h.
        * include/java_io_ObjectInputStream.h: Removed.
        * include/java_io_VMObjectInputStream.h: New file.
        * java/io/ObjectInputStream.java
        (currentClassLoader): Removed.
        (allocateObject): Likewise.
        * native/jni/java-io/Makefile.am: Removed java_io_ObjectInputStream.c
        and added java_io_VMObjectInputStream.c.
        * native/jni/java-io/java_io_ObjectInputStream.c: Removed.
        * native/jni/java-io/java_io_VMObjectInputStream.c: New file.
        * vm/reference/java/io/VMObjectInputStream.java: Likewise.

Index: include/Makefile.am
===================================================================
RCS file: /cvsroot/classpath/classpath/include/Makefile.am,v
retrieving revision 1.41
diff -u -r1.41 Makefile.am
--- include/Makefile.am 16 Apr 2005 09:19:54 -0000      1.41
+++ include/Makefile.am 16 Apr 2005 11:04:40 -0000
@@ -72,8 +72,8 @@
 $(top_srcdir)/include/gnu_java_nio_VMPipe.h \
 $(top_srcdir)/include/gnu_java_nio_VMSelector.h \
 $(top_srcdir)/include/gnu_java_nio_channels_FileChannelImpl.h \
-$(top_srcdir)/include/java_io_ObjectInputStream.h \
 $(top_srcdir)/include/java_io_VMFile.h \
+$(top_srcdir)/include/java_io_VMObjectInputStream.h \
 $(top_srcdir)/include/java_io_VMObjectStreamClass.h \
 $(top_srcdir)/include/java_lang_Math.h \
 $(top_srcdir)/include/java_lang_VMDouble.h \
@@ -111,10 +111,10 @@
        $(JAVAH) -o $@ gnu.java.nio.VMPipe
 $(top_srcdir)/include/gnu_java_nio_VMSelector.h: 
$(top_srcdir)/vm/reference/gnu/java/nio/VMSelector.java
        $(JAVAH) -o $@ gnu.java.nio.VMSelector
-$(top_srcdir)/include/java_io_ObjectInputStream.h: 
$(top_srcdir)/java/io/ObjectInputStream.java
-       $(JAVAH) -o $@ java.io.ObjectInputStream
 $(top_srcdir)/include/java_io_VMFile.h: 
$(top_srcdir)/vm/reference/java/io/VMFile.java
        $(JAVAH) -o $@ java.io.VMFile
+$(top_srcdir)/include/java_io_VMObjectInputStream.h: 
$(top_srcdir)/vm/reference/java/io/VMObjectInputStream.java
+       $(JAVAH) -o $@ java.io.VMObjectInputStream
 $(top_srcdir)/include/java_io_VMObjectStreamClass.h: 
$(top_srcdir)/vm/reference/java/io/VMObjectStreamClass.java
        $(JAVAH) -o $@ java.io.VMObjectStreamClass
 $(top_srcdir)/include/java_lang_Math.h: $(top_srcdir)/java/lang/Math.java
Index: include/java_io_ObjectInputStream.h
===================================================================
RCS file: include/java_io_ObjectInputStream.h
diff -N include/java_io_ObjectInputStream.h
--- include/java_io_ObjectInputStream.h 6 Dec 2004 17:11:45 -0000       1.7
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,22 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-
-#ifndef __java_io_ObjectInputStream__
-#define __java_io_ObjectInputStream__
-
-#include <jni.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-JNIEXPORT jobject JNICALL Java_java_io_ObjectInputStream_currentClassLoader 
(JNIEnv *env, jclass, jobject);
-JNIEXPORT jobject JNICALL Java_java_io_ObjectInputStream_allocateObject 
(JNIEnv *env, jobject, jclass, jclass, jobject);
-#undef java_io_ObjectInputStream_BUFFER_SIZE
-#define java_io_ObjectInputStream_BUFFER_SIZE 1024L
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __java_io_ObjectInputStream__ */
Index: include/java_io_VMObjectInputStream.h
===================================================================
RCS file: include/java_io_VMObjectInputStream.h
diff -N include/java_io_VMObjectInputStream.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ include/java_io_VMObjectInputStream.h       16 Apr 2005 11:04:40 -0000
@@ -0,0 +1,20 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#ifndef __java_io_VMObjectInputStream__
+#define __java_io_VMObjectInputStream__
+
+#include <jni.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT jobject JNICALL Java_java_io_VMObjectInputStream_currentClassLoader 
(JNIEnv *env, jclass, jobject);
+JNIEXPORT jobject JNICALL Java_java_io_VMObjectInputStream_allocateObject 
(JNIEnv *env, jclass, jclass, jclass, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __java_io_VMObjectInputStream__ */
Index: java/io/ObjectInputStream.java
===================================================================
RCS file: /cvsroot/classpath/classpath/java/io/ObjectInputStream.java,v
retrieving revision 1.54
diff -u -r1.54 ObjectInputStream.java
--- java/io/ObjectInputStream.java      22 Feb 2005 03:39:43 -0000      1.54
+++ java/io/ObjectInputStream.java      16 Apr 2005 11:04:41 -0000
@@ -796,7 +796,7 @@
     if (sm == null)
       sm = new SecurityManager () {};
     
-    return currentClassLoader(sm);
+    return VMObjectInputStream.currentClassLoader(sm);
   }
 
   /**
@@ -888,7 +888,7 @@
     if (sm == null)
       sm = new SecurityManager() {};
     
-    ClassLoader cl = currentClassLoader(sm);
+    ClassLoader cl = VMObjectInputStream.currentClassLoader(sm);
     
     Class[] clss = new Class[intfs.length];
     if(cl == null)
@@ -1838,7 +1838,7 @@
         throw new InvalidClassException("Missing accessible no-arg base class 
constructor for " + real_class.getName()); 
     try
       {
-       return allocateObject(real_class, constructor.getDeclaringClass(), 
constructor);
+       return VMObjectInputStream.allocateObject(real_class, 
constructor.getDeclaringClass(), constructor);
       }
     catch (InstantiationException e)
       {
@@ -1866,15 +1866,6 @@
       }
   }
 
-  /**
-   * This native method is used to get access to the protected method
-   * of the same name in SecurityManger.
-   *
-   * @param sm SecurityManager instance which should be called.
-   * @return The current class loader in the calling stack.
-   */
-  private static native ClassLoader currentClassLoader (SecurityManager sm);
-
   private void callReadMethod (Method readObject, Class klass, Object obj)
     throws ClassNotFoundException, IOException
   {
@@ -1906,9 +1897,6 @@
     prereadFields = null;
   }
     
-  private native Object allocateObject(Class clazz, Class constr_clazz, 
Constructor constructor)
-    throws InstantiationException;
-
   private static final int BUFFER_SIZE = 1024;
 
   private DataInputStream realInputStream;
Index: native/jni/java-io/Makefile.am
===================================================================
RCS file: /cvsroot/classpath/classpath/native/jni/java-io/Makefile.am,v
retrieving revision 1.18
diff -u -r1.18 Makefile.am
--- native/jni/java-io/Makefile.am      26 Oct 2004 20:26:03 -0000      1.18
+++ native/jni/java-io/Makefile.am      16 Apr 2005 11:04:41 -0000
@@ -2,8 +2,8 @@
 
 libjavaio_la_SOURCES =         javaio.h \
                        javaio.c \
-                       java_io_ObjectInputStream.c \
                        java_io_VMFile.c \
+                       java_io_VMObjectInputStream.c \
                        java_io_VMObjectStreamClass.c
 
 libjavaio_la_LIBADD = $(top_builddir)/native/jni/classpath/jcl.lo
Index: native/jni/java-io/java_io_ObjectInputStream.c
===================================================================
RCS file: native/jni/java-io/java_io_ObjectInputStream.c
diff -N native/jni/java-io/java_io_ObjectInputStream.c
--- native/jni/java-io/java_io_ObjectInputStream.c      8 Apr 2005 13:01:42 
-0000       1.11
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,91 +0,0 @@
-/* java_io_ObjectInputStream.c -- Native methods for ObjectInputStream class
-   Copyright (C) 1998, 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
- 
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-/*  TODO: check exceptions */
-/*        comments */
-
-/* do not move; needed here because of some macro definitions */
-#include <config.h>
-
-#include <jni.h>
-#include <jcl.h>
-
-#include "java_io_ObjectInputStream.h"
-
-/*
- * Class:     java_io_ObjectInputStream
- * Method:    currentClassLoader
- * Signature: (Ljava/lang/SecurityManager;)Ljava/lang/ClassLoader;
- */
-JNIEXPORT jobject JNICALL
-Java_java_io_ObjectInputStream_currentClassLoader (JNIEnv * env,
-                                                  jclass clazz,
-                                                  jobject loader)
-{
-  jmethodID id = (*env)->GetMethodID (env,
-                                     (*env)->GetObjectClass (env, loader),
-                                     "currentClassLoader",
-                                     "()Ljava/lang/ClassLoader;");
-
-  if (id == NULL)
-    return NULL;
-
-  return (*env)->CallObjectMethod (env, loader, id, clazz);
-}
-
-
-/*
- * Class:     java_io_ObjectInputStream
- * Method:    allocateObject
- * Signature: (Ljava/lang/Class;)Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL
-Java_java_io_ObjectInputStream_allocateObject (JNIEnv * env,
-                                              jobject self
-                                              __attribute__ ((__unused__)),
-                                              jclass clazz,
-                                              jclass constr_clazz,
-                                              jobject constructor)
-{
-  jobject obj = (*env)->AllocObject (env, clazz);
-  jmethodID id = (*env)->FromReflectedMethod (env, constructor);
-
-  (*env)->CallNonvirtualVoidMethod (env, obj, constr_clazz, id);
-
-  return obj;
-}
Index: native/jni/java-io/java_io_VMObjectInputStream.c
===================================================================
RCS file: native/jni/java-io/java_io_VMObjectInputStream.c
diff -N native/jni/java-io/java_io_VMObjectInputStream.c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ native/jni/java-io/java_io_VMObjectInputStream.c    16 Apr 2005 11:04:41 
-0000
@@ -0,0 +1,91 @@
+/* java_io_VMObjectInputStream.c -- Native methods for ObjectInputStream class
+   Copyright (C) 1998, 2004, 2005  Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+ 
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+/*  TODO: check exceptions */
+/*        comments */
+
+/* do not move; needed here because of some macro definitions */
+#include <config.h>
+
+#include <jni.h>
+#include <jcl.h>
+
+#include "java_io_VMObjectInputStream.h"
+
+/*
+ * Class:     java_io_VMObjectInputStream
+ * Method:    currentClassLoader
+ * Signature: (Ljava/lang/SecurityManager;)Ljava/lang/ClassLoader;
+ */
+JNIEXPORT jobject JNICALL
+Java_java_io_VMObjectInputStream_currentClassLoader (JNIEnv * env,
+                                                  jclass clazz,
+                                                  jobject loader)
+{
+  jmethodID id = (*env)->GetMethodID (env,
+                                     (*env)->GetObjectClass (env, loader),
+                                     "currentClassLoader",
+                                     "()Ljava/lang/ClassLoader;");
+
+  if (id == NULL)
+    return NULL;
+
+  return (*env)->CallObjectMethod (env, loader, id, clazz);
+}
+
+
+/*
+ * Class:     java_io_VMObjectInputStream
+ * Method:    allocateObject
+ * Signature: (Ljava/lang/Class;)Ljava/lang/Object;
+ */
+JNIEXPORT jobject JNICALL
+Java_java_io_VMObjectInputStream_allocateObject (JNIEnv * env,
+                                               jclass clazz
+                                              __attribute__((__unused__)),
+                                              jclass target_clazz,
+                                              jclass constr_clazz,
+                                              jobject constructor)
+{
+  jobject obj = (*env)->AllocObject (env, target_clazz);
+  jmethodID id = (*env)->FromReflectedMethod (env, constructor);
+
+  (*env)->CallNonvirtualVoidMethod (env, obj, constr_clazz, id);
+
+  return obj;
+}
Index: vm/reference/java/io/VMObjectInputStream.java
===================================================================
RCS file: vm/reference/java/io/VMObjectInputStream.java
diff -N vm/reference/java/io/VMObjectInputStream.java
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ vm/reference/java/io/VMObjectInputStream.java       16 Apr 2005 11:04:41 
-0000
@@ -0,0 +1,65 @@
+/* ObjectInputStream.java -- Class used to read serialized objects
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005
+   Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package java.io;
+
+import gnu.classpath.Configuration;
+import gnu.java.io.ObjectIdentityWrapper;
+
+import java.lang.reflect.Array;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.Proxy;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.util.Arrays;
+import java.util.Hashtable;
+import java.util.Vector;
+
+final class VMObjectInputStream
+{
+  static native ClassLoader currentClassLoader(SecurityManager sm);
+
+  static native Object allocateObject(Class clazz, Class constr_clazz, 
Constructor constructor)
+    throws InstantiationException;
+}
+
_______________________________________________
Classpath-patches mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/classpath-patches

Reply via email to