Class MatrixTurboEvaluator
java.lang.Object
com.github.gbenroscience.parser.turbo.tools.MatrixTurboEvaluator
- All Implemented Interfaces:
TurboExpressionEvaluator
Allocation-free Turbo compiler optimized for ParserNG's flat-array Matrix
implementation. Uses compile-time bound ResultCaches and Zero-Argument
MethodHandle trees to maximize JIT inlining and execution speed.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classstatic final class -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic MathExpression.EvalResult[]compile()Compile a postfix token array into a fast-executing expression.static MathExpression.EvalResultdispatchMatrixFunction(MathExpression.EvalResult[] args, String funcName, MatrixTurboEvaluator.ResultCache cache) static MathExpression.EvalResultdispatchUnaryOp(MathExpression.EvalResult operand, char op, MatrixTurboEvaluator.ResultCache cache) double[]static doublegetVar(double[] vars, int index) static MathExpression.EvalResultinvokeRegistryMethod(int methodId, MathExpression.EvalResult[] argsValues) static MathExpression.EvalResultinvokeRegistryMethod(int methodId, MatrixTurboEvaluator.ResultCache cache, MathExpression.EvalResult[] argsValues) booleanstatic MathExpression.EvalResult[]static MathExpression.EvalResult[]static MathExpression.EvalResult[]packArgs2(MatrixTurboEvaluator.ResultCache cache, MathExpression.EvalResult a, MathExpression.EvalResult b) static MathExpression.EvalResult[]packArgs3(MatrixTurboEvaluator.ResultCache cache, MathExpression.EvalResult a, MathExpression.EvalResult b, MathExpression.EvalResult c) static MathExpression.EvalResult[]packArgs4(MatrixTurboEvaluator.ResultCache cache, MathExpression.EvalResult a, MathExpression.EvalResult b, MathExpression.EvalResult c, MathExpression.EvalResult d) static MathExpression.EvalResult[]packArgs5(MatrixTurboEvaluator.ResultCache cache, MathExpression.EvalResult a, MathExpression.EvalResult b, MathExpression.EvalResult c, MathExpression.EvalResult d, MathExpression.EvalResult e) static MathExpression.EvalResult[]packArgsN(MatrixTurboEvaluator.ResultCache cache, MathExpression.EvalResult... args) voidsetWillFoldConstants(boolean willFoldConstants) static MathExpression.EvalResultwrapDouble(double val, MatrixTurboEvaluator.ResultCache cache)
-
Field Details
-
turboArgs
protected final double[] turboArgs -
slots
protected final int[] slots
-
-
Constructor Details
-
MatrixTurboEvaluator
-
-
Method Details
-
setWillFoldConstants
public void setWillFoldConstants(boolean willFoldConstants) -
isWillFoldConstants
public boolean isWillFoldConstants() -
getTurboArgs
public double[] getTurboArgs() -
invokeRegistryMethod
public static MathExpression.EvalResult invokeRegistryMethod(int methodId, MathExpression.EvalResult[] argsValues) -
compile
Description copied from interface:TurboExpressionEvaluatorCompile a postfix token array into a fast-executing expression.- Specified by:
compilein interfaceTurboExpressionEvaluator- Returns:
- A FastCompositeExpression ready for evaluation
- Throws:
Throwable- if compilation fails
-
wrapDouble
public static MathExpression.EvalResult wrapDouble(double val, MatrixTurboEvaluator.ResultCache cache) -
getVar
public static double getVar(double[] vars, int index) -
collectArgsArray
-
invokeRegistryMethod
public static MathExpression.EvalResult invokeRegistryMethod(int methodId, MatrixTurboEvaluator.ResultCache cache, MathExpression.EvalResult[] argsValues) -
packArgs0
-
packArgs1
public static MathExpression.EvalResult[] packArgs1(MatrixTurboEvaluator.ResultCache cache, MathExpression.EvalResult a) -
packArgs2
public static MathExpression.EvalResult[] packArgs2(MatrixTurboEvaluator.ResultCache cache, MathExpression.EvalResult a, MathExpression.EvalResult b) -
packArgs3
public static MathExpression.EvalResult[] packArgs3(MatrixTurboEvaluator.ResultCache cache, MathExpression.EvalResult a, MathExpression.EvalResult b, MathExpression.EvalResult c) -
packArgs4
public static MathExpression.EvalResult[] packArgs4(MatrixTurboEvaluator.ResultCache cache, MathExpression.EvalResult a, MathExpression.EvalResult b, MathExpression.EvalResult c, MathExpression.EvalResult d) -
packArgs5
public static MathExpression.EvalResult[] packArgs5(MatrixTurboEvaluator.ResultCache cache, MathExpression.EvalResult a, MathExpression.EvalResult b, MathExpression.EvalResult c, MathExpression.EvalResult d, MathExpression.EvalResult e) -
packArgsN
public static MathExpression.EvalResult[] packArgsN(MatrixTurboEvaluator.ResultCache cache, MathExpression.EvalResult... args) -
dispatchMatrixFunction
public static MathExpression.EvalResult dispatchMatrixFunction(MathExpression.EvalResult[] args, String funcName, MatrixTurboEvaluator.ResultCache cache) -
dispatchUnaryOp
public static MathExpression.EvalResult dispatchUnaryOp(MathExpression.EvalResult operand, char op, MatrixTurboEvaluator.ResultCache cache)
-