diff options
author | Tom Tromey <tromey@redhat.com> | 2006-04-24 21:28:36 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2006-04-24 21:28:36 +0000 |
commit | 0623a8c0c2b66e8a74eb16365db1c271e6ccc3b2 (patch) | |
tree | b428bcb705f8cde0041de4120ed15be9c6571606 | |
parent | 9fff64328d6e03611eb18cae23704cebf32d2c40 (diff) | |
download | gcc-0623a8c0c2b66e8a74eb16365db1c271e6ccc3b2.zip gcc-0623a8c0c2b66e8a74eb16365db1c271e6ccc3b2.tar.gz gcc-0623a8c0c2b66e8a74eb16365db1c271e6ccc3b2.tar.bz2 |
* java/lang/natClass.cc (_Jv_getInterfaceMethod): Skip <clinit>.
From-SVN: r113229
-rw-r--r-- | libjava/ChangeLog | 4 | ||||
-rw-r--r-- | libjava/java/lang/natClass.cc | 17 |
2 files changed, 16 insertions, 5 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 10b48df..b832f79 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,7 @@ +2006-04-24 Tom Tromey <tromey@redhat.com> + + * java/lang/natClass.cc (_Jv_getInterfaceMethod): Skip <clinit>. + 2006-04-21 Andrew Haley <aph@redhat.com> * include/execution.h (struct _Jv_CompiledEngine): Define for diff --git a/libjava/java/lang/natClass.cc b/libjava/java/lang/natClass.cc index 38a9aff..d888350 100644 --- a/libjava/java/lang/natClass.cc +++ b/libjava/java/lang/natClass.cc @@ -1182,9 +1182,14 @@ _Jv_getInterfaceMethod (jclass search_class, jclass &found_class, int &index, if (!klass->isInterface ()) return false; - int i = klass->method_count; - while (--i >= 0) + int max = klass->method_count; + int offset = 0; + for (int i = 0; i < max; ++i) { + // Skip <clinit> here, as it will not be in the IDT. + if (klass->methods[i].name->first() == '<') + continue; + if (_Jv_equalUtf8Consts (klass->methods[i].name, utf_name) && _Jv_equalUtf8Consts (klass->methods[i].signature, utf_sig)) { @@ -1197,9 +1202,11 @@ _Jv_getInterfaceMethod (jclass search_class, jclass &found_class, int &index, found_class = klass; // Interface method indexes count from 1. - index = i+1; + index = offset + 1; return true; } + + ++offset; } } @@ -1211,8 +1218,8 @@ _Jv_getInterfaceMethod (jclass search_class, jclass &found_class, int &index, { using namespace java::lang::reflect; bool found = _Jv_getInterfaceMethod (search_class->interfaces[i], - found_class, index, - utf_name, utf_sig); + found_class, index, + utf_name, utf_sig); if (found) return true; } |