本文整理汇总了C++中tr::ResolvedMethodSymbol::getFirstTreeTop方法的典型用法代码示例。如果您正苦于以下问题:C++ ResolvedMethodSymbol::getFirstTreeTop方法的具体用法?C++ ResolvedMethodSymbol::getFirstTreeTop怎么用?C++ ResolvedMethodSymbol::getFirstTreeTop使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tr::ResolvedMethodSymbol
的用法示例。
在下文中一共展示了ResolvedMethodSymbol::getFirstTreeTop方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getRequiredMethodValidationRules
void TR::ILValidator::validate(const OMR::ILValidationStrategy *strategy)
{
/**
* Selection Phase:
* From all the available `ILValidationRule`s, only select the ones
* corresponding to the given `OMR::ILValidationStrategy`.
*/
std::vector<TR::MethodValidationRule *> reqMethodValidationRules =
getRequiredMethodValidationRules(strategy);
std::vector<TR::BlockValidationRule *> reqBlockValidationRules =
getRequiredBlockValidationRules(strategy);
std::vector<TR::NodeValidationRule *> reqNodeValidationRules =
getRequiredNodeValidationRules(strategy);
/**
* Validation Phase:
* Validate against the required set of `ILValidationRule`s.
*/
/* Rules that are veriified over the entire method. */
TR::ResolvedMethodSymbol* methodSymbol = comp()->getMethodSymbol();
for (auto it = reqMethodValidationRules.begin(); it != reqMethodValidationRules.end(); ++it)
{
(*it)->validate(methodSymbol);
}
/* Checks performed across an extended blocks. */
for (auto it = reqBlockValidationRules.begin(); it != reqBlockValidationRules.end(); ++it)
{
TR::TreeTop *tt, *exitTreeTop;
for (tt = methodSymbol->getFirstTreeTop(); tt; tt = exitTreeTop->getNextTreeTop())
{
TR::TreeTop *firstTreeTop = tt;
exitTreeTop = tt->getExtendedBlockExitTreeTop();
(*it)->validate(firstTreeTop, exitTreeTop);
}
}
/* NodeValidationRules only check per node for a specific property. */
for (auto it = reqNodeValidationRules.begin(); it != reqNodeValidationRules.end(); ++it)
{
for (TR::PreorderNodeIterator nodeIter(methodSymbol->getFirstTreeTop(), comp(), "NODE_VALIDATOR");
nodeIter.currentTree(); ++nodeIter)
{
(*it)->validate(nodeIter.currentNode());
}
}
}