mirror of
https://github.com/corda/corda.git
synced 2025-06-01 15:10:54 +00:00
construct SiteMasks based on OperationMasks
This commit is contained in:
parent
4462b87f10
commit
49bfda3932
@ -340,7 +340,7 @@ maybeMove(Context* c, Read* read, bool intersectRead, bool includeNextWord,
|
|||||||
(size, src, tmp,
|
(size, src, tmp,
|
||||||
OperandMask(dstMask.typeMask, dstMask.registerMask));
|
OperandMask(dstMask.typeMask, dstMask.registerMask));
|
||||||
|
|
||||||
SiteMask srcMask(src.typeMask, src.registerMask, AnyFrameIndex);
|
SiteMask srcMask = SiteMask::lowPart(src);
|
||||||
for (SiteIterator it(c, value, true, includeNextWord); it.hasMore();) {
|
for (SiteIterator it(c, value, true, includeNextWord); it.hasMore();) {
|
||||||
Site* s = it.next();
|
Site* s = it.next();
|
||||||
if (s->match(c, srcMask) or s->match(c, dstMask)) {
|
if (s->match(c, srcMask) or s->match(c, dstMask)) {
|
||||||
@ -365,7 +365,7 @@ maybeMove(Context* c, Read* read, bool intersectRead, bool includeNextWord,
|
|||||||
(size, src, tmp,
|
(size, src, tmp,
|
||||||
OperandMask(1 << dstSite->type(c), dstSite->registerMask(c)));
|
OperandMask(1 << dstSite->type(c), dstSite->registerMask(c)));
|
||||||
|
|
||||||
SiteMask srcMask(src.typeMask, src.registerMask, AnyFrameIndex);
|
SiteMask srcMask = SiteMask::lowPart(src);
|
||||||
unsigned cost = 0xFFFFFFFF;
|
unsigned cost = 0xFFFFFFFF;
|
||||||
Site* srcSite = 0;
|
Site* srcSite = 0;
|
||||||
for (SiteIterator it(c, value, true, includeNextWord); it.hasMore();) {
|
for (SiteIterator it(c, value, true, includeNextWord); it.hasMore();) {
|
||||||
@ -403,7 +403,7 @@ maybeMove(Context* c, Read* read, bool intersectRead, bool includeNextWord,
|
|||||||
srcSite->freeze(c, value);
|
srcSite->freeze(c, value);
|
||||||
dstSite->freeze(c, value);
|
dstSite->freeze(c, value);
|
||||||
|
|
||||||
SiteMask tmpMask(tmp.typeMask, tmp.registerMask, AnyFrameIndex);
|
SiteMask tmpMask = SiteMask::lowPart(tmp);
|
||||||
SingleRead tmpRead(tmpMask, 0);
|
SingleRead tmpRead(tmpMask, 0);
|
||||||
tmpRead.value = value;
|
tmpRead.value = value;
|
||||||
tmpRead.successor_ = value;
|
tmpRead.successor_ = value;
|
||||||
|
@ -580,8 +580,8 @@ class MoveEvent: public Event {
|
|||||||
| static_cast<uint64_t>(srcValue->source->registerMask(c))),
|
| static_cast<uint64_t>(srcValue->source->registerMask(c))),
|
||||||
dstSize, dst);
|
dstSize, dst);
|
||||||
|
|
||||||
SiteMask dstLowMask(dst.typeMask, dst.registerMask, AnyFrameIndex);
|
SiteMask dstLowMask = SiteMask::lowPart(dst);
|
||||||
SiteMask dstHighMask(dst.typeMask, dst.registerMask >> 32, AnyFrameIndex);
|
SiteMask dstHighMask = SiteMask::highPart(dst);
|
||||||
|
|
||||||
if (srcSelectSize >= vm::TargetBytesPerWord
|
if (srcSelectSize >= vm::TargetBytesPerWord
|
||||||
and dstSize >= vm::TargetBytesPerWord
|
and dstSize >= vm::TargetBytesPerWord
|
||||||
@ -710,8 +710,8 @@ appendMove(Context* c, lir::BinaryOperation type, unsigned srcSize,
|
|||||||
append(c, new(c->zone)
|
append(c, new(c->zone)
|
||||||
MoveEvent
|
MoveEvent
|
||||||
(c, type, srcSize, srcSelectSize, srcValue, dstSize, dstValue,
|
(c, type, srcSize, srcSelectSize, srcValue, dstSize, dstValue,
|
||||||
SiteMask(src.typeMask, src.registerMask, AnyFrameIndex),
|
SiteMask::lowPart(src),
|
||||||
SiteMask(src.typeMask, src.registerMask >> 32, AnyFrameIndex)));
|
SiteMask::highPart(src)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -846,8 +846,8 @@ class CombineEvent: public Event {
|
|||||||
resultSize,
|
resultSize,
|
||||||
cMask);
|
cMask);
|
||||||
|
|
||||||
SiteMask resultLowMask(cMask.typeMask, cMask.registerMask, AnyFrameIndex);
|
SiteMask resultLowMask = SiteMask::lowPart(cMask);
|
||||||
SiteMask resultHighMask(cMask.typeMask, cMask.registerMask >> 32, AnyFrameIndex);
|
SiteMask resultHighMask = SiteMask::highPart(cMask);
|
||||||
|
|
||||||
Site* low = getTarget(c, secondValue, resultValue, resultLowMask);
|
Site* low = getTarget(c, secondValue, resultValue, resultLowMask);
|
||||||
unsigned lowSize = low->registerSize(c);
|
unsigned lowSize = low->registerSize(c);
|
||||||
@ -943,10 +943,10 @@ appendCombine(Context* c, lir::TernaryOperation type,
|
|||||||
firstSize, firstValue,
|
firstSize, firstValue,
|
||||||
secondSize, secondValue,
|
secondSize, secondValue,
|
||||||
resultSize, resultValue,
|
resultSize, resultValue,
|
||||||
SiteMask(firstMask.typeMask, firstMask.registerMask, AnyFrameIndex),
|
SiteMask::lowPart(firstMask),
|
||||||
SiteMask(firstMask.typeMask, firstMask.registerMask >> 32, AnyFrameIndex),
|
SiteMask::highPart(firstMask),
|
||||||
SiteMask(secondMask.typeMask, secondMask.registerMask, AnyFrameIndex),
|
SiteMask::lowPart(secondMask),
|
||||||
SiteMask(secondMask.typeMask, secondMask.registerMask >> 32, AnyFrameIndex)));
|
SiteMask::highPart(secondMask)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -988,8 +988,8 @@ class TranslateEvent: public Event {
|
|||||||
resultSize,
|
resultSize,
|
||||||
bMask);
|
bMask);
|
||||||
|
|
||||||
SiteMask resultLowMask(bMask.typeMask, bMask.registerMask, AnyFrameIndex);
|
SiteMask resultLowMask = SiteMask::lowPart(bMask);
|
||||||
SiteMask resultHighMask(bMask.typeMask, bMask.registerMask >> 32, AnyFrameIndex);
|
SiteMask resultHighMask = SiteMask::highPart(bMask);
|
||||||
|
|
||||||
Site* low = getTarget(c, value, resultValue, resultLowMask);
|
Site* low = getTarget(c, value, resultValue, resultLowMask);
|
||||||
unsigned lowSize = low->registerSize(c);
|
unsigned lowSize = low->registerSize(c);
|
||||||
@ -1056,8 +1056,8 @@ appendTranslate(Context* c, lir::BinaryOperation type, unsigned firstSize,
|
|||||||
append(c, new(c->zone)
|
append(c, new(c->zone)
|
||||||
TranslateEvent
|
TranslateEvent
|
||||||
(c, type, firstSize, firstValue, resultSize, resultValue,
|
(c, type, firstSize, firstValue, resultSize, resultValue,
|
||||||
SiteMask(first.typeMask, first.registerMask, AnyFrameIndex),
|
SiteMask::lowPart(first),
|
||||||
SiteMask(first.typeMask, first.registerMask >> 32, AnyFrameIndex)));
|
SiteMask::highPart(first)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1317,7 +1317,7 @@ class BranchEvent: public Event {
|
|||||||
size, OperandMask(0, 0),
|
size, OperandMask(0, 0),
|
||||||
vm::TargetBytesPerWord, dstMask);
|
vm::TargetBytesPerWord, dstMask);
|
||||||
|
|
||||||
this->addRead(c, addressValue, SiteMask(dstMask.typeMask, dstMask.registerMask, AnyFrameIndex));
|
this->addRead(c, addressValue, SiteMask::lowPart(dstMask));
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual const char* name() {
|
virtual const char* name() {
|
||||||
@ -1418,10 +1418,10 @@ appendBranch(Context* c, lir::TernaryOperation type, unsigned size, Value* first
|
|||||||
(c, new(c->zone)
|
(c, new(c->zone)
|
||||||
BranchEvent
|
BranchEvent
|
||||||
(c, type, size, firstValue, secondValue, addressValue,
|
(c, type, size, firstValue, secondValue, addressValue,
|
||||||
SiteMask(firstMask.typeMask, firstMask.registerMask, AnyFrameIndex),
|
SiteMask::lowPart(firstMask),
|
||||||
SiteMask(firstMask.typeMask, firstMask.registerMask >> 32, AnyFrameIndex),
|
SiteMask::highPart(firstMask),
|
||||||
SiteMask(secondMask.typeMask, secondMask.registerMask, AnyFrameIndex),
|
SiteMask::lowPart(secondMask),
|
||||||
SiteMask(secondMask.typeMask, secondMask.registerMask >> 32, AnyFrameIndex)));
|
SiteMask::highPart(secondMask)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1474,7 +1474,7 @@ class JumpEvent: public Event {
|
|||||||
|
|
||||||
assert(c, not thunk);
|
assert(c, not thunk);
|
||||||
|
|
||||||
this->addRead(c, address, SiteMask(mask.typeMask, mask.registerMask, AnyFrameIndex));
|
this->addRead(c, address, SiteMask::lowPart(mask));
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual const char* name() {
|
virtual const char* name() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user