Package org.glassfish.rmic.tools.tree
Class Statement
- java.lang.Object
-
- org.glassfish.rmic.tools.tree.Node
-
- org.glassfish.rmic.tools.tree.Statement
-
- All Implemented Interfaces:
java.lang.Cloneable,Constants,RuntimeConstants
- Direct Known Subclasses:
BreakStatement,CaseStatement,CatchStatement,CompoundStatement,ContinueStatement,DeclarationStatement,DoStatement,ExpressionStatement,FinallyStatement,ForStatement,IfStatement,InlineReturnStatement,ReturnStatement,SwitchStatement,SynchronizedStatement,ThrowStatement,TryStatement,VarDeclarationStatement,WhileStatement
public class Statement extends Node
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 static VsetDEAD_ENDstatic StatementemptyAn empty statement.(package private) Identifier[]labelsstatic intMAXINLINECOSTThe largest possible interesting inline cost value.-
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 Statement(int op, long where)Constructor
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) Vsetcheck(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp)(package private) VsetcheckBlockStatement(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp)This is called in contexts where declarations are valid.(package private) VsetcheckDeclaration(Environment env, Context ctx, Vset vset, int mod, Type t, java.util.Hashtable<java.lang.Object,java.lang.Object> exp)protected voidcheckLabel(Environment env, Context ctx)Make sure the labels on this statement do not duplicate the labels on any enclosing statement.VsetcheckMethod(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp)Check a statementvoidcode(Environment env, Context ctx, Assembler asm)Code(package private) voidcodeFinally(Environment env, Context ctx, Assembler asm, Context stopctx, Type save)Generate the code to call all finally's for a break, continue, or return statement.StatementcopyInline(Context ctx, boolean valNeeded)Create a copy of the statement for method inliningintcostInline(int thresh, Environment env, Context ctx)Statementeliminate(Environment env, Statement s)Eliminate this statement, which is only possible if it has no label.ExpressionfirstConstructor()Check if the first thing is a constructor invocationbooleanhasLabel(Identifier lbl)Statementinline(Environment env, Context ctx)Inlinestatic StatementinsertStatement(Statement s1, Statement s2)Insert a bit of code at the front of a statement.voidprint(java.io.PrintStream out)Printvoidprint(java.io.PrintStream out, int indent)(package private) voidprintIndent(java.io.PrintStream out, int indent)Print(package private) Vsetreach(Environment env, Vset vset)voidsetLabel(Environment env, Expression e)Set the label of a statement
-
-
-
Field Detail
-
DEAD_END
public static final Vset DEAD_END
-
labels
Identifier[] labels
-
empty
public static final Statement empty
An empty statement. Its costInline is infinite.
-
MAXINLINECOST
public static final int MAXINLINECOST
The largest possible interesting inline cost value.
-
-
Method Detail
-
insertStatement
public static Statement insertStatement(Statement s1, Statement s2)
Insert a bit of code at the front of a statement. Side-effect s2, if it is a CompoundStatement.
-
setLabel
public void setLabel(Environment env, Expression e)
Set the label of a statement
-
checkMethod
public Vset checkMethod(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp)
Check a statement
-
checkDeclaration
Vset checkDeclaration(Environment env, Context ctx, Vset vset, int mod, Type t, java.util.Hashtable<java.lang.Object,java.lang.Object> exp)
-
checkLabel
protected void checkLabel(Environment env, Context ctx)
Make sure the labels on this statement do not duplicate the labels on any enclosing statement. Provided as a convenience for subclasses.
-
check
Vset check(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp)
-
checkBlockStatement
Vset checkBlockStatement(Environment env, Context ctx, Vset vset, java.util.Hashtable<java.lang.Object,java.lang.Object> exp)
This is called in contexts where declarations are valid.
-
reach
Vset reach(Environment env, Vset vset)
-
inline
public Statement inline(Environment env, Context ctx)
Inline
-
eliminate
public Statement eliminate(Environment env, Statement s)
Eliminate this statement, which is only possible if it has no label.
-
code
public void code(Environment env, Context ctx, Assembler asm)
Code
-
codeFinally
void codeFinally(Environment env, Context ctx, Assembler asm, Context stopctx, Type save)
Generate the code to call all finally's for a break, continue, or return statement. We must call "jsr" on all the cleanup code between the current context "ctx", and the destination context "stopctx". If 'save' isn't null, there is also a value on the top of the stack
-
hasLabel
public boolean hasLabel(Identifier lbl)
-
firstConstructor
public Expression firstConstructor()
Check if the first thing is a constructor invocation
-
copyInline
public Statement copyInline(Context ctx, boolean valNeeded)
Create a copy of the statement for method inlining
-
costInline
public int costInline(int thresh, Environment env, Context ctx)
-
printIndent
void printIndent(java.io.PrintStream out, int indent)Print
-
print
public void print(java.io.PrintStream out, int indent)
-
-