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


Walter Bright

Source: inlinecost.d

  • Declaration

    pure nothrow bool tooCostly(int cost);

    Determine if too expensive to inline.


    int cost

    cost of inlining

    Return Value

    true if too costly

  • Declaration

    int inlineCostExpression(Expression e);

    Determine cost of inlining Expression


    Expression e

    Expression to determine cost of

    Return Value

    cost of inlining e

  • Declaration

    int inlineCostFunction(FuncDeclaration fd, bool hasthis, bool hdrscan);

    Determine cost of inlining function


    FuncDeclaration fd

    function to determine cost of

    bool hasthis

    if the function call has explicit 'this' expression

    bool hdrscan

    if generating a header file

    Return Value

    cost of inlining fd

  • Declaration

    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.


    DeclarationExp e

    the declaration expression that may represent an aggregate.

    Return Value

    null if e is not an aggregate or if it is an aggregate that doesn't permit inlining, and the aggregate otherwise.