mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Backed out changeset 2e21c25656ee due to tinderbox oranges.
--HG-- extra : convert_revision : ce381ce50f62501ae385870d1328df73e68d7a27
This commit is contained in:
parent
f914345ea4
commit
4119caf76d
@ -1959,7 +1959,6 @@ namespace nanojit
|
||||
CSE_ACC_MULTIPLE( EMB_NUM_USED_ACCS + 1),
|
||||
storesSinceLastLoad(ACCSET_NONE),
|
||||
alloc(alloc),
|
||||
knownCmpValues(alloc),
|
||||
suspended(false)
|
||||
{
|
||||
|
||||
@ -2061,8 +2060,6 @@ namespace nanojit
|
||||
// Note that this clears the CONST and MULTIPLE load tables as well.
|
||||
for (CseAcc a = 0; a < CSE_NUM_USED_ACCS; a++)
|
||||
clearL(a);
|
||||
|
||||
knownCmpValues.clear();
|
||||
}
|
||||
|
||||
inline uint32_t CseFilter::hashImmI(int32_t a) {
|
||||
@ -2466,15 +2463,6 @@ namespace nanojit
|
||||
if (!ins) {
|
||||
ins = out->ins2(op, a, b);
|
||||
addNL(LIns2, ins, k);
|
||||
} else if (ins->isCmp()) {
|
||||
if (knownCmpValues.containsKey(ins)) {
|
||||
// We've seen this comparison before, and it was previously
|
||||
// used in a guard, so we know what its value must be at this
|
||||
// point. Replace it with a constant.
|
||||
NanoAssert(ins->isCmp());
|
||||
bool cmpValue = knownCmpValues.get(ins);
|
||||
return insImmI(cmpValue ? 1 : 0);
|
||||
}
|
||||
}
|
||||
NanoAssert(ins->isop(op) && ins->oprnd1() == a && ins->oprnd2() == b);
|
||||
return ins;
|
||||
@ -2589,13 +2577,6 @@ namespace nanojit
|
||||
ins = out->insGuard(op, c, gr);
|
||||
addNL(LIns1, ins, k);
|
||||
}
|
||||
// After this guard, we know that 'c's result was true (if
|
||||
// op==LIR_xf) or false (if op==LIR_xt), else we would have
|
||||
// exited. Record this fact in case 'c' occurs again.
|
||||
if (!suspended) {
|
||||
bool c_value = (op == LIR_xt ? false : true);
|
||||
knownCmpValues.put(c, c_value);
|
||||
}
|
||||
} else {
|
||||
ins = out->insGuard(op, c, gr);
|
||||
}
|
||||
|
@ -1964,12 +1964,6 @@ namespace nanojit
|
||||
|
||||
Allocator& alloc;
|
||||
|
||||
// After a conditional guard such as "xf cmp", we know that 'cmp' must
|
||||
// be true, else we would have side-exited. So if we see 'cmp' again
|
||||
// we can treat it like a constant. This table records such
|
||||
// comparisons.
|
||||
HashMap <LIns*, bool> knownCmpValues;
|
||||
|
||||
// If true, we will not add new instructions to the CSE tables, but we
|
||||
// will continue to CSE instructions that match existing table
|
||||
// entries. Load instructions will still be removed if aliasing
|
||||
|
Loading…
Reference in New Issue
Block a user