Package org.glassfish.rmic.tools.tree
Class MethodExpression
- 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.NaryExpression
-
- org.glassfish.rmic.tools.tree.MethodExpression
-
- All Implemented Interfaces:
java.lang.Cloneable
,Constants
,RuntimeConstants
public class MethodExpression extends NaryExpression
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) ClassDefinition
clazz
(package private) MemberDefinition
field
(package private) Identifier
id
(package private) Expression
implementation
private boolean
isSuper
(package private) static int
MAXINLINECOST
Inline-
Fields inherited from class org.glassfish.rmic.tools.tree.NaryExpression
args
-
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 MethodExpression(long where, Expression right, Identifier id, Expression[] args)
constructorMethodExpression(long where, Expression right, MemberDefinition field, Expression[] args)
MethodExpression(long where, Expression right, MemberDefinition field, Expression[] args, boolean forceSuper)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Vset
check(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp)
Check void expressionVset
checkValue(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp)
Check expression typevoid
codeValue(Environment env, Context ctx, Assembler asm)
CodeExpression
copyInline(Context ctx)
Create a copy of the expression for method inliningint
costInline(int thresh, Environment env, Context ctx)
The cost of inlining this expression(package private) boolean
diagnoseMismatch(Environment env, Expression[] args, Type[] argTypes)
We're about to report a "unmatched method" error.Expression
firstConstructor()
Check if the first thing is a constructor invocationExpression
getImplementation()
Type checking may assign a more complex implementation to an innocuous-looking expression (like an identifier).Expression
inline(Environment env, Context ctx)
Inlineprivate Expression
inlineMethod(Environment env, Context ctx, Statement s, boolean valNeeded)
Expression
inlineValue(Environment env, Context ctx)
private Expression
makeVarInits(Environment env, Context ctx)
void
print(java.io.PrintStream out)
Print-
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
checkAmbigName, checkAssignOp, checkCondition, checkCondition, checkInitializer, checkLHS, code, codeAppend, codeBranch, codeConversion, codeDup, codeLoad, codeLValue, codeStore, ensureString, equals, equals, equals, equals, equalsDefault, fitsType, fitsType, getAssigner, getType, getUpdater, getValue, inlineLHS, inlineValueSB, isNonNull, isNull, precedence, simplify, toType
-
-
-
-
Field Detail
-
id
Identifier id
-
clazz
ClassDefinition clazz
-
field
MemberDefinition field
-
implementation
Expression implementation
-
isSuper
private boolean isSuper
-
MAXINLINECOST
static final int MAXINLINECOST
Inline
-
-
Constructor Detail
-
MethodExpression
public MethodExpression(long where, Expression right, Identifier id, Expression[] args)
constructor
-
MethodExpression
public MethodExpression(long where, Expression right, MemberDefinition field, Expression[] args)
-
MethodExpression
public MethodExpression(long where, Expression right, MemberDefinition field, Expression[] args, boolean forceSuper)
-
-
Method Detail
-
getImplementation
public Expression getImplementation()
Description copied from class:Expression
Type 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:
getImplementation
in classExpression
-
checkValue
public Vset checkValue(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp)
Check expression type- Overrides:
checkValue
in classUnaryExpression
-
check
public Vset check(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp)
Check void expression- Overrides:
check
in classExpression
-
diagnoseMismatch
boolean diagnoseMismatch(Environment env, Expression[] args, Type[] argTypes) throws ClassNotFound
We're about to report a "unmatched method" error. Try to issue a better diagnostic by comparing the actual argument types with the method (or methods) available. In particular, if there is an argument which fails to match any method, we report a type mismatch error against that particular argument. The diagnostic will report a target type taken from one of the methods.Return false if we couldn't think of anything smart to say.
- Throws:
ClassNotFound
-
inlineMethod
private Expression inlineMethod(Environment env, Context ctx, Statement s, boolean valNeeded)
-
inline
public Expression inline(Environment env, Context ctx)
Description copied from class:UnaryExpression
Inline- Overrides:
inline
in classUnaryExpression
-
inlineValue
public Expression inlineValue(Environment env, Context ctx)
- Overrides:
inlineValue
in classUnaryExpression
-
copyInline
public Expression copyInline(Context ctx)
Description copied from class:NaryExpression
Create a copy of the expression for method inlining- Overrides:
copyInline
in classNaryExpression
-
costInline
public int costInline(int thresh, Environment env, Context ctx)
Description copied from class:NaryExpression
The cost of inlining this expression- Overrides:
costInline
in classNaryExpression
-
makeVarInits
private Expression makeVarInits(Environment env, Context ctx)
-
codeValue
public void codeValue(Environment env, Context ctx, Assembler asm)
Code- Overrides:
codeValue
in classExpression
-
firstConstructor
public Expression firstConstructor()
Check if the first thing is a constructor invocation- Overrides:
firstConstructor
in classExpression
-
print
public void print(java.io.PrintStream out)
Print- Overrides:
print
in classNaryExpression
-
-