mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-11-01 03:57:30 +09:00
Don't memset-zero the BacktrackingAllocator::vregs array of non-trivial VirtualRegister instances
This commit is contained in:
parent
4d089648be
commit
4b23aec47e
2 changed files with 11 additions and 15 deletions
|
|
@ -378,7 +378,6 @@ BacktrackingAllocator::init()
|
|||
size_t numVregs = graph.numVirtualRegisters();
|
||||
if (!vregs.init(mir->alloc(), numVregs))
|
||||
return false;
|
||||
memset(&vregs[0], 0, sizeof(VirtualRegister) * numVregs);
|
||||
for (uint32_t i = 0; i < numVregs; i++)
|
||||
new(&vregs[i]) VirtualRegister();
|
||||
|
||||
|
|
@ -1101,9 +1100,9 @@ BacktrackingAllocator::mergeAndQueueRegisters()
|
|||
if (iter->isParameter()) {
|
||||
for (size_t i = 0; i < iter->numDefs(); i++) {
|
||||
DebugOnly<bool> found = false;
|
||||
VirtualRegister ¶mVreg = vreg(iter->getDef(i));
|
||||
VirtualRegister& paramVreg = vreg(iter->getDef(i));
|
||||
for (; original < paramVreg.vreg(); original++) {
|
||||
VirtualRegister &originalVreg = vregs[original];
|
||||
VirtualRegister& originalVreg = vregs[original];
|
||||
if (*originalVreg.def()->output() == *iter->getDef(i)->output()) {
|
||||
MOZ_ASSERT(originalVreg.ins()->isParameter());
|
||||
if (!tryMergeBundles(originalVreg.firstBundle(), paramVreg.firstBundle()))
|
||||
|
|
@ -1136,7 +1135,7 @@ BacktrackingAllocator::mergeAndQueueRegisters()
|
|||
LBlock* block = graph.getBlock(i);
|
||||
for (size_t j = 0; j < block->numPhis(); j++) {
|
||||
LPhi* phi = block->getPhi(j);
|
||||
VirtualRegister &outputVreg = vreg(phi->getDef(0));
|
||||
VirtualRegister& outputVreg = vreg(phi->getDef(0));
|
||||
for (size_t k = 0, kend = phi->numOperands(); k < kend; k++) {
|
||||
VirtualRegister& inputVreg = vreg(phi->getOperand(k)->toUse());
|
||||
if (!tryMergeBundles(inputVreg.firstBundle(), outputVreg.firstBundle()))
|
||||
|
|
@ -1334,7 +1333,7 @@ BacktrackingAllocator::computeRequirement(LiveBundle* bundle,
|
|||
|
||||
for (LiveRange::BundleLinkIterator iter = bundle->rangesBegin(); iter; iter++) {
|
||||
LiveRange* range = LiveRange::get(*iter);
|
||||
VirtualRegister ® = vregs[range->vreg()];
|
||||
VirtualRegister& reg = vregs[range->vreg()];
|
||||
|
||||
if (range->hasDefinition()) {
|
||||
// Deal with any definition constraints/hints.
|
||||
|
|
@ -1396,7 +1395,7 @@ BacktrackingAllocator::tryAllocateRegister(PhysicalRegister& r, LiveBundle* bund
|
|||
|
||||
for (LiveRange::BundleLinkIterator iter = bundle->rangesBegin(); iter; iter++) {
|
||||
LiveRange* range = LiveRange::get(*iter);
|
||||
VirtualRegister ® = vregs[range->vreg()];
|
||||
VirtualRegister& reg = vregs[range->vreg()];
|
||||
|
||||
if (!reg.isCompatible(r.reg))
|
||||
return true;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue