mirror of
https://github.com/corda/corda.git
synced 2025-01-21 03:55:00 +00:00
fix order-of-operations bugs in compile.cpp which led to creation of incorrect stack maps
This commit is contained in:
parent
c9400316fd
commit
538e23c642
@ -2310,12 +2310,13 @@ compile(MyThread* t, Frame* initialFrame, unsigned ip,
|
||||
break;
|
||||
|
||||
case athrow: {
|
||||
Compiler::Operand* target = frame->popObject();
|
||||
c->call
|
||||
(c->constant(getThunk(t, throw_Thunk)),
|
||||
Compiler::NoReturn,
|
||||
frame->trace(0, false),
|
||||
0,
|
||||
2, c->thread(), frame->popObject());
|
||||
2, c->thread(), target);
|
||||
} return;
|
||||
|
||||
case bipush:
|
||||
@ -3437,15 +3438,17 @@ compile(MyThread* t, Frame* initialFrame, unsigned ip,
|
||||
} break;
|
||||
|
||||
case monitorenter: {
|
||||
Compiler::Operand* target = frame->popObject();
|
||||
c->call
|
||||
(c->constant(getThunk(t, acquireMonitorForObjectThunk)),
|
||||
0, frame->trace(0, false), 0, 2, c->thread(), frame->popObject());
|
||||
0, frame->trace(0, false), 0, 2, c->thread(), target);
|
||||
} break;
|
||||
|
||||
case monitorexit: {
|
||||
Compiler::Operand* target = frame->popObject();
|
||||
c->call
|
||||
(c->constant(getThunk(t, releaseMonitorForObjectThunk)),
|
||||
0, frame->trace(0, false), 0, 2, c->thread(), frame->popObject());
|
||||
0, frame->trace(0, false), 0, 2, c->thread(), target);
|
||||
} break;
|
||||
|
||||
case multianewarray: {
|
||||
|
Loading…
Reference in New Issue
Block a user