Package org.glassfish.rmic.tools.tree
Class IdentifierExpression
- java.lang.Object
-
- org.glassfish.rmic.tools.tree.Node
-
- org.glassfish.rmic.tools.tree.Expression
-
- org.glassfish.rmic.tools.tree.IdentifierExpression
-
- All Implemented Interfaces:
java.lang.Cloneable,Constants,RuntimeConstants
public class IdentifierExpression extends Expression
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) MemberDefinitionfield(package private) Identifierid(package private) Expressionimplementation-
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 IdentifierExpression(long where, Identifier id)ConstructorIdentifierExpression(long where, MemberDefinition field)IdentifierExpression(IdentifierToken id)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private Vsetassign(Environment env, Context ctx, Vset vset)Assign a value to this identifier.(package private) booleanbind(Environment env, Context ctx)Bind to a fieldVsetcheckAmbigName(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp, UnaryExpression loc)Check if the present name is part of a scoping prefix.VsetcheckAssignOp(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp, Expression outside)Check the expression if it appears on the LHS of an op= expressionVsetcheckLHS(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp)Check the expression if it appears on the LHS of an assignmentVsetcheckValue(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp)Check expression(package private) voidcodeLoad(Environment env, Context ctx, Assembler asm)(package private) intcodeLValue(Environment env, Context ctx, Assembler asm)Code local vars (object fields have been inlined away)(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 expression.booleanequals(Identifier id)Check if the expression is equal to a valueprivate Vsetget(Environment env, Context ctx, Vset vset)Get the value of this identifier.FieldUpdatergetAssigner(Environment env, Context ctx)Return an accessor if one is needed for assignments to this expression.ExpressiongetImplementation()Type checking may assign a more complex implementation to an innocuous-looking expression (like an identifier).FieldUpdatergetUpdater(Environment env, Context ctx)Return an updater if one is needed for assignments to this expression.Expressioninline(Environment env, Context ctx)InlineExpressioninlineLHS(Environment env, Context ctx)ExpressioninlineValue(Environment env, Context ctx)booleanisConstant()Check if constant: Will it inline away?voidprint(java.io.PrintStream out)Printprivate ClassDefinitiontoResolvedType(Environment env, Context ctx, boolean pkgOK)Convert an identifier to a known type, or null.(package private) TypetoType(Environment env, Context ctx)Convert an identifier to a type.-
Methods inherited from class org.glassfish.rmic.tools.tree.Expression
check, checkCondition, checkCondition, checkInitializer, code, codeAppend, codeBranch, codeConversion, codeDup, ensureString, equals, equals, equals, equalsDefault, eval, firstConstructor, fitsType, fitsType, getType, getValue, inlineValueSB, isNonNull, isNull, order, precedence, simplify
-
-
-
-
Field Detail
-
id
Identifier id
-
field
MemberDefinition field
-
implementation
Expression implementation
-
-
Constructor Detail
-
IdentifierExpression
public IdentifierExpression(long where, Identifier id)Constructor
-
IdentifierExpression
public IdentifierExpression(IdentifierToken id)
-
IdentifierExpression
public IdentifierExpression(long where, MemberDefinition field)
-
-
Method Detail
-
getImplementation
public Expression getImplementation()
Description copied from class:ExpressionType checking may assign a more complex implementation to an innocuous-looking expression (like an identifier). Return that implementation, or the original expression itself if there is no special implementation.This 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.
- Overrides:
getImplementationin classExpression
-
equals
public boolean equals(Identifier id)
Check if the expression is equal to a value- Overrides:
equalsin classExpression
-
assign
private Vset assign(Environment env, Context ctx, Vset vset)
Assign a value to this identifier. [It must already be "bound"]
-
get
private Vset get(Environment env, Context ctx, Vset vset)
Get the value of this identifier. [ It must already be "bound"]
-
bind
boolean bind(Environment env, Context ctx)
Bind to a field
-
checkValue
public Vset checkValue(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp)
Check expression- Overrides:
checkValuein classExpression
-
checkLHS
public Vset checkLHS(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp)
Check the expression if it appears on the LHS of an assignment- 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)
Check the expression if it appears on the LHS of an op= expression- Overrides:
checkAssignOpin classExpression
-
getAssigner
public FieldUpdater getAssigner(Environment env, Context ctx)
Return an accessor if one is needed for assignments to this expression.- Overrides:
getAssignerin classExpression
-
getUpdater
public FieldUpdater getUpdater(Environment env, Context ctx)
Return an updater if one is needed for assignments to this expression.- Overrides:
getUpdaterin classExpression
-
checkAmbigName
public Vset checkAmbigName(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp, UnaryExpression loc)
Check if the present name is part of a scoping prefix.- Overrides:
checkAmbigNamein classExpression
-
toResolvedType
private ClassDefinition toResolvedType(Environment env, Context ctx, boolean pkgOK)
Convert an identifier to a known type, or null.
-
toType
Type toType(Environment env, Context ctx)
Convert an identifier to a type. If one is not known, use the current package as a qualifier.- Overrides:
toTypein classExpression
-
isConstant
public boolean isConstant()
Check if constant: Will it inline away?- Overrides:
isConstantin classExpression
-
inline
public Expression inline(Environment env, Context ctx)
Inline- Overrides:
inlinein classExpression
-
inlineValue
public Expression inlineValue(Environment env, Context ctx)
- Overrides:
inlineValuein classExpression
-
inlineLHS
public Expression inlineLHS(Environment env, Context ctx)
- Overrides:
inlineLHSin classExpression
-
copyInline
public Expression copyInline(Context ctx)
Description copied from class:ExpressionCreate a copy of the expression for method inlining- Overrides:
copyInlinein classExpression
-
costInline
public int costInline(int thresh, Environment env, Context ctx)Description copied from class:ExpressionThe cost of inlining this expression. This cost controls the inlining of methods, and does not determine the compile-time simplifications performed by 'inline' and friends.- Overrides:
costInlinein classExpression
-
codeLValue
int codeLValue(Environment env, Context ctx, Assembler asm)
Code local vars (object fields have been inlined away)- 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 classExpression
-
-