diff options
author | Alexandre Petit-Bianco <apbianco@cygnus.com> | 2001-01-17 08:13:06 +0000 |
---|---|---|
committer | Alexandre Petit-Bianco <apbianco@gcc.gnu.org> | 2001-01-17 00:13:06 -0800 |
commit | ed8cc5fdf820abfc547edaad2e5e1bfd7f9c1b99 (patch) | |
tree | cfe0de1a60892065af8b8023b24409d4a4026f27 /libjava | |
parent | d34786e3fe35c316fa46da13d80a30cf3bf25ee5 (diff) | |
download | gcc-ed8cc5fdf820abfc547edaad2e5e1bfd7f9c1b99.zip gcc-ed8cc5fdf820abfc547edaad2e5e1bfd7f9c1b99.tar.gz gcc-ed8cc5fdf820abfc547edaad2e5e1bfd7f9c1b99.tar.bz2 |
prims.cc (init_prim_class): Deleted.
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.
(http://sources.redhat.com/ml/java-patches/2001-q1/msg00081.html)
From-SVN: r39088
Diffstat (limited to 'libjava')
-rw-r--r-- | libjava/ChangeLog | 11 | ||||
-rw-r--r-- | libjava/java/lang/Class.h | 56 | ||||
-rw-r--r-- | libjava/java/lang/natClass.cc | 23 | ||||
-rw-r--r-- | libjava/prims.cc | 16 |
4 files changed, 34 insertions, 72 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 13cbb57..f958cd0 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -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. diff --git a/libjava/java/lang/Class.h b/libjava/java/lang/Class.h index 9793a56..febe748 100644 --- a/libjava/java/lang/Class.h +++ b/libjava/java/lang/Class.h @@ -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$; diff --git a/libjava/java/lang/natClass.cc b/libjava/java/lang/natClass.cc index 0e54791..2d8a125 100644 --- a/libjava/java/lang/natClass.cc +++ b/libjava/java/lang/natClass.cc @@ -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; -} diff --git a/libjava/prims.cc b/libjava/prims.cc index 415c82c..85264bb 100644 --- a/libjava/prims.cc +++ b/libjava/prims.cc @@ -510,21 +510,11 @@ _Jv_NewMultiArray (jclass array_type, jint dimensions, ...) -// 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); |