class FunctionCall; class FunctionDeclaration; class FunctionDefinition; class Position; class ProgramElement; class ProgramUsage; class Statement; class SymbolTable; class Variable; struct InlineCandidate; struct InlineCandidateList; namespace Analysis { enumclass ReturnComplexity; }
/** Inlines any eligible functions that are found. Returns true if any changes are made. */ bool analyze(const std::vector<std::unique_ptr<ProgramElement>>& elements,
SymbolTable* symbols,
ProgramUsage* usage);
private:
using VariableRewriteMap = skia_private::THashMap<const Variable*, std::unique_ptr<Expression>>;
/** Adds a scope to inlined bodies returned by `inlineCall`, if one is required. */ void ensureScopedBlocks(Statement* inlinedBody, Statement* parentStmt);
/** Checks whether inlining is viable for a FunctionCall, modulo recursion and function size. */ bool isSafeToInline(const FunctionDefinition* functionDef, const ProgramUsage& usage);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.