Le compilateur LDC D pour LLVM peut mettre en ligne des appels de fonction indirects dans certaines circonstances s'il peut prouver que la cible est connue statiquement. Voici un exemple de jouet (en D) où cela pourrait se produire:Quels compilateurs peuvent intégrer des appels de fonction indirects?
void main() {
uint num;
void incNum() {
num++;
}
auto myDelegate = &incNum;
myDelegate();
}
Dans ce cas, même si l'appel myDelegate()
est théoriquement un appel indirect, la cible est évidente à un lecteur humain et flux de LLVM/LDC analyse, de sorte qu'il devient inline.
À quel point une fonctionnalité est-elle la capacité d'intégrer des appels de fonction indirects à des cibles statiquement identifiables dans des compilateurs modernes? Est-ce que LLVM est le seul compilateur à l'avance capable de faire cela? Est-ce plus commun avec les compilateurs JIT?