Class CallStaticMethod
java.lang.Object
org.jfuncmachine.compiler.model.SourceElement
org.jfuncmachine.compiler.model.expr.Expression
org.jfuncmachine.compiler.model.expr.CallStaticMethod
An expression to invoke a static method.
This method differs from the methods in the javainterop package in that it can apply certain optimizations.
For example, if this method call is a recursive call to the method currently being defined, and the
localTailCallsToLoops option is true, this expression updates the local variables representing the
method parameters and jumps back to the beginning of the method.
Likewise, if full tail recursion is enabled, this method should be used for any methods generated by
JFuncMachine so it can implement the looping necessary to handle full tail calls.
-
Field Summary
FieldsModifier and TypeFieldDescriptionfinal Expression[]The method argument valuesfinal StringThe name of the class containing the methodfinal StringThe name of the methodfinal Type[]The method parameter typesfinal TypeThe return type of the methodFields inherited from class org.jfuncmachine.compiler.model.SourceElement
filename, lineNumber -
Constructor Summary
ConstructorsConstructorDescriptionCallStaticMethod(String className, String name, Type[] parameterTypes, Type returnType, Expression[] arguments) Create a static method invocationCallStaticMethod(String className, String name, Type[] parameterTypes, Type returnType, Expression[] arguments, String filename, int lineNumber) Create a static method invocationCallStaticMethod(String name, Type[] parameterTypes, Type returnType, Expression[] arguments) Create a static method invocationCallStaticMethod(String name, Type[] parameterTypes, Type returnType, Expression[] arguments, String filename, int lineNumber) Create a static method invocationCallStaticMethod(Type[] parameterTypes, Type returnType, Expression[] arguments) Create a static method invocation that calls the current method recursivelyCallStaticMethod(Type[] parameterTypes, Type returnType, Expression[] arguments, String filename, int lineNumber) Create a static method invocation that calls the current method recursively -
Method Summary
Modifier and TypeMethodDescriptionconvertToFullTailCalls(boolean inTailPosition) Converts this expression to one that is compatible with full tail call optimizationvoidfindCaptured(Environment env) Search for local variables that would be captured by a lambda.voidgenerate(ClassGenerator generator, Environment env, boolean inTailPosition) Generate the bytecode for this expressiongetType()Get the type returned by this expressionvoidreset()Resets any labels in expressions so that the method can be regeneratedMethods inherited from class org.jfuncmachine.compiler.model.SourceElement
generateException
-
Field Details
-
className
The name of the class containing the method -
name
The name of the method -
arguments
The method argument values -
parameterTypes
The method parameter types -
returnType
The return type of the method
-
-
Constructor Details
-
CallStaticMethod
public CallStaticMethod(String className, String name, Type[] parameterTypes, Type returnType, Expression[] arguments) Create a static method invocation- Parameters:
className- The name of the class containing the methodname- The name of the methodparameterTypes- The method parameter typesreturnType- The method return typearguments- The method argument values
-
CallStaticMethod
public CallStaticMethod(String className, String name, Type[] parameterTypes, Type returnType, Expression[] arguments, String filename, int lineNumber) Create a static method invocation- Parameters:
className- The name of the class containing the methodname- The name of the methodparameterTypes- The method parameter typesreturnType- The method return typearguments- The method argument valuesfilename- The source filename this expression is associated withlineNumber- The source line number this expression is associated with
-
CallStaticMethod
public CallStaticMethod(String name, Type[] parameterTypes, Type returnType, Expression[] arguments) Create a static method invocation- Parameters:
name- The name of the methodparameterTypes- The method parameter typesreturnType- The method return typearguments- The method argument values
-
CallStaticMethod
public CallStaticMethod(String name, Type[] parameterTypes, Type returnType, Expression[] arguments, String filename, int lineNumber) Create a static method invocation- Parameters:
name- The name of the methodparameterTypes- The method parameter typesreturnType- The method return typearguments- The method argument valuesfilename- The source filename this expression is associated withlineNumber- The source line number this expression is associated with
-
CallStaticMethod
Create a static method invocation that calls the current method recursively- Parameters:
parameterTypes- The method parameter typesreturnType- The method return typearguments- The method argument values
-
CallStaticMethod
public CallStaticMethod(Type[] parameterTypes, Type returnType, Expression[] arguments, String filename, int lineNumber) Create a static method invocation that calls the current method recursively- Parameters:
parameterTypes- The method parameter typesreturnType- The method return typearguments- The method argument valuesfilename- The source filename this expression is associated withlineNumber- The source line number this expression is associated with
-
-
Method Details
-
getType
Description copied from class:ExpressionGet the type returned by this expression- Specified by:
getTypein classExpression- Returns:
- The type of this expression
-
reset
public void reset()Description copied from class:ExpressionResets any labels in expressions so that the method can be regenerated- Overrides:
resetin classExpression
-
findCaptured
Description copied from class:ExpressionSearch for local variables that would be captured by a lambda. Each expression has its own implementation of this, because each subexpression must be searched.- Specified by:
findCapturedin classExpression- Parameters:
env- The environment chain to search
-
convertToFullTailCalls
Description copied from class:ExpressionConverts this expression to one that is compatible with full tail call optimization- Specified by:
convertToFullTailCallsin classExpression- Parameters:
inTailPosition- True if this expression is called from the tail position- Returns:
- A version of this expression whose types are compatible with full tail call optimization
-
generate
Description copied from class:ExpressionGenerate the bytecode for this expression- Specified by:
generatein classExpression- Parameters:
generator- The generator for generating instructions and additional declarationsenv- The environment containing the local variables currently visible to this expressioninTailPosition- True if this expression is being generated from the tail position of the method
-