本文整理汇总了C++中LDefinition::isCompatibleReg方法的典型用法代码示例。如果您正苦于以下问题:C++ LDefinition::isCompatibleReg方法的具体用法?C++ LDefinition::isCompatibleReg怎么用?C++ LDefinition::isCompatibleReg使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LDefinition
的用法示例。
在下文中一共展示了LDefinition::isCompatibleReg方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: evictAliasedRegister
StupidAllocator::RegisterIndex
StupidAllocator::allocateRegister(LInstruction* ins, uint32_t vreg)
{
// Pick a register for vreg, evicting an existing register if necessary.
// Spill code will be placed before ins, and no existing allocated input
// for ins will be touched.
MOZ_ASSERT(ins);
LDefinition* def = virtualRegisters[vreg];
MOZ_ASSERT(def);
RegisterIndex best = UINT32_MAX;
for (size_t i = 0; i < registerCount; i++) {
AnyRegister reg = registers[i].reg;
if (!def->isCompatibleReg(reg))
continue;
// Skip the register if it is in use for an allocated input or output.
if (registerIsReserved(ins, reg))
continue;
if (registers[i].vreg == MISSING_ALLOCATION ||
best == UINT32_MAX ||
registers[best].age > registers[i].age)
{
best = i;
}
}
evictAliasedRegister(ins, best);
return best;
}