de.grogra.xl.expr
Class Invoke

java.lang.Object
  extended by de.grogra.graph.impl.Edge
      extended by de.grogra.graph.impl.Node
          extended by de.grogra.xl.expr.Expression
              extended by de.grogra.xl.expr.EvalExpression
                  extended by de.grogra.xl.expr.Invoke
All Implemented Interfaces:
Manageable, PersistenceCapable, Shareable, TypeId, UserFields, XObject, Map, Completable, ExpressionFactory, Generator, NonlocalGenerator, ValueObserver, java.io.Serializable, java.lang.Cloneable
Direct Known Subclasses:
InvokeSpecial, InvokeStatic, InvokeVirtual

public abstract class Invoke
extends EvalExpression
implements NonlocalGenerator, Completable

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class de.grogra.graph.impl.Node
Node.AccessorBridge, Node.FieldAttributeAccessor, Node.NType
 
Nested classes/interfaces inherited from interface de.grogra.util.Map
Map.Chain
 
Field Summary
protected  java.lang.String descriptor
           
protected  Type targetType
           
 
Fields inherited from class de.grogra.xl.expr.Expression
$TYPE, aval, aval$FIELD, dval, dval$FIELD, etype, EXPR_0, I18N, lval, lval$FIELD, USED_BITS, VALID, valid$FIELD
 
Fields inherited from class de.grogra.graph.impl.Node
ADDITIONAL_FIELDS, bits, DELETED, EXTENT_BIT, EXTENT_MASK, extentIndex$FIELD, extentTail$FIELD, HAS_OBSERVERS, IS_INTERPRETIVE, isInterpretive$FIELD, LAST_EXTENT_INDEX, layer$FIELD, MARK, mark$FIELD, MIME_TYPE, MIN_UNUSED_SPECIAL_OF_SOURCE, MIN_UNUSED_SPECIAL_OF_TARGET, name$FIELD
 
Fields inherited from interface de.grogra.xl.expr.Generator
LOCAL, NONE, NONLOCAL
 
Fields inherited from interface de.grogra.reflect.TypeId
A_VALUE, ABSTRACT_PRIMITIVE, BOOLEAN, BOOLEAN_MASK, BYTE, BYTE_MASK, CHAR, CHAR_MASK, D_VALUE, DOUBLE, DOUBLE_MASK, F_VALUE, FLOAT, FLOAT_MASK, FLOATING_POINT_MASK, I_VALUE, INT, INT_ASSIGNABLE, INT_MASK, INTEGRAL_MASK, L_VALUE, LONG, LONG_MASK, MAX_PRIMITIVE, MIN_PRIMITIVE, NUMERIC_MASK, NUMERIC_NONCHAR_MASK, OBJECT, OBJECT_MASK, PRIMITIVE_MASK, SHORT, SHORT_MASK, TYPE_COUNT, VOID, VOID_MASK
 
Fields inherited from interface de.grogra.util.Map
DEFAULT_VALUE, EMPTY_MAP
 
Constructor Summary
Invoke(Method method)
           
 
Method Summary
 void addTransfer(ControlTransfer transfer)
           
protected  void checkSetType(Type type)
           
 void complete(de.grogra.xl.compiler.scope.MethodScope scope)
           
protected  boolean evaluateBooleanImpl(VMXState t)
           
protected  byte evaluateByteImpl(VMXState t)
           
protected  char evaluateCharImpl(VMXState t)
           
protected  double evaluateDoubleImpl(VMXState t)
           
protected  float evaluateFloatImpl(VMXState t)
           
protected  int evaluateIntImpl(VMXState t)
           
protected  long evaluateLongImpl(VMXState t)
           
protected  java.lang.Object evaluateObjectImpl(VMXState t)
           
 AbruptCompletion.Return evaluateRet(VMXState t)
           
protected  short evaluateShortImpl(VMXState t)
           
protected  void evaluateVoidImpl(VMXState t)
           
 int getGeneratorType()
           
protected abstract  Method getMethod(VMXState t)
           
protected abstract  int getOpcode()
           
 Method getOriginalMethod()
           
protected  java.lang.String paramString()
          Computes the class-specific part of the string returned by Node.toString() which shall be enclosed in brackets.
protected  void pushParameters(VMXState t)
           
 void receiveConsumer(Expression consumer)
           
 void receiveRoutine(de.grogra.xl.compiler.scope.TypeScope scope, Expression descriptor)
           
 void setBreakTarget(BreakTarget target)
           
 void setGenerator()
           
 void useAccessMethod(de.grogra.xl.compiler.CClass amc)
           
protected  void writeImpl(de.grogra.xl.compiler.BytecodeWriter writer, boolean discard)
           
 
Methods inherited from class de.grogra.xl.expr.Expression
add, allowsIteration, cast, checkExpressionCount, clone, compile, compile, createConst, createExpression, createMaxConst, createMinConst, discards, evaluateAsObject, evaluateAsVoid, evaluateBoolean, evaluateBoolean, evaluateByte, evaluateByte, evaluateChar, evaluateChar, evaluateDouble, evaluateDouble, evaluateFloat, evaluateFloat, evaluateInt, evaluateInt, evaluateLong, evaluateLong, evaluateObject, evaluateObject, evaluateShort, evaluateShort, evaluatesWithoutSideeffect, fireValueChanged, getExpression, getExpression, getExpression, getExpressionCount, getFirstExpression, getLastExpression, getLeastCommonAncestor, getNextExpression, getNTypeImpl, getObjectExpression, getObjectExpression, getPromotedType, getSupportedTypes, getType, getTypeLoader, hasType, hasType, implicitConversion, isConditional, isPrimitiveOrStringConstant, isRequired, link, linkGraph, needsEmptyOperandStackForFinally, newInstance, opcode, opcode, promote, push, receiveChildren, setNextSibling, setType, substitute, toConst, toConstImpl, toString, unboxingConversion, unlinkTree, valueChanged, write, writeChildren, writeConditional, writeConditional, writeFinally, writeOperator
 
