本文整理汇总了C++中tr::Compilation::getStaticHCRPICSites方法的典型用法代码示例。如果您正苦于以下问题:C++ Compilation::getStaticHCRPICSites方法的具体用法?C++ Compilation::getStaticHCRPICSites怎么用?C++ Compilation::getStaticHCRPICSites使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tr::Compilation
的用法示例。
在下文中一共展示了Compilation::getStaticHCRPICSites方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: switch
void
TR::PPCImmInstruction::addMetaDataForCodeAddress(uint8_t *cursor)
{
if (needsAOTRelocation())
{
switch(getReloKind())
{
case TR_AbsoluteHelperAddress:
cg()->addExternalRelocation(new (cg()->trHeapMemory()) TR::ExternalRelocation(cursor, (uint8_t *)getSymbolReference(), TR_AbsoluteHelperAddress, cg()), __FILE__, __LINE__, getNode());
break;
case TR_RamMethod:
if (comp()->getOption(TR_UseSymbolValidationManager))
{
cg()->addExternalRelocation(
new (comp()->trHeapMemory()) TR::ExternalRelocation(
cursor,
(uint8_t *)comp()->getJittedMethodSymbol()->getResolvedMethod()->resolvedMethodAddress(),
(uint8_t *)TR::SymbolType::typeMethod,
TR_SymbolFromManager,
cg()),
__FILE__,
__LINE__,
getNode());
}
else
{
cg()->addExternalRelocation(new (cg()->trHeapMemory()) TR::ExternalRelocation(cursor, NULL, TR_RamMethod, cg()), __FILE__, __LINE__, getNode());
}
break;
case TR_BodyInfoAddress:
cg()->addExternalRelocation(new (cg()->trHeapMemory()) TR::ExternalRelocation(cursor, 0, TR_BodyInfoAddress, cg()), __FILE__, __LINE__, getNode());
break;
default:
TR_ASSERT(false, "Unsupported AOT relocation type specified.");
}
}
TR::Compilation *comp = cg()->comp();
if (std::find(comp->getStaticPICSites()->begin(), comp->getStaticPICSites()->end(), this) != comp->getStaticPICSites()->end())
{
// none-HCR: low-tag to invalidate -- BE or LE is relevant
//
void *valueToHash = *(void**)(cursor - (TR::Compiler->target.is64Bit()?4:0));
void *addressToPatch = TR::Compiler->target.is64Bit()?
(TR::Compiler->target.cpu.isBigEndian()?cursor:(cursor-4)) : cursor;
cg()->jitAddPicToPatchOnClassUnload(valueToHash, addressToPatch);
}
if (std::find(comp->getStaticHCRPICSites()->begin(), comp->getStaticHCRPICSites()->end(), this) != comp->getStaticHCRPICSites()->end())
{
// HCR: whole pointer replacement.
//
void **locationToPatch = (void**)(cursor - (TR::Compiler->target.is64Bit()?4:0));
cg()->jitAddPicToPatchOnClassRedefinition(*locationToPatch, locationToPatch);
cg()->addExternalRelocation(new (cg()->trHeapMemory()) TR::ExternalRelocation((uint8_t *)locationToPatch, (uint8_t *)*locationToPatch, TR_HCR, cg()), __FILE__,__LINE__, getNode());
}
}