at.dms.kjc
Class JLocalVariable

java.lang.Object
  extended by at.dms.util.Utils
      extended by at.dms.compiler.Phylum
          extended by at.dms.kjc.JPhylum
              extended by at.dms.kjc.JLocalVariable
All Implemented Interfaces:
Constants, DeepCloneable, Finalizable, Serializable
Direct Known Subclasses:
JFormalParameter, JGeneratedLocalVariable, JVariableDefinition

public abstract class JLocalVariable
extends JPhylum

This class represents a local variable declaration

See Also:
Serialized Form

Field Summary
static int DES_CATCH_PARAMETER
           
static int DES_GENERATED
           
static int DES_LOCAL_VAR
           
static int DES_PARAMETER
           
protected  JExpression expr
           
protected  int modifiers
           
protected  String name
           
protected  CType type
           
 
Fields inherited from class at.dms.util.Utils
EMPTY_LIST, getForLoopCallers
 
Fields inherited from interface at.dms.kjc.Constants
CMP_VERSION, JAV_CLASS, JAV_CLONE, JAV_CLONEABLE, JAV_CONSTRUCTOR, JAV_ERROR, JAV_EXCEPTION, JAV_INIT, JAV_LENGTH, JAV_NAME_SEPARATOR, JAV_OBJECT, JAV_OUTER_THIS, JAV_RUNTIME, JAV_RUNTIME_EXCEPTION, JAV_STATIC_INIT, JAV_STRING, JAV_STRINGBUFFER, JAV_THIS, JAV_THROWABLE, OPE_BAND, OPE_BNOT, OPE_BOR, OPE_BSR, OPE_BXOR, OPE_EQ, OPE_GE, OPE_GT, OPE_LE, OPE_LNOT, OPE_LT, OPE_MINUS, OPE_NE, OPE_PERCENT, OPE_PLUS, OPE_POSTDEC, OPE_POSTINC, OPE_PREDEC, OPE_PREINC, OPE_SIMPLE, OPE_SL, OPE_SLASH, OPE_SR, OPE_STAR, TID_ARRAY, TID_BIT, TID_BOOLEAN, TID_BYTE, TID_CHAR, TID_CLASS, TID_DOUBLE, TID_FLOAT, TID_INT, TID_LONG, TID_SHORT, TID_VECTOR, TID_VOID, VECTOR_EMPTY
 
