mirror of
https://github.com/corda/corda.git
synced 2025-01-09 06:23:04 +00:00
protect local variables from GC in jnienv.cpp
This commit is contained in:
parent
55d2fb8f57
commit
d8889bd4d8
@ -232,15 +232,13 @@ IsInstanceOf(Thread* t, jobject o, jclass c)
|
|||||||
}
|
}
|
||||||
|
|
||||||
object
|
object
|
||||||
findMethod(Thread* t, object c, const char* name, const char* spec)
|
findMethod(Thread* t, jclass c, const char* name, const char* spec)
|
||||||
{
|
{
|
||||||
PROTECT(t, c);
|
|
||||||
|
|
||||||
object n = makeByteArray(t, "%s", name);
|
object n = makeByteArray(t, "%s", name);
|
||||||
PROTECT(t, n);
|
PROTECT(t, n);
|
||||||
|
|
||||||
object s = makeByteArray(t, "%s", spec);
|
object s = makeByteArray(t, "%s", spec);
|
||||||
return vm::findMethod(t, c, n, s);
|
return vm::findMethod(t, *c, n, s);
|
||||||
}
|
}
|
||||||
|
|
||||||
jmethodID JNICALL
|
jmethodID JNICALL
|
||||||
@ -248,7 +246,7 @@ GetMethodID(Thread* t, jclass c, const char* name, const char* spec)
|
|||||||
{
|
{
|
||||||
ENTER(t, Thread::ActiveState);
|
ENTER(t, Thread::ActiveState);
|
||||||
|
|
||||||
object method = findMethod(t, *c, name, spec);
|
object method = findMethod(t, c, name, spec);
|
||||||
if (UNLIKELY(t->exception)) return 0;
|
if (UNLIKELY(t->exception)) return 0;
|
||||||
|
|
||||||
if (classFlags(t, *c) & ACC_INTERFACE) {
|
if (classFlags(t, *c) & ACC_INTERFACE) {
|
||||||
@ -278,7 +276,7 @@ GetStaticMethodID(Thread* t, jclass c, const char* name, const char* spec)
|
|||||||
{
|
{
|
||||||
ENTER(t, Thread::ActiveState);
|
ENTER(t, Thread::ActiveState);
|
||||||
|
|
||||||
object method = findMethod(t, *c, name, spec);
|
object method = findMethod(t, c, name, spec);
|
||||||
if (UNLIKELY(t->exception)) return 0;
|
if (UNLIKELY(t->exception)) return 0;
|
||||||
|
|
||||||
return methodOffset(t, method) + 1;
|
return methodOffset(t, method) + 1;
|
||||||
@ -772,13 +770,13 @@ CallStaticVoidMethod(Thread* t, jclass c, jmethodID m, ...)
|
|||||||
}
|
}
|
||||||
|
|
||||||
object
|
object
|
||||||
findField(Thread* t, object class_, const char* name, const char* spec)
|
findField(Thread* t, jclass c, const char* name, const char* spec)
|
||||||
{
|
{
|
||||||
object n = makeByteArray(t, "%s", name);
|
object n = makeByteArray(t, "%s", name);
|
||||||
PROTECT(t, n);
|
PROTECT(t, n);
|
||||||
|
|
||||||
object s = makeByteArray(t, "%s", spec);
|
object s = makeByteArray(t, "%s", spec);
|
||||||
return vm::findField(t, class_, n, s);
|
return vm::findField(t, *c, n, s);
|
||||||
}
|
}
|
||||||
|
|
||||||
jfieldID JNICALL
|
jfieldID JNICALL
|
||||||
@ -786,7 +784,7 @@ GetFieldID(Thread* t, jclass c, const char* name, const char* spec)
|
|||||||
{
|
{
|
||||||
ENTER(t, Thread::ActiveState);
|
ENTER(t, Thread::ActiveState);
|
||||||
|
|
||||||
object field = findField(t, *c, name, spec);
|
object field = findField(t, c, name, spec);
|
||||||
if (UNLIKELY(t->exception)) return 0;
|
if (UNLIKELY(t->exception)) return 0;
|
||||||
|
|
||||||
return fieldOffset(t, field);
|
return fieldOffset(t, field);
|
||||||
@ -797,7 +795,7 @@ GetStaticFieldID(Thread* t, jclass c, const char* name, const char* spec)
|
|||||||
{
|
{
|
||||||
ENTER(t, Thread::ActiveState);
|
ENTER(t, Thread::ActiveState);
|
||||||
|
|
||||||
object field = findField(t, *c, name, spec);
|
object field = findField(t, c, name, spec);
|
||||||
if (UNLIKELY(t->exception)) return 0;
|
if (UNLIKELY(t->exception)) return 0;
|
||||||
|
|
||||||
return fieldOffset(t, field);
|
return fieldOffset(t, field);
|
||||||
|
Loading…
Reference in New Issue
Block a user