Package org.glassfish.rmic.tools.tree
Class ArrayAccessExpression
- java.lang.Object
-
- org.glassfish.rmic.tools.tree.Node
-
- org.glassfish.rmic.tools.tree.Expression
-
- org.glassfish.rmic.tools.tree.UnaryExpression
-
- org.glassfish.rmic.tools.tree.ArrayAccessExpression
-
- All Implemented Interfaces:
java.lang.Cloneable,Constants,RuntimeConstants
public class ArrayAccessExpression extends UnaryExpression
WARNING: The contents of this source file are not part of any supported API. Code that depends on them does so at its own risk: they are subject to change or removal without notice.
-
-
Field Summary
Fields Modifier and Type Field Description (package private) ExpressionindexThe index expression for the array access.-
Fields inherited from class org.glassfish.rmic.tools.tree.UnaryExpression
right
-
Fields inherited from class org.glassfish.rmic.tools.tree.Expression
type
-
Fields inherited from interface org.glassfish.rmic.tools.java.Constants
ABSTRACT, ACCM_CLASS, ACCM_FIELD, ACCM_INNERCLASS, ACCM_MEMBER, ACCM_METHOD, ADD, AND, ARRAY, ARRAYACCESS, ASGADD, ASGBITAND, ASGBITOR, ASGBITXOR, ASGDIV, ASGLSHIFT, ASGMUL, ASGREM, ASGRSHIFT, ASGSUB, ASGURSHIFT, ASSIGN, ATT_ALL, ATT_ALLCLASSES, ATT_CODE, BITAND, BITNOT, BITOR, BITXOR, BOOLEAN, BOOLEANVAL, BREAK, BYTE, BYTEVAL, CASE, CAST, CATCH, CHAR, CHARVAL, CLASS, COLON, COMMA, COMMENT, COND, CONST, CONTINUE, CONVERT, CS_BINARY, CS_CHECKED, CS_COMPILED, CS_NOTFOUND, CS_PARSED, CS_SOURCE, CS_UNDECIDED, CS_UNDEFINED, CT_BLOCK, CT_BRANCH_FALSE, CT_BRANCH_TRUE, CT_CASE, CT_FIKT_METHOD, CT_FIKT_RET, CT_FIRST_KIND, CT_LAST_KIND, CT_METHOD, CT_SWITH_WO_DEF, DEC, DECLARATION, DEFAULT, DIV, DO, DOUBLE, DOUBLEVAL, ELSE, EQ, ERROR, EXPR, EXPRESSION, EXTENDS, F_COVDATA, F_COVERAGE, F_DEBUG_LINES, F_DEBUG_SOURCE, F_DEBUG_VARS, F_DEPENDENCIES, F_DEPRECATION, F_DUMP, F_ERRORSREPORTED, F_OPT, F_OPT_INTERCLASS, F_PRINT_DEPENDENCIES, F_STRICTDEFAULT, F_VERBOSE, F_VERSION12, F_WARNINGS, FALSE, FIELD, FINAL, FINALLY, FLOAT, FLOATVAL, FOR, GE, GOTO, GT, idAppend, idClass, idClassInit, idClone, idCode, idConstantValue, idCoverageTable, idDeprecated, idDocumentation, IDENT, idExceptions, idFinallyReturnValue, idGetClass, idInit, idInnerClasses, idJavaIoSerializable, idJavaLang, idJavaLangClass, idJavaLangCloneable, idJavaLangError, idJavaLangException, idJavaLangObject, idJavaLangRuntimeException, idJavaLangString, idJavaLangStringBuffer, idJavaLangThrowable, idLength, idLineNumberTable, idLocalVariableTable, idNew, idNull, idSourceFile, idStar, idSuper, idSynthetic, idThis, idToString, idTYPE, idValueOf, IF, IMPLEMENTS, IMPORT, INC, INLINEMETHOD, INLINENEWINSTANCE, INLINERETURN, INSTANCEOF, INT, INTERFACE, INTVAL, LBRACE, LE, LENGTH, LONG, LONGVAL, LPAREN, LSHIFT, LSQBRACKET, LT, M_ABSTRACT, M_ANONYMOUS, M_DEPRECATED, M_FINAL, M_INLINEABLE, M_INTERFACE, M_LOCAL, M_NATIVE, M_PRIVATE, M_PROTECTED, M_PUBLIC, M_STATIC, M_STRICTFP, M_SYNCHRONIZED, M_SYNTHETIC, M_TRANSIENT, M_VOLATILE, MAXFILESIZE, MAXLINENUMBER, METHOD, MM_CLASS, MM_FIELD, MM_MEMBER, MM_METHOD, MUL, NATIVE, NE, NEG, NEW, NEWARRAY, NEWFROMNAME, NEWINSTANCE, NOT, NULL, opNames, opPrecedence, OR, PACKAGE, paraDeprecated, POS, POSTDEC, POSTINC, PREDEC, prefixAccess, prefixArray, prefixClass, prefixLoc, prefixThis, prefixVal, PREINC, PRIVATE, PROTECTED, PUBLIC, QUESTIONMARK, RBRACE, REM, RETURN, RPAREN, RSHIFT, RSQBRACKET, SEMICOLON, SHORT, SHORTVAL, SIG_INNERCLASS, SIGC_INNERCLASS, STAT, STATIC, STRICTFP, STRINGVAL, SUB, SUPER, SWITCH, SYNCHRONIZED, TC_ARRAY, TC_BOOLEAN, TC_BYTE, TC_CHAR, TC_CLASS, TC_DOUBLE, TC_ERROR, TC_FLOAT, TC_INT, TC_LONG, TC_METHOD, TC_NULL, TC_SHORT, TC_VOID, THIS, THROW, THROWS, TM_ARRAY, TM_BOOLEAN, TM_BYTE, TM_CHAR, TM_CLASS, TM_DOUBLE, TM_ERROR, TM_FLOAT, TM_INT, TM_INT32, TM_INTEGER, TM_LONG, TM_METHOD, TM_NULL, TM_NUM32, TM_NUM64, TM_NUMBER, TM_REAL, TM_REFERENCE, TM_SHORT, TM_VOID, tracing, TRANSIENT, TRUE, TRY, TYPE, URSHIFT, VARDECLARATION, VOID, VOLATILE, WHEREOFFSETBITS, WHILE
-
Fields inherited from interface org.glassfish.rmic.tools.java.RuntimeConstants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, CONSTANT_CLASS, CONSTANT_DOUBLE, CONSTANT_FIELD, CONSTANT_FLOAT, CONSTANT_INTEGER, CONSTANT_INTERFACEMETHOD, CONSTANT_INVOKEDYNAMIC, CONSTANT_LONG, CONSTANT_METHOD, CONSTANT_METHODHANDLE, CONSTANT_METHODTYPE, CONSTANT_NAMEANDTYPE, CONSTANT_STRING, CONSTANT_UNICODE, CONSTANT_UTF8, JAVA_DEFAULT_MINOR_VERSION, JAVA_DEFAULT_VERSION, JAVA_MAGIC, JAVA_MAX_SUPPORTED_MINOR_VERSION, JAVA_MAX_SUPPORTED_VERSION, JAVA_MIN_SUPPORTED_VERSION, 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_breakpoint, 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_dead, 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_invokedynamic, 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_label, 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_try, opc_wide, opcLengths, opcNames, SIG_ARRAY, SIG_BOOLEAN, SIG_BYTE, SIG_CHAR, SIG_CLASS, SIG_DOUBLE, SIG_ENDCLASS, SIG_ENDMETHOD, SIG_FLOAT, SIG_INT, SIG_LONG, SIG_METHOD, SIG_PACKAGE, SIG_SHORT, SIG_VOID, SIGC_ARRAY, SIGC_BOOLEAN, SIGC_BYTE, SIGC_CHAR, SIGC_CLASS, SIGC_DOUBLE, SIGC_ENDCLASS, SIGC_ENDMETHOD, SIGC_FLOAT, SIGC_INT, SIGC_LONG, SIGC_METHOD, SIGC_PACKAGE, SIGC_SHORT, SIGC_VOID, T_BOOLEAN, T_BYTE, T_CHAR, T_CLASS, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT
-
-
Constructor Summary
Constructors Constructor Description ArrayAccessExpression(long where, Expression right, Expression index)constructor
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description VsetcheckAmbigName(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp, UnaryExpression loc)Check something that might be an AmbiguousName (refman 6.5.2).VsetcheckAssignOp(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp, Expression outside)VsetcheckLHS(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp)VsetcheckValue(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp)Check expression type(package private) voidcodeLoad(Environment env, Context ctx, Assembler asm)(package private) intcodeLValue(Environment env, Context ctx, Assembler asm)Code(package private) voidcodeStore(Environment env, Context ctx, Assembler asm)voidcodeValue(Environment env, Context ctx, Assembler asm)ExpressioncopyInline(Context ctx)Create a copy of the expression for method inliningintcostInline(int thresh, Environment env, Context ctx)The cost of inlining this expressionFieldUpdatergetAssigner(Environment env, Context ctx)An array access expression never requires the use of an access method to perform an assignment to an array element, though an access method may be required to fetch the array object itself.FieldUpdatergetUpdater(Environment env, Context ctx)An array access expression never requires a field updater.Expressioninline(Environment env, Context ctx)InlineExpressioninlineLHS(Environment env, Context ctx)ExpressioninlineValue(Environment env, Context ctx)voidprint(java.io.PrintStream out)Print(package private) TypetoType(Environment env, Type t)(package private) TypetoType(Environment env, Context ctx)Convert to a type-
Methods inherited from class org.glassfish.rmic.tools.tree.UnaryExpression
eval, eval, eval, eval, eval, eval, eval, isConstant, order, selectType
-
Methods inherited from class org.glassfish.rmic.tools.tree.Expression
check, checkCondition, checkCondition, checkInitializer, code, codeAppend, codeBranch, codeConversion, codeDup, ensureString, equals, equals, equals, equals, equalsDefault, firstConstructor, fitsType, fitsType, getImplementation, getType, getValue, inlineValueSB, isNonNull, isNull, precedence, simplify
-
-
-
-
Field Detail
-
index
Expression index
The index expression for the array access. Note that ArrayAccessExpression also `moonlights' as a structure for storing array types (like Object[]) which are used as part of cast expressions. For properly formed array types, the value of index is null. We need to be on the lookout for null indices in true array accesses, and non-null indices in array types. We also need to make sure general purpose methods (like copyInline(), which is called for both) are prepared to handle either null or non-null indices.
-
-
Constructor Detail
-
ArrayAccessExpression
public ArrayAccessExpression(long where, Expression right, Expression index)constructor
-
-
Method Detail
-
checkValue
public Vset checkValue(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp)
Check expression type- Overrides:
checkValuein classUnaryExpression
-
checkAmbigName
public Vset checkAmbigName(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp, UnaryExpression loc)
Description copied from class:ExpressionCheck something that might be an AmbiguousName (refman 6.5.2). A string of dot-separated identifiers might be, in order of preference: If a type name is found, it rewrites itself as a- a variable name followed by fields or types
- a type name followed by fields or types
- a package name followed a type and then fields or types
TypeExpression. If a node decides it can only be a package prefix, it sets its type toType.tPackage. The caller must detect this and act appropriately to verify the full package name.- Overrides:
checkAmbigNamein classExpression
-
checkLHS
public Vset checkLHS(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp)
- Overrides:
checkLHSin classExpression
-
checkAssignOp
public Vset checkAssignOp(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp, Expression outside)
- Overrides:
checkAssignOpin classExpression
-
getAssigner
public FieldUpdater getAssigner(Environment env, Context ctx)
An array access expression never requires the use of an access method to perform an assignment to an array element, though an access method may be required to fetch the array object itself.- Overrides:
getAssignerin classExpression
-
getUpdater
public FieldUpdater getUpdater(Environment env, Context ctx)
An array access expression never requires a field updater.- Overrides:
getUpdaterin classExpression
-
toType
Type toType(Environment env, Context ctx)
Convert to a type- Overrides:
toTypein classExpression
-
toType
Type toType(Environment env, Type t)
-
inline
public Expression inline(Environment env, Context ctx)
Inline- Overrides:
inlinein classUnaryExpression
-
inlineValue
public Expression inlineValue(Environment env, Context ctx)
- Overrides:
inlineValuein classUnaryExpression
-
inlineLHS
public Expression inlineLHS(Environment env, Context ctx)
- Overrides:
inlineLHSin classExpression
-
copyInline
public Expression copyInline(Context ctx)
Create a copy of the expression for method inlining- Overrides:
copyInlinein classUnaryExpression
-
costInline
public int costInline(int thresh, Environment env, Context ctx)The cost of inlining this expression- Overrides:
costInlinein classUnaryExpression
-
codeLValue
int codeLValue(Environment env, Context ctx, Assembler asm)
Code- Overrides:
codeLValuein classExpression
-
codeLoad
void codeLoad(Environment env, Context ctx, Assembler asm)
- Overrides:
codeLoadin classExpression
-
codeStore
void codeStore(Environment env, Context ctx, Assembler asm)
- Overrides:
codeStorein classExpression
-
codeValue
public void codeValue(Environment env, Context ctx, Assembler asm)
- Overrides:
codeValuein classExpression
-
print
public void print(java.io.PrintStream out)
Print- Overrides:
printin classUnaryExpression
-
-