本文整理汇总了C++中SSATmp::hasConstVal方法的典型用法代码示例。如果您正苦于以下问题:C++ SSATmp::hasConstVal方法的具体用法?C++ SSATmp::hasConstVal怎么用?C++ SSATmp::hasConstVal使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SSATmp
的用法示例。
在下文中一共展示了SSATmp::hasConstVal方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: checkRefs
void checkRefs(IRGS& env,
int64_t entryArDelta,
const std::vector<bool>& mask,
const std::vector<bool>& vals,
Offset dest) {
auto const actRecOff = entryArDelta + offsetFromIRSP(env, BCSPOffset{0});
auto const funcPtr = gen(env, LdARFuncPtr,
IRSPOffsetData { actRecOff }, sp(env));
SSATmp* nParams = nullptr;
for (unsigned i = 0; i < mask.size(); i += 64) {
assertx(i < vals.size());
uint64_t mask64 = packBitVec(mask, i);
if (mask64 == 0) {
continue;
}
if (i == 0) {
nParams = cns(env, 64);
} else if (!nParams || nParams->hasConstVal()) {
nParams = gen(env, LdFuncNumParams, funcPtr);
}
auto const vals64 = packBitVec(vals, i);
auto failBlock = env.irb->guardFailBlock();
if (failBlock == nullptr) failBlock = makeExit(env, dest);
gen(env, CheckRefs, failBlock, funcPtr, nParams,
cns(env, i), cns(env, mask64), cns(env, vals64));
}
}
示例2: findClassName
const StringData* findClassName(SSATmp* cls) {
assertx(cls->isA(TCls));
if (cls->hasConstVal()) {
return cls->clsVal()->preClass()->name();
}
// Try to get the class name from a LdCls
IRInstruction* clsInst = cls->inst();
if (clsInst->op() == LdCls || clsInst->op() == LdClsCached) {
SSATmp* clsName = clsInst->src(0);
assertx(clsName->isA(TStr));
if (clsName->hasConstVal()) {
return clsName->strVal();
}
}
return nullptr;
}