Fields inherited from interface at.dms.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INLINE, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, ATT_CODE, ATT_CONSTANTVALUE, ATT_DEPRECATED, ATT_EXCEPTIONS, ATT_GENERIC, ATT_INNERCLASSES, ATT_LINENUMBERTABLE, ATT_LOCALVARIABLETABLE, ATT_SOURCEFILE, ATT_SYNTHETIC, CST_CLASS, CST_DOUBLE, CST_FIELD, CST_FLOAT, CST_INTEGER, CST_INTERFACEMETHOD, CST_LONG, CST_METHOD, CST_NAMEANDTYPE, CST_STRING, CST_UTF8, ENV_DEBUG_MODE, ENV_USE_CACHE, JAVA_MAGIC, JAVA_MAJOR, JAVA_MINOR, MAX_CODE_PER_METHOD, opc_aaload, opc_aastore, opc_aconst_null, opc_aload, opc_aload_0, opc_aload_1, opc_aload_2, opc_aload_3, opc_anewarray, opc_areturn, opc_arraylength, opc_astore, opc_astore_0, opc_astore_1, opc_astore_2, opc_astore_3, opc_athrow, opc_baload, opc_bastore, opc_bipush, opc_caload, opc_castore, opc_checkcast, opc_d2f, opc_d2i, opc_d2l, opc_dadd, opc_daload, opc_dastore, opc_dcmpg, opc_dcmpl, opc_dconst_0, opc_dconst_1, opc_ddiv, opc_dload, opc_dload_0, opc_dload_1, opc_dload_2, opc_dload_3, opc_dmul, opc_dneg, opc_drem, opc_dreturn, opc_dstore, opc_dstore_0, opc_dstore_1, opc_dstore_2, opc_dstore_3, opc_dsub, opc_dup, opc_dup_x1, opc_dup_x2, opc_dup2, opc_dup2_x1, opc_dup2_x2, opc_f2d, opc_f2i, opc_f2l, opc_fadd, opc_faload, opc_fastore, opc_fcmpg, opc_fcmpl, opc_fconst_0, opc_fconst_1, opc_fconst_2, opc_fdiv, opc_fload, opc_fload_0, opc_fload_1, opc_fload_2, opc_fload_3, opc_fmul, opc_fneg, opc_frem, opc_freturn, opc_fstore, opc_fstore_0, opc_fstore_1, opc_fstore_2, opc_fstore_3, opc_fsub, opc_getfield, opc_getstatic, opc_goto, opc_goto_w, opc_i2b, opc_i2c, opc_i2d, opc_i2f, opc_i2l, opc_i2s, opc_iadd, opc_iaload, opc_iand, opc_iastore, opc_iconst_0, opc_iconst_1, opc_iconst_2, opc_iconst_3, opc_iconst_4, opc_iconst_5, opc_iconst_m1, opc_idiv, opc_if_acmpeq, opc_if_acmpne, opc_if_icmpeq, opc_if_icmpge, opc_if_icmpgt, opc_if_icmple, opc_if_icmplt, opc_if_icmpne, opc_ifeq, opc_ifge, opc_ifgt, opc_ifle, opc_iflt, opc_ifne, opc_ifnonnull, opc_ifnull, opc_iinc, opc_iload, opc_iload_0, opc_iload_1, opc_iload_2, opc_iload_3, opc_imul, opc_ineg, opc_instanceof, opc_invokeinterface, opc_invokespecial, opc_invokestatic, opc_invokevirtual, opc_ior, opc_irem, opc_ireturn, opc_ishl, opc_ishr, opc_istore, opc_istore_0, opc_istore_1, opc_istore_2, opc_istore_3, opc_isub, opc_iushr, opc_ixor, opc_jsr, opc_jsr_w, opc_l2d, opc_l2f, opc_l2i, opc_ladd, opc_laload, opc_land, opc_lastore, opc_lcmp, opc_lconst_0, opc_lconst_1, opc_ldc, opc_ldc_w, opc_ldc2_w, opc_ldiv, opc_lload, opc_lload_0, opc_lload_1, opc_lload_2, opc_lload_3, opc_lmul, opc_lneg, opc_lookupswitch, opc_lor, opc_lrem, opc_lreturn, opc_lshl, opc_lshr, opc_lstore, opc_lstore_0, opc_lstore_1, opc_lstore_2, opc_lstore_3, opc_lsub, opc_lushr, opc_lxor, opc_monitorenter, opc_monitorexit, opc_multianewarray, opc_new, opc_newarray, opc_nop, opc_pop, opc_pop2, opc_putfield, opc_putstatic, opc_ret, opc_return, opc_saload, opc_sastore, opc_sipush, opc_swap, opc_tableswitch, opc_wide, opc_xxxunusedxxx, POO_ASCII_CONSTANT, POO_CLASS_CONSTANT, POO_DOUBLE_CONSTANT, POO_FLOAT_CONSTANT, POO_INTEGER_CONSTANT, POO_LONG_CONSTANT, POO_NAT_CONSTANT, POO_REF_CONSTANT, POO_STRING_CONSTANT, TYP_ADDRESS, TYP_DOUBLE, TYP_FLOAT, TYP_INT, TYP_LONG, TYP_REFERENCE, TYP_VOID
 
Constructor Summary
protected JLocalVariable()
           
  JLocalVariable(TokenReference where, int modifiers, int kind, CType type, String name, JExpression expr)
          Constructs a local variable definition
 
Method Summary
 Object deepClone()
          Returns a deep clone of this object.
protected  void deepCloneInto(JLocalVariable other)
          Clones all fields of this into
 void genLoad(CodeSequence code)
          Generates a sequence of bytecode to load the value of the variable on the stack
 void genStore(CodeSequence code)
          Generates a sequence of bytescodes
 int getDescription()
           
 String getIdent()
           
 int getIndex()
           
 int getModifiers()
           
 int getPosition()
           
 CType getType()
           
 JExpression getValue()
           
 boolean isAssigned()
           
 boolean isConstant()
          Tests whether this expression denotes a compile-time constant (JLS 15.28).
 boolean isFinal()
          Returns if this variable is final
 boolean isGenerated()
          Returns the variable definied by this formal parameter
 boolean isLoopVariable()
           
 boolean isStatic()
          Returns if this variable is static
 boolean isUsed()
           
 boolean isVolatile()
          Returns true if this variable is declared volatile.
