gnu.kawa.reflect
Class Invoke

java.lang.Object
  extended by gnu.mapping.PropertySet
      extended by gnu.mapping.Procedure
          extended by gnu.mapping.ProcedureN
              extended by gnu.kawa.reflect.Invoke
All Implemented Interfaces:
CanInline, Named

public class Invoke
extends ProcedureN
implements CanInline


Field Summary
static Invoke invoke
           
static Invoke invokeSpecial
           
static Invoke invokeStatic
           
static Invoke make
           
 
Fields inherited from class gnu.mapping.ProcedureN
noArgs
 
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, ExpWalker walker)
          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.ProcedureN
apply0, apply1, apply2, apply3, apply4
 
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 gnu.mapping.PropertySet
getName, getProperty, getSymbol, removeProperty, setName, setProperty, setProperty, setSymbol
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

invoke

public static final Invoke invoke

invokeStatic

public static final Invoke invokeStatic

invokeSpecial

public static final Invoke invokeSpecial

make

public static final Invoke make
Constructor Detail

Invoke

public Invoke(java.lang.String name,
              char kind)

Invoke

public Invoke(java.lang.String name,
              char kind,
              Language language)
Method Detail

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,
                         ExpWalker walker)
Description copied from interface: CanInline
Inline an application of this Procedure and return result. Can return original expression.

Specified by:
inline in interface CanInline

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 call
args - the arguments to the call
Returns:
an ApplyExp representing the call

getStaticMethod

public static PrimProcedure getStaticMethod(ClassType type,
                                            java.lang.String name,
                                            Expression[] args)