public class FieldExpression extends UnaryExpression
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, WHILEACC_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 and Description |
|---|
FieldExpression(long where,
Expression right,
Identifier id)
constructor
|
FieldExpression(long where,
Expression right,
MemberDefinition field) |
| Modifier and Type | Method and Description |
|---|---|
Vset |
checkAmbigName(Environment env,
Context ctx,
Vset vset,
Hashtable<Object,Object> exp,
UnaryExpression loc)
Check if the present name is part of a scoping prefix.
|
Vset |
checkAssignOp(Environment env,
Context ctx,
Vset vset,
Hashtable<Object,Object> exp,
Expression outside)
Check the expression if it appears on the LHS of an op= expression
|
static Vset |
checkFinalAssign(Environment env,
Context ctx,
Vset vset,
long where,
MemberDefinition field)
There is a simple assignment being made to the given final field.
|
Vset |
checkLHS(Environment env,
Context ctx,
Vset vset,
Hashtable<Object,Object> exp)
Check the expression if it appears on the LHS of an assignment
|
Vset |
checkValue(Environment env,
Context ctx,
Vset vset,
Hashtable<Object,Object> exp)
Check the expression
|
void |
codeValue(Environment env,
Context ctx,
Assembler asm) |
Expression |
copyInline(Context ctx)
Create a copy of the expression for method inlining
|
int |
costInline(int thresh,
Environment env,
Context ctx)
The cost of inlining this expression
|
org.glassfish.rmic.tools.tree.FieldUpdater |
getAssigner(Environment env,
Context ctx)
Return a
FieldUpdater object to be used in updating the
value of the location denoted by this, which must be an
expression suitable for the left-hand side of an assignment. |
Expression |
getImplementation()
Type checking may assign a more complex implementation
to an innocuous-looking expression (like an identifier).
|
org.glassfish.rmic.tools.tree.FieldUpdater |
getUpdater(Environment env,
Context ctx)
Return a
FieldUpdater object to be used in updating the
value of the location denoted by this, which must be an
expression suitable for the left-hand side of an assignment. |
Expression |
inline(Environment env,
Context ctx)
Inline
|
Expression |
inlineLHS(Environment env,
Context ctx) |
Expression |
inlineValue(Environment env,
Context ctx) |
boolean |
isConstant()
Check if constant: Will it inline away?
|
void |
print(PrintStream out)
Print
|
static Identifier |
toIdentifier(Expression e)
Convert an '.' expression to a qualified identifier
|
ordercheck, checkCondition, checkCondition, checkInitializer, code, equals, equals, equals, equals, equalsDefault, firstConstructor, fitsType, fitsType, getType, getValue, inlineValueSB, isNonNull, isNullpublic FieldExpression(long where,
Expression right,
Identifier id)
public FieldExpression(long where,
Expression right,
MemberDefinition field)
public Expression getImplementation()
ExpressionThis appears at present to be dead code, and is not called from within javac. Access to the implementation generally occurs within the same class, and thus uses the underlying field directly.
getImplementation in class Expressionpublic static Identifier toIdentifier(Expression e)
public Vset checkAmbigName(Environment env, Context ctx, Vset vset, Hashtable<Object,Object> exp, UnaryExpression loc)
checkAmbigName in class Expressionpublic Vset checkValue(Environment env, Context ctx, Vset vset, Hashtable<Object,Object> exp)
checkValue in class UnaryExpressionpublic org.glassfish.rmic.tools.tree.FieldUpdater getAssigner(Environment env, Context ctx)
FieldUpdater object to be used in updating the
value of the location denoted by this, which must be an
expression suitable for the left-hand side of an assignment.
This is used for implementing assignments to private fields for which
an access method is required. Returns null if no access method is
needed, in which case the assignment is handled in the usual way, by
direct access. Only simple assignment expressions are handled here
Assignment operators and pre/post increment/decrement operators are
are handled by 'getUpdater' below.
Must be called after 'checkValue', else 'right' will be invalid.
getAssigner in class Expressionpublic org.glassfish.rmic.tools.tree.FieldUpdater getUpdater(Environment env, Context ctx)
FieldUpdater object to be used in updating the
value of the location denoted by this, which must be an
expression suitable for the left-hand side of an assignment. This is
used for implementing the assignment operators and the increment and
decrement operators on private fields that are accessed from another
class, e.g, uplevel from an inner class. Returns null if no access
method is needed.
Must be called after 'checkValue', else 'right' will be invalid.
getUpdater in class Expressionpublic Vset checkLHS(Environment env, Context ctx, Vset vset, Hashtable<Object,Object> exp)
checkLHS in class Expressionpublic Vset checkAssignOp(Environment env, Context ctx, Vset vset, Hashtable<Object,Object> exp, Expression outside)
checkAssignOp in class Expressionpublic static Vset checkFinalAssign(Environment env, Context ctx, Vset vset, long where, MemberDefinition field)
Blank final variables can be set in initializers or constructor bodies. In all cases there must be definite single assignment. (All instance and instance variable initializers and each constructor body are treated as if concatenated for the purposes of this check. Assignment to "this.x" is treated as a definite assignment to the simple name "x" which names the instance variable.)
public boolean isConstant()
isConstant in class UnaryExpressionpublic Expression inline(Environment env, Context ctx)
inline in class UnaryExpressionpublic Expression inlineValue(Environment env, Context ctx)
inlineValue in class UnaryExpressionpublic Expression inlineLHS(Environment env, Context ctx)
inlineLHS in class Expressionpublic Expression copyInline(Context ctx)
UnaryExpressioncopyInline in class UnaryExpressionpublic int costInline(int thresh,
Environment env,
Context ctx)
costInline in class UnaryExpressionpublic void codeValue(Environment env, Context ctx, Assembler asm)
codeValue in class Expressionpublic void print(PrintStream out)
print in class UnaryExpressionCopyright © 2017–2021 Eclipse Foundation. All rights reserved.