summaryrefslogtreecommitdiff
path: root/libjava/java
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2000-01-05 16:35:20 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2000-01-05 16:35:20 +0000
commitb3ca2511df594241fba47f4aadc7d381aafad5fb (patch)
treedaac5e5bddf454e798664add5ce18fea5a484326 /libjava/java
parent931d05cc7bf69fe838f13211754ee0af75fb97a9 (diff)
downloadgcc-b3ca2511df594241fba47f4aadc7d381aafad5fb.tar.gz
* java/lang/Class.h (getSignature): Updated.
* java/lang/Class.java (getSignature): Updated. * java/lang/natClass.cc (getSignature): Added `is_constructor' argument. (getConstructor): Ensure constructor is public. (_getConstructors): Check for public-ness of constructor when `declared' is false, not when it is true. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31241 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java')
-rw-r--r--libjava/java/lang/Class.h2
-rw-r--r--libjava/java/lang/Class.java3
-rw-r--r--libjava/java/lang/natClass.cc19
3 files changed, 14 insertions, 10 deletions
diff --git a/libjava/java/lang/Class.h b/libjava/java/lang/Class.h
index dfdbf72c831..0b43ad31727 100644
--- a/libjava/java/lang/Class.h
+++ b/libjava/java/lang/Class.h
@@ -103,7 +103,7 @@ public:
JArray<jclass> *getInterfaces (void);
void getSignature (java::lang::StringBuffer *buffer);
- static jstring getSignature (JArray<jclass> *);
+ static jstring getSignature (JArray<jclass> *, jboolean is_constructor);
java::lang::reflect::Method *getMethod (jstring, JArray<jclass> *);
JArray<java::lang::reflect::Method *> *getMethods (void);
diff --git a/libjava/java/lang/Class.java b/libjava/java/lang/Class.java
index a304e6c0113..4c49cd93b35 100644
--- a/libjava/java/lang/Class.java
+++ b/libjava/java/lang/Class.java
@@ -89,7 +89,8 @@ public final class Class implements Serializable
public native Class[] getInterfaces ();
private final native void getSignature (StringBuffer buffer);
- private static final native String getSignature (Class[] parameterTypes);
+ private static final native String getSignature (Class[] parameterTypes,
+ boolean is_construtor);
public native Method getMethod (String methodName, Class[] parameterTypes)
throws NoSuchMethodException, SecurityException;
diff --git a/libjava/java/lang/natClass.cc b/libjava/java/lang/natClass.cc
index 939fe387e7a..152be02b7ce 100644
--- a/libjava/java/lang/natClass.cc
+++ b/libjava/java/lang/natClass.cc
@@ -101,7 +101,7 @@ java::lang::Class::forName (jstring className)
java::lang::reflect::Constructor *
java::lang::Class::getConstructor (JArray<jclass> *param_types)
{
- jstring partial_sig = getSignature (param_types);
+ jstring partial_sig = getSignature (param_types, true);
jint hash = partial_sig->hashCode ();
int i = isPrimitive () ? 0 : method_count;
@@ -114,7 +114,7 @@ java::lang::Class::getConstructor (JArray<jclass> *param_types)
// Found it. For getConstructor, the constructor must be
// public.
using namespace java::lang::reflect;
- if (Modifier::isPublic(methods[i].accflags))
+ if (! Modifier::isPublic(methods[i].accflags))
break;
Constructor *cons = new Constructor ();
cons->offset = (char *) (&methods[i]) - (char *) methods;
@@ -139,7 +139,7 @@ java::lang::Class::_getConstructors (jboolean declared)
if (method->name == NULL
&& ! _Jv_equalUtf8Consts (method->name, init_name))
continue;
- if (declared
+ if (! declared
&& ! java::lang::reflect::Modifier::isPublic(method->accflags))
continue;
numConstructors++;
@@ -154,7 +154,7 @@ java::lang::Class::_getConstructors (jboolean declared)
if (method->name == NULL
&& ! _Jv_equalUtf8Consts (method->name, init_name))
continue;
- if (declared
+ if (! declared
&& ! java::lang::reflect::Modifier::isPublic(method->accflags))
continue;
java::lang::reflect::Constructor *cons
@@ -169,7 +169,7 @@ java::lang::Class::_getConstructors (jboolean declared)
java::lang::reflect::Constructor *
java::lang::Class::getDeclaredConstructor (JArray<jclass> *param_types)
{
- jstring partial_sig = getSignature (param_types);
+ jstring partial_sig = getSignature (param_types, true);
jint hash = partial_sig->hashCode ();
int i = isPrimitive () ? 0 : method_count;
@@ -277,7 +277,8 @@ java::lang::Class::getSignature (java::lang::StringBuffer *buffer)
// This doesn't have to be native. It is an implementation detail
// only called from the C++ code, though, so maybe this is clearer.
jstring
-java::lang::Class::getSignature (JArray<jclass> *param_types)
+java::lang::Class::getSignature (JArray<jclass> *param_types,
+ jboolean is_constructor)
{
java::lang::StringBuffer *buf = new java::lang::StringBuffer ();
buf->append((jchar) '(');
@@ -285,6 +286,8 @@ java::lang::Class::getSignature (JArray<jclass> *param_types)
for (int i = 0; i < param_types->length; ++i)
v[i]->getSignature(buf);
buf->append((jchar) ')');
+ if (is_constructor)
+ buf->append((jchar) 'V');
return buf->toString();
}
@@ -292,7 +295,7 @@ java::lang::reflect::Method *
java::lang::Class::getDeclaredMethod (jstring name,
JArray<jclass> *param_types)
{
- jstring partial_sig = getSignature (param_types);
+ jstring partial_sig = getSignature (param_types, false);
jint p_len = partial_sig->length();
_Jv_Utf8Const *utf_name = _Jv_makeUtf8Const (name);
int i = isPrimitive () ? 0 : method_count;
@@ -446,7 +449,7 @@ java::lang::Class::getInterfaces (void)
java::lang::reflect::Method *
java::lang::Class::getMethod (jstring name, JArray<jclass> *param_types)
{
- jstring partial_sig = getSignature (param_types);
+ jstring partial_sig = getSignature (param_types, false);
jint p_len = partial_sig->length();
_Jv_Utf8Const *utf_name = _Jv_makeUtf8Const (name);
for (Class *klass = this; klass; klass = klass->getSuperclass())