diff options
author | Tom Tromey <tromey@gcc.gnu.org> | 2000-01-04 08:46:52 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2000-01-04 08:46:52 +0000 |
commit | 0f918fea8b46618edfb2d302c9a920ceb64c22d0 (patch) | |
tree | b6bce78d53cdae8796dafac92444a6291ac4777a /libjava/java/lang/Class.java | |
parent | 00da7781ffb8ac0b1dfb6a6a187d1b22ac5d6f5f (diff) | |
download | gcc-0f918fea8b46618edfb2d302c9a920ceb64c22d0.zip gcc-0f918fea8b46618edfb2d302c9a920ceb64c22d0.tar.gz gcc-0f918fea8b46618edfb2d302c9a920ceb64c22d0.tar.bz2 |
[multiple changes]
2000-01-04 Tom Tromey <tromey@cygnus.com>
* java/lang/reflect/natConstructor.cc (newInstance): Pass
declaring class as return_type argument to
_Jv_CallNonvirtualMethodA.
* java/lang/reflect/natMethod.cc (_Jv_CallNonvirtualMethodA): In
constructor case, create object and use it as `this' argument.
* java/lang/Class.h (_getConstructors): Declare.
(_getFields): Declare.
* java/lang/Class.java (getConstructors): Wrote.
(_getConstructors): New native method.
(getDeclaredConstructors): Wrote.
(_getFields): Declare new native method.
* java/lang/natClass.cc (_Jv_LookupInterfaceMethod): Removed
incorrect comment.
(getMethod): Work correctly when class is primitive.
(getDeclaredMethods): Likewise. Compute offset using `method',
not `mptr'.
(getDeclaredMethod): Likewise.
(getConstructor): Wrote.
(ConstructorClass): New define.
(getDeclaredConstructor): Wrote.
(_getConstructors): New method.
(_getFields): New method.
(getFields): Wrote.
* Makefile.in: Rebuilt.
* Makefile.am (AM_CXXFLAGS): Added -D_GNU_SOURCE.
* prims.cc: Remove `#pragma implementation'.
* gcj/array.h: Remove `#pragma interface'.
* prims.cc (_Jv_equaln): New function.
* java/lang/Class.java (getSignature): Declare.
* resolve.cc (_Jv_LookupDeclaredMethod): Moved to natClass.cc.
* java/lang/natClass.cc (_Jv_LookupDeclaredMethod): Moved from
resolve.cc.
(getSignature): New method.
(getDeclaredMethod): Wrote.
(getMethod): Wrote.
Include StringBuffer.h.
* java/lang/Class.h (Class): Added _Jv_FromReflectedConstructor
as a friend. Unconditionally declare _Jv_LookupDeclaredMethod as
a friend.
(getSignature): Declare.
* include/jvm.h (_Jv_GetTypesFromSignature): Declare.
(_Jv_equaln): Declare.
(_Jv_CallNonvirtualMethodA): Declare.
* Makefile.in: Rebuilt.
* Makefile.am (nat_source_files): Added natConstructor.cc.
(java/lang/reflect/Constructor.h): New target.
* java/lang/reflect/natConstructor.cc: New file.
* java/lang/reflect/Constructor.java (newInstance): Now native.
(declaringClass): Renamed from decl_class.
(offset): Renamed from index.
(getType): New native method.
(getModifiers): Now native.
(getParameterTypes): Call getType if required.
(hashCode): Include hash code from declaring class.
(modifiers): Removed.
(toString): Call getType if required.
* gcj/method.h (_Jv_FromReflectedConstructor): New function.
* java/lang/reflect/natMethod.cc (hack_call): New method.
Removed `#if 0' around FFI code.
Include <gnu/gcj/RawData.h>.
(invoke): Use _Jv_CallNonvirtualMethodA. Throw
IllegalArgumentException when argument object and class disagree.
(_Jv_GetTypesFromSignature): New function.
(getType): Use it.
(ObjectClass): New define.
(_Jv_CallNonvirtualMethodA): New function.
* java/lang/reflect/Method.java (hack_trampoline): New method.
(hack_call): New native method.
1999-12-21 Per Bothner <per@bothner.com>
* java/lang/natClass.cc (getDeclaredMethods): Correctly compute
offset in new Method.
From-SVN: r31199
Diffstat (limited to 'libjava/java/lang/Class.java')
-rw-r--r-- | libjava/java/lang/Class.java | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/libjava/java/lang/Class.java b/libjava/java/lang/Class.java index f9bd59b..a304e6c0 100644 --- a/libjava/java/lang/Class.java +++ b/libjava/java/lang/Class.java @@ -1,6 +1,6 @@ // Class.java - Representation of a Java class. -/* Copyright (C) 1998, 1999 Cygnus Solutions +/* Copyright (C) 1998, 1999, 2000 Cygnus Solutions This file is part of libgcj. @@ -36,14 +36,27 @@ public final class Class implements Serializable public native Constructor getConstructor (Class[] parameterTypes) throws NoSuchMethodException, SecurityException; - public native Constructor[] getConstructors () throws SecurityException; - public native Class[] getDeclaredClasses () throws SecurityException; + // This is used to implement getConstructors and + // getDeclaredConstructors. + private native Constructor[] _getConstructors (boolean declared) + throws SecurityException; + + public Constructor[] getConstructors () throws SecurityException + { + return _getConstructors (false); + } public native Constructor getDeclaredConstructor (Class[] parameterTypes) throws NoSuchMethodException, SecurityException; - public native Constructor[] getDeclaredConstructors () - throws SecurityException; + + public native Class[] getDeclaredClasses () throws SecurityException; + + public Constructor[] getDeclaredConstructors () throws SecurityException + { + return _getConstructors (true); + } + public native Field getDeclaredField (String fieldName) throws NoSuchFieldException, SecurityException; public native Field[] getDeclaredFields () throws SecurityException; @@ -69,10 +82,15 @@ public final class Class implements Serializable throw new NoSuchFieldException(fieldName); return fld; } + + private native Field[] _getFields (Field[] result, int offset); public native Field[] getFields () throws SecurityException; public native Class[] getInterfaces (); + private final native void getSignature (StringBuffer buffer); + private static final native String getSignature (Class[] parameterTypes); + public native Method getMethod (String methodName, Class[] parameterTypes) throws NoSuchMethodException, SecurityException; public native Method[] getMethods () throws SecurityException; |