Methods inherited from class de.grogra.graph.impl.Node
addEdgeBitsTo, addReference, appendBranchNode, appendBranchNode, appendReferencesTo, clone, cloneGraph, dump, dumpTree, dup, dupUnmanagedFields, edgeChanged, fieldModified, findAdjacent, get, getAccessor, getAccessor, getAttributes, getAxisParent, getBoolean, getBranch, getBranchLength, getBranchNode, getBranchTail, getByte, getChar, getCommonAncestor, getCurrentGraphState, getDirectChildCount, getDouble, getEdgeAttributeAccessor, getEdgeAttributes, getEdgeBitsTo, getEdgeTo, getExtentIndex, getFirst, getFirstEdge, getFloat, getGraph, getId, getIndex, getInstantiator, getInt, getLayer, getLong, getManageableType, getName, getNeighbor, getNext, getNType, getObject, getOrCreateEdgeTo, getOrNull, getPersistenceManager, getPredecessor, getProvider, getShort, getSource, getStamp, getSuccessor, getSymbol, getSymbolColor, getTarget, getTransaction, getUserField, getUserFieldCount, getXClass, getXData, hasName, initProvider, initXClass, insertBranchNode, insertBranchNode, instantiateGraph, isAncestorOf, isDirection, isManagingInstance, isMarked, isRoot, isSource, isTarget, manageableReadResolve, manageableWriteReplace, removeAll, removeEdgeBitsTo, removeFromChain, removeFromChain, removeReference, setBranch, setBranch, setExtentIndex, setGraphForDeserialization, setLayer, setMark, setName, setSuccessor, setSuccessor, specialEdgeAdded, specialEdgeRefModified, specialEdgeRemoved, writeReplace
 
Methods inherited from class de.grogra.graph.impl.Edge
addEdgeBits, getBitMark, getEdgeBits, getObjectMark, getSpecialEdgeDescriptor, parseEdgeKeys, remove, removeEdgeBits, setBitMark, setEdgeBits, setObjectMark, testEdgeBits
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface de.grogra.persistence.PersistenceCapable
getBitMark, getObjectMark, setBitMark, setObjectMark
 

Field Detail

descriptor

protected java.lang.String descriptor

targetType

protected final Type targetType
Constructor Detail

Invoke

public Invoke(Method method)
Method Detail

addTransfer

public void addTransfer(ControlTransfer transfer)
Specified by:
addTransfer in interface NonlocalGenerator

checkSetType

protected void checkSetType(Type type)
Overrides:
checkSetType in class Expression

complete

public void complete(de.grogra.xl.compiler.scope.MethodScope scope)
Specified by:
complete in interface Completable

evaluateBooleanImpl

protected final boolean evaluateBooleanImpl(VMXState t)
Overrides:
evaluateBooleanImpl in class Expression

evaluateByteImpl

protected final byte evaluateByteImpl(VMXState t)
Overrides:
evaluateByteImpl in class Expression

evaluateCharImpl

protected final char evaluateCharImpl(VMXState t)
Overrides:
evaluateCharImpl in class Expression

evaluateDoubleImpl

protected final double evaluateDoubleImpl(VMXState t)
Overrides:
evaluateDoubleImpl in class Expression

evaluateFloatImpl

protected final float evaluateFloatImpl(VMXState t)
Overrides:
evaluateFloatImpl in class Expression

evaluateIntImpl

protected final int evaluateIntImpl(VMXState t)
Overrides:
evaluateIntImpl in class Expression

evaluateLongImpl

protected final long evaluateLongImpl(VMXState t)
Overrides:
evaluateLongImpl in class Expression

evaluateObjectImpl

protected final java.lang.Object evaluateObjectImpl(VMXState t)
Overrides:
evaluateObjectImpl in class Expression

evaluateRet

public AbruptCompletion.Return evaluateRet(VMXState t)
Overrides:
evaluateRet in class Expression

evaluateShortImpl

protected final short evaluateShortImpl(VMXState t)
Overrides:
evaluateShortImpl in class Expression

evaluateVoidImpl

protected final void evaluateVoidImpl(VMXState t)
Overrides:
evaluateVoidImpl in class Expression

getGeneratorType

public int getGeneratorType()
Specified by:
getGeneratorType in interface Generator

getMethod

protected abstract Method getMethod(VMXState t)

getOpcode

protected abstract int getOpcode()

getOriginalMethod

public Method getOriginalMethod()

paramString

protected java.lang.String paramString()
Description copied from class: Node
Computes the class-specific part of the string returned by Node.toString() which shall be enclosed in brackets. This should be used to show important properties of this node.

Overrides:
paramString in class Expression
Returns:
string describing some important properties of this node

pushParameters

protected void pushParameters(VMXState t)

receiveConsumer

public void receiveConsumer(Expression consumer)

receiveRoutine

public void receiveRoutine(de.grogra.xl.compiler.scope.TypeScope scope,
                           Expression descriptor)
Specified by:
receiveRoutine in interface NonlocalGenerator

setBreakTarget

public void setBreakTarget(BreakTarget target)
Specified by:
setBreakTarget in interface Generator

setGenerator

public void setGenerator()

useAccessMethod

public void useAccessMethod(de.grogra.xl.compiler.CClass amc)

writeImpl

protected void writeImpl(de.grogra.xl.compiler.BytecodeWriter writer,
                         boolean discard)
Overrides:
writeImpl in class Expression