protected  Object readResolve()
           
 void setAssigned(TokenReference ref, CBodyContext context)
           
 void setExpression(JExpression expr)
          Sets the expression of this.
 void setIdent(String name)
           
 void setIndex(int index)
           
 void setIsLoopVariable()
           
 void setPosition(int position)
           
 void setType(CType type)
           
 void setUsed()
           
 String toString()
           
 void unsetIsLoopVariable()
           
 
Methods inherited from class at.dms.kjc.JPhylum
accept, accept, assertMutable, check, check, check, check, deepCloneInto, fail, setLineNumber
 
Methods inherited from class at.dms.compiler.Phylum
deepCloneInto, getTokenReference, setTokenReference
 
Methods inherited from class at.dms.util.Utils
asPercent, cellMathEquivalent, cMathEquivalent, cppMathEquivalent, deepCloneInto, equalArrays, fail, getEnvironmentVariable, getExpression, hasPeeks, initArray, initArray, initLiteralArray, intArrayToList, isMathMethod, isUniform, kopi_assert, kopi_assert, makeCountdownForLoop, makeDotFileName, makeForLoop, makeForLoop, makeForLoop, makeForLoopFieldIndex, makeForLoopLocalIndex, nextPow2, passThruParens, peelMarkers, popBeforePeek, readFile, removeUnusedPops, replaceAll, setupDotFileName, simplifyMathMethod, splitQualifiedName, splitQualifiedName, toArray, toIntArray, toVector, voidToInt, writeFile
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

DES_LOCAL_VAR

public static final int DES_LOCAL_VAR
See Also:
Constant Field Values

DES_PARAMETER

public static final int DES_PARAMETER
See Also:
Constant Field Values

DES_CATCH_PARAMETER

public static final int DES_CATCH_PARAMETER
See Also:
Constant Field Values

DES_GENERATED

public static final int DES_GENERATED
See Also:
Constant Field Values

modifiers

protected int modifiers

name

protected String name

type

protected CType type

expr

protected JExpression expr
Constructor Detail

JLocalVariable

protected JLocalVariable()

JLocalVariable

public JLocalVariable(TokenReference where,
                      int modifiers,
                      int kind,
                      CType type,
                      String name,
                      JExpression expr)
Constructs a local variable definition

Parameters:
where - the line of this node in the source code
modifiers - the modifiers of this variable
kind - the kind of this variable
type - the type of this variable
name - the name of this variable
expr - the initial value
Method Detail

readResolve

protected Object readResolve()
                      throws Exception
Throws:
Exception

isVolatile

public boolean isVolatile()
Returns true if this variable is declared volatile.

Returns:
true if this variable is declared volatile.

isFinal

public boolean isFinal()
Returns if this variable is final


isStatic

public boolean isStatic()
Returns if this variable is static


isGenerated

public boolean isGenerated()
Returns the variable definied by this formal parameter


getModifiers

public int getModifiers()
Returns:
the modifiers of this variable

getIdent

public String getIdent()
Returns:
the name of this variable

toString

public String toString()
Overrides:
toString in class Object

setIdent

public void setIdent(String name)

getType

public CType getType()
Returns:
the type of this variable

setType

public void setType(CType type)

getValue

public JExpression getValue()
Returns:
the value of this local variable at initialization $$$ why not dynamically...

isConstant

public boolean isConstant()
Tests whether this expression denotes a compile-time constant (JLS 15.28).

Returns:
true iff this expression is constant

getIndex

public int getIndex()
Returns:
the local index in context variable table

setIndex

public void setIndex(int index)

setExpression

public void setExpression(JExpression expr)
Sets the expression of this.


getDescription

public int getDescription()

getPosition

public int getPosition()

setPosition

public void setPosition(int position)

setUsed

public void setUsed()

isUsed

public boolean isUsed()

setAssigned

public void setAssigned(TokenReference ref,
                        CBodyContext context)

isAssigned

public boolean isAssigned()

setIsLoopVariable

public void setIsLoopVariable()

unsetIsLoopVariable

public void unsetIsLoopVariable()

isLoopVariable

public boolean isLoopVariable()

genLoad

public void genLoad(CodeSequence code)
Generates a sequence of bytecode to load the value of the variable on the stack

Parameters:
code - the code sequence

genStore

public void genStore(CodeSequence code)
Generates a sequence of bytescodes

Parameters:
code - the code sequence

deepClone

public Object deepClone()
Returns a deep clone of this object.

Specified by:
deepClone in interface DeepCloneable
Overrides:
deepClone in class JPhylum

deepCloneInto

protected void deepCloneInto(JLocalVariable other)
Clones all fields of this into
other