本文整理汇总了C++中tr::ResolvedMethodSymbol::setHasVeryRefinedAliasSets方法的典型用法代码示例。如果您正苦于以下问题:C++ ResolvedMethodSymbol::setHasVeryRefinedAliasSets方法的具体用法?C++ ResolvedMethodSymbol::setHasVeryRefinedAliasSets怎么用?C++ ResolvedMethodSymbol::setHasVeryRefinedAliasSets使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tr::ResolvedMethodSymbol
的用法示例。
在下文中一共展示了ResolvedMethodSymbol::setHasVeryRefinedAliasSets方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
//.........这里部分代码省略.........
TR::Compiler->target.cpu.supportsDecimalFloatingPoint()) ||
comp->getOption(TR_DisableDFP))
return NULL;
#endif //J9_PROJECT_SPECIFIC
default:
break;
}
}
#ifdef J9_PROJECT_SPECIFIC
TR_ResolvedMethod * method = resolvedMethodSymbol->getResolvedMethod();
TR_PersistentMethodInfo * methodInfo = TR_PersistentMethodInfo::get(method);
if (methodInfo && (methodInfo->hasRefinedAliasSets() ||
comp->getMethodHotness() >= veryHot ||
resolvedMethodSymbol->hasVeryRefinedAliasSets()) &&
(method->isStatic() || method->isFinal() || isDirectCall))
{
TR_BitVector * aliases = new (aliasRegion) TR_BitVector(bvInitialSize, aliasRegion, growability);
if ((comp->generateArraylets() || comp->isDLT()) && includeGCSafePoint)
*aliases |= symRefTab->aliasBuilder.gcSafePointSymRefNumbers();
if (methodInfo->doesntKillAnything() && !comp->getOption(TR_DisableRefinedAliases))
return aliases;
if ((resolvedMethodSymbol->hasVeryRefinedAliasSets() || comp->getMethodHotness() >= hot) &&
!debug("disableVeryRefinedCallAliasSets"))
{
TR_BitVector * exactAliases = 0;
if (resolvedMethodSymbol->hasVeryRefinedAliasSets())
exactAliases = symRefTab->aliasBuilder.getVeryRefinedCallAliasSets(resolvedMethodSymbol);
else
{
resolvedMethodSymbol->setHasVeryRefinedAliasSets(true);
List<void> methodsPeeked(comp->trMemory());
exactAliases = addVeryRefinedCallAliasSets(resolvedMethodSymbol, aliases, &methodsPeeked);
symRefTab->aliasBuilder.setVeryRefinedCallAliasSets(resolvedMethodSymbol, exactAliases);
}
if (exactAliases)
{
return exactAliases;
}
}
// From here on, we're just checking refined alias info.
// If refined aliases are disabled, return the conservative answer
// we would have returned had we never attempted to use refined
// aliases at all.
//
if (comp->getOption(TR_DisableRefinedAliases))
return symRefTab->aliasBuilder.methodAliases(self());
if (!methodInfo->doesntKillAddressArrayShadows())
{
symRefTab->aliasBuilder.addAddressArrayShadows(aliases);
if (comp->generateArraylets())
aliases->set(symRefTab->getArrayletShadowIndex(TR::Address));
}
if (!methodInfo->doesntKillIntArrayShadows())
{
symRefTab->aliasBuilder.addIntArrayShadows(aliases);