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