at.dms.kjc
Class JLocalVariable

java.lang.Object
  |
  +--at.dms.util.Utils
        |
        +--at.dms.compiler.Phylum
              |
              +--at.dms.kjc.JPhylum
                    |
                    +--at.dms.kjc.JLocalVariable
All Implemented Interfaces:
Constants, Constants
Direct Known Subclasses:
JFormalParameter, JGeneratedLocalVariable, JVariableDefinition

public abstract class JLocalVariable
extends JPhylum

This class represents a local variable.


Field Summary
static int DES_CATCH_PARAMETER
          Description: catch parameter.
static int DES_GENERATED
          Description: synthetic/generated local variable.
static int DES_LOCAL_VAR
          Description: local variable.
static int DES_PARAMETER
          Description: method parameter.
protected  JExpression initializer
          Initializer of local var.
protected  int modifiers
          Modifiers for local var (final)
protected  java.lang.String name
          Name of local var.
protected  CType type
          Type of local var.
 
Fields inherited from class at.dms.util.Utils
DBG_LEVEL_HIGH, DBG_LEVEL_LOW, DBG_LEVEL_NO
 
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_BOOLEAN, TID_BYTE, TID_CHAR, TID_CLASS, TID_DOUBLE, TID_FLOAT, TID_INT, TID_LONG, TID_SHORT, TID_VOID
 
Fields inherited from interface at.dms.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_NBR_FLAGS, 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
JLocalVariable(TokenReference where, int modifiers, int desc, CType type, java.lang.String name, JExpression initializer)
          Constructs a local variable reference.
 
Method Summary
 boolean equals(java.lang.Object o)
           
 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 bytecodes
 int getDescription()
           
 java.lang.String getIdent()
           
 int getIndex()
           
 int getModifiers()
           
 int getPosition()
           
 CType getType()
           
 JExpression getValue()
           
 boolean isAssigned()
           
 boolean isConstant()
           
 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()
           
 void setAssigned(TokenReference ref, CBodyContext context)
           
 void setConstructorClass(CClass clazz)
          ...
 void setIndex(int index)
           
 void setIsLoopVariable()
           
 void setPosition(int position)
           
 void setUsed()
           
 void unsetIsLoopVariable()
           
 
Methods inherited from class at.dms.kjc.JPhylum
accept, check, check, check, check, fail
 
Methods inherited from class at.dms.compiler.Phylum
getTokenReference, setTokenReference
 
Methods inherited from class at.dms.util.Utils
assert, assert, fail, fail, hasFlag, hasMoreThanOneFlag, hasOtherFlags, splitQualifiedName, splitQualifiedName, vectorToArray, vectorToIntArray
 
Methods inherited from class java.lang.Object
, clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DES_LOCAL_VAR

public static final int DES_LOCAL_VAR
Description: local variable.

DES_PARAMETER

public static final int DES_PARAMETER
Description: method parameter.

DES_CATCH_PARAMETER

public static final int DES_CATCH_PARAMETER
Description: catch parameter.

DES_GENERATED

public static final int DES_GENERATED
Description: synthetic/generated local variable.

modifiers

protected int modifiers
Modifiers for local var (final)

name

protected java.lang.String name
Name of local var.

type

protected CType type
Type of local var.

initializer

protected JExpression initializer
Initializer of local var.
Constructor Detail

JLocalVariable

public JLocalVariable(TokenReference where,
                      int modifiers,
                      int desc,
                      CType type,
                      java.lang.String name,
                      JExpression initializer)
Constructs a local variable reference.
Parameters:
modifiers - the modifiers on this variable
name - the name of this variable
type - the type of this variable
value - the initial value
where - the location of the declaration of this variable
Method Detail

setConstructorClass

public void setConstructorClass(CClass clazz)
...

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 java.lang.String getIdent()
Returns:
the name of this variable

getType

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

getValue

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

isConstant

public boolean isConstant()
Returns:
true if this variable is constant

getIndex

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

setIndex

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

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()

equals

public boolean equals(java.lang.Object o)
Overrides:
equals in class java.lang.Object

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 bytecodes
Parameters:
code - the code sequence