本文整理汇总了C++中SILDeclRef::getNextOverriddenVTableEntry方法的典型用法代码示例。如果您正苦于以下问题:C++ SILDeclRef::getNextOverriddenVTableEntry方法的具体用法?C++ SILDeclRef::getNextOverriddenVTableEntry怎么用?C++ SILDeclRef::getNextOverriddenVTableEntry使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SILDeclRef
的用法示例。
在下文中一共展示了SILDeclRef::getNextOverriddenVTableEntry方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getOverriddenVTableEntry
SILDeclRef SILDeclRef::getOverriddenVTableEntry() const {
SILDeclRef cur = *this, next = *this;
do {
cur = next;
if (cur.requiresNewVTableEntry())
return cur;
next = cur.getNextOverriddenVTableEntry();
} while (next);
return cur;
}
示例2: getBaseOverriddenVTableEntry
SILDeclRef SILDeclRef::getBaseOverriddenVTableEntry() const {
// 'method' is the most final method in the hierarchy which we
// haven't yet found a compatible override for. 'cur' is the method
// we're currently looking at. Compatibility is transitive,
// so we can forget our original method and just keep going up.
SILDeclRef method = *this;
SILDeclRef cur = method;
while ((cur = cur.getNextOverriddenVTableEntry())) {
method = cur;
}
return method;
}
示例3: computeClassMethodCallees
void CalleeCache::computeClassMethodCallees(ClassDecl *CD, SILDeclRef Method) {
auto *CalledFn = M.lookUpFunctionInVTable(CD, Method);
if (!CalledFn)
return;
bool canCallUnknown = !calleesAreStaticallyKnowable(M, Method);
// Update the callees for this method and all the methods it
// overrides by adding this function to their lists.
do {
auto &TheCallees = getOrCreateCalleesForMethod(Method);
assert(TheCallees.getPointer() && "Unexpected null callees!");
TheCallees.getPointer()->push_back(CalledFn);
if (canCallUnknown)
TheCallees.setInt(true);
Method = Method.getNextOverriddenVTableEntry();
} while (Method);
}