gnu.kawa.reflect
Class Invoke
java.lang.Object
gnu.mapping.PropertySet
gnu.mapping.Procedure
gnu.mapping.ProcedureN
gnu.kawa.reflect.Invoke
- All Implemented Interfaces:
- CanInline, Named
public class Invoke
- extends ProcedureN
- implements CanInline
Constructor Summary |
Invoke(java.lang.String name,
char kind)
|
Invoke(java.lang.String name,
char kind,
Language language)
|
Method Summary |
void |
apply(CallContext ctx)
Call this Procedure using the explicit-CallContext-convention. |
java.lang.Object |
applyN(java.lang.Object[] args)
|
static int |
checkKnownClass(Type type,
Compilation comp)
Check if class exists. |
protected PrimProcedure[] |
getMethods(ObjectType ctype,
java.lang.String mname,
ClassType caller)
|
static PrimProcedure |
getStaticMethod(ClassType type,
java.lang.String name,
Expression[] args)
|
Expression |
inline(ApplyExp exp,
InlineCalls walker,
boolean argsInlined)
Inline an application of this Procedure and return result. |
static ApplyExp |
inlineClassName(ApplyExp exp,
int carg,
InlineCalls walker)
Resolve class specifier to ClassType at inline time. |
static java.lang.Object |
invoke$V(java.lang.Object[] args)
|
static java.lang.Object |
invokeStatic$V(java.lang.Object[] args)
|
protected MethodProc |
lookupMethods(ObjectType dtype,
java.lang.Object name)
|
static java.lang.Object |
make$V(java.lang.Object[] args)
|
static ApplyExp |
makeInvokeStatic(ClassType type,
java.lang.String name,
Expression[] args)
Return an ApplyExp that will call a method with given arguments. |
int |
numArgs()
Return minArgs()|(maxArgs<<12). |
Methods inherited from class gnu.mapping.Procedure |
apply, check0, check1, check2, check3, check4, checkArgCount, checkN, getSetter, getSourceLocation, match0, match1, match2, match3, match4, matchN, maxArgs, minArgs, set0, set1, setN, setSetter, setSourceLocation, toString |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
invoke
public static final Invoke invoke
invokeStatic
public static final Invoke invokeStatic
invokeSpecial
public static final Invoke invokeSpecial
make
public static final Invoke make
Invoke
public Invoke(java.lang.String name,
char kind)
Invoke
public Invoke(java.lang.String name,
char kind,
Language language)
invoke$V
public static java.lang.Object invoke$V(java.lang.Object[] args)
throws java.lang.Throwable
- Throws:
java.lang.Throwable
invokeStatic$V
public static java.lang.Object invokeStatic$V(java.lang.Object[] args)
throws java.lang.Throwable
- Throws:
java.lang.Throwable
make$V
public static java.lang.Object make$V(java.lang.Object[] args)
throws java.lang.Throwable
- Throws:
java.lang.Throwable
apply
public void apply(CallContext ctx)
throws java.lang.Throwable
- Description copied from class:
Procedure
- Call this Procedure using the explicit-CallContext-convention.
The input arguments are (by default) in stack.args;
the result is written to ctx.consumer.
- Overrides:
apply
in class Procedure
- Throws:
java.lang.Throwable
applyN
public java.lang.Object applyN(java.lang.Object[] args)
throws java.lang.Throwable
- Specified by:
applyN
in class ProcedureN
- Throws:
java.lang.Throwable
numArgs
public int numArgs()
- Description copied from class:
Procedure
- Return minArgs()|(maxArgs<<12).
- Overrides:
numArgs
in class Procedure
lookupMethods
protected MethodProc lookupMethods(ObjectType dtype,
java.lang.Object name)
getMethods
protected PrimProcedure[] getMethods(ObjectType ctype,
java.lang.String mname,
ClassType caller)
checkKnownClass
public static int checkKnownClass(Type type,
Compilation comp)
- Check if class exists.
- Returns:
- 1 if class actually exists;
-1 is class should exist, but doesn't;
and 0 otherwise.
inlineClassName
public static ApplyExp inlineClassName(ApplyExp exp,
int carg,
InlineCalls walker)
- Resolve class specifier to ClassType at inline time.
This is an optimization to avoid having a module-level binding
created for the class name.
inline
public Expression inline(ApplyExp exp,
InlineCalls walker,
boolean argsInlined)
- Description copied from interface:
CanInline
- Inline an application of this Procedure and return result.
Unless
argsInlined
is true, then this method
is responsible for walking exp.getArgs()
;
you can handle this using exp.getArgs(walker, argsInlined)
.
(The exp.getFunction()
has been walked, regardless.)
- Specified by:
inline
in interface CanInline
argsInlined
- true if the arguments have been inlined.
Can return original expression.
makeInvokeStatic
public static ApplyExp makeInvokeStatic(ClassType type,
java.lang.String name,
Expression[] args)
- Return an ApplyExp that will call a method with given arguments.
- Parameters:
type
- the class containing the method we want to call.name
- the name of the method we want to callargs
- the arguments to the call
- Returns:
- an ApplyExp representing the call
getStaticMethod
public static PrimProcedure getStaticMethod(ClassType type,
java.lang.String name,
Expression[] args)