本文整理汇总了C++中tr::Compilation::getMethodSymbol方法的典型用法代码示例。如果您正苦于以下问题:C++ Compilation::getMethodSymbol方法的具体用法?C++ Compilation::getMethodSymbol怎么用?C++ Compilation::getMethodSymbol使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tr::Compilation
的用法示例。
在下文中一共展示了Compilation::getMethodSymbol方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
bool
OMR::SymbolReference::sharesSymbol(bool includingGCSafePoint)
{
TR::Compilation * c = TR::comp();
if (self()->reallySharesSymbol(c))
return true;
// At this point, we'd like to call getUseDefAliases(c, false) and return
// true iff that is non-NULL. However, doing so caused floatSanity
// (specifically CompactNullChecks) to consume immense amounts (1GB+) of
// memory and run for a long, long time (half an hour or more in some
// cases), so we need to copy some of that logic in here as a short-circuit.
//
// !!! NOTE !!!
// THERE IS A COPY OF THIS LOGIC IN getUseDefAliases
//
int32_t kind = _symbol->getKind();
TR::SymbolReferenceTable * symRefTab = c->getSymRefTab();
switch (kind)
{
case TR::Symbol::IsShadow:
case TR::Symbol::IsStatic:
{
// For unresolved constant dynamic, we need to invoke a Java bootstrap method,
// which can have arbitrary side effects, so the aliasing should be conservative here.
// isConstObjectRef now returns true for condy, so we add an explicit condition,
// more like a short-circuit, to say if we are unresolved and not isConstObjectRef
// (this is the same as before), or if we are unresolved and condy
// (this is the extra condition added), we would return conservative aliases.
if ((self()->isUnresolved() && (_symbol->isConstantDynamic() || !_symbol->isConstObjectRef())) ||
_symbol->isVolatile() || self()->isLiteralPoolAddress() ||
self()->isFromLiteralPool() || _symbol->isUnsafeShadowSymbol() ||
(_symbol->isArrayShadowSymbol() && c->getMethodSymbol()->hasVeryRefinedAliasSets()))
{
// getUseDefAliases might not return NULL
}
else if (!symRefTab->aliasBuilder.mutableGenericIntShadowHasBeenCreated())
{
// getUseDefAliases must return NULL
return false;
}
else if (kind == TR::Symbol::IsStatic && !symRefTab->aliasBuilder.litPoolGenericIntShadowHasBeenCreated())
{
// getUseDefAliases must return NULL
return false;
}
break;
}
}
return !self()->getUseDefAliases(false, includingGCSafePoint).isZero(c);
}
示例2: mp
void
OMR::CodeGenPhase::performBinaryEncodingPhase(TR::CodeGenerator * cg, TR::CodeGenPhase * phase)
{
TR::Compilation * comp = cg->comp();
phase->reportPhase(BinaryEncodingPhase);
if (cg->getDebug())
cg->getDebug()->roundAddressEnumerationCounters();
TR::LexicalMemProfiler mp(phase->getName(), comp->phaseMemProfiler());
LexicalTimer pt(phase->getName(), comp->phaseTimer());
cg->doBinaryEncoding();
if (debug("verifyFinalNodeReferenceCounts"))
{
if (cg->getDebug())
cg->getDebug()->verifyFinalNodeReferenceCounts(comp->getMethodSymbol());
}
}