diff options
| author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-04-24 21:28:36 +0000 |
|---|---|---|
| committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-04-24 21:28:36 +0000 |
| commit | 038d26bdaf35eec8cbda97e3f0dc6c4780e1ae59 (patch) | |
| tree | b428bcb705f8cde0041de4120ed15be9c6571606 /libjava/java/lang | |
| parent | 173dae522fe6b6ed02770b46ec6d7c6abc0622d9 (diff) | |
| download | ppe42-gcc-038d26bdaf35eec8cbda97e3f0dc6c4780e1ae59.tar.gz ppe42-gcc-038d26bdaf35eec8cbda97e3f0dc6c4780e1ae59.zip | |
* java/lang/natClass.cc (_Jv_getInterfaceMethod): Skip <clinit>.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113229 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java/lang')
| -rw-r--r-- | libjava/java/lang/natClass.cc | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/libjava/java/lang/natClass.cc b/libjava/java/lang/natClass.cc index 38a9aff4a0b..d88835019f4 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; } |

