diff options
author | rmathew <rmathew@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-04-30 18:14:07 +0000 |
---|---|---|
committer | rmathew <rmathew@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-04-30 18:14:07 +0000 |
commit | 1d90d99505f8443c807bbc24e44dffacdb6c7ce5 (patch) | |
tree | 7fe8152ed2c2c8729bfed1222c9bda338b620f08 /gcc/java | |
parent | 9ca797fe0ed339c857d1b607f05a51301e287fa6 (diff) | |
download | gcc-1d90d99505f8443c807bbc24e44dffacdb6c7ce5.tar.gz |
Fixes PR java/15133
* gjavah.c (struct method_name): Add member is_native.
(overloaded_jni_method_exists_p): Match candidate method only if
it is native.
(print_method_info): Initialise is_native flag from the method's
access flags.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@81357 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/java')
-rw-r--r-- | gcc/java/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/java/gjavah.c | 7 |
2 files changed, 14 insertions, 2 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 4a4017eb058..b566ffff82c 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,12 @@ +2004-04-30 Ranjit Mathew <rmathew@hotmail.com> + + Fixes PR java/15133 + * gjavah.c (struct method_name): Add member is_native. + (overloaded_jni_method_exists_p): Match candidate method only if + it is native. + (print_method_info): Initialise is_native flag from the method's + access flags. + 2004-04-30 Roger Sayle <roger@eyesopen.com> * builtins.c (java_builtins): Add acos, asin, ceil and floor. diff --git a/gcc/java/gjavah.c b/gcc/java/gjavah.c index 0a09ab6c137..45e5f251b9f 100644 --- a/gcc/java/gjavah.c +++ b/gcc/java/gjavah.c @@ -119,6 +119,7 @@ struct method_name int length; unsigned char *signature; int sig_length; + int is_native; struct method_name *next; }; @@ -634,7 +635,7 @@ name_is_method_p (const unsigned char *name, int length) return 0; } -/* If there is already a method named NAME, whose signature is not +/* If there is already a native method named NAME, whose signature is not SIGNATURE, then return true. Otherwise return false. */ static int overloaded_jni_method_exists_p (const unsigned char *name, int length, @@ -644,7 +645,8 @@ overloaded_jni_method_exists_p (const unsigned char *name, int length, for (p = method_name_list; p != NULL; p = p->next) { - if (p->length == length + if (p->is_native + && p->length == length && ! memcmp (p->name, name, length) && (p->sig_length != sig_length || memcmp (p->signature, signature, sig_length))) @@ -851,6 +853,7 @@ print_method_info (FILE *stream, JCF* jcf, int name_index, int sig_index, nn->next = method_name_list; nn->sig_length = JPOOL_UTF_LENGTH (jcf, sig_index); nn->signature = xmalloc (nn->sig_length); + nn->is_native = METHOD_IS_NATIVE (flags); memcpy (nn->signature, JPOOL_UTF_DATA (jcf, sig_index), nn->sig_length); method_name_list = nn; |