OSDN Git Service

* Makefile.am (core_java_source_files): Add VMObjectStreamClass.java.
authormark <mark@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 20 Jan 2003 06:46:28 +0000 (06:46 +0000)
committermark <mark@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 20 Jan 2003 06:46:28 +0000 (06:46 +0000)
       (nat_source_files): Add natVMObjectStreamClass.cc.
       * Makefile.in: Regenerated.
       * gcj/javaprims.h (namespace java): Regenerated.
       * java/io/ObjectStreamClass.java (getClassUID): Call
       VMObjectStreamClass.hasClassInitializer().
       (hasClassInitializer): Removed.
       * java/io/VMObjectStreamClass.java: New class.
       * java/io/natVMObjectStreamClass.cc: New file.
       * java/lang/Class.h: Make java::io::VMObjectStreamClass friend class.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@61501 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/Makefile.am
libjava/Makefile.in
libjava/gcj/javaprims.h
libjava/java/io/ObjectStreamClass.java
libjava/java/io/VMObjectStreamClass.java [new file with mode: 0644]
libjava/java/io/natVMObjectStreamClass.cc [new file with mode: 0644]
libjava/java/lang/Class.h

index 45a00fd..8112a68 100644 (file)
@@ -1,3 +1,16 @@
+2003-01-17  Mark Wielaard  <mark@klomp.org>
+
+       * Makefile.am (core_java_source_files): Add VMObjectStreamClass.java.
+       (nat_source_files): Add natVMObjectStreamClass.cc.
+       * Makefile.in: Regenerated.
+       * gcj/javaprims.h (namespace java): Regenerated.
+       * java/io/ObjectStreamClass.java (getClassUID): Call
+       VMObjectStreamClass.hasClassInitializer().
+       (hasClassInitializer): Removed.
+       * java/io/VMObjectStreamClass.java: New class.
+       * java/io/natVMObjectStreamClass.cc: New file.
+       * java/lang/Class.h: Make java::io::VMObjectStreamClass friend class.
+
 2003-01-16  Mark Wielaard  <mark@klomp.org>
 
        * java/net/SocketImpl.java (toString): Don't explicitly call
index afdb825..5993ed0 100644 (file)
@@ -1692,6 +1692,7 @@ java/io/StringWriter.java \
 java/io/SyncFailedException.java \
 java/io/UTFDataFormatException.java \
 java/io/UnsupportedEncodingException.java \
+java/io/VMObjectStreamClass.java \
 java/io/WriteAbortedException.java \
 java/io/Writer.java \
 java/util/AbstractCollection.java \
@@ -2333,6 +2334,7 @@ java/io/natFile.cc \
 java/io/natFileDescriptor.cc \
 java/io/natObjectInputStream.cc \
 java/io/natObjectOutputStream.cc \
+java/io/natVMObjectStreamClass.cc \
 java/lang/natCharacter.cc \
 java/lang/natClass.cc \
 java/lang/natClassLoader.cc \
index e771b4e..f9ad647 100644 (file)
@@ -1449,6 +1449,7 @@ java/io/StringWriter.java \
 java/io/SyncFailedException.java \
 java/io/UTFDataFormatException.java \
 java/io/UnsupportedEncodingException.java \
+java/io/VMObjectStreamClass.java \
 java/io/WriteAbortedException.java \
 java/io/Writer.java \
 java/util/AbstractCollection.java \
@@ -2084,6 +2085,7 @@ java/io/natFile.cc \
 java/io/natFileDescriptor.cc \
 java/io/natObjectInputStream.cc \
 java/io/natObjectOutputStream.cc \
+java/io/natVMObjectStreamClass.cc \
 java/lang/natCharacter.cc \
 java/lang/natClass.cc \
 java/lang/natClassLoader.cc \
@@ -2252,11 +2254,11 @@ gnu/gcj/runtime/natNameFinder.lo gnu/gcj/runtime/natSharedLibLoader.lo \
 gnu/gcj/runtime/natStackTrace.lo gnu/gcj/runtime/natStringBuffer.lo \
 gnu/gcj/runtime/natVMClassLoader.lo java/io/natFile.lo \
 java/io/natFileDescriptor.lo java/io/natObjectInputStream.lo \
-java/io/natObjectOutputStream.lo java/lang/natCharacter.lo \
-java/lang/natClass.lo java/lang/natClassLoader.lo \
-java/lang/natConcreteProcess.lo java/lang/natDouble.lo \
-java/lang/natFloat.lo java/lang/natMath.lo java/lang/natObject.lo \
-java/lang/natRuntime.lo java/lang/natString.lo \
+java/io/natObjectOutputStream.lo java/io/natVMObjectStreamClass.lo \
+java/lang/natCharacter.lo java/lang/natClass.lo \
+java/lang/natClassLoader.lo java/lang/natConcreteProcess.lo \
+java/lang/natDouble.lo java/lang/natFloat.lo java/lang/natMath.lo \
+java/lang/natObject.lo java/lang/natRuntime.lo java/lang/natString.lo \
 java/lang/natStringBuffer.lo java/lang/natSystem.lo \
 java/lang/natThread.lo java/lang/natVMSecurityManager.lo \
 java/lang/ref/natReference.lo java/lang/reflect/natArray.lo \
