Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.

dmd.inlinecost

Compute the cost of inlining a function call by counting expressions.
Authors:

Source inlinecost.d

pure nothrow @safe bool tooCostly(int cost);
Determine if too expensive to inline.
Parameters:
int cost cost of inlining
Returns:
true if too costly
int inlineCostExpression(Expression e);
Determine cost of inlining Expression
Parameters:
Expression e Expression to determine cost of
Returns:
cost of inlining e
int inlineCostFunction(FuncDeclaration fd, bool hasthis, bool hdrscan);
Determine cost of inlining function
Parameters:
FuncDeclaration fd function to determine cost of
bool hasthis if the function call has explicit 'this' expression
bool hdrscan if generating a header file
Returns:
cost of inlining fd
AggregateDeclaration isInlinableNestedAggregate(DeclarationExp e);
Indicates if a nested aggregate prevents or not a function to be inlined. It's used to compute the cost but also to avoid a copy of the aggregate while the inliner processes.
Parameters:
DeclarationExp e the declaration expression that may represent an aggregate.
Returns:
null if e is not an aggregate or if it is an aggregate that doesn't permit inlining, and the aggregate otherwise.