本文整理汇总了C++中Func::isAsync方法的典型用法代码示例。如果您正苦于以下问题:C++ Func::isAsync方法的具体用法?C++ Func::isAsync怎么用?C++ Func::isAsync使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Func
的用法示例。
在下文中一共展示了Func::isAsync方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: phpSetBreakPoints
// Called by the proxy whenever its breakpoint list is updated.
// Since this intended to be called when user input is received, it is not
// performance critical. Also, in typical scenarios, the list is short.
void phpSetBreakPoints(Eval::DebuggerProxy* proxy) {
Eval::BreakPointInfoPtrVec bps;
proxy->getBreakPoints(bps);
for (unsigned int i = 0; i < bps.size(); i++) {
Eval::BreakPointInfoPtr bp = bps[i];
bp->m_bindState = Eval::BreakPointInfo::Unknown;
auto className = bp->getClass();
if (!className.empty()) {
auto clsName = makeStaticString(className);
auto cls = Unit::lookupClass(clsName);
if (cls == nullptr) continue;
bp->m_bindState = Eval::BreakPointInfo::KnownToBeInvalid;
size_t numFuncs = cls->numMethods();
if (numFuncs == 0) continue;
auto methodName = bp->getFunction();
Func* const* funcs = cls->methods();
for (size_t i = 0; i < numFuncs; ++i) {
auto f = funcs[i];
if (!matchFunctionName(methodName, f)) continue;
bp->m_bindState = Eval::BreakPointInfo::KnownToBeValid;
addBreakPointFuncEntry(f);
break;
}
//TODO: what about superclass methods accessed via the derived class?
//Task 2527229.
continue;
}
auto funcName = bp->getFuncName();
if (!funcName.empty()) {
auto fName = makeStaticString(funcName);
Func* f = Unit::lookupFunc(fName);
if (f == nullptr) continue;
if (f->hasGeneratorAsBody() && !f->isAsync()) {
// This function is a generator, and it's the original
// function which has been turned into a stub which creates a
// continuation. We want to set the breakpoint on the
// continuation function instead.
fName = makeStaticString(funcName + "$continuation");
f = Unit::lookupFunc(fName);
if (f == nullptr) continue;
}
bp->m_bindState = Eval::BreakPointInfo::KnownToBeValid;
addBreakPointFuncEntry(f);
continue;
}
auto fileName = bp->m_file;
if (!fileName.empty()) {
for (EvaledFilesMap::const_iterator it =
g_vmContext->m_evaledFiles.begin();
it != g_vmContext->m_evaledFiles.end(); ++it) {
auto efile = it->second;
if (!Eval::BreakPointInfo::MatchFile(fileName, efile->getFileName())) {
continue;
}
addBreakPointInUnit(bp, efile->unit());
break;
}
continue;
}
auto exceptionClassName = bp->getExceptionClass();
if (exceptionClassName == "@") {
bp->m_bindState = Eval::BreakPointInfo::KnownToBeValid;
continue;
} else if (!exceptionClassName.empty()) {
auto expClsName = makeStaticString(exceptionClassName);
auto cls = Unit::lookupClass(expClsName);
if (cls != nullptr) {
auto baseClsName = makeStaticString("Exception");
auto baseCls = Unit::lookupClass(baseClsName);
if (baseCls != nullptr) {
if (cls->classof(baseCls)) {
bp->m_bindState = Eval::BreakPointInfo::KnownToBeValid;
} else {
bp->m_bindState = Eval::BreakPointInfo::KnownToBeInvalid;
}
}
}
continue;
} else {
continue;
}
// If we get here, the break point is of a type that does
// not need to be explicitly enabled in the VM. For example
// a break point that get's triggered when the server starts
// to process a page request.
bp->m_bindState = Eval::BreakPointInfo::KnownToBeValid;
}
}