Next: Error Reporting, Previous: Late Function Arguments Evaluation, Up: Expression Evaluator
Expression optimization may (well, it should) reduce the evaluation time and the storage and evaluation memory requirements. However, since the optimization logic is not fast as compared to the evaluation logic, optimizing expression is usually pointless for one time evaluations.
The expression evaluator can performed a few basic expression optimizations, such as complex constant subexpression elimination, identity (or neutral) element elimination for operations defining one (such as addition and multiplication), etc.
Most optimizations are generic, that is the optimizer does not have built-in knowledge of operator properties such as the addition operator (`+') properties and is instead deriving the possible optimization from the operator definition.
Hmm, forget about that, the operator optimization extensions are not described yet.
Expression can be optimized through the x1f4_line_expression
function.
See x1f4_line_expression.
No side effects operators (X1f4_LEFT_XSET
marked) and no application
indicated as having side effects (X1f4_KEEP_CALL
marked) functions and
operators are optimized away.
See Infix Binary Operator Flags.
See Operator And Function Flags.
The optimizer does not expect void function to not have side effects,
hence attempts to optimize expression referring void functions not being
indicated as having side effects (X1f4_KEEP_CALL
marked) should only be
considered as alternatives to:
raise(SIGSEGV);