Merge pull request #403 from dicej/getDeclaredMethods

fix crash when calling Class.getDeclaredMethods using the OpenJDK class ...
This commit is contained in:
Joshua Warner 2015-01-22 13:38:54 -07:00
commit a13e97ddf7
2 changed files with 16 additions and 0 deletions

View File

@ -2452,10 +2452,19 @@ object makeJconstructor(Thread* t,
}
#endif // HAVE_JexecutableHasRealParameterData
void resolveBootstrap(Thread* t, Gc::Type type)
{
if (vm::type(t, type)->vmFlags() & BootstrapFlag) {
resolveSystemClass(t, roots(t)->bootLoader(), vm::type(t, type)->name());
}
}
object makeJmethod(Thread* t, GcMethod* vmMethod, int index)
{
PROTECT(t, vmMethod);
resolveBootstrap(t, GcJmethod::Type);
object name
= intern(t,
t->m->classpath->makeString(
@ -2558,6 +2567,8 @@ object makeJconstructor(Thread* t, GcMethod* vmMethod, int index)
{
PROTECT(t, vmMethod);
resolveBootstrap(t, GcJconstructor::Type);
unsigned parameterCount;
unsigned returnTypeSpec;
object parameterTypes = resolveParameterJTypes(t,
@ -2638,6 +2649,8 @@ object makeJfield(Thread* t, GcField* vmField, int index)
{
PROTECT(t, vmField);
resolveBootstrap(t, GcJfield::Type);
object name
= intern(t,
t->m->classpath->makeString(

View File

@ -135,6 +135,9 @@ public class UnsafeTest {
}
public static void main(String[] args) {
System.out.println("method count is "
+ Unsafe.class.getDeclaredMethods().length);
Unsafe u = avian.Machine.getUnsafe();
unsafeCatch(u);