mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 473880 - TM: Add a way to keep stack values alive without emitting guard code. r=gal.
This commit is contained in:
parent
c9961fe054
commit
0e4418db16
@ -1030,7 +1030,7 @@ namespace nanojit
|
||||
default:
|
||||
NanoAssertMsgf(false, "unsupported LIR instruction: %d (~0x40: %d)", op, op&~LIR64);
|
||||
break;
|
||||
|
||||
|
||||
case LIR_live: {
|
||||
countlir_live();
|
||||
pending_lives.add(ins->oprnd1());
|
||||
@ -1329,7 +1329,9 @@ namespace nanojit
|
||||
verbose_only( if (_verbose) { outputAddr=true; asm_output("[%s]", _thisfrag->lirbuf->names->formatRef(ins)); } )
|
||||
break;
|
||||
}
|
||||
|
||||
case LIR_xbarrier: {
|
||||
break;
|
||||
}
|
||||
case LIR_xt:
|
||||
case LIR_xf:
|
||||
{
|
||||
|
@ -1882,6 +1882,7 @@ namespace nanojit
|
||||
case LIR_x:
|
||||
case LIR_xt:
|
||||
case LIR_xf:
|
||||
case LIR_xbarrier:
|
||||
formatGuard(i, s);
|
||||
break;
|
||||
|
||||
|
@ -140,7 +140,7 @@ namespace nanojit
|
||||
};
|
||||
|
||||
inline bool isGuard(LOpcode op) {
|
||||
return op==LIR_x || op==LIR_xf || op==LIR_xt || op==LIR_loop;
|
||||
return op == LIR_x || op == LIR_xf || op == LIR_xt || op == LIR_loop || op == LIR_xbarrier;
|
||||
}
|
||||
|
||||
inline bool isCall(LOpcode op) {
|
||||
|
@ -176,7 +176,7 @@ OPDEF(uge, 63, 2) // 0x3F 0011 1111
|
||||
OPDEF64(2, 0, 2) // wraps a pair of refs
|
||||
OPDEF64(file, 1, 2)
|
||||
OPDEF64(line, 2, 2)
|
||||
OPDEF64(unused3_64, 3, 2)
|
||||
OPDEF64(xbarrier, 3, 1) // memory barrier (dummy guard)
|
||||
|
||||
OPDEF64(unused4_64, 4, 2)
|
||||
OPDEF64(unused5_64, 5, 2)
|
||||
|
Loading…
Reference in New Issue
Block a user