@@ -2350,7 +2352,7 @@ libgcj-test.spec.in libgcj.spec.in
 
 DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 
-TAR = gtar
+TAR = tar
 GZIP_ENV = --best
 DIST_SUBDIRS =  @DIRLTDL@ testsuite gcj include @DIRLTDL@ gcj include
 DEP_FILES =  .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
@@ -2942,10 +2944,12 @@ DEP_FILES =  .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
 .deps/java/io/SyncFailedException.P \
 .deps/java/io/UTFDataFormatException.P \
 .deps/java/io/UnsupportedEncodingException.P \
+.deps/java/io/VMObjectStreamClass.P \
 .deps/java/io/WriteAbortedException.P .deps/java/io/Writer.P \
 .deps/java/io/natFile.P .deps/java/io/natFileDescriptor.P \
 .deps/java/io/natObjectInputStream.P \
 .deps/java/io/natObjectOutputStream.P \
+.deps/java/io/natVMObjectStreamClass.P \
 .deps/java/lang/AbstractMethodError.P \
 .deps/java/lang/ArithmeticException.P \
 .deps/java/lang/ArrayIndexOutOfBoundsException.P \
index 99b2fc1..a9d8b31 100644 (file)
@@ -120,6 +120,7 @@ extern "Java"
       class SyncFailedException;
       class UTFDataFormatException;
       class UnsupportedEncodingException;
+      class VMObjectStreamClass;
       class ValidatorAndPriority;
       class WriteAbortedException;
       class Writer;
index 5d4c102..2111635 100644 (file)
@@ -525,7 +525,7 @@ public class ObjectStreamClass implements Serializable
       }
 
       // write class initializer method if present
-      if (hasClassInitializer (cl))
+      if (VMObjectStreamClass.hasClassInitializer (cl))
       {
        data_out.writeUTF ("<clinit>");
        data_out.writeInt (Modifier.STATIC);
@@ -613,31 +613,6 @@ public class ObjectStreamClass implements Serializable
     return o;
   }
 
-
-  // Returns true if CLAZZ has a static class initializer
-  // (a.k.a. <clinit>).
-  private static boolean hasClassInitializer (Class clazz)
-  {
-    Method m = null;
-
-    try
-      {
-       /*
-        * There exists a problem here, according to the spec
-        * clazz.getDeclaredMethod ("<clinit>", classArgs);
-        * will always throw NoSuchMethodException, even if the static 
-        * intializer does exist.
-        */
-       Class classArgs[] = {};
-       m = clazz.getDeclaredMethod ("<clinit>", classArgs);
-      }
-    catch (java.lang.NoSuchMethodException e)
-      {
-      }
-
-    return m != null;
-  }
-
   public static final ObjectStreamField[] NO_FIELDS = {};
 
   private static Hashtable classLookupTable = new Hashtable ();
diff --git a/libjava/java/io/VMObjectStreamClass.java b/libjava/java/io/VMObjectStreamClass.java
new file mode 100644 (file)
index 0000000..fd4023e
--- /dev/null
@@ -0,0 +1,50 @@
+/* VMObjectStreamClass.java -- VM helper functions for ObjectStreamClass
+   Copyright (C) 2003  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 java.lang.reflect.Method;
+
+final class VMObjectStreamClass
+{
+  /**
+    * Returns true if CLAZZ has a static class initializer
+    * (a.k.a. <clinit>).
+    */
+  static native boolean hasClassInitializer (Class clazz);
+}
diff --git a/libjava/java/io/natVMObjectStreamClass.cc b/libjava/java/io/natVMObjectStreamClass.cc
new file mode 100644 (file)
index 0000000..b7a056c
--- /dev/null
@@ -0,0 +1,23 @@
+// natVMObjectStreamClass.cc - Native part of VMObjectStreamClass class.
+
+/* Copyright (C) 2003  Free Software Foundation
+
+   This VMObjectStreamClass is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the ObjectInputStream "LIBGCJ_LICENSE" for
+details.  */
+
+#include <gcj/cni.h>
+#include <jvm.h>
+
+#include <java/io/VMObjectStreamClass.h>
+#include <java/lang/Class.h>
+
+jboolean
+java::io::VMObjectStreamClass::hasClassInitializer (jclass klass)
+{
+  _Jv_Method *meth = _Jv_GetMethodLocal(klass, gcj::clinit_name,
+                                              gcj::void_signature);
+  return (meth != NULL);
+}
index 5a56fd3..db05cb6 100644 (file)
@@ -1,6 +1,6 @@
 // Class.h - Header file for java.lang.Class.  -*- c++ -*-
 
-/* Copyright (C) 1998, 1999, 2000, 2001, 2002  Free Software Foundation
+/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003  Free Software Foundation
 
    This file is part of libgcj.
 
@@ -364,6 +364,7 @@ private:
 
   friend class _Jv_BytecodeVerifier;
   friend class gnu::gcj::runtime::StackTrace;
+  friend class java::io::VMObjectStreamClass;
 
   // Chain for class pool.
   jclass next;