本文整理汇总了C++中MControlInstruction::opName方法的典型用法代码示例。如果您正苦于以下问题:C++ MControlInstruction::opName方法的具体用法?C++ MControlInstruction::opName怎么用?C++ MControlInstruction::opName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MControlInstruction
的用法示例。
在下文中一共展示了MControlInstruction::opName方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: processDeadDefs
// Visit the control instruction at the end of |block|.
bool
ValueNumberer::visitControlInstruction(MBasicBlock* block, const MBasicBlock* dominatorRoot)
{
// Look for a simplified form of the control instruction.
MControlInstruction* control = block->lastIns();
MDefinition* rep = simplified(control);
if (rep == control)
return true;
if (rep == nullptr)
return false;
MControlInstruction* newControl = rep->toControlInstruction();
MOZ_ASSERT(!newControl->block(),
"Control instruction replacement shouldn't already be in a block");
#ifdef DEBUG
JitSpew(JitSpew_GVN, " Folded control instruction %s%u to %s%u",
control->opName(), control->id(), newControl->opName(), graph_.getNumInstructionIds());
#endif
// If the simplification removes any CFG edges, update the CFG and remove
// any blocks that become dead.
size_t oldNumSuccs = control->numSuccessors();
size_t newNumSuccs = newControl->numSuccessors();
if (newNumSuccs != oldNumSuccs) {
MOZ_ASSERT(newNumSuccs < oldNumSuccs, "New control instruction has too many successors");
for (size_t i = 0; i != oldNumSuccs; ++i) {
MBasicBlock* succ = control->getSuccessor(i);
if (HasSuccessor(newControl, succ))
continue;
if (succ->isMarked())
continue;
if (!removePredecessorAndCleanUp(succ, block))
return false;
if (succ->isMarked())
continue;
if (!rerun_) {
if (!remainingBlocks_.append(succ))
return false;
}
}
}
if (!releaseOperands(control))
return false;
block->discardIgnoreOperands(control);
block->end(newControl);
if (block->entryResumePoint() && newNumSuccs != oldNumSuccs)
block->flagOperandsOfPrunedBranches(newControl);
return processDeadDefs();
}