2001-01-16 Alexandre Petit-Bianco <apbianco@cygnus.com>
authorapbianco <apbianco@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 17 Jan 2001 08:13:06 +0000 (08:13 +0000)
committerapbianco <apbianco@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 17 Jan 2001 08:13:06 +0000 (08:13 +0000)
* prims.cc (init_prim_class): Deleted.
(DECLARE_PRIM_TYPE): Rewritten.
* java/lang/Class.h (stdio.h): Include removed.
(stddef.h): Included.
(java/lang/reflect/Modifier.h): Likewise.
(Class): Contructor now takes arguments, initializes fields.
(initializePrim): Prototype deleted.
* java/lang/natClass.cc (initializePrim): Deleted.

(http://sources.redhat.com/ml/java-patches/2001-q1/msg00081.html)

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

libjava/ChangeLog
libjava/java/lang/Class.h
libjava/java/lang/natClass.cc
libjava/prims.cc

index 13cbb57..f958cd0 100644 (file)
@@ -1,3 +1,14 @@
+2001-01-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
+
+       * prims.cc (init_prim_class): Deleted.
+       (DECLARE_PRIM_TYPE): Rewritten.
+       * java/lang/Class.h (stdio.h): Include removed.
+       (stddef.h): Included.
+       (java/lang/reflect/Modifier.h): Likewise.
+       (Class): Contructor now takes arguments, initializes fields.
+       (initializePrim): Prototype deleted.
+       * java/lang/natClass.cc (initializePrim): Deleted.
+
 2001-01-16  Warren Levy  <warrenl@redhat.com>
 
        * java/math/BigInteger.java: Update Copyright year.
index 9793a56..febe748 100644 (file)
@@ -14,10 +14,11 @@ details.  */
 
 #pragma interface
 
-#include <stdio.h>
+#include <stddef.h>
 #include <java/lang/Object.h>
 #include <java/lang/String.h>
 #include <java/net/URL.h>
+#include <java/lang/reflect/Modifier.h>
 
 // We declare these here to avoid including gcj/cni.h.
 extern "C" void _Jv_InitClass (jclass klass);
@@ -173,7 +174,10 @@ public:
 
   jboolean isAssignableFrom (jclass cls);
   jboolean isInstance (jobject obj);
-  jboolean isInterface (void);
+  jboolean isInterface (void)
+  {
+    return (accflags & java::lang::reflect::Modifier::INTERFACE) != 0;
+  }
   
   inline jboolean isPrimitive (void)
     {
@@ -192,52 +196,32 @@ public:
   // finalization
   void finalize ();
 
-  // For the initialization of primitive types: some constructors as
-  // required by prims.cc:init_prim_class(), and the prototype of
-  // method to perform a lightweight initialization of a Class object.
-  Class (void) {}
-  Class (const Class& x) : Object () {
+  // This constructor is used to create Class object for the primitive
+  // types.
+  Class (jobject cname, jbyte sig, jint len, jobject array_vtable) {
     
+    using namespace java::lang::reflect;
+    _Jv_Utf8Const *_Jv_makeUtf8Const (char *s, int len);
+
     // C++ ctors are fixing the vtbl in a way that doesn't fit Java.
     // We can fix the C++ compiler, or we can hack our runtime. What's
     // below fix the vtable so that it starts at -2.
     void *p =  ((void **)this)[0];
     ((void **)this)[0] = (void *)((char *)p-2*sizeof (void *));
 
-    _Jv_VTable *avtable = x.vtable;
-
-    // We must initialize every field of the class.  We do this in
-    // the same order they are declared in Class.h.
-    next = NULL;
-    name = x.name;
-    accflags = x.accflags;
-    superclass = NULL;
-    constants.size = 0;
-    constants.tags = NULL;
-    constants.data = NULL;
-    methods = NULL;
-    method_count = x.method_count;
-    vtable_method_count = 0;
-    fields = NULL;
-    size_in_bytes = x.size_in_bytes;
-    field_count = 0;
-    static_field_count = 0;
+    // We must initialize every field of the class.  We do this in the
+    // same order they are declared in Class.h, except for fields that
+    // are initialized to NULL.
+    name = _Jv_makeUtf8Const ((char *) cname, -1);
+    accflags = Modifier::PUBLIC | Modifier::FINAL | Modifier::ABSTRACT;
+    method_count = sig;
+    size_in_bytes = len;
     vtable = JV_PRIMITIVE_VTABLE;
-    interfaces = NULL;
-    loader = NULL;
-    interface_count = 0;
     state = JV_STATE_DONE;
-    thread = NULL;
     depth = -1;
-    ancestors = NULL;
-    idt = NULL;
-
     if (method_count != 'V')
-      _Jv_NewArrayClass (this, NULL, avtable);
-    else
-      arrayclass = NULL;
+      _Jv_NewArrayClass (this, NULL, (_Jv_VTable *) array_vtable);
   }
-  void initializePrim (jobject cname, jbyte sig, jint len, jobject avtable);
 
   static java::lang::Class class$;
 
index 0e54791..2d8a125 100644 (file)
@@ -633,12 +633,6 @@ java::lang::Class::isInstance (jobject obj)
   return _Jv_IsAssignableFrom (this, JV_CLASS (obj));
 }
 
-jboolean
-java::lang::Class::isInterface (void)
-{
-  return (accflags & java::lang::reflect::Modifier::INTERFACE) != 0;
-}
-
 jobject
 java::lang::Class::newInstance (void)
 {
@@ -1408,20 +1402,3 @@ java::lang::Class::getPrivateMethod (jstring name, JArray<jclass> *param_types)
     }
   JvThrow (new java::lang::NoSuchMethodException);
 }
-
-// Perform a lightweight initialization of a Class object, for the
-// purpose of creating the Class object of primitive types.
-
-void
-java::lang::Class::initializePrim (jobject cname, jbyte sig, jint len, jobject avtable)
-{
-  using namespace java::lang::reflect;
-
-  name = _Jv_makeUtf8Const ((char *) cname, -1);
-  accflags = Modifier::PUBLIC | Modifier::FINAL | Modifier::ABSTRACT;
-  method_count = sig;
-  size_in_bytes = len;
-  // We temporarily store `avtable' in the `vtable' field, so that the
-  // copy constructor can correctly invoke _Jv_FindArrayClass.
-  vtable = (_Jv_VTable *) avtable;
-}
index 415c82c..85264bb 100644 (file)
@@ -510,21 +510,11 @@ _Jv_NewMultiArray (jclass array_type, jint dimensions, ...)
 
 \f
 
-// Initialize Class object for primitive types. The `return' statement
-// does the actuall job.
-static java::lang::Class
-init_prim_class (jobject cname, jbyte sig, jint len, jobject array_vtable)
-{
-  static java::lang::Class iclass;
-  iclass.initializePrim (cname, sig, len, array_vtable);
-  return iclass;
-}
-  
 #define DECLARE_PRIM_TYPE(NAME, SIG, LEN)                              \
   _Jv_ArrayVTable _Jv_##NAME##VTable;                                  \
-  java::lang::Class _Jv_##NAME##Class =                                \
-    init_prim_class ((jobject) #NAME, (jbyte) SIG,                     \
-                     (jint) LEN, (jobject) &_Jv_##NAME##VTable);
+  java::lang::Class _Jv_##NAME##Class ((jobject) #NAME,                        \
+                                      (jbyte) SIG, (jint) LEN,         \
+                                      (jobject) &_Jv_##NAME##VTable);
 
 DECLARE_PRIM_TYPE(byte, 'B', 1);
 DECLARE_PRIM_TYPE(short, 'S', 2);