at.dms.kjc.rstream
Class FlatIRToRS
java.lang.Object
at.dms.kjc.KjcEmptyVisitor
at.dms.kjc.SLIREmptyVisitor
at.dms.kjc.common.ToCCommon
at.dms.kjc.common.ToC
at.dms.kjc.rstream.FlatIRToRS
- All Implemented Interfaces:
- Constants, CodeGenerator, KjcVisitor, SLIRVisitor
public class FlatIRToRS
- extends ToC
This class converts the Stream IR (which references the Kopi Java IR)
to C code and dumps it to a file, str.c.
- Author:
- Michael Gordon
| Fields inherited from interface at.dms.kjc.Constants |
CMP_VERSION, JAV_CLASS, JAV_CLONE, JAV_CLONEABLE, JAV_CONSTRUCTOR, JAV_ERROR, JAV_EXCEPTION, JAV_INIT, JAV_LENGTH, JAV_NAME_SEPARATOR, JAV_OBJECT, JAV_OUTER_THIS, JAV_RUNTIME, JAV_RUNTIME_EXCEPTION, JAV_STATIC_INIT, JAV_STRING, JAV_STRINGBUFFER, JAV_THIS, JAV_THROWABLE, OPE_BAND, OPE_BNOT, OPE_BOR, OPE_BSR, OPE_BXOR, OPE_EQ, OPE_GE, OPE_GT, OPE_LE, OPE_LNOT, OPE_LT, OPE_MINUS, OPE_NE, OPE_PERCENT, OPE_PLUS, OPE_POSTDEC, OPE_POSTINC, OPE_PREDEC, OPE_PREINC, OPE_SIMPLE, OPE_SL, OPE_SLASH, OPE_SR, OPE_STAR, TID_ARRAY, TID_BIT, TID_BOOLEAN, TID_BYTE, TID_CHAR, TID_CLASS, TID_DOUBLE, TID_FLOAT, TID_INT, TID_LONG, TID_SHORT, TID_VECTOR, TID_VOID, VECTOR_EMPTY |
| Fields inherited from interface at.dms.classfile.Constants |
ACC_ABSTRACT, ACC_FINAL, ACC_INLINE, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, ATT_CODE, ATT_CONSTANTVALUE, ATT_DEPRECATED, ATT_EXCEPTIONS, ATT_GENERIC, ATT_INNERCLASSES, ATT_LINENUMBERTABLE, ATT_LOCALVARIABLETABLE, ATT_SOURCEFILE, ATT_SYNTHETIC, CST_CLASS, CST_DOUBLE, CST_FIELD, CST_FLOAT, CST_INTEGER, CST_INTERFACEMETHOD, CST_LONG, CST_METHOD, CST_NAMEANDTYPE, CST_STRING, CST_UTF8, ENV_DEBUG_MODE, ENV_USE_CACHE, JAVA_MAGIC, JAVA_MAJOR, JAVA_MINOR, MAX_CODE_PER_METHOD, 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_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_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_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_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_wide, opc_xxxunusedxxx, POO_ASCII_CONSTANT, POO_CLASS_CONSTANT, POO_DOUBLE_CONSTANT, POO_FLOAT_CONSTANT, POO_INTEGER_CONSTANT, POO_LONG_CONSTANT, POO_NAT_CONSTANT, POO_REF_CONSTANT, POO_STRING_CONSTANT, TYP_ADDRESS, TYP_DOUBLE, TYP_FLOAT, TYP_INT, TYP_LONG, TYP_REFERENCE, TYP_VOID |
|
Method Summary |
JExpression |
passParentheses(JExpression exp)
|
void |
postVisitFeedbackLoop(SIRFeedbackLoop self,
SIRFeedbackLoopIter iter)
|
void |
postVisitPipeline(SIRPipeline self,
SIRPipelineIter iter)
POST-VISITS |
void |
postVisitSplitJoin(SIRSplitJoin self,
SIRSplitJoinIter iter)
|
void |
preVisitFeedbackLoop(SIRFeedbackLoop self,
SIRFeedbackLoopIter iter)
|
void |
preVisitPipeline(SIRPipeline self,
SIRPipelineIter iter)
|
void |
preVisitSplitJoin(SIRSplitJoin self,
SIRSplitJoinIter iter)
|
protected void |
print(CType s)
|
protected void |
stackAllocateArray(String str)
|
void |
visitArrayAccessExpression(JArrayAccessExpression self,
JExpression prefix,
JExpression accessor)
prints an array access expression |
void |
visitAssignmentExpression(JAssignmentExpression self,
JExpression left,
JExpression right)
prints an assignment expression |
void |
visitBlockStatement(JBlock self,
JavaStyleComment[] comments)
prints an expression statement |
void |
visitCastExpression(JCastExpression self,
JExpression expr,
CType type)
prints a cast expression |
void |
visitComment(JavaStyleComment comment)
prints an array length expression |
void |
visitComments(JavaStyleComment[] comments)
prints an array length expression |
void |
visitDoLoopStatement(JDoLoopStatement self)
|
void |
visitEmptyStatement(JEmptyStatement self)
prints a empty statement |
void |
visitFieldDeclaration(JFieldDeclaration self,
int modifiers,
CType type,
String ident,
JExpression expr)
prints a field declaration |
void |
visitForStatement(JForStatement self,
JStatement init,
JExpression cond,
JStatement incr,
JStatement body)
prints a for statement |
void |
visitMethodCallExpression(JMethodCallExpression self,
JExpression prefix,
String ident,
JExpression[] args)
prints a method call expression |
void |
visitMethodDeclaration(JMethodDeclaration self,
int modifiers,
CType returnType,
String ident,
JFormalParameter[] parameters,
CClassType[] exceptions,
JBlock body)
prints a method declaration |
void |
visitPeekExpression(SIRPeekExpression self,
CType tapeType,
JExpression num)
Visits a peek expression. |
void |
visitPhasedFilter(SIRPhasedFilter self,
SIRPhasedFilterIter iter)
|
void |
visitPopExpression(SIRPopExpression self,
CType tapeType)
Visits a pop expression. |
void |
visitPushExpression(SIRPushExpression self,
CType tapeType,
JExpression val)
Visits a push expression. |
void |
visitVariableDefinition(JVariableDefinition self,
int modifiers,
CType type,
String ident,
JExpression expr)
prints a variable declaration statement |
| Methods inherited from class at.dms.kjc.common.ToC |
clear, declareInitializedArray, isDeclOnly, setDeclOnly, visitArgs, visitArrayInitializer, visitArrayLengthExpression, visitBinaryExpression, visitBitwiseExpression, visitBooleanLiteral, visitByteLiteral, visitCharLiteral, visitConstructorCall, visitCreatePortalExpression, visitDoubleLiteral, visitFieldExpression, visitFloatLiteral, visitFormalParameters, visitIfStatement, visitInitStatement, visitInterfaceTable, visitIntLiteral, visitLatency, visitLatencyMax, visitLatencyRange, visitLatencySet, visitLongLiteral, visitMessageStatement, visitNameExpression, visitNullLiteral, visitRelationalExpression, visitShortLiteral, visitStringLiteral, visitSuperExpression, visitSwitchGroup, visitSwitchLabel, visitThisExpression |
| Methods inherited from class at.dms.kjc.common.ToCCommon |
getPrinter, makeArrayStrings, makeString, printDecl, printExp, printLParen, printRParen, printType, splitForPrint, visitBitwiseComplementExpression, visitBreakStatement, visitClassExpression, visitCompoundAssignmentExpression, visitCompoundStatement, visitCompoundStatement, visitConditionalExpression, visitContinueStatement, visitDoStatement, visitEmittedTextExpression, visitEqualityExpression, visitExpressionListStatement, visitExpressionStatement, visitLabeledStatement, visitLocalVariableExpression, visitLogicalComplementExpression, visitMarker, visitParenthesedExpression, visitPostfixExpression, visitPrefixExpression, visitPrintStatement, visitReturnStatement, visitShiftExpression, visitSwitchStatement, visitTypeDeclarationStatement, visitTypeNameExpression, visitUnaryMinusExpression, visitUnaryPlusExpression, visitUnaryPromoteExpression, visitVariableDeclarationStatement, visitWhileStatement |
| Methods inherited from class at.dms.kjc.SLIREmptyVisitor |
visitDynamicToken, visitFileReader, visitFileWriter, visitFunctionPointer, visitIdentity, visitInlineAssembly, visitMainFunction, visitNode, visitPortal, visitRangeExpression, visitRegisterReceiver, visitRegReceiverStatement, visitRegSenderStatement, visitSetBodyOfFeedback, visitSetChild, visitSetDecode, visitSetDelay, visitSetEncode, visitSetJoiner, visitSetLoopOfFeedback, visitSetParallelStream, visitSetPeek, visitSetPop, visitSetPush, visitSetSplitter, visitSetStreamType, visitSetTape, visitSetWork, visitVectorLiteral, visitWorkEntry, visitWorkExit |
| Methods inherited from class at.dms.kjc.KjcEmptyVisitor |
visitArgs, visitCatchClause, visitClassBody, visitClassDeclaration, visitClassImport, visitCompilationUnit, visitConstructorDeclaration, visitInnerClassDeclaration, visitInstanceofExpression, visitInterfaceDeclaration, visitJavadoc, visitNewArrayExpression, visitPackageImport, visitPackageName, visitQualifiedAnonymousCreation, visitQualifiedInstanceCreation, visitSynchronizedStatement, visitThrowStatement, visitTryCatchStatement, visitTryFinallyStatement, visitUnqualifiedAnonymousCreation, visitUnqualifiedInstanceCreation |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
doLoops
public int doLoops
staticDoLoops
public int staticDoLoops
FlatIRToRS
public FlatIRToRS()
visitAssignmentExpression
public void visitAssignmentExpression(JAssignmentExpression self,
JExpression left,
JExpression right)
- prints an assignment expression
- Specified by:
visitAssignmentExpression in interface KjcVisitor- Overrides:
visitAssignmentExpression in class KjcEmptyVisitor
visitFieldDeclaration
public void visitFieldDeclaration(JFieldDeclaration self,
int modifiers,
CType type,
String ident,
JExpression expr)
- prints a field declaration
- Specified by:
visitFieldDeclaration in interface KjcVisitor- Overrides:
visitFieldDeclaration in class ToC
visitVariableDefinition
public void visitVariableDefinition(JVariableDefinition self,
int modifiers,
CType type,
String ident,
JExpression expr)
- prints a variable declaration statement
- Specified by:
visitVariableDefinition in interface KjcVisitor- Overrides:
visitVariableDefinition in class KjcEmptyVisitor
visitBlockStatement
public void visitBlockStatement(JBlock self,
JavaStyleComment[] comments)
- prints an expression statement
- Specified by:
visitBlockStatement in interface KjcVisitor- Overrides:
visitBlockStatement in class ToCCommon
visitMethodDeclaration
public void visitMethodDeclaration(JMethodDeclaration self,
int modifiers,
CType returnType,
String ident,
JFormalParameter[] parameters,
CClassType[] exceptions,
JBlock body)
- prints a method declaration
- Specified by:
visitMethodDeclaration in interface KjcVisitor- Overrides:
visitMethodDeclaration in class KjcEmptyVisitor
visitDoLoopStatement
public void visitDoLoopStatement(JDoLoopStatement self)
visitForStatement
public void visitForStatement(JForStatement self,
JStatement init,
JExpression cond,
JStatement incr,
JStatement body)
- prints a for statement
- Specified by:
visitForStatement in interface KjcVisitor- Overrides:
visitForStatement in class ToCCommon
visitArrayAccessExpression
public void visitArrayAccessExpression(JArrayAccessExpression self,
JExpression prefix,
JExpression accessor)
- prints an array access expression
- Specified by:
visitArrayAccessExpression in interface KjcVisitor- Overrides:
visitArrayAccessExpression in class ToC
visitMethodCallExpression
public void visitMethodCallExpression(JMethodCallExpression self,
JExpression prefix,
String ident,
JExpression[] args)
- prints a method call expression
- Specified by:
visitMethodCallExpression in interface KjcVisitor- Overrides:
visitMethodCallExpression in class KjcEmptyVisitor
passParentheses
public JExpression passParentheses(JExpression exp)
- Overrides:
passParentheses in class ToC
visitPeekExpression
public void visitPeekExpression(SIRPeekExpression self,
CType tapeType,
JExpression num)
- Description copied from class:
SLIREmptyVisitor
- Visits a peek expression.
- Specified by:
visitPeekExpression in interface SLIRVisitor- Overrides:
visitPeekExpression in class SLIREmptyVisitor
visitPopExpression
public void visitPopExpression(SIRPopExpression self,
CType tapeType)
- Description copied from class:
SLIREmptyVisitor
- Visits a pop expression.
- Specified by:
visitPopExpression in interface SLIRVisitor- Overrides:
visitPopExpression in class SLIREmptyVisitor
visitPushExpression
public void visitPushExpression(SIRPushExpression self,
CType tapeType,
JExpression val)
- Description copied from class:
SLIREmptyVisitor
- Visits a push expression.
- Specified by:
visitPushExpression in interface SLIRVisitor- Overrides:
visitPushExpression in class SLIREmptyVisitor
print
protected void print(CType s)
visitComments
public void visitComments(JavaStyleComment[] comments)
- Description copied from class:
KjcEmptyVisitor
- prints an array length expression
- Specified by:
visitComments in interface KjcVisitor- Overrides:
visitComments in class KjcEmptyVisitor
visitComment
public void visitComment(JavaStyleComment comment)
- Description copied from class:
KjcEmptyVisitor
- prints an array length expression
- Specified by:
visitComment in interface KjcVisitor- Overrides:
visitComment in class KjcEmptyVisitor
visitCastExpression
public void visitCastExpression(JCastExpression self,
JExpression expr,
CType type)
- prints a cast expression
- Specified by:
visitCastExpression in interface KjcVisitor- Overrides:
visitCastExpression in class ToCCommon
preVisitPipeline
public void preVisitPipeline(SIRPipeline self,
SIRPipelineIter iter)
preVisitSplitJoin
public void preVisitSplitJoin(SIRSplitJoin self,
SIRSplitJoinIter iter)
preVisitFeedbackLoop
public void preVisitFeedbackLoop(SIRFeedbackLoop self,
SIRFeedbackLoopIter iter)
postVisitPipeline
public void postVisitPipeline(SIRPipeline self,
SIRPipelineIter iter)
- POST-VISITS
postVisitSplitJoin
public void postVisitSplitJoin(SIRSplitJoin self,
SIRSplitJoinIter iter)
postVisitFeedbackLoop
public void postVisitFeedbackLoop(SIRFeedbackLoop self,
SIRFeedbackLoopIter iter)
visitPhasedFilter
public void visitPhasedFilter(SIRPhasedFilter self,
SIRPhasedFilterIter iter)
stackAllocateArray
protected void stackAllocateArray(String str)
visitEmptyStatement
public void visitEmptyStatement(JEmptyStatement self)
- prints a empty statement
- Specified by:
visitEmptyStatement in interface KjcVisitor- Overrides:
visitEmptyStatement in class ToCCommon