mirror of
https://github.com/corda/corda.git
synced 2025-01-08 14:03:06 +00:00
fix stack walking from native methods
This commit is contained in:
parent
31e5e4c286
commit
85712d183b
@ -217,6 +217,8 @@ class MyStackWalker: public Processor::StackWalker {
|
|||||||
if (trace and trace->stack) {
|
if (trace and trace->stack) {
|
||||||
base = trace->base;
|
base = trace->base;
|
||||||
stack = static_cast<void**>(trace->stack);
|
stack = static_cast<void**>(trace->stack);
|
||||||
|
ip_ = *static_cast<void**>(stack);
|
||||||
|
method_ = methodForIp(t, *static_cast<void**>(stack));
|
||||||
nativeMethod = trace->nativeMethod;
|
nativeMethod = trace->nativeMethod;
|
||||||
trace = trace->next;
|
trace = trace->next;
|
||||||
} else {
|
} else {
|
||||||
@ -4077,9 +4079,13 @@ compileMethod2(MyThread* t)
|
|||||||
(t, resolveThisPointer(t, t->stack, target)), methodOffset(t, target))
|
(t, resolveThisPointer(t, t->stack, target)), methodOffset(t, target))
|
||||||
= &singletonValue(t, methodCompiled(t, target), 0);
|
= &singletonValue(t, methodCompiled(t, target), 0);
|
||||||
} else {
|
} else {
|
||||||
|
#ifndef VM_STRESS
|
||||||
|
// valgrind doesn't like this, since the effect of updateCall
|
||||||
|
// below does not propagate to valgrind's interpreter:
|
||||||
{ ACQUIRE(t, t->m->classLock);
|
{ ACQUIRE(t, t->m->classLock);
|
||||||
removeCallNode(t, node);
|
removeCallNode(t, node);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
Context context(t);
|
Context context(t);
|
||||||
context.c->updateCall
|
context.c->updateCall
|
||||||
|
Loading…
Reference in New Issue
Block a user