diff options
author | bd-912 <bdunahu@colostate.edu> | 2024-05-03 17:50:02 -0600 |
---|---|---|
committer | bd-912 <bdunahu@colostate.edu> | 2024-05-03 17:50:02 -0600 |
commit | 8b481ec08efa60d462897a98bec3f6761c2933d1 (patch) | |
tree | 04e43861a364b8a9fe052057412f0c852c3ce334 | |
parent | e8be6dd157bed1b09312aa360ec8ee2f41813d0f (diff) |
Move creating temporaries to Expression statements in BoilVisitor
35 files changed, 4976 insertions, 3046 deletions
diff --git a/boil/BoilVisitor.java b/boil/BoilVisitor.java index 0d1d721..db0392d 100644 --- a/boil/BoilVisitor.java +++ b/boil/BoilVisitor.java @@ -6,14 +6,13 @@ import st.*; import misc.*; import java.util.*; -public class BoilVisitor extends GJDepthFirst<String,String> { +public class BoilVisitor extends GJDepthFirst<String,ArrayList<String>> { private String vapor; private TypeFactory tf; // the shared type generator private int id; private SymbolTable symt; - private MethodInstance recentMethod = null; // the most recent method called private ClassInstance recentClass = null; public BoilVisitor(SymbolTable symt) { @@ -68,7 +67,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { // // Auto class visitors--probably don't need to be overridden. // - public String visit(NodeList n, String argu) { + public String visit(NodeList n, ArrayList<String> argu) { String _ret=""; int _count=0; for ( Enumeration<Node> e = n.elements(); e.hasMoreElements(); ) { @@ -78,7 +77,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { return _ret; } - public String visit(NodeListOptional n, String argu) { + public String visit(NodeListOptional n, ArrayList<String> argu) { if ( n.present() ) { String _ret=""; int _count=0; @@ -92,14 +91,14 @@ public class BoilVisitor extends GJDepthFirst<String,String> { return ""; } - public String visit(NodeOptional n, String argu) { + public String visit(NodeOptional n, ArrayList<String> argu) { if ( n.present() ) return n.node.accept(this,argu); else return ""; } - public String visit(NodeSequence n, String argu) { + public String visit(NodeSequence n, ArrayList<String> argu) { String _ret=null; int _count=0; for ( Enumeration<Node> e = n.elements(); e.hasMoreElements(); ) { @@ -109,7 +108,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { return _ret; } - public String visit(NodeToken n, String argu) { + public String visit(NodeToken n, ArrayList<String> argu) { return null; } @@ -122,7 +121,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f1 -> ( TypeDeclaration() )* * f2 -> <EOF> */ - public String visit(Goal n, String argu) { + public String visit(Goal n, ArrayList<String> argu) { String _ret=null; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); @@ -159,7 +158,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f16 -> "}" * f17 -> "}" */ - public String visit(MainClass n, String argu) { + public String visit(MainClass n, ArrayList<String> argu) { String _ret=null; this.tf.reset(); String id = n.f1.f0.tokenImage; @@ -188,7 +187,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f0 -> ClassDeclaration() * | ClassExtendsDeclaration() */ - public String visit(TypeDeclaration n, String argu) { + public String visit(TypeDeclaration n, ArrayList<String> argu) { String _ret=null; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); @@ -209,7 +208,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f4 -> ( MethodDeclaration() )* * f5 -> "}" */ - public String visit(ClassDeclaration n, String argu) { + public String visit(ClassDeclaration n, ArrayList<String> argu) { String _ret=null; String id = n.f1.f0.tokenImage; MinimalLogger.info(String.format("-> %s (%s)", @@ -242,7 +241,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f6 -> ( MethodDeclaration() )* * f7 -> "}" */ - public String visit(ClassExtendsDeclaration n, String argu) { + public String visit(ClassExtendsDeclaration n, ArrayList<String> argu) { String _ret=null; String id = n.f1.f0.tokenImage; MinimalLogger.info(String.format("-> %s (%s)", @@ -271,7 +270,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f1 -> Identifier() * f2 -> ";" */ - public String visit(VarDeclaration n, String argu) { + public String visit(VarDeclaration n, ArrayList<String> argu) { String _ret=null; String id = n.f1.f0.tokenImage; MinimalLogger.info(String.format("-> %s (%s)", @@ -301,7 +300,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f11 -> ";" * f12 -> "}" */ - public String visit(MethodDeclaration n, String argu) { + public String visit(MethodDeclaration n, ArrayList<String> argu) { String _ret=null; this.tf.reset(); String id = n.f2.f0.tokenImage; @@ -337,7 +336,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f0 -> FormalParameter() * f1 -> ( FormalParameterRest() )* */ - public String visit(FormalParameterList n, String argu) { + public String visit(FormalParameterList n, ArrayList<String> argu) { String _ret=""; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); @@ -355,7 +354,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f0 -> Type() * f1 -> Identifier() */ - public String visit(FormalParameter n, String argu) { + public String visit(FormalParameter n, ArrayList<String> argu) { String _ret=""; String id = n.f1.f0.tokenImage; MinimalLogger.info(String.format("-> %s (%s)", @@ -375,7 +374,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f0 -> "," * f1 -> FormalParameter() */ - public String visit(FormalParameterRest n, String argu) { + public String visit(FormalParameterRest n, ArrayList<String> argu) { String _ret=""; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); @@ -394,7 +393,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * | IntegerType() * | Identifier() */ - public String visit(Type n, String argu) { + public String visit(Type n, ArrayList<String> argu) { String _ret=null; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); @@ -412,7 +411,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f1 -> "[" * f2 -> "]" */ - public String visit(ArrayType n, String argu) { + public String visit(ArrayType n, ArrayList<String> argu) { String _ret=null; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); @@ -427,7 +426,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { /** * f0 -> "boolean" */ - public String visit(BooleanType n, String argu) { + public String visit(BooleanType n, ArrayList<String> argu) { String _ret=null; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); @@ -442,7 +441,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { /** * f0 -> "int" */ - public String visit(IntegerType n, String argu) { + public String visit(IntegerType n, ArrayList<String> argu) { String _ret=null; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); @@ -462,7 +461,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * | WhileStatement() * | PrintStatement() */ - public String visit(Statement n, String argu) { + public String visit(Statement n, ArrayList<String> argu) { String _ret=""; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); @@ -480,7 +479,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f1 -> ( Statement() )* * f2 -> "}" */ - public String visit(Block n, String argu) { + public String visit(Block n, ArrayList<String> argu) { String _ret=null; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); @@ -499,7 +498,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f2 -> Expression() * f3 -> ";" */ - public String visit(AssignmentStatement n, String argu) { + public String visit(AssignmentStatement n, ArrayList<String> argu) { String _ret=null; String id = n.f0.f0.tokenImage; MinimalLogger.info(String.format("-> %s", @@ -536,7 +535,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f5 -> Expression() * f6 -> ";" */ - public String visit(ArrayAssignmentStatement n, String argu) { + public String visit(ArrayAssignmentStatement n, ArrayList<String> argu) { String _ret=null; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); @@ -582,7 +581,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f5 -> "else" * f6 -> Statement() */ - public String visit(IfStatement n, String argu) { + public String visit(IfStatement n, ArrayList<String> argu) { String _ret=null; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); @@ -622,7 +621,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f3 -> ")" * f4 -> Statement() */ - public String visit(WhileStatement n, String argu) { + public String visit(WhileStatement n, ArrayList<String> argu) { String _ret=null; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); @@ -661,7 +660,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f3 -> ")" * f4 -> ";" */ - public String visit(PrintStatement n, String argu) { + public String visit(PrintStatement n, ArrayList<String> argu) { String _ret=null; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); @@ -695,12 +694,12 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * | PrimaryExpression() */ // Expressions return a TYPE alias which is equal to the expression! - public String visit(Expression n, String argu) { + public String visit(Expression n, ArrayList<String> argu) { String _ret=""; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); /////////////////////////////////////////////////////////////// - _ret += n.f0.accept(this, argu); + _ret += this.memoryRead(n.f0.accept(this, argu)); /////////////////////////////////////////////////////////////// MinimalLogger.info(String.format("<- %s with %s", n.getClass().getSimpleName(), @@ -714,14 +713,14 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f2 -> PrimaryExpression() */ // Expressions return a TYPE alias which is equal to the expression! - public String visit(AndExpression n, String argu) { + public String visit(AndExpression n, ArrayList<String> argu) { String _ret=""; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); _ret += this.tf.alias(this.getUniqueID()); /////////////////////////////////////////////////////////////// - String oper1 = this.memoryRead(n.f0.accept(this, argu)); - String oper2 = this.memoryRead(n.f2.accept(this, argu)); + String oper1 = n.f0.accept(this, argu); + String oper2 = n.f2.accept(this, argu); String one = this.tf.alias(this.getUniqueID()); this.addVapor(String.format(" %s = Eq(1 %s)\n", one, @@ -747,14 +746,14 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f2 -> PrimaryExpression() */ // Expressions return a TYPE alias which is equal to the expression! - public String visit(CompareExpression n, String argu) { + public String visit(CompareExpression n, ArrayList<String> argu) { String _ret=""; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); _ret += this.tf.alias(this.getUniqueID()); /////////////////////////////////////////////////////////////// - String oper1 = this.memoryRead(n.f0.accept(this, argu)); - String oper2 = this.memoryRead(n.f2.accept(this, argu)); + String oper1 = n.f0.accept(this, argu); + String oper2 = n.f2.accept(this, argu); this.addVapor(String.format(" %s = LtS(%s %s)\n", _ret, oper1, @@ -772,14 +771,14 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f2 -> PrimaryExpression() */ // Expressions return a TYPE alias which is equal to the expression! - public String visit(PlusExpression n, String argu) { + public String visit(PlusExpression n, ArrayList<String> argu) { String _ret=""; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); _ret += this.tf.alias(this.getUniqueID()); /////////////////////////////////////////////////////////////// - String oper1 = this.memoryRead(n.f0.accept(this, argu)); - String oper2 = this.memoryRead(n.f2.accept(this, argu)); + String oper1 = n.f0.accept(this, argu); + String oper2 = n.f2.accept(this, argu); this.addVapor(String.format(" %s = Add(%s %s)\n", _ret, oper1, @@ -797,14 +796,14 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f2 -> PrimaryExpression() */ // Expressions return a TYPE alias which is equal to the expression! - public String visit(MinusExpression n, String argu) { + public String visit(MinusExpression n, ArrayList<String> argu) { String _ret=""; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); _ret += this.tf.alias(this.getUniqueID()); /////////////////////////////////////////////////////////////// - String oper1 = this.memoryRead(n.f0.accept(this, argu)); - String oper2 = this.memoryRead(n.f2.accept(this, argu)); + String oper1 = n.f0.accept(this, argu); + String oper2 = n.f2.accept(this, argu); this.addVapor(String.format(" %s = Sub(%s %s)\n", _ret, oper1, @@ -822,14 +821,14 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f2 -> PrimaryExpression() */ // Expressions return a TYPE alias which is equal to the expression! - public String visit(TimesExpression n, String argu) { + public String visit(TimesExpression n, ArrayList<String> argu) { String _ret=""; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); _ret += this.tf.alias(this.getUniqueID()); /////////////////////////////////////////////////////////////// - String oper1 = this.memoryRead(n.f0.accept(this, argu)); - String oper2 = this.memoryRead(n.f2.accept(this, argu)); + String oper1 = n.f0.accept(this, argu); + String oper2 = n.f2.accept(this, argu); this.addVapor(String.format(" %s = MulS(%s %s)\n", _ret, oper1, @@ -848,7 +847,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f3 -> "]" */ // Expressions return a TYPE alias which is equal to the expression! - public String visit(ArrayLookup n, String argu) { + public String visit(ArrayLookup n, ArrayList<String> argu) { String _ret=""; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); @@ -888,7 +887,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f2 -> "length" */ // Expressions return a TYPE alias which is equal to the expression! - public String visit(ArrayLength n, String argu) { + public String visit(ArrayLength n, ArrayList<String> argu) { String _ret=""; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); @@ -918,12 +917,13 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f5 -> ")" */ // Expressions return a TYPE alias which is equal to the expression! - public String visit(MessageSend n, String argu) { + public String visit(MessageSend n, ArrayList<String> argu) { String _ret=""; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); /////////////////////////////////////////////////////////////// _ret += this.tf.alias(this.getUniqueID()); + ArrayList<String> args = new ArrayList<String>(); String mtd = n.f2.f0.tokenImage; String rhs; TypeInstance t; @@ -951,7 +951,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { int mtdIndex = cur.getMethods() .indexOf(this.symt.getMethod(mtd, cur)) * 4; - this.addVapor(n.f4.accept(this, argu)); + n.f4.accept(this, args); this.addVapor(String.format(" %s = [%s+%d]\n", rhs, rhs, @@ -959,11 +959,11 @@ public class BoilVisitor extends GJDepthFirst<String,String> { this.addVapor(String.format(" %s = call %s(this", _ret, rhs)); - this.addVapor(String.format(" %s)\n", - this.tf.retrieveRecentList(this.symt.getMethod(mtd, cur) - .getArguments() - .size()))); - this.recentMethod = this.symt.getMethod(mtd, cur); + for (String arg : args) + this.addVapor(String.format(" %s", + arg)); + this.addVapor(")\n"); + this.recentClass = this.symt.getMethod(mtd, cur).getReturn(); return _ret; case 6: MinimalLogger.info("Message send found ANONYMOUS"); @@ -980,7 +980,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { case 8: MinimalLogger.info("Message send found BRACKET"); rhs = n.f0.accept(this, argu); - ClassInstance cls = this.recentMethod.getReturn(); + ClassInstance cls = this.recentClass; t = new TypeInstance(this.getUniqueID(), null, (MethodInstance) this.symt.getActive(TypeEnum.method), (ClassInstance) this.symt.getActive(TypeEnum.classname)); @@ -1009,7 +1009,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { MinimalLogger.severe("mtd: " + mtd); MinimalLogger.severe("t.getClassInstance() " + t.getClassInstance()); MinimalLogger.severe("t.getClassInstance().getMethods() " + t.getClassInstance().getMethods().toString()); - this.recentMethod = this.symt.getMethod(mtd, t.getClassInstance()); + this.recentClass = this.symt.getMethod(mtd, t.getClassInstance()).getReturn(); int mtdIndex = t.getClassInstance().getMethods() .indexOf(this.symt.getMethod(mtd, t.getClassInstance())) * 4; @@ -1018,17 +1018,17 @@ public class BoilVisitor extends GJDepthFirst<String,String> { tp1, mtdIndex)); - this.addVapor(n.f4.accept(this, argu)); + n.f4.accept(this, args); this.addVapor(String.format(" %s = call %s(%s", _ret, tp2, this.tf.alias(t.getName()))); - this.addVapor(String.format(" %s)\n", - this.tf.retrieveRecentList(this.symt.getMethod(mtd, t.getClassInstance()) - .getArguments() - .size()))); + for (String arg : args) + this.addVapor(String.format(" %s", + arg)); + this.addVapor(")\n"); /////////////////////////////////////////////////////////////// MinimalLogger.info(String.format("<- %s with %s", n.getClass().getSimpleName(), @@ -1040,16 +1040,14 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f0 -> Expression() * f1 -> ( ExpressionRest() )* */ - public String visit(ExpressionList n, String argu) { + public String visit(ExpressionList n, ArrayList<String> argu) { String _ret=""; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); /////////////////////////////////////////////////////////////// String rhs = n.f0.accept(this, argu); - _ret += String.format(" %s = %s\n", - this.tf.alias(this.getUniqueID()), - rhs); - _ret += n.f1.accept(this, argu); + argu.add(rhs); + n.f1.accept(this, argu); /////////////////////////////////////////////////////////////// MinimalLogger.info(String.format("<- %s with %s", n.getClass().getSimpleName(), @@ -1061,15 +1059,13 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f0 -> "," * f1 -> Expression() */ - public String visit(ExpressionRest n, String argu) { + public String visit(ExpressionRest n, ArrayList<String> argu) { String _ret=""; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); /////////////////////////////////////////////////////////////// String rhs = n.f1.accept(this, argu); - _ret += String.format(" %s = %s\n", - this.tf.alias(this.getUniqueID()), - rhs); + argu.add(rhs); /////////////////////////////////////////////////////////////// MinimalLogger.info(String.format("<- %s with %s", n.getClass().getSimpleName(), @@ -1088,12 +1084,12 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * | NotExpression() * | BracketExpression() */ - public String visit(PrimaryExpression n, String argu) { + public String visit(PrimaryExpression n, ArrayList<String> argu) { String _ret=""; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); /////////////////////////////////////////////////////////////// - _ret += n.f0.accept(this, argu); + _ret += this.memoryRead(n.f0.accept(this, argu)); /////////////////////////////////////////////////////////////// MinimalLogger.info(String.format("<- %s with %s", n.getClass().getSimpleName(), @@ -1104,7 +1100,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { /** * f0 -> <INTEGER_LITERAL> */ - public String visit(IntegerLiteral n, String argu) { + public String visit(IntegerLiteral n, ArrayList<String> argu) { String _ret=""; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); @@ -1120,7 +1116,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { /** * f0 -> "true" */ - public String visit(TrueLiteral n, String argu) { + public String visit(TrueLiteral n, ArrayList<String> argu) { String _ret=""; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); @@ -1136,7 +1132,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { /** * f0 -> "false" */ - public String visit(FalseLiteral n, String argu) { + public String visit(FalseLiteral n, ArrayList<String> argu) { String _ret=""; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); @@ -1152,7 +1148,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { /** * f0 -> <IDENTIFIER> */ - public String visit(Identifier n, String argu) { + public String visit(Identifier n, ArrayList<String> argu) { String _ret=""; String id = n.f0.tokenImage; MinimalLogger.info(String.format("-> %s (%s)", @@ -1181,7 +1177,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { /** * f0 -> "this" */ - public String visit(ThisExpression n, String argu) { + public String visit(ThisExpression n, ArrayList<String> argu) { String _ret=""; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); @@ -1201,7 +1197,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f3 -> Expression() * f4 -> "]" */ - public String visit(ArrayAllocationExpression n, String argu) { + public String visit(ArrayAllocationExpression n, ArrayList<String> argu) { String _ret=""; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); @@ -1226,7 +1222,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f2 -> "(" * f3 -> ")" */ - public String visit(AllocationExpression n, String argu) { + public String visit(AllocationExpression n, ArrayList<String> argu) { String _ret=""; String id = n.f1.f0.tokenImage; MinimalLogger.info(String.format("-> %s", @@ -1253,7 +1249,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f0 -> "!" * f1 -> Expression() */ - public String visit(NotExpression n, String argu) { + public String visit(NotExpression n, ArrayList<String> argu) { String _ret=""; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); @@ -1274,7 +1270,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f1 -> Expression() * f2 -> ")" */ - public String visit(BracketExpression n, String argu) { + public String visit(BracketExpression n, ArrayList<String> argu) { String _ret=""; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); diff --git a/boil/TypeFactory.java b/boil/TypeFactory.java index d5b61f3..224d8a3 100644 --- a/boil/TypeFactory.java +++ b/boil/TypeFactory.java @@ -31,21 +31,4 @@ public class TypeFactory { return alias; } - public String retrieveRecentList(int x) { - /** - * Given int x, retrieve a space-delimited - * list of the x most recent entries. - */ - String rtn = ""; - if (x > 0) { - rtn += String.format("t.%d", - type_num-x); - for (int i = type_num-(x-1); i < type_num; ++i) { - rtn += String.format(" t.%d", - i); - } - } - - return rtn; - } } diff --git a/misc/MinimalSimpleFormatter.java b/misc/MinimalSimpleFormatter.java index 741863d..a325185 100644 --- a/misc/MinimalSimpleFormatter.java +++ b/misc/MinimalSimpleFormatter.java @@ -7,7 +7,7 @@ import java.util.logging.SimpleFormatter; public class MinimalSimpleFormatter extends SimpleFormatter { @Override public String format(LogRecord record) { - if (false) + if (true) return record.getLevel() + ": " + formatMessage(record) + "\n"; else return ""; diff --git a/output/BinaryTree.vapor b/output/BinaryTree.vapor index 60719bf..7deadd8 100644 --- a/output/BinaryTree.vapor +++ b/output/BinaryTree.vapor @@ -2,11 +2,13 @@ func Main() t.3 = HeapAllocZ(4) [t.3+0] = :functable_BT t.4 = t.3 - t.5 = [t.4+0] + t.5 = t.4 t.6 = [t.5+0] - t.2 = call t.6(t.4 ) - t.7 = t.2 - PrintIntS(t.7) + t.7 = [t.6+0] + t.2 = call t.7(t.5) + t.8 = t.2 + t.9 = t.8 + PrintIntS(t.9) ret const functable_BT @@ -15,127 +17,186 @@ const functable_BT func BT_Start(this ) t.2 = HeapAllocZ(104) [t.2+0] = :functable_Tree - t.1 = t.2 - t.1 = t.1 - t.5 = [t.1+0] - t.6 = [t.5+0] - t.7 = 16 - t.4 = call t.6(t.1 t.7) - t.3 = t.4 - t.1 = t.1 - t.9 = [t.1+0] - t.10 = [t.9+72] - t.8 = call t.10(t.1 ) - t.3 = t.8 - t.11 = 100000000 - PrintIntS(t.11) - t.1 = t.1 - t.13 = [t.1+0] - t.14 = [t.13+48] - t.15 = 8 - t.12 = call t.14(t.1 t.15) - t.3 = t.12 - t.1 = t.1 - t.17 = [t.1+0] - t.18 = [t.17+72] - t.16 = call t.18(t.1 ) - t.3 = t.16 - t.1 = t.1 - t.20 = [t.1+0] - t.21 = [t.20+48] - t.22 = 24 - t.19 = call t.21(t.1 t.22) - t.3 = t.19 - t.1 = t.1 - t.24 = [t.1+0] - t.25 = [t.24+48] - t.26 = 4 - t.23 = call t.25(t.1 t.26) - t.3 = t.23 - t.1 = t.1 - t.28 = [t.1+0] - t.29 = [t.28+48] - t.30 = 12 - t.27 = call t.29(t.1 t.30) - t.3 = t.27 - t.1 = t.1 - t.32 = [t.1+0] - t.33 = [t.32+48] - t.34 = 20 - t.31 = call t.33(t.1 t.34) - t.3 = t.31 - t.1 = t.1 - t.36 = [t.1+0] - t.37 = [t.36+48] - t.38 = 28 - t.35 = call t.37(t.1 t.38) - t.3 = t.35 - t.1 = t.1 - t.40 = [t.1+0] - t.41 = [t.40+48] - t.42 = 14 - t.39 = call t.41(t.1 t.42) - t.3 = t.39 - t.1 = t.1 - t.44 = [t.1+0] - t.45 = [t.44+72] - t.43 = call t.45(t.1 ) - t.3 = t.43 - t.1 = t.1 - t.47 = [t.1+0] - t.48 = [t.47+68] - t.49 = 24 - t.46 = call t.48(t.1 t.49) - t.50 = t.46 - PrintIntS(t.50) - t.1 = t.1 - t.52 = [t.1+0] - t.53 = [t.52+68] - t.54 = 12 - t.51 = call t.53(t.1 t.54) - t.55 = t.51 - PrintIntS(t.55) - t.1 = t.1 - t.57 = [t.1+0] - t.58 = [t.57+68] - t.59 = 16 - t.56 = call t.58(t.1 t.59) - t.60 = t.56 - PrintIntS(t.60) - t.1 = t.1 - t.62 = [t.1+0] - t.63 = [t.62+68] - t.64 = 50 - t.61 = call t.63(t.1 t.64) - t.65 = t.61 - PrintIntS(t.65) - t.1 = t.1 - t.67 = [t.1+0] - t.68 = [t.67+68] - t.69 = 12 - t.66 = call t.68(t.1 t.69) - t.70 = t.66 - PrintIntS(t.70) - t.1 = t.1 - t.72 = [t.1+0] - t.73 = [t.72+52] - t.74 = 12 - t.71 = call t.73(t.1 t.74) - t.3 = t.71 - t.1 = t.1 - t.76 = [t.1+0] - t.77 = [t.76+72] - t.75 = call t.77(t.1 ) - t.3 = t.75 - t.1 = t.1 - t.79 = [t.1+0] - t.80 = [t.79+68] - t.81 = 12 - t.78 = call t.80(t.1 t.81) - t.82 = t.78 - PrintIntS(t.82) - t.83 = 0 - ret t.83 + t.3 = t.2 + t.4 = t.3 + t.1 = t.4 + t.7 = t.1 + t.1 = t.7 + t.8 = [t.1+0] + t.9 = [t.8+0] + t.10 = 16 + t.11 = t.10 + t.6 = call t.9(t.1 t.11) + t.12 = t.6 + t.5 = t.12 + t.14 = t.1 + t.1 = t.14 + t.15 = [t.1+0] + t.16 = [t.15+72] + t.13 = call t.16(t.1) + t.17 = t.13 + t.5 = t.17 + t.18 = 100000000 + t.19 = t.18 + t.20 = t.19 + PrintIntS(t.20) + t.22 = t.1 + t.1 = t.22 + t.23 = [t.1+0] + t.24 = [t.23+48] + t.25 = 8 + t.26 = t.25 + t.21 = call t.24(t.1 t.26) + t.27 = t.21 + t.5 = t.27 + t.29 = t.1 + t.1 = t.29 + t.30 = [t.1+0] + t.31 = [t.30+72] + t.28 = call t.31(t.1) + t.32 = t.28 + t.5 = t.32 + t.34 = t.1 + t.1 = t.34 + t.35 = [t.1+0] + t.36 = [t.35+48] + t.37 = 24 + t.38 = t.37 + t.33 = call t.36(t.1 t.38) + t.39 = t.33 + t.5 = t.39 + t.41 = t.1 + t.1 = t.41 + t.42 = [t.1+0] + t.43 = [t.42+48] + t.44 = 4 + t.45 = t.44 + t.40 = call t.43(t.1 t.45) + t.46 = t.40 + t.5 = t.46 + t.48 = t.1 + t.1 = t.48 + t.49 = [t.1+0] + t.50 = [t.49+48] + t.51 = 12 + t.52 = t.51 + t.47 = call t.50(t.1 t.52) + t.53 = t.47 + t.5 = t.53 + t.55 = t.1 + t.1 = t.55 + t.56 = [t.1+0] + t.57 = [t.56+48] + t.58 = 20 + t.59 = t.58 + t.54 = call t.57(t.1 t.59) + t.60 = t.54 + t.5 = t.60 + t.62 = t.1 + t.1 = t.62 + t.63 = [t.1+0] + t.64 = [t.63+48] + t.65 = 28 + t.66 = t.65 + t.61 = call t.64(t.1 t.66) + t.67 = t.61 + t.5 = t.67 + t.69 = t.1 + t.1 = t.69 + t.70 = [t.1+0] + t.71 = [t.70+48] + t.72 = 14 + t.73 = t.72 + t.68 = call t.71(t.1 t.73) + t.74 = t.68 + t.5 = t.74 + t.76 = t.1 + t.1 = t.76 + t.77 = [t.1+0] + t.78 = [t.77+72] + t.75 = call t.78(t.1) + t.79 = t.75 + t.5 = t.79 + t.81 = t.1 + t.1 = t.81 + t.82 = [t.1+0] + t.83 = [t.82+68] + t.84 = 24 + t.85 = t.84 + t.80 = call t.83(t.1 t.85) + t.86 = t.80 + t.87 = t.86 + PrintIntS(t.87) + t.89 = t.1 + t.1 = t.89 + t.90 = [t.1+0] + t.91 = [t.90+68] + t.92 = 12 + t.93 = t.92 + t.88 = call t.91(t.1 t.93) + t.94 = t.88 + t.95 = t.94 + PrintIntS(t.95) + t.97 = t.1 + t.1 = t.97 + t.98 = [t.1+0] + t.99 = [t.98+68] + t.100 = 16 + t.101 = t.100 + t.96 = call t.99(t.1 t.101) + t.102 = t.96 + t.103 = t.102 + PrintIntS(t.103) + t.105 = t.1 + t.1 = t.105 + t.106 = [t.1+0] + t.107 = [t.106+68] + t.108 = 50 + t.109 = t.108 + t.104 = call t.107(t.1 t.109) + t.110 = t.104 + t.111 = t.110 + PrintIntS(t.111) + t.113 = t.1 + t.1 = t.113 + t.114 = [t.1+0] + t.115 = [t.114+68] + t.116 = 12 + t.117 = t.116 + t.112 = call t.115(t.1 t.117) + t.118 = t.112 + t.119 = t.118 + PrintIntS(t.119) + t.121 = t.1 + t.1 = t.121 + t.122 = [t.1+0] + t.123 = [t.122+52] + t.124 = 12 + t.125 = t.124 + t.120 = call t.123(t.1 t.125) + t.126 = t.120 + t.5 = t.126 + t.128 = t.1 + t.1 = t.128 + t.129 = [t.1+0] + t.130 = [t.129+72] + t.127 = call t.130(t.1) + t.131 = t.127 + t.5 = t.131 + t.133 = t.1 + t.1 = t.133 + t.134 = [t.1+0] + t.135 = [t.134+68] + t.136 = 12 + t.137 = t.136 + t.132 = call t.135(t.1 t.137) + t.138 = t.132 + t.139 = t.138 + PrintIntS(t.139) + t.140 = 0 + t.141 = t.140 + t.142 = t.141 + ret t.142 const functable_Tree :Tree_Init @@ -160,600 +221,885 @@ const functable_Tree :Tree_RecPrint func Tree_Init(this t.0 ) - [this+88] = t.0 - [this+92] = 0 - [this+96] = 0 - t.1 = 1 - ret t.1 + t.1 = t.0 + t.2 = t.1 + [this+88] = t.2 + t.3 = 0 + t.4 = t.3 + [this+92] = t.4 + t.5 = 0 + t.6 = t.5 + [this+96] = t.6 + t.7 = 1 + t.8 = t.7 + t.9 = t.8 + ret t.9 func Tree_SetRight(this t.0 ) - [this+84] = t.0 - t.1 = 1 - ret t.1 + t.1 = t.0 + t.2 = t.1 + [this+84] = t.2 + t.3 = 1 + t.4 = t.3 + t.5 = t.4 + ret t.5 func Tree_SetLeft(this t.0 ) - [this+80] = t.0 - t.1 = 1 - ret t.1 + t.1 = t.0 + t.2 = t.1 + [this+80] = t.2 + t.3 = 1 + t.4 = t.3 + t.5 = t.4 + ret t.5 func Tree_GetRight(this ) t.0 = [this+84] - ret t.0 + t.1 = t.0 + t.2 = t.1 + ret t.2 func Tree_GetLeft(this ) t.0 = [this+80] - ret t.0 + t.1 = t.0 + t.2 = t.1 + ret t.2 func Tree_GetKey(this ) t.0 = [this+88] - ret t.0 + t.1 = t.0 + t.2 = t.1 + ret t.2 func Tree_SetKey(this t.0 ) - [this+88] = t.0 - t.1 = 1 - ret t.1 + t.1 = t.0 + t.2 = t.1 + [this+88] = t.2 + t.3 = 1 + t.4 = t.3 + t.5 = t.4 + ret t.5 func Tree_GetHas_Right(this ) t.0 = [this+96] - ret t.0 + t.1 = t.0 + t.2 = t.1 + ret t.2 func Tree_GetHas_Left(this ) t.0 = [this+92] - ret t.0 + t.1 = t.0 + t.2 = t.1 + ret t.2 func Tree_SetHas_Left(this t.0 ) - [this+92] = t.0 - t.1 = 1 - ret t.1 + t.1 = t.0 + t.2 = t.1 + [this+92] = t.2 + t.3 = 1 + t.4 = t.3 + t.5 = t.4 + ret t.5 func Tree_SetHas_Right(this t.0 ) - [this+96] = t.0 - t.1 = 1 - ret t.1 + t.1 = t.0 + t.2 = t.1 + [this+96] = t.2 + t.3 = 1 + t.4 = t.3 + t.5 = t.4 + ret t.5 func Tree_Compare(this t.0 t.1 ) - t.2 = 0 - t.5 = t.1 - t.6 = 1 - t.4 = Add(t.5 t.6) - t.3 = t.4 - t.8 = t.0 - t.9 = t.1 - t.7 = LtS(t.8 t.9) - t.10 = t.7 - if0 t.10 goto :if100_else -if100_body: - t.2 = 0 - goto :if100_end -if100_else: - t.13 = t.0 - t.14 = t.3 - t.12 = LtS(t.13 t.14) - t.11 = Eq(t.12 0) - t.15 = t.11 - if0 t.15 goto :if104_else -if104_body: - t.2 = 0 - goto :if104_end -if104_else: - t.2 = 1 -if104_end: -if100_end: - t.16 = t.2 - ret t.16 + t.3 = 0 + t.4 = t.3 + t.2 = t.4 + t.7 = t.1 + t.8 = 1 + t.6 = Add(t.7 t.8) + t.9 = t.6 + t.5 = t.9 + t.11 = t.0 + t.12 = t.1 + t.10 = LtS(t.11 t.12) + t.13 = t.10 + t.14 = t.13 + if0 t.14 goto :if202_else +if202_body: + t.15 = 0 + t.16 = t.15 + t.2 = t.16 + goto :if202_end +if202_else: + t.19 = t.0 + t.20 = t.5 + t.18 = LtS(t.19 t.20) + t.21 = t.18 + t.22 = t.21 + t.23 = t.22 + t.17 = Eq(t.23 0) + t.24 = t.17 + t.25 = t.24 + t.26 = t.25 + if0 t.26 goto :if209_else +if209_body: + t.27 = 0 + t.28 = t.27 + t.2 = t.28 + goto :if209_end +if209_else: + t.29 = 1 + t.30 = t.29 + t.2 = t.30 +if209_end: +if202_end: + t.31 = t.2 + t.32 = t.31 + t.33 = t.32 + ret t.33 func Tree_Insert(this t.0 ) t.3 = HeapAllocZ(104) [t.3+0] = :functable_Tree - t.2 = t.3 - t.2 = t.2 - t.6 = [t.2+0] - t.7 = [t.6+0] - t.8 = t.0 - t.5 = call t.7(t.2 t.8) - t.4 = t.5 - t.9 = this - t.10 = 1 -while115_test: - t.11 = t.10 - if0 t.11 goto :while115_end -while115_body: - t.9 = t.9 - t.14 = [t.9+0] - t.15 = [t.14+20] - t.13 = call t.15(t.9 ) - t.12 = t.13 - t.17 = t.0 - t.18 = t.12 - t.16 = LtS(t.17 t.18) - t.19 = t.16 - if0 t.19 goto :if120_else -if120_body: - t.9 = t.9 - t.21 = [t.9+0] - t.22 = [t.21+32] - t.20 = call t.22(t.9 ) - t.23 = t.20 - if0 t.23 goto :if124_else -if124_body: - t.9 = t.9 - t.25 = [t.9+0] - t.26 = [t.25+16] - t.24 = call t.26(t.9 ) - t.9 = t.24 - goto :if124_end -if124_else: - t.10 = 0 - t.9 = t.9 - t.28 = [t.9+0] - t.29 = [t.28+36] - t.30 = 1 - t.27 = call t.29(t.9 t.30) - t.4 = t.27 - t.9 = t.9 - t.32 = [t.9+0] - t.33 = [t.32+8] - t.34 = t.2 - t.31 = call t.33(t.9 t.34) - t.4 = t.31 -if124_end: - goto :if120_end -if120_else: - t.9 = t.9 - t.36 = [t.9+0] - t.37 = [t.36+28] - t.35 = call t.37(t.9 ) - t.38 = t.35 - if0 t.38 goto :if139_else -if139_body: - t.9 = t.9 - t.40 = [t.9+0] - t.41 = [t.40+12] - t.39 = call t.41(t.9 ) - t.9 = t.39 - goto :if139_end -if139_else: - t.10 = 0 - t.9 = t.9 - t.43 = [t.9+0] - t.44 = [t.43+40] - t.45 = 1 - t.42 = call t.44(t.9 t.45) - t.4 = t.42 - t.9 = t.9 - t.47 = [t.9+0] - t.48 = [t.47+4] - t.49 = t.2 - t.46 = call t.48(t.9 t.49) - t.4 = t.46 -if139_end: -if120_end: - goto :while115_test -while115_end: - t.50 = 1 - ret t.50 + t.4 = t.3 + t.5 = t.4 + t.2 = t.5 + t.8 = t.2 + t.2 = t.8 + t.9 = [t.2+0] + t.10 = [t.9+0] + t.11 = t.0 + t.12 = t.11 + t.7 = call t.10(t.2 t.12) + t.13 = t.7 + t.6 = t.13 + t.15 = this + t.16 = t.15 + t.14 = t.16 + t.18 = 1 + t.19 = t.18 + t.17 = t.19 +while240_test: + t.20 = t.17 + t.21 = t.20 + t.22 = t.21 + if0 t.22 goto :while240_end +while240_body: + t.25 = t.14 + t.14 = t.25 + t.26 = [t.14+0] + t.27 = [t.26+20] + t.24 = call t.27(t.14) + t.28 = t.24 + t.23 = t.28 + t.30 = t.0 + t.31 = t.23 + t.29 = LtS(t.30 t.31) + t.32 = t.29 + t.33 = t.32 + if0 t.33 goto :if249_else +if249_body: + t.35 = t.14 + t.14 = t.35 + t.36 = [t.14+0] + t.37 = [t.36+32] + t.34 = call t.37(t.14) + t.38 = t.34 + t.39 = t.38 + if0 t.39 goto :if254_else +if254_body: + t.41 = t.14 + t.14 = t.41 + t.42 = [t.14+0] + t.43 = [t.42+16] + t.40 = call t.43(t.14) + t.44 = t.40 + t.14 = t.44 + goto :if254_end +if254_else: + t.45 = 0 + t.46 = t.45 + t.17 = t.46 + t.48 = t.14 + t.14 = t.48 + t.49 = [t.14+0] + t.50 = [t.49+36] + t.51 = 1 + t.52 = t.51 + t.47 = call t.50(t.14 t.52) + t.53 = t.47 + t.6 = t.53 + t.55 = t.14 + t.14 = t.55 + t.56 = [t.14+0] + t.57 = [t.56+8] + t.58 = t.2 + t.59 = t.58 + t.54 = call t.57(t.14 t.59) + t.60 = t.54 + t.6 = t.60 +if254_end: + goto :if249_end +if249_else: + t.62 = t.14 + t.14 = t.62 + t.63 = [t.14+0] + t.64 = [t.63+28] + t.61 = call t.64(t.14) + t.65 = t.61 + t.66 = t.65 + if0 t.66 goto :if281_else +if281_body: + t.68 = t.14 + t.14 = t.68 + t.69 = [t.14+0] + t.70 = [t.69+12] + t.67 = call t.70(t.14) + t.71 = t.67 + t.14 = t.71 + goto :if281_end +if281_else: + t.72 = 0 + t.73 = t.72 + t.17 = t.73 + t.75 = t.14 + t.14 = t.75 + t.76 = [t.14+0] + t.77 = [t.76+40] + t.78 = 1 + t.79 = t.78 + t.74 = call t.77(t.14 t.79) + t.80 = t.74 + t.6 = t.80 + t.82 = t.14 + t.14 = t.82 + t.83 = [t.14+0] + t.84 = [t.83+4] + t.85 = t.2 + t.86 = t.85 + t.81 = call t.84(t.14 t.86) + t.87 = t.81 + t.6 = t.87 +if281_end: +if249_end: + goto :while240_test +while240_end: + t.88 = 1 + t.89 = t.88 + t.90 = t.89 + ret t.90 func Tree_Delete(this t.0 ) - t.2 = this t.3 = this - t.4 = 1 - t.5 = 0 - t.6 = 1 -while155_test: - t.7 = t.4 - if0 t.7 goto :while155_end -while155_body: - t.2 = t.2 - t.10 = [t.2+0] - t.11 = [t.10+20] - t.9 = call t.11(t.2 ) - t.8 = t.9 - t.13 = t.0 - t.14 = t.8 - t.12 = LtS(t.13 t.14) - t.15 = t.12 - if0 t.15 goto :if160_else -if160_body: - t.2 = t.2 - t.17 = [t.2+0] - t.18 = [t.17+32] - t.16 = call t.18(t.2 ) - t.19 = t.16 - if0 t.19 goto :if164_else -if164_body: - t.3 = t.2 - t.2 = t.2 - t.21 = [t.2+0] - t.22 = [t.21+16] - t.20 = call t.22(t.2 ) - t.2 = t.20 - goto :if164_end -if164_else: - t.4 = 0 -if164_end: - goto :if160_end -if160_else: - t.24 = t.8 - t.25 = t.0 - t.23 = LtS(t.24 t.25) - t.26 = t.23 - if0 t.26 goto :if171_else -if171_body: - t.2 = t.2 - t.28 = [t.2+0] - t.29 = [t.28+28] - t.27 = call t.29(t.2 ) - t.30 = t.27 - if0 t.30 goto :if175_else -if175_body: - t.3 = t.2 - t.2 = t.2 - t.32 = [t.2+0] - t.33 = [t.32+12] - t.31 = call t.33(t.2 ) - t.2 = t.31 - goto :if175_end -if175_else: - t.4 = 0 -if175_end: - goto :if171_end -if171_else: - t.34 = t.6 - if0 t.34 goto :if182_else -if182_body: - t.2 = t.2 - t.38 = [t.2+0] - t.39 = [t.38+28] - t.37 = call t.39(t.2 ) - t.36 = Eq(t.37 0) - t.40 = t.36 - t.2 = t.2 - t.43 = [t.2+0] - t.44 = [t.43+32] - t.42 = call t.44(t.2 ) - t.41 = Eq(t.42 0) - t.45 = t.41 - t.46 = Eq(1 t.40) - t.47 = Eq(1 t.45) - t.35 = Eq(t.46 t.47) - t.48 = t.35 - if0 t.48 goto :if183_else -if183_body: - t.49 = 1 - goto :if183_end -if183_else: - t.51 = [this] - t.52 = t.3 - t.53 = t.2 - t.51 = [t.51+56] - t.50 = call t.51(this t.52 t.53) - t.49 = t.50 -if183_end: - goto :if182_end -if182_else: - t.55 = [this] - t.56 = t.3 + t.4 = t.3 + t.2 = t.4 + t.6 = this + t.7 = t.6 + t.5 = t.7 + t.9 = 1 + t.10 = t.9 + t.8 = t.10 + t.12 = 0 + t.13 = t.12 + t.11 = t.13 + t.15 = 1 + t.16 = t.15 + t.14 = t.16 +while321_test: + t.17 = t.8 + t.18 = t.17 + t.19 = t.18 + if0 t.19 goto :while321_end +while321_body: + t.22 = t.2 + t.2 = t.22 + t.23 = [t.2+0] + t.24 = [t.23+20] + t.21 = call t.24(t.2) + t.25 = t.21 + t.20 = t.25 + t.27 = t.0 + t.28 = t.20 + t.26 = LtS(t.27 t.28) + t.29 = t.26 + t.30 = t.29 + if0 t.30 goto :if330_else +if330_body: + t.32 = t.2 + t.2 = t.32 + t.33 = [t.2+0] + t.34 = [t.33+32] + t.31 = call t.34(t.2) + t.35 = t.31 + t.36 = t.35 + if0 t.36 goto :if335_else +if335_body: + t.37 = t.2 + t.38 = t.37 + t.5 = t.38 + t.40 = t.2 + t.2 = t.40 + t.41 = [t.2+0] + t.42 = [t.41+16] + t.39 = call t.42(t.2) + t.43 = t.39 + t.2 = t.43 + goto :if335_end +if335_else: + t.44 = 0 + t.45 = t.44 + t.8 = t.45 +if335_end: + goto :if330_end +if330_else: + t.47 = t.20 + t.48 = t.0 + t.46 = LtS(t.47 t.48) + t.49 = t.46 + t.50 = t.49 + if0 t.50 goto :if350_else +if350_body: + t.52 = t.2 + t.2 = t.52 + t.53 = [t.2+0] + t.54 = [t.53+28] + t.51 = call t.54(t.2) + t.55 = t.51 + t.56 = t.55 + if0 t.56 goto :if355_else +if355_body: t.57 = t.2 - t.55 = [t.55+56] - t.54 = call t.55(this t.56 t.57) - t.49 = t.54 -if182_end: - t.5 = 1 - t.4 = 0 -if171_end: -if160_end: - t.6 = 0 - goto :while155_test -while155_end: - t.58 = t.5 - ret t.58 + t.58 = t.57 + t.5 = t.58 + t.60 = t.2 + t.2 = t.60 + t.61 = [t.2+0] + t.62 = [t.61+12] + t.59 = call t.62(t.2) + t.63 = t.59 + t.2 = t.63 + goto :if355_end +if355_else: + t.64 = 0 + t.65 = t.64 + t.8 = t.65 +if355_end: + goto :if350_end +if350_else: + t.66 = t.14 + t.67 = t.66 + t.68 = t.67 + if0 t.68 goto :if370_else +if370_body: + t.72 = t.2 + t.2 = t.72 + t.73 = [t.2+0] + t.74 = [t.73+28] + t.71 = call t.74(t.2) + t.75 = t.71 + t.70 = Eq(t.75 0) + t.76 = t.70 + t.77 = t.76 + t.78 = t.77 + t.81 = t.2 + t.2 = t.81 + t.82 = [t.2+0] + t.83 = [t.82+32] + t.80 = call t.83(t.2) + t.84 = t.80 + t.79 = Eq(t.84 0) + t.85 = t.79 + t.86 = t.85 + t.87 = t.86 + t.88 = Eq(1 t.78) + t.89 = Eq(1 t.87) + t.69 = Eq(t.88 t.89) + t.90 = t.69 + t.91 = t.90 + if0 t.91 goto :if373_else +if373_body: + t.93 = 1 + t.94 = t.93 + t.92 = t.94 + goto :if373_end +if373_else: + t.96 = this + t.97 = [this] + t.98 = t.5 + t.99 = t.98 + t.100 = t.2 + t.101 = t.100 + t.97 = [t.97+56] + t.95 = call t.97(this t.99 t.101) + t.102 = t.95 + t.92 = t.102 +if373_end: + goto :if370_end +if370_else: + t.104 = this + t.105 = [this] + t.106 = t.5 + t.107 = t.106 + t.108 = t.2 + t.109 = t.108 + t.105 = [t.105+56] + t.103 = call t.105(this t.107 t.109) + t.110 = t.103 + t.92 = t.110 +if370_end: + t.111 = 1 + t.112 = t.111 + t.11 = t.112 + t.113 = 0 + t.114 = t.113 + t.8 = t.114 +if350_end: +if330_end: + t.115 = 0 + t.116 = t.115 + t.14 = t.116 + goto :while321_test +while321_end: + t.117 = t.11 + t.118 = t.117 + t.119 = t.118 + ret t.119 func Tree_Remove(this t.0 t.1 ) - t.1 = t.1 - t.3 = [t.1+0] - t.4 = [t.3+32] - t.2 = call t.4(t.1 ) - t.5 = t.2 - if0 t.5 goto :if206_else -if206_body: - t.8 = [this] - t.9 = t.0 - t.10 = t.1 - t.8 = [t.8+64] - t.7 = call t.8(this t.9 t.10) - t.6 = t.7 - goto :if206_end -if206_else: - t.1 = t.1 - t.12 = [t.1+0] - t.13 = [t.12+28] - t.11 = call t.13(t.1 ) - t.14 = t.11 - if0 t.14 goto :if214_else -if214_body: - t.16 = [this] - t.17 = t.0 + t.3 = t.1 + t.1 = t.3 + t.4 = [t.1+0] + t.5 = [t.4+32] + t.2 = call t.5(t.1) + t.6 = t.2 + t.7 = t.6 + if0 t.7 goto :if423_else +if423_body: + t.10 = this + t.11 = [this] + t.12 = t.0 + t.13 = t.12 + t.14 = t.1 + t.15 = t.14 + t.11 = [t.11+64] + t.9 = call t.11(this t.13 t.15) + t.16 = t.9 + t.8 = t.16 + goto :if423_end +if423_else: t.18 = t.1 - t.16 = [t.16+60] - t.15 = call t.16(this t.17 t.18) - t.6 = t.15 - goto :if214_end -if214_else: - t.1 = t.1 - t.21 = [t.1+0] - t.22 = [t.21+20] - t.20 = call t.22(t.1 ) - t.19 = t.20 - t.0 = t.0 - t.26 = [t.0+0] - t.27 = [t.26+16] - t.25 = call t.27(t.0 ) - t.28 = t.25 - t.29 = [t.28+0] - t.30 = [t.29+20] - t.24 = call t.30(t.28 ) - t.23 = t.24 - t.32 = [this] - t.33 = t.19 - t.34 = t.23 - t.32 = [t.32+44] - t.31 = call t.32(this t.33 t.34) - t.35 = t.31 - if0 t.35 goto :if232_else -if232_body: - t.0 = t.0 - t.37 = [t.0+0] - t.38 = [t.37+8] - t.39 = [this+100] - t.36 = call t.38(t.0 t.39) - t.6 = t.36 - t.0 = t.0 + t.1 = t.18 + t.19 = [t.1+0] + t.20 = [t.19+28] + t.17 = call t.20(t.1) + t.21 = t.17 + t.22 = t.21 + if0 t.22 goto :if437_else +if437_body: + t.24 = this + t.25 = [this] + t.26 = t.0 + t.27 = t.26 + t.28 = t.1 + t.29 = t.28 + t.25 = [t.25+60] + t.23 = call t.25(this t.27 t.29) + t.30 = t.23 + t.8 = t.30 + goto :if437_end +if437_else: + t.33 = t.1 + t.1 = t.33 + t.34 = [t.1+0] + t.35 = [t.34+20] + t.32 = call t.35(t.1) + t.36 = t.32 + t.31 = t.36 + t.40 = t.0 + t.0 = t.40 t.41 = [t.0+0] - t.42 = [t.41+36] - t.43 = 0 - t.40 = call t.42(t.0 t.43) - t.6 = t.40 - goto :if232_end -if232_else: - t.0 = t.0 - t.45 = [t.0+0] - t.46 = [t.45+4] - t.47 = [this+100] - t.44 = call t.46(t.0 t.47) - t.6 = t.44 - t.0 = t.0 - t.49 = [t.0+0] - t.50 = [t.49+40] - t.51 = 0 - t.48 = call t.50(t.0 t.51) - t.6 = t.48 -if232_end: -if214_end: -if206_end: - t.52 = 1 - ret t.52 + t.42 = [t.41+16] + t.39 = call t.42(t.0) + t.43 = t.39 + t.44 = t.43 + t.45 = t.44 + t.46 = [t.45+0] + t.47 = [t.46+20] + t.38 = call t.47(t.45) + t.48 = t.38 + t.37 = t.48 + t.50 = this + t.51 = [this] + t.52 = t.31 + t.53 = t.52 + t.54 = t.37 + t.55 = t.54 + t.51 = [t.51+44] + t.49 = call t.51(this t.53 t.55) + t.56 = t.49 + t.57 = t.56 + if0 t.57 goto :if467_else +if467_body: + t.59 = t.0 + t.0 = t.59 + t.60 = [t.0+0] + t.61 = [t.60+8] + t.62 = [this+100] + t.63 = t.62 + t.58 = call t.61(t.0 t.63) + t.64 = t.58 + t.8 = t.64 + t.66 = t.0 + t.0 = t.66 + t.67 = [t.0+0] + t.68 = [t.67+36] + t.69 = 0 + t.70 = t.69 + t.65 = call t.68(t.0 t.70) + t.71 = t.65 + t.8 = t.71 + goto :if467_end +if467_else: + t.73 = t.0 + t.0 = t.73 + t.74 = [t.0+0] + t.75 = [t.74+4] + t.76 = [this+100] + t.77 = t.76 + t.72 = call t.75(t.0 t.77) + t.78 = t.72 + t.8 = t.78 + t.80 = t.0 + t.0 = t.80 + t.81 = [t.0+0] + t.82 = [t.81+40] + t.83 = 0 + t.84 = t.83 + t.79 = call t.82(t.0 t.84) + t.85 = t.79 + t.8 = t.85 +if467_end: +if437_end: +if423_end: + t.86 = 1 + t.87 = t.86 + t.88 = t.87 + ret t.88 func Tree_RemoveRight(this t.0 t.1 ) -while254_test: - t.1 = t.1 - t.3 = [t.1+0] - t.4 = [t.3+28] - t.2 = call t.4(t.1 ) - t.5 = t.2 - if0 t.5 goto :while254_end -while254_body: - t.1 = t.1 - t.8 = [t.1+0] - t.9 = [t.8+24] - t.1 = t.1 - t.12 = [t.1+0] - t.13 = [t.12+12] - t.11 = call t.13(t.1 ) - t.14 = t.11 - t.15 = [t.14+0] - t.16 = [t.15+20] - t.10 = call t.16(t.14 ) - t.17 = t.10 - t.7 = call t.9(t.1 t.17) - t.6 = t.7 - t.0 = t.1 - t.1 = t.1 - t.19 = [t.1+0] - t.20 = [t.19+12] - t.18 = call t.20(t.1 ) - t.1 = t.18 - goto :while254_test -while254_end: - t.0 = t.0 - t.22 = [t.0+0] - t.23 = [t.22+4] - t.24 = [this+100] - t.21 = call t.23(t.0 t.24) - t.6 = t.21 - t.0 = t.0 - t.26 = [t.0+0] - t.27 = [t.26+40] - t.28 = 0 - t.25 = call t.27(t.0 t.28) - t.6 = t.25 - t.29 = 1 - ret t.29 +while507_test: + t.3 = t.1 + t.1 = t.3 + t.4 = [t.1+0] + t.5 = [t.4+28] + t.2 = call t.5(t.1) + t.6 = t.2 + t.7 = t.6 + if0 t.7 goto :while507_end +while507_body: + t.10 = t.1 + t.1 = t.10 + t.11 = [t.1+0] + t.12 = [t.11+24] + t.15 = t.1 + t.1 = t.15 + t.16 = [t.1+0] + t.17 = [t.16+12] + t.14 = call t.17(t.1) + t.18 = t.14 + t.19 = t.18 + t.20 = t.19 + t.21 = [t.20+0] + t.22 = [t.21+20] + t.13 = call t.22(t.20) + t.23 = t.13 + t.9 = call t.12(t.1 t.23) + t.24 = t.9 + t.8 = t.24 + t.25 = t.1 + t.26 = t.25 + t.0 = t.26 + t.28 = t.1 + t.1 = t.28 + t.29 = [t.1+0] + t.30 = [t.29+12] + t.27 = call t.30(t.1) + t.31 = t.27 + t.1 = t.31 + goto :while507_test +while507_end: + t.33 = t.0 + t.0 = t.33 + t.34 = [t.0+0] + t.35 = [t.34+4] + t.36 = [this+100] + t.37 = t.36 + t.32 = call t.35(t.0 t.37) + t.38 = t.32 + t.8 = t.38 + t.40 = t.0 + t.0 = t.40 + t.41 = [t.0+0] + t.42 = [t.41+40] + t.43 = 0 + t.44 = t.43 + t.39 = call t.42(t.0 t.44) + t.45 = t.39 + t.8 = t.45 + t.46 = 1 + t.47 = t.46 + t.48 = t.47 + ret t.48 func Tree_RemoveLeft(this t.0 t.1 ) -while282_test: - t.1 = t.1 - t.3 = [t.1+0] - t.4 = [t.3+32] - t.2 = call t.4(t.1 ) - t.5 = t.2 - if0 t.5 goto :while282_end -while282_body: - t.1 = t.1 - t.8 = [t.1+0] - t.9 = [t.8+24] - t.1 = t.1 - t.12 = [t.1+0] - t.13 = [t.12+16] - t.11 = call t.13(t.1 ) - t.14 = t.11 - t.15 = [t.14+0] - t.16 = [t.15+20] - t.10 = call t.16(t.14 ) - t.17 = t.10 - t.7 = call t.9(t.1 t.17) - t.6 = t.7 - t.0 = t.1 - t.1 = t.1 - t.19 = [t.1+0] - t.20 = [t.19+16] - t.18 = call t.20(t.1 ) - t.1 = t.18 - goto :while282_test -while282_end: - t.0 = t.0 - t.22 = [t.0+0] - t.23 = [t.22+8] - t.24 = [this+100] - t.21 = call t.23(t.0 t.24) - t.6 = t.21 - t.0 = t.0 - t.26 = [t.0+0] - t.27 = [t.26+36] - t.28 = 0 - t.25 = call t.27(t.0 t.28) - t.6 = t.25 - t.29 = 1 - ret t.29 +while554_test: + t.3 = t.1 + t.1 = t.3 + t.4 = [t.1+0] + t.5 = [t.4+32] + t.2 = call t.5(t.1) + t.6 = t.2 + t.7 = t.6 + if0 t.7 goto :while554_end +while554_body: + t.10 = t.1 + t.1 = t.10 + t.11 = [t.1+0] + t.12 = [t.11+24] + t.15 = t.1 + t.1 = t.15 + t.16 = [t.1+0] + t.17 = [t.16+16] + t.14 = call t.17(t.1) + t.18 = t.14 + t.19 = t.18 + t.20 = t.19 + t.21 = [t.20+0] + t.22 = [t.21+20] + t.13 = call t.22(t.20) + t.23 = t.13 + t.9 = call t.12(t.1 t.23) + t.24 = t.9 + t.8 = t.24 + t.25 = t.1 + t.26 = t.25 + t.0 = t.26 + t.28 = t.1 + t.1 = t.28 + t.29 = [t.1+0] + t.30 = [t.29+16] + t.27 = call t.30(t.1) + t.31 = t.27 + t.1 = t.31 + goto :while554_test +while554_end: + t.33 = t.0 + t.0 = t.33 + t.34 = [t.0+0] + t.35 = [t.34+8] + t.36 = [this+100] + t.37 = t.36 + t.32 = call t.35(t.0 t.37) + t.38 = t.32 + t.8 = t.38 + t.40 = t.0 + t.0 = t.40 + t.41 = [t.0+0] + t.42 = [t.41+36] + t.43 = 0 + t.44 = t.43 + t.39 = call t.42(t.0 t.44) + t.45 = t.39 + t.8 = t.45 + t.46 = 1 + t.47 = t.46 + t.48 = t.47 + ret t.48 func Tree_Search(this t.0 ) - t.2 = this - t.3 = 1 - t.4 = 0 -while310_test: - t.5 = t.3 - if0 t.5 goto :while310_end -while310_body: - t.2 = t.2 - t.8 = [t.2+0] - t.9 = [t.8+20] - t.7 = call t.9(t.2 ) - t.6 = t.7 - t.11 = t.0 - t.12 = t.6 - t.10 = LtS(t.11 t.12) - t.13 = t.10 - if0 t.13 goto :if315_else -if315_body: - t.2 = t.2 - t.15 = [t.2+0] - t.16 = [t.15+32] - t.14 = call t.16(t.2 ) - t.17 = t.14 - if0 t.17 goto :if319_else -if319_body: - t.2 = t.2 - t.19 = [t.2+0] - t.20 = [t.19+16] - t.18 = call t.20(t.2 ) - t.2 = t.18 - goto :if319_end -if319_else: - t.3 = 0 -if319_end: - goto :if315_end -if315_else: - t.22 = t.6 - t.23 = t.0 - t.21 = LtS(t.22 t.23) - t.24 = t.21 - if0 t.24 goto :if326_else -if326_body: - t.2 = t.2 - t.26 = [t.2+0] - t.27 = [t.26+28] - t.25 = call t.27(t.2 ) - t.28 = t.25 - if0 t.28 goto :if330_else -if330_body: - t.2 = t.2 - t.30 = [t.2+0] - t.31 = [t.30+12] - t.29 = call t.31(t.2 ) - t.2 = t.29 - goto :if330_end -if330_else: - t.3 = 0 -if330_end: - goto :if326_end -if326_else: - t.4 = 1 - t.3 = 0 -if326_end: -if315_end: - goto :while310_test -while310_end: - t.32 = t.4 - ret t.32 - -func Tree_Print(this ) - t.1 = this - t.4 = [this] - t.5 = t.1 - t.4 = [t.4+76] - t.3 = call t.4(this t.5) - t.2 = t.3 + t.3 = this + t.4 = t.3 + t.2 = t.4 t.6 = 1 - ret t.6 + t.7 = t.6 + t.5 = t.7 + t.9 = 0 + t.10 = t.9 + t.8 = t.10 +while607_test: + t.11 = t.5 + t.12 = t.11 + t.13 = t.12 + if0 t.13 goto :while607_end +while607_body: + t.16 = t.2 + t.2 = t.16 + t.17 = [t.2+0] + t.18 = [t.17+20] + t.15 = call t.18(t.2) + t.19 = t.15 + t.14 = t.19 + t.21 = t.0 + t.22 = t.14 + t.20 = LtS(t.21 t.22) + t.23 = t.20 + t.24 = t.23 + if0 t.24 goto :if616_else +if616_body: + t.26 = t.2 + t.2 = t.26 + t.27 = [t.2+0] + t.28 = [t.27+32] + t.25 = call t.28(t.2) + t.29 = t.25 + t.30 = t.29 + if0 t.30 goto :if621_else +if621_body: + t.32 = t.2 + t.2 = t.32 + t.33 = [t.2+0] + t.34 = [t.33+16] + t.31 = call t.34(t.2) + t.35 = t.31 + t.2 = t.35 + goto :if621_end +if621_else: + t.36 = 0 + t.37 = t.36 + t.5 = t.37 +if621_end: + goto :if616_end +if616_else: + t.39 = t.14 + t.40 = t.0 + t.38 = LtS(t.39 t.40) + t.41 = t.38 + t.42 = t.41 + if0 t.42 goto :if634_else +if634_body: + t.44 = t.2 + t.2 = t.44 + t.45 = [t.2+0] + t.46 = [t.45+28] + t.43 = call t.46(t.2) + t.47 = t.43 + t.48 = t.47 + if0 t.48 goto :if639_else +if639_body: + t.50 = t.2 + t.2 = t.50 + t.51 = [t.2+0] + t.52 = [t.51+12] + t.49 = call t.52(t.2) + t.53 = t.49 + t.2 = t.53 + goto :if639_end +if639_else: + t.54 = 0 + t.55 = t.54 + t.5 = t.55 +if639_end: + goto :if634_end +if634_else: + t.56 = 1 + t.57 = t.56 + t.8 = t.57 + t.58 = 0 + t.59 = t.58 + t.5 = t.59 +if634_end: +if616_end: + goto :while607_test +while607_end: + t.60 = t.8 + t.61 = t.60 + t.62 = t.61 + ret t.62 -func Tree_RecPrint(this t.0 ) - t.0 = t.0 - t.2 = [t.0+0] - t.3 = [t.2+32] - t.1 = call t.3(t.0 ) - t.4 = t.1 - if0 t.4 goto :if342_else -if342_body: +func Tree_Print(this ) + t.2 = this + t.3 = t.2 + t.1 = t.3 + t.6 = this t.7 = [this] - t.0 = t.0 - t.9 = [t.0+0] - t.10 = [t.9+16] - t.8 = call t.10(t.0 ) - t.11 = t.8 + t.8 = t.1 + t.9 = t.8 t.7 = [t.7+76] - t.6 = call t.7(this t.11) - t.5 = t.6 - goto :if342_end -if342_else: - t.5 = 1 -if342_end: - t.0 = t.0 + t.5 = call t.7(this t.9) + t.10 = t.5 + t.4 = t.10 + t.11 = 1 + t.12 = t.11 + t.13 = t.12 + ret t.13 + +func Tree_RecPrint(this t.0 ) + t.2 = t.0 + t.0 = t.2 + t.3 = [t.0+0] + t.4 = [t.3+32] + t.1 = call t.4(t.0) + t.5 = t.1 + t.6 = t.5 + if0 t.6 goto :if670_else +if670_body: + t.9 = this + t.10 = [this] + t.12 = t.0 + t.0 = t.12 t.13 = [t.0+0] - t.14 = [t.13+20] - t.12 = call t.14(t.0 ) - t.15 = t.12 - PrintIntS(t.15) - t.0 = t.0 - t.17 = [t.0+0] - t.18 = [t.17+28] - t.16 = call t.18(t.0 ) - t.19 = t.16 - if0 t.19 goto :if356_else -if356_body: - t.21 = [this] - t.0 = t.0 - t.23 = [t.0+0] - t.24 = [t.23+12] - t.22 = call t.24(t.0 ) - t.25 = t.22 - t.21 = [t.21+76] - t.20 = call t.21(this t.25) - t.5 = t.20 - goto :if356_end -if356_else: - t.5 = 1 -if356_end: - t.26 = 1 - ret t.26 + t.14 = [t.13+16] + t.11 = call t.14(t.0) + t.15 = t.11 + t.10 = [t.10+76] + t.8 = call t.10(this t.15) + t.16 = t.8 + t.7 = t.16 + goto :if670_end +if670_else: + t.17 = 1 + t.18 = t.17 + t.7 = t.18 +if670_end: + t.20 = t.0 + t.0 = t.20 + t.21 = [t.0+0] + t.22 = [t.21+20] + t.19 = call t.22(t.0) + t.23 = t.19 + t.24 = t.23 + PrintIntS(t.24) + t.26 = t.0 + t.0 = t.26 + t.27 = [t.0+0] + t.28 = [t.27+28] + t.25 = call t.28(t.0) + t.29 = t.25 + t.30 = t.29 + if0 t.30 goto :if693_else +if693_body: + t.32 = this + t.33 = [this] + t.35 = t.0 + t.0 = t.35 + t.36 = [t.0+0] + t.37 = [t.36+12] + t.34 = call t.37(t.0) + t.38 = t.34 + t.33 = [t.33+76] + t.31 = call t.33(this t.38) + t.39 = t.31 + t.7 = t.39 + goto :if693_end +if693_else: + t.40 = 1 + t.41 = t.40 + t.7 = t.41 +if693_end: + t.42 = 1 + t.43 = t.42 + t.44 = t.43 + ret t.44 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/BubbleSort.vapor b/output/BubbleSort.vapor index 5315afc..c2cf8ab 100644 --- a/output/BubbleSort.vapor +++ b/output/BubbleSort.vapor @@ -2,12 +2,15 @@ func Main() t.3 = HeapAllocZ(24) [t.3+0] = :functable_BBS t.4 = t.3 - t.5 = [t.4+0] + t.5 = t.4 t.6 = [t.5+0] - t.7 = 10 - t.2 = call t.6(t.4 t.7) - t.8 = t.2 - PrintIntS(t.8) + t.7 = [t.6+0] + t.8 = 10 + t.9 = t.8 + t.2 = call t.7(t.5 t.9) + t.10 = t.2 + t.11 = t.10 + PrintIntS(t.11) ret const functable_BBS @@ -17,202 +20,308 @@ const functable_BBS :BBS_Init func BBS_Start(this t.0 ) - t.3 = [this] - t.4 = t.0 - t.3 = [t.3+12] - t.2 = call t.3(this t.4) - t.1 = t.2 - t.6 = [this] - t.6 = [t.6+8] - t.5 = call t.6(this ) - t.1 = t.5 - t.7 = 99999 - PrintIntS(t.7) - t.9 = [this] - t.9 = [t.9+4] - t.8 = call t.9(this ) - t.1 = t.8 - t.11 = [this] - t.11 = [t.11+8] - t.10 = call t.11(this ) - t.1 = t.10 - t.12 = 0 - ret t.12 + t.3 = this + t.4 = [this] + t.5 = t.0 + t.6 = t.5 + t.4 = [t.4+12] + t.2 = call t.4(this t.6) + t.7 = t.2 + t.1 = t.7 + t.9 = this + t.10 = [this] + t.10 = [t.10+8] + t.8 = call t.10(this) + t.11 = t.8 + t.1 = t.11 + t.12 = 99999 + t.13 = t.12 + t.14 = t.13 + PrintIntS(t.14) + t.16 = this + t.17 = [this] + t.17 = [t.17+4] + t.15 = call t.17(this) + t.18 = t.15 + t.1 = t.18 + t.20 = this + t.21 = [this] + t.21 = [t.21+8] + t.19 = call t.21(this) + t.22 = t.19 + t.1 = t.22 + t.23 = 0 + t.24 = t.23 + t.25 = t.24 + ret t.25 func BBS_Sort(this ) t.2 = [this+20] t.3 = 1 t.1 = Sub(t.2 t.3) - t.0 = t.1 - t.6 = 0 - t.7 = 1 - t.5 = Sub(t.6 t.7) - t.4 = t.5 -while23_test: - t.9 = t.4 - t.10 = t.0 - t.8 = LtS(t.9 t.10) - t.11 = t.8 - if0 t.11 goto :while23_end -while23_body: - t.12 = 1 -while28_test: - t.14 = t.12 - t.16 = t.0 - t.17 = 1 - t.15 = Add(t.16 t.17) - t.18 = t.15 - t.13 = LtS(t.14 t.18) - t.19 = t.13 - if0 t.19 goto :while28_end -while28_body: - t.22 = t.12 - t.23 = 1 - t.21 = Sub(t.22 t.23) - t.20 = t.21 - t.26 = [this+16] - t.27 = MulS(t.20 4) - t.27 = Add(t.27 4) - t.27 = Add(t.26 t.27) - t.25 = [t.27] - t.24 = t.25 - t.30 = [this+16] - t.31 = MulS(t.12 4) - t.31 = Add(t.31 4) - t.31 = Add(t.30 t.31) - t.29 = [t.31] - t.28 = t.29 - t.33 = t.28 - t.34 = t.24 - t.32 = LtS(t.33 t.34) - t.35 = t.32 - if0 t.35 goto :if45_else -if45_body: - t.38 = t.12 - t.39 = 1 - t.37 = Sub(t.38 t.39) - t.36 = t.37 + t.4 = t.1 + t.0 = t.4 + t.7 = 0 + t.8 = 1 + t.6 = Sub(t.7 t.8) + t.9 = t.6 + t.5 = t.9 +while41_test: + t.11 = t.5 + t.12 = t.0 + t.10 = LtS(t.11 t.12) + t.13 = t.10 + t.14 = t.13 + if0 t.14 goto :while41_end +while41_body: + t.16 = 1 + t.17 = t.16 + t.15 = t.17 +while49_test: + t.19 = t.15 + t.21 = t.0 + t.22 = 1 + t.20 = Add(t.21 t.22) + t.23 = t.20 + t.24 = t.23 + t.18 = LtS(t.19 t.24) + t.25 = t.18 + t.26 = t.25 + if0 t.26 goto :while49_end +while49_body: + t.29 = t.15 + t.30 = 1 + t.28 = Sub(t.29 t.30) + t.31 = t.28 + t.27 = t.31 + t.35 = [this+16] + t.34 = t.35 + t.37 = t.27 + t.36 = MulS(t.37 4) + t.36 = Add(t.36 4) + t.36 = Add(t.34 t.36) + t.33 = [t.36] + t.38 = t.33 + t.32 = t.38 t.42 = [this+16] - t.43 = MulS(t.36 4) + t.41 = t.42 + t.44 = t.15 + t.43 = MulS(t.44 4) t.43 = Add(t.43 4) - t.43 = Add(t.42 t.43) - t.41 = [t.43] - t.40 = t.41 - t.44 = [this+16] - t.45 = MulS(t.36 4) - t.45 = Add(t.45 4) - t.45 = Add(t.44 t.45) - t.47 = [this+16] - t.48 = MulS(t.12 4) - t.48 = Add(t.48 4) - t.48 = Add(t.47 t.48) - t.46 = [t.48] - [t.45] = t.46 - t.49 = [this+16] - t.50 = MulS(t.12 4) - t.50 = Add(t.50 4) - t.50 = Add(t.49 t.50) - [t.50] = t.40 - goto :if45_end -if45_else: - t.51 = 0 -if45_end: - t.53 = t.12 + t.43 = Add(t.41 t.43) + t.40 = [t.43] + t.45 = t.40 + t.39 = t.45 + t.47 = t.39 + t.48 = t.32 + t.46 = LtS(t.47 t.48) + t.49 = t.46 + t.50 = t.49 + if0 t.50 goto :if75_else +if75_body: + t.53 = t.15 t.54 = 1 - t.52 = Add(t.53 t.54) - t.12 = t.52 - goto :while28_test -while28_end: - t.56 = t.0 - t.57 = 1 - t.55 = Sub(t.56 t.57) - t.0 = t.55 - goto :while23_test -while23_end: - t.58 = 0 - ret t.58 + t.52 = Sub(t.53 t.54) + t.55 = t.52 + t.51 = t.55 + t.59 = [this+16] + t.58 = t.59 + t.61 = t.51 + t.60 = MulS(t.61 4) + t.60 = Add(t.60 4) + t.60 = Add(t.58 t.60) + t.57 = [t.60] + t.62 = t.57 + t.56 = t.62 + t.63 = [this+16] + t.65 = t.51 + t.66 = t.65 + t.64 = MulS(t.66 4) + t.64 = Add(t.64 4) + t.64 = Add(t.63 t.64) + t.69 = [this+16] + t.68 = t.69 + t.71 = t.15 + t.70 = MulS(t.71 4) + t.70 = Add(t.70 4) + t.70 = Add(t.68 t.70) + t.67 = [t.70] + t.72 = t.67 + [t.64] = t.72 + t.73 = [this+16] + t.75 = t.15 + t.76 = t.75 + t.74 = MulS(t.76 4) + t.74 = Add(t.74 4) + t.74 = Add(t.73 t.74) + t.77 = t.56 + t.78 = t.77 + [t.74] = t.78 + goto :if75_end +if75_else: + t.80 = 0 + t.81 = t.80 + t.79 = t.81 +if75_end: + t.83 = t.15 + t.84 = 1 + t.82 = Add(t.83 t.84) + t.85 = t.82 + t.15 = t.85 + goto :while49_test +while49_end: + t.87 = t.0 + t.88 = 1 + t.86 = Sub(t.87 t.88) + t.89 = t.86 + t.0 = t.89 + goto :while41_test +while41_end: + t.90 = 0 + t.91 = t.90 + t.92 = t.91 + ret t.92 func BBS_Print(this ) - t.0 = 0 -while69_test: - t.2 = t.0 - t.3 = [this+20] - t.1 = LtS(t.2 t.3) - t.4 = t.1 - if0 t.4 goto :while69_end -while69_body: - t.6 = [this+16] - t.7 = MulS(t.0 4) - t.7 = Add(t.7 4) - t.7 = Add(t.6 t.7) - t.5 = [t.7] - t.8 = t.5 - PrintIntS(t.8) - t.10 = t.0 - t.11 = 1 - t.9 = Add(t.10 t.11) - t.0 = t.9 - goto :while69_test -while69_end: - t.12 = 0 - ret t.12 + t.1 = 0 + t.2 = t.1 + t.0 = t.2 +while121_test: + t.4 = t.0 + t.5 = [this+20] + t.6 = t.5 + t.7 = t.6 + t.3 = LtS(t.4 t.7) + t.8 = t.3 + t.9 = t.8 + if0 t.9 goto :while121_end +while121_body: + t.12 = [this+16] + t.11 = t.12 + t.14 = t.0 + t.13 = MulS(t.14 4) + t.13 = Add(t.13 4) + t.13 = Add(t.11 t.13) + t.10 = [t.13] + t.15 = t.10 + t.16 = t.15 + PrintIntS(t.16) + t.18 = t.0 + t.19 = 1 + t.17 = Add(t.18 t.19) + t.20 = t.17 + t.0 = t.20 + goto :while121_test +while121_end: + t.21 = 0 + t.22 = t.21 + t.23 = t.22 + ret t.23 func BBS_Init(this t.0 ) - [this+20] = t.0 - t.1 = call :AllocArray(t.0) - [this+16] = t.1 - t.2 = [this+16] - t.3 = MulS(0 4) - t.3 = Add(t.3 4) - t.3 = Add(t.2 t.3) - [t.3] = 20 - t.4 = [this+16] - t.5 = MulS(1 4) - t.5 = Add(t.5 4) - t.5 = Add(t.4 t.5) - [t.5] = 7 - t.6 = [this+16] - t.7 = MulS(2 4) - t.7 = Add(t.7 4) - t.7 = Add(t.6 t.7) - [t.7] = 12 + t.1 = t.0 + t.2 = t.1 + [this+20] = t.2 + t.3 = t.0 + t.4 = t.3 + t.5 = call :AllocArray(t.4) + t.6 = t.5 + t.7 = t.6 + [this+16] = t.7 t.8 = [this+16] - t.9 = MulS(3 4) + t.10 = 0 + t.11 = t.10 + t.9 = MulS(t.11 4) t.9 = Add(t.9 4) t.9 = Add(t.8 t.9) - [t.9] = 18 - t.10 = [this+16] - t.11 = MulS(4 4) - t.11 = Add(t.11 4) - t.11 = Add(t.10 t.11) - [t.11] = 2 - t.12 = [this+16] - t.13 = MulS(5 4) - t.13 = Add(t.13 4) - t.13 = Add(t.12 t.13) - [t.13] = 11 + t.12 = 20 + t.13 = t.12 + [t.9] = t.13 t.14 = [this+16] - t.15 = MulS(6 4) + t.16 = 1 + t.17 = t.16 + t.15 = MulS(t.17 4) t.15 = Add(t.15 4) t.15 = Add(t.14 t.15) - [t.15] = 6 - t.16 = [this+16] - t.17 = MulS(7 4) - t.17 = Add(t.17 4) - t.17 = Add(t.16 t.17) - [t.17] = 9 - t.18 = [this+16] - t.19 = MulS(8 4) - t.19 = Add(t.19 4) - t.19 = Add(t.18 t.19) - [t.19] = 19 + t.18 = 7 + t.19 = t.18 + [t.15] = t.19 t.20 = [this+16] - t.21 = MulS(9 4) + t.22 = 2 + t.23 = t.22 + t.21 = MulS(t.23 4) t.21 = Add(t.21 4) t.21 = Add(t.20 t.21) - [t.21] = 5 - t.22 = 0 - ret t.22 + t.24 = 12 + t.25 = t.24 + [t.21] = t.25 + t.26 = [this+16] + t.28 = 3 + t.29 = t.28 + t.27 = MulS(t.29 4) + t.27 = Add(t.27 4) + t.27 = Add(t.26 t.27) + t.30 = 18 + t.31 = t.30 + [t.27] = t.31 + t.32 = [this+16] + t.34 = 4 + t.35 = t.34 + t.33 = MulS(t.35 4) + t.33 = Add(t.33 4) + t.33 = Add(t.32 t.33) + t.36 = 2 + t.37 = t.36 + [t.33] = t.37 + t.38 = [this+16] + t.40 = 5 + t.41 = t.40 + t.39 = MulS(t.41 4) + t.39 = Add(t.39 4) + t.39 = Add(t.38 t.39) + t.42 = 11 + t.43 = t.42 + [t.39] = t.43 + t.44 = [this+16] + t.46 = 6 + t.47 = t.46 + t.45 = MulS(t.47 4) + t.45 = Add(t.45 4) + t.45 = Add(t.44 t.45) + t.48 = 6 + t.49 = t.48 + [t.45] = t.49 + t.50 = [this+16] + t.52 = 7 + t.53 = t.52 + t.51 = MulS(t.53 4) + t.51 = Add(t.51 4) + t.51 = Add(t.50 t.51) + t.54 = 9 + t.55 = t.54 + [t.51] = t.55 + t.56 = [this+16] + t.58 = 8 + t.59 = t.58 + t.57 = MulS(t.59 4) + t.57 = Add(t.57 4) + t.57 = Add(t.56 t.57) + t.60 = 19 + t.61 = t.60 + [t.57] = t.61 + t.62 = [this+16] + t.64 = 9 + t.65 = t.64 + t.63 = MulS(t.65 4) + t.63 = Add(t.63 4) + t.63 = Add(t.62 t.63) + t.66 = 5 + t.67 = t.66 + [t.63] = t.67 + t.68 = 0 + t.69 = t.68 + t.70 = t.69 + ret t.70 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/Factorial.vapor b/output/Factorial.vapor index 713ef06..e66f122 100644 --- a/output/Factorial.vapor +++ b/output/Factorial.vapor @@ -2,12 +2,15 @@ func Main() t.3 = HeapAllocZ(4) [t.3+0] = :functable_Fac t.4 = t.3 - t.5 = [t.4+0] + t.5 = t.4 t.6 = [t.5+0] - t.7 = 10 - t.2 = call t.6(t.4 t.7) - t.8 = t.2 - PrintIntS(t.8) + t.7 = [t.6+0] + t.8 = 10 + t.9 = t.8 + t.2 = call t.7(t.5 t.9) + t.10 = t.2 + t.11 = t.10 + PrintIntS(t.11) ret const functable_Fac @@ -18,25 +21,33 @@ func Fac_ComputeFac(this t.0 ) t.3 = 1 t.1 = LtS(t.2 t.3) t.4 = t.1 - if0 t.4 goto :if6_else -if6_body: - t.5 = 1 - goto :if6_end -if6_else: - t.7 = t.0 - t.9 = [this] - t.11 = t.0 - t.12 = 1 - t.10 = Sub(t.11 t.12) - t.13 = t.10 - t.9 = [t.9+0] - t.8 = call t.9(this t.13) - t.14 = t.8 - t.6 = MulS(t.7 t.14) - t.5 = t.6 -if6_end: - t.15 = t.5 - ret t.15 + t.5 = t.4 + if0 t.5 goto :if9_else +if9_body: + t.7 = 1 + t.8 = t.7 + t.6 = t.8 + goto :if9_end +if9_else: + t.10 = t.0 + t.12 = this + t.13 = [this] + t.15 = t.0 + t.16 = 1 + t.14 = Sub(t.15 t.16) + t.17 = t.14 + t.13 = [t.13+0] + t.11 = call t.13(this t.17) + t.18 = t.11 + t.19 = t.18 + t.9 = MulS(t.10 t.19) + t.20 = t.9 + t.6 = t.20 +if9_end: + t.21 = t.6 + t.22 = t.21 + t.23 = t.22 + ret t.23 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/LinearSearch.vapor b/output/LinearSearch.vapor index 868e715..a595d8b 100644 --- a/output/LinearSearch.vapor +++ b/output/LinearSearch.vapor @@ -2,12 +2,15 @@ func Main() t.3 = HeapAllocZ(24) [t.3+0] = :functable_LS t.4 = t.3 - t.5 = [t.4+0] + t.5 = t.4 t.6 = [t.5+0] - t.7 = 10 - t.2 = call t.6(t.4 t.7) - t.8 = t.2 - PrintIntS(t.8) + t.7 = [t.6+0] + t.8 = 10 + t.9 = t.8 + t.2 = call t.7(t.5 t.9) + t.10 = t.2 + t.11 = t.10 + PrintIntS(t.11) ret const functable_LS @@ -17,167 +20,252 @@ const functable_LS :LS_Init func LS_Start(this t.0 ) - t.3 = [this] - t.4 = t.0 - t.3 = [t.3+12] - t.2 = call t.3(this t.4) - t.1 = t.2 - t.7 = [this] - t.7 = [t.7+4] - t.6 = call t.7(this ) - t.5 = t.6 - t.8 = 9999 - PrintIntS(t.8) - t.10 = [this] - t.11 = 8 - t.10 = [t.10+8] - t.9 = call t.10(this t.11) + t.3 = this + t.4 = [this] + t.5 = t.0 + t.6 = t.5 + t.4 = [t.4+12] + t.2 = call t.4(this t.6) + t.7 = t.2 + t.1 = t.7 + t.10 = this + t.11 = [this] + t.11 = [t.11+4] + t.9 = call t.11(this) t.12 = t.9 - PrintIntS(t.12) - t.14 = [this] - t.15 = 12 - t.14 = [t.14+8] - t.13 = call t.14(this t.15) - t.16 = t.13 - PrintIntS(t.16) + t.8 = t.12 + t.13 = 9999 + t.14 = t.13 + t.15 = t.14 + PrintIntS(t.15) + t.17 = this t.18 = [this] - t.19 = 17 + t.19 = 8 + t.20 = t.19 t.18 = [t.18+8] - t.17 = call t.18(this t.19) - t.20 = t.17 - PrintIntS(t.20) - t.22 = [this] - t.23 = 50 - t.22 = [t.22+8] - t.21 = call t.22(this t.23) - t.24 = t.21 - PrintIntS(t.24) - t.25 = 55 - ret t.25 + t.16 = call t.18(this t.20) + t.21 = t.16 + t.22 = t.21 + PrintIntS(t.22) + t.24 = this + t.25 = [this] + t.26 = 12 + t.27 = t.26 + t.25 = [t.25+8] + t.23 = call t.25(this t.27) + t.28 = t.23 + t.29 = t.28 + PrintIntS(t.29) + t.31 = this + t.32 = [this] + t.33 = 17 + t.34 = t.33 + t.32 = [t.32+8] + t.30 = call t.32(this t.34) + t.35 = t.30 + t.36 = t.35 + PrintIntS(t.36) + t.38 = this + t.39 = [this] + t.40 = 50 + t.41 = t.40 + t.39 = [t.39+8] + t.37 = call t.39(this t.41) + t.42 = t.37 + t.43 = t.42 + PrintIntS(t.43) + t.44 = 55 + t.45 = t.44 + t.46 = t.45 + ret t.46 func LS_Print(this ) - t.0 = 1 -while29_test: - t.2 = t.0 - t.3 = [this+20] - t.1 = LtS(t.2 t.3) - t.4 = t.1 - if0 t.4 goto :while29_end -while29_body: - t.6 = [this+16] - t.7 = MulS(t.0 4) - t.7 = Add(t.7 4) - t.7 = Add(t.6 t.7) - t.5 = [t.7] - t.8 = t.5 - PrintIntS(t.8) - t.10 = t.0 - t.11 = 1 - t.9 = Add(t.10 t.11) - t.0 = t.9 - goto :while29_test -while29_end: - t.12 = 0 - ret t.12 - -func LS_Search(this t.0 ) t.1 = 1 - t.2 = 0 - t.3 = 0 -while42_test: - t.5 = t.1 - t.6 = [this+20] - t.4 = LtS(t.5 t.6) - t.7 = t.4 - if0 t.7 goto :while42_end -while42_body: - t.10 = [this+16] - t.11 = MulS(t.1 4) - t.11 = Add(t.11 4) - t.11 = Add(t.10 t.11) - t.9 = [t.11] - t.8 = t.9 + t.2 = t.1 + t.0 = t.2 +while55_test: + t.4 = t.0 + t.5 = [this+20] + t.6 = t.5 + t.7 = t.6 + t.3 = LtS(t.4 t.7) + t.8 = t.3 + t.9 = t.8 + if0 t.9 goto :while55_end +while55_body: + t.12 = [this+16] + t.11 = t.12 t.14 = t.0 - t.15 = 1 - t.13 = Add(t.14 t.15) - t.12 = t.13 - t.17 = t.8 + t.13 = MulS(t.14 4) + t.13 = Add(t.13 4) + t.13 = Add(t.11 t.13) + t.10 = [t.13] + t.15 = t.10 + t.16 = t.15 + PrintIntS(t.16) t.18 = t.0 - t.16 = LtS(t.17 t.18) - t.19 = t.16 - if0 t.19 goto :if53_else -if53_body: - t.20 = 0 - goto :if53_end -if53_else: - t.23 = t.8 - t.24 = t.12 - t.22 = LtS(t.23 t.24) - t.21 = Eq(t.22 0) - t.25 = t.21 - if0 t.25 goto :if57_else -if57_body: - t.20 = 0 - goto :if57_end -if57_else: + t.19 = 1 + t.17 = Add(t.18 t.19) + t.20 = t.17 + t.0 = t.20 + goto :while55_test +while55_end: + t.21 = 0 + t.22 = t.21 + t.23 = t.22 + ret t.23 + +func LS_Search(this t.0 ) t.2 = 1 - t.3 = 1 - t.1 = [this+20] -if57_end: -if53_end: - t.27 = t.1 - t.28 = 1 - t.26 = Add(t.27 t.28) - t.1 = t.26 - goto :while42_test -while42_end: - t.29 = t.3 - ret t.29 + t.3 = t.2 + t.1 = t.3 + t.5 = 0 + t.6 = t.5 + t.4 = t.6 + t.8 = 0 + t.9 = t.8 + t.7 = t.9 +while83_test: + t.11 = t.1 + t.12 = [this+20] + t.13 = t.12 + t.14 = t.13 + t.10 = LtS(t.11 t.14) + t.15 = t.10 + t.16 = t.15 + if0 t.16 goto :while83_end +while83_body: + t.20 = [this+16] + t.19 = t.20 + t.22 = t.1 + t.21 = MulS(t.22 4) + t.21 = Add(t.21 4) + t.21 = Add(t.19 t.21) + t.18 = [t.21] + t.23 = t.18 + t.17 = t.23 + t.26 = t.0 + t.27 = 1 + t.25 = Add(t.26 t.27) + t.28 = t.25 + t.24 = t.28 + t.30 = t.17 + t.31 = t.0 + t.29 = LtS(t.30 t.31) + t.32 = t.29 + t.33 = t.32 + if0 t.33 goto :if101_else +if101_body: + t.35 = 0 + t.36 = t.35 + t.34 = t.36 + goto :if101_end +if101_else: + t.39 = t.17 + t.40 = t.24 + t.38 = LtS(t.39 t.40) + t.41 = t.38 + t.42 = t.41 + t.43 = t.42 + t.37 = Eq(t.43 0) + t.44 = t.37 + t.45 = t.44 + t.46 = t.45 + if0 t.46 goto :if108_else +if108_body: + t.47 = 0 + t.48 = t.47 + t.34 = t.48 + goto :if108_end +if108_else: + t.49 = 1 + t.50 = t.49 + t.4 = t.50 + t.51 = 1 + t.52 = t.51 + t.7 = t.52 + t.53 = [this+20] + t.54 = t.53 + t.1 = t.54 +if108_end: +if101_end: + t.56 = t.1 + t.57 = 1 + t.55 = Add(t.56 t.57) + t.58 = t.55 + t.1 = t.58 + goto :while83_test +while83_end: + t.59 = t.7 + t.60 = t.59 + t.61 = t.60 + ret t.61 func LS_Init(this t.0 ) - [this+20] = t.0 - t.1 = call :AllocArray(t.0) - [this+16] = t.1 - t.2 = 1 - t.5 = [this+20] - t.6 = 1 - t.4 = Add(t.5 t.6) - t.3 = t.4 -while70_test: - t.8 = t.2 - t.9 = [this+20] - t.7 = LtS(t.8 t.9) - t.10 = t.7 - if0 t.10 goto :while70_end -while70_body: - t.13 = 2 - t.14 = t.2 - t.12 = MulS(t.13 t.14) - t.11 = t.12 - t.17 = t.3 - t.18 = 3 - t.16 = Sub(t.17 t.18) - t.15 = t.16 - t.19 = [this+16] - t.20 = MulS(t.2 4) - t.20 = Add(t.20 4) - t.20 = Add(t.19 t.20) - t.22 = t.11 - t.23 = t.15 - t.21 = Add(t.22 t.23) - [t.20] = t.21 - t.25 = t.2 - t.26 = 1 - t.24 = Add(t.25 t.26) - t.2 = t.24 - t.28 = t.3 - t.29 = 1 - t.27 = Sub(t.28 t.29) - t.3 = t.27 - goto :while70_test -while70_end: - t.30 = 0 - ret t.30 + t.1 = t.0 + t.2 = t.1 + [this+20] = t.2 + t.3 = t.0 + t.4 = t.3 + t.5 = call :AllocArray(t.4) + t.6 = t.5 + t.7 = t.6 + [this+16] = t.7 + t.9 = 1 + t.10 = t.9 + t.8 = t.10 + t.13 = [this+20] + t.14 = 1 + t.12 = Add(t.13 t.14) + t.15 = t.12 + t.11 = t.15 +while146_test: + t.17 = t.8 + t.18 = [this+20] + t.19 = t.18 + t.20 = t.19 + t.16 = LtS(t.17 t.20) + t.21 = t.16 + t.22 = t.21 + if0 t.22 goto :while146_end +while146_body: + t.25 = 2 + t.26 = t.8 + t.24 = MulS(t.25 t.26) + t.27 = t.24 + t.23 = t.27 + t.30 = t.11 + t.31 = 3 + t.29 = Sub(t.30 t.31) + t.32 = t.29 + t.28 = t.32 + t.33 = [this+16] + t.35 = t.8 + t.36 = t.35 + t.34 = MulS(t.36 4) + t.34 = Add(t.34 4) + t.34 = Add(t.33 t.34) + t.38 = t.23 + t.39 = t.28 + t.37 = Add(t.38 t.39) + t.40 = t.37 + [t.34] = t.40 + t.42 = t.8 + t.43 = 1 + t.41 = Add(t.42 t.43) + t.44 = t.41 + t.8 = t.44 + t.46 = t.11 + t.47 = 1 + t.45 = Sub(t.46 t.47) + t.48 = t.45 + t.11 = t.48 + goto :while146_test +while146_end: + t.49 = 0 + t.50 = t.49 + t.51 = t.50 + ret t.51 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/LinkedList.vapor b/output/LinkedList.vapor index 6a04bc4..1c9f2ec 100644 --- a/output/LinkedList.vapor +++ b/output/LinkedList.vapor @@ -2,11 +2,13 @@ func Main() t.3 = HeapAllocZ(4) [t.3+0] = :functable_LL t.4 = t.3 - t.5 = [t.4+0] + t.5 = t.4 t.6 = [t.5+0] - t.2 = call t.6(t.4 ) - t.7 = t.2 - PrintIntS(t.7) + t.7 = [t.6+0] + t.2 = call t.7(t.5) + t.8 = t.2 + t.9 = t.8 + PrintIntS(t.9) ret const functable_Element @@ -18,126 +20,197 @@ const functable_Element :Element_Compare func Element_Init(this t.0 t.1 t.2 ) - [this+24] = t.0 - [this+28] = t.1 - [this+32] = t.2 - t.3 = 1 - ret t.3 + t.3 = t.0 + t.4 = t.3 + [this+24] = t.4 + t.5 = t.1 + t.6 = t.5 + [this+28] = t.6 + t.7 = t.2 + t.8 = t.7 + [this+32] = t.8 + t.9 = 1 + t.10 = t.9 + t.11 = t.10 + ret t.11 func Element_GetAge(this ) t.0 = [this+24] - ret t.0 + t.1 = t.0 + t.2 = t.1 + ret t.2 func Element_GetSalary(this ) t.0 = [this+28] - ret t.0 + t.1 = t.0 + t.2 = t.1 + ret t.2 func Element_GetMarried(this ) t.0 = [this+32] - ret t.0 + t.1 = t.0 + t.2 = t.1 + ret t.2 func Element_Equal(this t.0 ) - t.1 = 1 - t.0 = t.0 - t.4 = [t.0+0] - t.5 = [t.4+4] - t.3 = call t.5(t.0 ) - t.2 = t.3 - t.8 = [this] - t.9 = t.2 - t.10 = [this+24] - t.8 = [t.8+20] - t.7 = call t.8(this t.9 t.10) - t.6 = Eq(t.7 0) - t.11 = t.6 - if0 t.11 goto :if12_else -if12_body: - t.1 = 0 - goto :if12_end -if12_else: - t.0 = t.0 - t.14 = [t.0+0] - t.15 = [t.14+8] - t.13 = call t.15(t.0 ) - t.12 = t.13 - t.18 = [this] - t.19 = t.12 - t.20 = [this+28] - t.18 = [t.18+20] - t.17 = call t.18(this t.19 t.20) - t.16 = Eq(t.17 0) - t.21 = t.16 - if0 t.21 goto :if21_else -if21_body: - t.1 = 0 - goto :if21_end -if21_else: - t.22 = [this+32] - if0 t.22 goto :if27_else -if27_body: - t.0 = t.0 - t.25 = [t.0+0] - t.26 = [t.25+12] - t.24 = call t.26(t.0 ) - t.23 = Eq(t.24 0) - t.27 = t.23 - if0 t.27 goto :if28_else -if28_body: - t.1 = 0 - goto :if28_end -if28_else: - t.28 = 0 -if28_end: - goto :if27_end -if27_else: - t.0 = t.0 - t.30 = [t.0+0] - t.31 = [t.30+12] - t.29 = call t.31(t.0 ) - t.32 = t.29 - if0 t.32 goto :if33_else -if33_body: - t.1 = 0 - goto :if33_end -if33_else: - t.28 = 0 -if33_end: -if27_end: -if21_end: -if12_end: - t.33 = t.1 - ret t.33 + t.2 = 1 + t.3 = t.2 + t.1 = t.3 + t.6 = t.0 + t.0 = t.6 + t.7 = [t.0+0] + t.8 = [t.7+4] + t.5 = call t.8(t.0) + t.9 = t.5 + t.4 = t.9 + t.12 = this + t.13 = [this] + t.14 = t.4 + t.15 = t.14 + t.16 = [this+24] + t.17 = t.16 + t.13 = [t.13+20] + t.11 = call t.13(this t.15 t.17) + t.18 = t.11 + t.10 = Eq(t.18 0) + t.19 = t.10 + t.20 = t.19 + t.21 = t.20 + if0 t.21 goto :if32_else +if32_body: + t.22 = 0 + t.23 = t.22 + t.1 = t.23 + goto :if32_end +if32_else: + t.26 = t.0 + t.0 = t.26 + t.27 = [t.0+0] + t.28 = [t.27+8] + t.25 = call t.28(t.0) + t.29 = t.25 + t.24 = t.29 + t.32 = this + t.33 = [this] + t.34 = t.24 + t.35 = t.34 + t.36 = [this+28] + t.37 = t.36 + t.33 = [t.33+20] + t.31 = call t.33(this t.35 t.37) + t.38 = t.31 + t.30 = Eq(t.38 0) + t.39 = t.30 + t.40 = t.39 + t.41 = t.40 + if0 t.41 goto :if51_else +if51_body: + t.42 = 0 + t.43 = t.42 + t.1 = t.43 + goto :if51_end +if51_else: + t.44 = [this+32] + t.45 = t.44 + t.46 = t.45 + if0 t.46 goto :if65_else +if65_body: + t.49 = t.0 + t.0 = t.49 + t.50 = [t.0+0] + t.51 = [t.50+12] + t.48 = call t.51(t.0) + t.52 = t.48 + t.47 = Eq(t.52 0) + t.53 = t.47 + t.54 = t.53 + t.55 = t.54 + if0 t.55 goto :if68_else +if68_body: + t.56 = 0 + t.57 = t.56 + t.1 = t.57 + goto :if68_end +if68_else: + t.59 = 0 + t.60 = t.59 + t.58 = t.60 +if68_end: + goto :if65_end +if65_else: + t.62 = t.0 + t.0 = t.62 + t.63 = [t.0+0] + t.64 = [t.63+12] + t.61 = call t.64(t.0) + t.65 = t.61 + t.66 = t.65 + if0 t.66 goto :if81_else +if81_body: + t.67 = 0 + t.68 = t.67 + t.1 = t.68 + goto :if81_end +if81_else: + t.69 = 0 + t.70 = t.69 + t.58 = t.70 +if81_end: +if65_end: +if51_end: +if32_end: + t.71 = t.1 + t.72 = t.71 + t.73 = t.72 + ret t.73 func Element_Compare(this t.0 t.1 ) - t.2 = 0 - t.5 = t.1 - t.6 = 1 - t.4 = Add(t.5 t.6) - t.3 = t.4 - t.8 = t.0 - t.9 = t.1 - t.7 = LtS(t.8 t.9) - t.10 = t.7 - if0 t.10 goto :if41_else -if41_body: - t.2 = 0 - goto :if41_end -if41_else: - t.13 = t.0 - t.14 = t.3 - t.12 = LtS(t.13 t.14) - t.11 = Eq(t.12 0) - t.15 = t.11 - if0 t.15 goto :if45_else -if45_body: - t.2 = 0 - goto :if45_end -if45_else: - t.2 = 1 -if45_end: -if41_end: - t.16 = t.2 - ret t.16 + t.3 = 0 + t.4 = t.3 + t.2 = t.4 + t.7 = t.1 + t.8 = 1 + t.6 = Add(t.7 t.8) + t.9 = t.6 + t.5 = t.9 + t.11 = t.0 + t.12 = t.1 + t.10 = LtS(t.11 t.12) + t.13 = t.10 + t.14 = t.13 + if0 t.14 goto :if100_else +if100_body: + t.15 = 0 + t.16 = t.15 + t.2 = t.16 + goto :if100_end +if100_else: + t.19 = t.0 + t.20 = t.5 + t.18 = LtS(t.19 t.20) + t.21 = t.18 + t.22 = t.21 + t.23 = t.22 + t.17 = Eq(t.23 0) + t.24 = t.17 + t.25 = t.24 + t.26 = t.25 + if0 t.26 goto :if107_else +if107_body: + t.27 = 0 + t.28 = t.27 + t.2 = t.28 + goto :if107_end +if107_else: + t.29 = 1 + t.30 = t.29 + t.2 = t.30 +if107_end: +if100_end: + t.31 = t.2 + t.32 = t.31 + t.33 = t.32 + ret t.33 const functable_List :List_Init @@ -152,226 +225,361 @@ const functable_List :List_Print func List_Init(this ) - [this+48] = 1 t.0 = 1 - ret t.0 + t.1 = t.0 + [this+48] = t.1 + t.2 = 1 + t.3 = t.2 + t.4 = t.3 + ret t.4 func List_InitNew(this t.0 t.1 t.2 ) - [this+48] = t.2 - [this+40] = t.0 - [this+44] = t.1 - t.3 = 1 - ret t.3 + t.3 = t.2 + t.4 = t.3 + [this+48] = t.4 + t.5 = t.0 + t.6 = t.5 + [this+40] = t.6 + t.7 = t.1 + t.8 = t.7 + [this+44] = t.8 + t.9 = 1 + t.10 = t.9 + t.11 = t.10 + ret t.11 func List_Insert(this t.0 ) - t.2 = this - t.4 = HeapAllocZ(52) - [t.4+0] = :functable_List - t.3 = t.4 - t.3 = t.3 - t.7 = [t.3+0] - t.8 = [t.7+4] - t.9 = t.0 - t.10 = t.2 - t.11 = 0 - t.6 = call t.8(t.3 t.9 t.10 t.11) - t.5 = t.6 - t.12 = t.3 - ret t.12 + t.3 = this + t.4 = t.3 + t.2 = t.4 + t.6 = HeapAllocZ(52) + [t.6+0] = :functable_List + t.7 = t.6 + t.8 = t.7 + t.5 = t.8 + t.11 = t.5 + t.5 = t.11 + t.12 = [t.5+0] + t.13 = [t.12+4] + t.14 = t.0 + t.15 = t.14 + t.16 = t.2 + t.17 = t.16 + t.18 = 0 + t.19 = t.18 + t.10 = call t.13(t.5 t.15 t.17 t.19) + t.20 = t.10 + t.9 = t.20 + t.21 = t.5 + t.22 = t.21 + t.23 = t.22 + ret t.23 func List_SetNext(this t.0 ) - [this+44] = t.0 - t.1 = 1 - ret t.1 + t.1 = t.0 + t.2 = t.1 + [this+44] = t.2 + t.3 = 1 + t.4 = t.3 + t.5 = t.4 + ret t.5 func List_Delete(this t.0 ) - t.3 = this - t.4 = 0 + t.4 = this + t.5 = t.4 + t.3 = t.5 t.7 = 0 - t.8 = 1 - t.6 = Sub(t.7 t.8) - t.5 = t.6 - t.9 = this - t.10 = this - t.11 = [this+48] - t.12 = [this+40] -while65_test: - t.14 = Eq(t.11 0) - t.15 = t.14 - t.16 = Eq(t.4 0) - t.17 = t.16 - t.18 = Eq(1 t.15) - t.19 = Eq(1 t.17) - t.13 = Eq(t.18 t.19) - t.20 = t.13 - if0 t.20 goto :while65_end -while65_body: - t.0 = t.0 - t.22 = [t.0+0] - t.23 = [t.22+16] - t.24 = t.12 - t.21 = call t.23(t.0 t.24) - t.25 = t.21 - if0 t.25 goto :if74_else -if74_body: - t.4 = 1 - t.27 = t.5 - t.28 = 0 - t.26 = LtS(t.27 t.28) - t.29 = t.26 - if0 t.29 goto :if79_else -if79_body: - t.9 = t.9 - t.31 = [t.9+0] - t.32 = [t.31+32] - t.30 = call t.32(t.9 ) - t.3 = t.30 - goto :if79_end -if79_else: - t.34 = 0 - t.35 = 555 - t.33 = Sub(t.34 t.35) + t.8 = t.7 + t.6 = t.8 + t.11 = 0 + t.12 = 1 + t.10 = Sub(t.11 t.12) + t.13 = t.10 + t.9 = t.13 + t.15 = this + t.16 = t.15 + t.14 = t.16 + t.18 = this + t.19 = t.18 + t.17 = t.19 + t.21 = [this+48] + t.22 = t.21 + t.20 = t.22 + t.24 = [this+40] + t.25 = t.24 + t.23 = t.25 +while178_test: + t.28 = t.20 + t.29 = t.28 + t.27 = Eq(t.29 0) + t.30 = t.27 + t.31 = t.30 + t.32 = t.31 + t.34 = t.6 + t.35 = t.34 + t.33 = Eq(t.35 0) t.36 = t.33 - PrintIntS(t.36) - t.10 = t.10 - t.39 = [t.10+0] - t.40 = [t.39+12] - t.9 = t.9 - t.42 = [t.9+0] - t.43 = [t.42+32] - t.41 = call t.43(t.9 ) - t.44 = t.41 - t.38 = call t.40(t.10 t.44) - t.37 = t.38 - t.46 = 0 - t.47 = 555 - t.45 = Sub(t.46 t.47) - t.48 = t.45 - PrintIntS(t.48) -if79_end: - goto :if74_end -if74_else: - t.49 = 0 -if74_end: - t.50 = Eq(t.4 0) - t.51 = t.50 - if0 t.51 goto :if101_else -if101_body: - t.10 = t.9 - t.9 = t.9 - t.53 = [t.9+0] - t.54 = [t.53+32] - t.52 = call t.54(t.9 ) - t.9 = t.52 - t.9 = t.9 - t.56 = [t.9+0] - t.57 = [t.56+24] - t.55 = call t.57(t.9 ) - t.11 = t.55 - t.9 = t.9 - t.59 = [t.9+0] - t.60 = [t.59+28] - t.58 = call t.60(t.9 ) - t.12 = t.58 - t.5 = 1 - goto :if101_end -if101_else: - t.49 = 0 -if101_end: - goto :while65_test -while65_end: - t.61 = t.3 - ret t.61 + t.37 = t.36 + t.38 = t.37 + t.39 = Eq(1 t.32) + t.40 = Eq(1 t.38) + t.26 = Eq(t.39 t.40) + t.41 = t.26 + t.42 = t.41 + if0 t.42 goto :while178_end +while178_body: + t.44 = t.0 + t.0 = t.44 + t.45 = [t.0+0] + t.46 = [t.45+16] + t.47 = t.23 + t.48 = t.47 + t.43 = call t.46(t.0 t.48) + t.49 = t.43 + t.50 = t.49 + if0 t.50 goto :if196_else +if196_body: + t.51 = 1 + t.52 = t.51 + t.6 = t.52 + t.54 = t.9 + t.55 = 0 + t.53 = LtS(t.54 t.55) + t.56 = t.53 + t.57 = t.56 + if0 t.57 goto :if206_else +if206_body: + t.59 = t.14 + t.14 = t.59 + t.60 = [t.14+0] + t.61 = [t.60+32] + t.58 = call t.61(t.14) + t.62 = t.58 + t.3 = t.62 + goto :if206_end +if206_else: + t.64 = 0 + t.65 = 555 + t.63 = Sub(t.64 t.65) + t.66 = t.63 + t.67 = t.66 + PrintIntS(t.67) + t.70 = t.17 + t.17 = t.70 + t.71 = [t.17+0] + t.72 = [t.71+12] + t.74 = t.14 + t.14 = t.74 + t.75 = [t.14+0] + t.76 = [t.75+32] + t.73 = call t.76(t.14) + t.77 = t.73 + t.69 = call t.72(t.17 t.77) + t.78 = t.69 + t.68 = t.78 + t.80 = 0 + t.81 = 555 + t.79 = Sub(t.80 t.81) + t.82 = t.79 + t.83 = t.82 + PrintIntS(t.83) +if206_end: + goto :if196_end +if196_else: + t.85 = 0 + t.86 = t.85 + t.84 = t.86 +if196_end: + t.88 = t.6 + t.89 = t.88 + t.87 = Eq(t.89 0) + t.90 = t.87 + t.91 = t.90 + t.92 = t.91 + if0 t.92 goto :if238_else +if238_body: + t.93 = t.14 + t.94 = t.93 + t.17 = t.94 + t.96 = t.14 + t.14 = t.96 + t.97 = [t.14+0] + t.98 = [t.97+32] + t.95 = call t.98(t.14) + t.99 = t.95 + t.14 = t.99 + t.101 = t.14 + t.14 = t.101 + t.102 = [t.14+0] + t.103 = [t.102+24] + t.100 = call t.103(t.14) + t.104 = t.100 + t.20 = t.104 + t.106 = t.14 + t.14 = t.106 + t.107 = [t.14+0] + t.108 = [t.107+28] + t.105 = call t.108(t.14) + t.109 = t.105 + t.23 = t.109 + t.110 = 1 + t.111 = t.110 + t.9 = t.111 + goto :if238_end +if238_else: + t.112 = 0 + t.113 = t.112 + t.84 = t.113 +if238_end: + goto :while178_test +while178_end: + t.114 = t.3 + t.115 = t.114 + t.116 = t.115 + ret t.116 func List_Search(this t.0 ) - t.3 = 0 - t.4 = this - t.5 = [this+48] - t.6 = [this+40] -while113_test: - t.7 = Eq(t.5 0) + t.4 = 0 + t.5 = t.4 + t.3 = t.5 + t.7 = this t.8 = t.7 - if0 t.8 goto :while113_end -while113_body: - t.0 = t.0 - t.10 = [t.0+0] - t.11 = [t.10+16] - t.12 = t.6 - t.9 = call t.11(t.0 t.12) - t.13 = t.9 - if0 t.13 goto :if116_else -if116_body: - t.3 = 1 - goto :if116_end -if116_else: - t.14 = 0 -if116_end: - t.4 = t.4 - t.16 = [t.4+0] - t.17 = [t.16+32] - t.15 = call t.17(t.4 ) - t.4 = t.15 - t.4 = t.4 - t.19 = [t.4+0] - t.20 = [t.19+24] - t.18 = call t.20(t.4 ) - t.5 = t.18 - t.4 = t.4 - t.22 = [t.4+0] - t.23 = [t.22+28] - t.21 = call t.23(t.4 ) - t.6 = t.21 - goto :while113_test -while113_end: - t.24 = t.3 - ret t.24 + t.6 = t.8 + t.10 = [this+48] + t.11 = t.10 + t.9 = t.11 + t.13 = [this+40] + t.14 = t.13 + t.12 = t.14 +while276_test: + t.16 = t.9 + t.17 = t.16 + t.15 = Eq(t.17 0) + t.18 = t.15 + t.19 = t.18 + t.20 = t.19 + if0 t.20 goto :while276_end +while276_body: + t.22 = t.0 + t.0 = t.22 + t.23 = [t.0+0] + t.24 = [t.23+16] + t.25 = t.12 + t.26 = t.25 + t.21 = call t.24(t.0 t.26) + t.27 = t.21 + t.28 = t.27 + if0 t.28 goto :if283_else +if283_body: + t.29 = 1 + t.30 = t.29 + t.3 = t.30 + goto :if283_end +if283_else: + t.32 = 0 + t.33 = t.32 + t.31 = t.33 +if283_end: + t.35 = t.6 + t.6 = t.35 + t.36 = [t.6+0] + t.37 = [t.36+32] + t.34 = call t.37(t.6) + t.38 = t.34 + t.6 = t.38 + t.40 = t.6 + t.6 = t.40 + t.41 = [t.6+0] + t.42 = [t.41+24] + t.39 = call t.42(t.6) + t.43 = t.39 + t.9 = t.43 + t.45 = t.6 + t.6 = t.45 + t.46 = [t.6+0] + t.47 = [t.46+28] + t.44 = call t.47(t.6) + t.48 = t.44 + t.12 = t.48 + goto :while276_test +while276_end: + t.49 = t.3 + t.50 = t.49 + t.51 = t.50 + ret t.51 func List_GetEnd(this ) t.0 = [this+48] - ret t.0 + t.1 = t.0 + t.2 = t.1 + ret t.2 func List_GetElem(this ) t.0 = [this+40] - ret t.0 + t.1 = t.0 + t.2 = t.1 + ret t.2 func List_GetNext(this ) t.0 = [this+44] - ret t.0 + t.1 = t.0 + t.2 = t.1 + ret t.2 func List_Print(this ) - t.2 = this - t.3 = [this+48] - t.4 = [this+40] -while134_test: - t.5 = Eq(t.3 0) - t.6 = t.5 - if0 t.6 goto :while134_end -while134_body: - t.4 = t.4 - t.8 = [t.4+0] - t.9 = [t.8+4] - t.7 = call t.9(t.4 ) - t.10 = t.7 - PrintIntS(t.10) - t.2 = t.2 - t.12 = [t.2+0] - t.13 = [t.12+32] - t.11 = call t.13(t.2 ) - t.2 = t.11 - t.2 = t.2 - t.15 = [t.2+0] - t.16 = [t.15+24] - t.14 = call t.16(t.2 ) - t.3 = t.14 - t.2 = t.2 - t.18 = [t.2+0] - t.19 = [t.18+28] - t.17 = call t.19(t.2 ) - t.4 = t.17 - goto :while134_test -while134_end: - t.20 = 1 - ret t.20 + t.3 = this + t.4 = t.3 + t.2 = t.4 + t.6 = [this+48] + t.7 = t.6 + t.5 = t.7 + t.9 = [this+40] + t.10 = t.9 + t.8 = t.10 +while328_test: + t.12 = t.5 + t.13 = t.12 + t.11 = Eq(t.13 0) + t.14 = t.11 + t.15 = t.14 + t.16 = t.15 + if0 t.16 goto :while328_end +while328_body: + t.18 = t.8 + t.8 = t.18 + t.19 = [t.8+0] + t.20 = [t.19+4] + t.17 = call t.20(t.8) + t.21 = t.17 + t.22 = t.21 + PrintIntS(t.22) + t.24 = t.2 + t.2 = t.24 + t.25 = [t.2+0] + t.26 = [t.25+32] + t.23 = call t.26(t.2) + t.27 = t.23 + t.2 = t.27 + t.29 = t.2 + t.2 = t.29 + t.30 = [t.2+0] + t.31 = [t.30+24] + t.28 = call t.31(t.2) + t.32 = t.28 + t.5 = t.32 + t.34 = t.2 + t.2 = t.34 + t.35 = [t.2+0] + t.36 = [t.35+28] + t.33 = call t.36(t.2) + t.37 = t.33 + t.8 = t.37 + goto :while328_test +while328_end: + t.38 = 1 + t.39 = t.38 + t.40 = t.39 + ret t.40 const functable_LL :LL_Start @@ -379,173 +587,270 @@ const functable_LL func LL_Start(this ) t.3 = HeapAllocZ(52) [t.3+0] = :functable_List - t.2 = t.3 - t.2 = t.2 - t.6 = [t.2+0] - t.7 = [t.6+0] - t.5 = call t.7(t.2 ) - t.4 = t.5 + t.4 = t.3 + t.5 = t.4 + t.2 = t.5 t.8 = t.2 - t.8 = t.8 - t.10 = [t.8+0] - t.11 = [t.10+0] - t.9 = call t.11(t.8 ) - t.4 = t.9 - t.8 = t.8 - t.13 = [t.8+0] - t.14 = [t.13+36] - t.12 = call t.14(t.8 ) - t.4 = t.12 - t.16 = HeapAllocZ(36) - [t.16+0] = :functable_Element - t.15 = t.16 - t.15 = t.15 - t.18 = [t.15+0] - t.19 = [t.18+0] - t.20 = 25 - t.21 = 37000 - t.22 = 0 - t.17 = call t.19(t.15 t.20 t.21 t.22) - t.4 = t.17 - t.8 = t.8 - t.24 = [t.8+0] - t.25 = [t.24+8] - t.26 = t.15 - t.23 = call t.25(t.8 t.26) - t.8 = t.23 - t.8 = t.8 - t.28 = [t.8+0] - t.29 = [t.28+36] - t.27 = call t.29(t.8 ) - t.4 = t.27 - t.30 = 10000000 - PrintIntS(t.30) - t.31 = HeapAllocZ(36) - [t.31+0] = :functable_Element - t.15 = t.31 - t.15 = t.15 - t.33 = [t.15+0] - t.34 = [t.33+0] - t.35 = 39 - t.36 = 42000 - t.37 = 1 - t.32 = call t.34(t.15 t.35 t.36 t.37) - t.4 = t.32 - t.38 = t.15 - t.8 = t.8 - t.40 = [t.8+0] - t.41 = [t.40+8] - t.42 = t.15 - t.39 = call t.41(t.8 t.42) - t.8 = t.39 - t.8 = t.8 - t.44 = [t.8+0] - t.45 = [t.44+36] - t.43 = call t.45(t.8 ) - t.4 = t.43 - t.46 = 10000000 - PrintIntS(t.46) - t.47 = HeapAllocZ(36) - [t.47+0] = :functable_Element - t.15 = t.47 - t.15 = t.15 - t.49 = [t.15+0] - t.50 = [t.49+0] - t.51 = 22 - t.52 = 34000 - t.53 = 0 - t.48 = call t.50(t.15 t.51 t.52 t.53) - t.4 = t.48 - t.8 = t.8 - t.55 = [t.8+0] - t.56 = [t.55+8] - t.57 = t.15 - t.54 = call t.56(t.8 t.57) - t.8 = t.54 - t.8 = t.8 - t.59 = [t.8+0] - t.60 = [t.59+36] - t.58 = call t.60(t.8 ) - t.4 = t.58 - t.62 = HeapAllocZ(36) - [t.62+0] = :functable_Element - t.61 = t.62 - t.61 = t.61 - t.64 = [t.61+0] - t.65 = [t.64+0] - t.66 = 27 - t.67 = 34000 - t.68 = 0 - t.63 = call t.65(t.61 t.66 t.67 t.68) - t.4 = t.63 - t.8 = t.8 - t.70 = [t.8+0] - t.71 = [t.70+20] - t.72 = t.38 - t.69 = call t.71(t.8 t.72) - t.73 = t.69 - PrintIntS(t.73) - t.8 = t.8 - t.75 = [t.8+0] - t.76 = [t.75+20] - t.77 = t.61 - t.74 = call t.76(t.8 t.77) - t.78 = t.74 - PrintIntS(t.78) - t.79 = 10000000 - PrintIntS(t.79) - t.80 = HeapAllocZ(36) - [t.80+0] = :functable_Element - t.15 = t.80 - t.15 = t.15 - t.82 = [t.15+0] - t.83 = [t.82+0] - t.84 = 28 - t.85 = 35000 - t.86 = 0 - t.81 = call t.83(t.15 t.84 t.85 t.86) - t.4 = t.81 - t.8 = t.8 - t.88 = [t.8+0] - t.89 = [t.88+8] - t.90 = t.15 - t.87 = call t.89(t.8 t.90) - t.8 = t.87 - t.8 = t.8 - t.92 = [t.8+0] - t.93 = [t.92+36] - t.91 = call t.93(t.8 ) - t.4 = t.91 - t.94 = 2220000 - PrintIntS(t.94) - t.8 = t.8 - t.96 = [t.8+0] - t.97 = [t.96+16] - t.98 = t.38 - t.95 = call t.97(t.8 t.98) - t.8 = t.95 - t.8 = t.8 - t.100 = [t.8+0] - t.101 = [t.100+36] - t.99 = call t.101(t.8 ) - t.4 = t.99 - t.102 = 33300000 - PrintIntS(t.102) - t.8 = t.8 - t.104 = [t.8+0] - t.105 = [t.104+16] - t.106 = t.15 - t.103 = call t.105(t.8 t.106) - t.8 = t.103 - t.8 = t.8 - t.108 = [t.8+0] - t.109 = [t.108+36] - t.107 = call t.109(t.8 ) - t.4 = t.107 - t.110 = 44440000 - PrintIntS(t.110) - t.111 = 0 - ret t.111 + t.2 = t.8 + t.9 = [t.2+0] + t.10 = [t.9+0] + t.7 = call t.10(t.2) + t.11 = t.7 + t.6 = t.11 + t.13 = t.2 + t.14 = t.13 + t.12 = t.14 + t.16 = t.12 + t.12 = t.16 + t.17 = [t.12+0] + t.18 = [t.17+0] + t.15 = call t.18(t.12) + t.19 = t.15 + t.6 = t.19 + t.21 = t.12 + t.12 = t.21 + t.22 = [t.12+0] + t.23 = [t.22+36] + t.20 = call t.23(t.12) + t.24 = t.20 + t.6 = t.24 + t.26 = HeapAllocZ(36) + [t.26+0] = :functable_Element + t.27 = t.26 + t.28 = t.27 + t.25 = t.28 + t.30 = t.25 + t.25 = t.30 + t.31 = [t.25+0] + t.32 = [t.31+0] + t.33 = 25 + t.34 = t.33 + t.35 = 37000 + t.36 = t.35 + t.37 = 0 + t.38 = t.37 + t.29 = call t.32(t.25 t.34 t.36 t.38) + t.39 = t.29 + t.6 = t.39 + t.41 = t.12 + t.12 = t.41 + t.42 = [t.12+0] + t.43 = [t.42+8] + t.44 = t.25 + t.45 = t.44 + t.40 = call t.43(t.12 t.45) + t.46 = t.40 + t.12 = t.46 + t.48 = t.12 + t.12 = t.48 + t.49 = [t.12+0] + t.50 = [t.49+36] + t.47 = call t.50(t.12) + t.51 = t.47 + t.6 = t.51 + t.52 = 10000000 + t.53 = t.52 + t.54 = t.53 + PrintIntS(t.54) + t.55 = HeapAllocZ(36) + [t.55+0] = :functable_Element + t.56 = t.55 + t.57 = t.56 + t.25 = t.57 + t.59 = t.25 + t.25 = t.59 + t.60 = [t.25+0] + t.61 = [t.60+0] + t.62 = 39 + t.63 = t.62 + t.64 = 42000 + t.65 = t.64 + t.66 = 1 + t.67 = t.66 + t.58 = call t.61(t.25 t.63 t.65 t.67) + t.68 = t.58 + t.6 = t.68 + t.70 = t.25 + t.71 = t.70 + t.69 = t.71 + t.73 = t.12 + t.12 = t.73 + t.74 = [t.12+0] + t.75 = [t.74+8] + t.76 = t.25 + t.77 = t.76 + t.72 = call t.75(t.12 t.77) + t.78 = t.72 + t.12 = t.78 + t.80 = t.12 + t.12 = t.80 + t.81 = [t.12+0] + t.82 = [t.81+36] + t.79 = call t.82(t.12) + t.83 = t.79 + t.6 = t.83 + t.84 = 10000000 + t.85 = t.84 + t.86 = t.85 + PrintIntS(t.86) + t.87 = HeapAllocZ(36) + [t.87+0] = :functable_Element + t.88 = t.87 + t.89 = t.88 + t.25 = t.89 + t.91 = t.25 + t.25 = t.91 + t.92 = [t.25+0] + t.93 = [t.92+0] + t.94 = 22 + t.95 = t.94 + t.96 = 34000 + t.97 = t.96 + t.98 = 0 + t.99 = t.98 + t.90 = call t.93(t.25 t.95 t.97 t.99) + t.100 = t.90 + t.6 = t.100 + t.102 = t.12 + t.12 = t.102 + t.103 = [t.12+0] + t.104 = [t.103+8] + t.105 = t.25 + t.106 = t.105 + t.101 = call t.104(t.12 t.106) + t.107 = t.101 + t.12 = t.107 + t.109 = t.12 + t.12 = t.109 + t.110 = [t.12+0] + t.111 = [t.110+36] + t.108 = call t.111(t.12) + t.112 = t.108 + t.6 = t.112 + t.114 = HeapAllocZ(36) + [t.114+0] = :functable_Element + t.115 = t.114 + t.116 = t.115 + t.113 = t.116 + t.118 = t.113 + t.113 = t.118 + t.119 = [t.113+0] + t.120 = [t.119+0] + t.121 = 27 + t.122 = t.121 + t.123 = 34000 + t.124 = t.123 + t.125 = 0 + t.126 = t.125 + t.117 = call t.120(t.113 t.122 t.124 t.126) + t.127 = t.117 + t.6 = t.127 + t.129 = t.12 + t.12 = t.129 + t.130 = [t.12+0] + t.131 = [t.130+20] + t.132 = t.69 + t.133 = t.132 + t.128 = call t.131(t.12 t.133) + t.134 = t.128 + t.135 = t.134 + PrintIntS(t.135) + t.137 = t.12 + t.12 = t.137 + t.138 = [t.12+0] + t.139 = [t.138+20] + t.140 = t.113 + t.141 = t.140 + t.136 = call t.139(t.12 t.141) + t.142 = t.136 + t.143 = t.142 + PrintIntS(t.143) + t.144 = 10000000 + t.145 = t.144 + t.146 = t.145 + PrintIntS(t.146) + t.147 = HeapAllocZ(36) + [t.147+0] = :functable_Element + t.148 = t.147 + t.149 = t.148 + t.25 = t.149 + t.151 = t.25 + t.25 = t.151 + t.152 = [t.25+0] + t.153 = [t.152+0] + t.154 = 28 + t.155 = t.154 + t.156 = 35000 + t.157 = t.156 + t.158 = 0 + t.159 = t.158 + t.150 = call t.153(t.25 t.155 t.157 t.159) + t.160 = t.150 + t.6 = t.160 + t.162 = t.12 + t.12 = t.162 + t.163 = [t.12+0] + t.164 = [t.163+8] + t.165 = t.25 + t.166 = t.165 + t.161 = call t.164(t.12 t.166) + t.167 = t.161 + t.12 = t.167 + t.169 = t.12 + t.12 = t.169 + t.170 = [t.12+0] + t.171 = [t.170+36] + t.168 = call t.171(t.12) + t.172 = t.168 + t.6 = t.172 + t.173 = 2220000 + t.174 = t.173 + t.175 = t.174 + PrintIntS(t.175) + t.177 = t.12 + t.12 = t.177 + t.178 = [t.12+0] + t.179 = [t.178+16] + t.180 = t.69 + t.181 = t.180 + t.176 = call t.179(t.12 t.181) + t.182 = t.176 + t.12 = t.182 + t.184 = t.12 + t.12 = t.184 + t.185 = [t.12+0] + t.186 = [t.185+36] + t.183 = call t.186(t.12) + t.187 = t.183 + t.6 = t.187 + t.188 = 33300000 + t.189 = t.188 + t.190 = t.189 + PrintIntS(t.190) + t.192 = t.12 + t.12 = t.192 + t.193 = [t.12+0] + t.194 = [t.193+16] + t.195 = t.25 + t.196 = t.195 + t.191 = call t.194(t.12 t.196) + t.197 = t.191 + t.12 = t.197 + t.199 = t.12 + t.12 = t.199 + t.200 = [t.12+0] + t.201 = [t.200+36] + t.198 = call t.201(t.12) + t.202 = t.198 + t.6 = t.202 + t.203 = 44440000 + t.204 = t.203 + t.205 = t.204 + PrintIntS(t.205) + t.206 = 0 + t.207 = t.206 + t.208 = t.207 + ret t.208 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/MoreThan4.vapor b/output/MoreThan4.vapor index fc09ab1..2479bbb 100644 --- a/output/MoreThan4.vapor +++ b/output/MoreThan4.vapor @@ -2,17 +2,25 @@ func Main() t.3 = HeapAllocZ(8) [t.3+0] = :functable_MT4 t.4 = t.3 - t.5 = [t.4+0] + t.5 = t.4 t.6 = [t.5+0] - t.7 = 1 - t.8 = 2 - t.9 = 3 - t.10 = 4 - t.11 = 5 - t.12 = 6 - t.2 = call t.6(t.4 t.7 t.8 t.9 t.10 t.11 t.12) - t.13 = t.2 - PrintIntS(t.13) + t.7 = [t.6+0] + t.8 = 1 + t.9 = t.8 + t.10 = 2 + t.11 = t.10 + t.12 = 3 + t.13 = t.12 + t.14 = 4 + t.15 = t.14 + t.16 = 5 + t.17 = t.16 + t.18 = 6 + t.19 = t.18 + t.2 = call t.7(t.5 t.9 t.11 t.13 t.15 t.17 t.19) + t.20 = t.2 + t.21 = t.20 + PrintIntS(t.21) ret const functable_MT4 @@ -21,45 +29,81 @@ const functable_MT4 func MT4_Start(this t.0 t.1 t.2 t.3 t.4 t.5 ) t.6 = t.0 - PrintIntS(t.6) - t.7 = t.1 - PrintIntS(t.7) - t.8 = t.2 + t.7 = t.6 + t.8 = t.7 PrintIntS(t.8) - t.9 = t.3 - PrintIntS(t.9) - t.10 = t.4 - PrintIntS(t.10) - t.11 = t.5 + t.9 = t.1 + t.10 = t.9 + t.11 = t.10 PrintIntS(t.11) - t.14 = [this] - t.15 = t.5 - t.16 = t.4 - t.17 = t.3 - t.18 = t.2 - t.19 = t.1 - t.20 = t.0 - t.14 = [t.14+4] - t.13 = call t.14(this t.15 t.16 t.17 t.18 t.19 t.20) - t.12 = t.13 - t.21 = t.12 - ret t.21 + t.12 = t.2 + t.13 = t.12 + t.14 = t.13 + PrintIntS(t.14) + t.15 = t.3 + t.16 = t.15 + t.17 = t.16 + PrintIntS(t.17) + t.18 = t.4 + t.19 = t.18 + t.20 = t.19 + PrintIntS(t.20) + t.21 = t.5 + t.22 = t.21 + t.23 = t.22 + PrintIntS(t.23) + t.26 = this + t.27 = [this] + t.28 = t.5 + t.29 = t.28 + t.30 = t.4 + t.31 = t.30 + t.32 = t.3 + t.33 = t.32 + t.34 = t.2 + t.35 = t.34 + t.36 = t.1 + t.37 = t.36 + t.38 = t.0 + t.39 = t.38 + t.27 = [t.27+4] + t.25 = call t.27(this t.29 t.31 t.33 t.35 t.37 t.39) + t.40 = t.25 + t.24 = t.40 + t.41 = t.24 + t.42 = t.41 + t.43 = t.42 + ret t.43 func MT4_Change(this t.0 t.1 t.2 t.3 t.4 t.5 ) t.6 = t.0 - PrintIntS(t.6) - t.7 = t.1 - PrintIntS(t.7) - t.8 = t.2 + t.7 = t.6 + t.8 = t.7 PrintIntS(t.8) - t.9 = t.3 - PrintIntS(t.9) - t.10 = t.4 - PrintIntS(t.10) - t.11 = t.5 + t.9 = t.1 + t.10 = t.9 + t.11 = t.10 PrintIntS(t.11) - t.12 = 0 - ret t.12 + t.12 = t.2 + t.13 = t.12 + t.14 = t.13 + PrintIntS(t.14) + t.15 = t.3 + t.16 = t.15 + t.17 = t.16 + PrintIntS(t.17) + t.18 = t.4 + t.19 = t.18 + t.20 = t.19 + PrintIntS(t.20) + t.21 = t.5 + t.22 = t.21 + t.23 = t.22 + PrintIntS(t.23) + t.24 = 0 + t.25 = t.24 + t.26 = t.25 + ret t.26 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/QuickSort.vapor b/output/QuickSort.vapor index 57389d6..1d0a9fe 100644 --- a/output/QuickSort.vapor +++ b/output/QuickSort.vapor @@ -2,12 +2,15 @@ func Main() t.3 = HeapAllocZ(24) [t.3+0] = :functable_QS t.4 = t.3 - t.5 = [t.4+0] + t.5 = t.4 t.6 = [t.5+0] - t.7 = 10 - t.2 = call t.6(t.4 t.7) - t.8 = t.2 - PrintIntS(t.8) + t.7 = [t.6+0] + t.8 = 10 + t.9 = t.8 + t.2 = call t.7(t.5 t.9) + t.10 = t.2 + t.11 = t.10 + PrintIntS(t.11) ret const functable_QS @@ -17,284 +20,448 @@ const functable_QS :QS_Init func QS_Start(this t.0 ) - t.3 = [this] - t.4 = t.0 - t.3 = [t.3+12] - t.2 = call t.3(this t.4) - t.1 = t.2 - t.6 = [this] - t.6 = [t.6+8] - t.5 = call t.6(this ) - t.1 = t.5 - t.7 = 9999 - PrintIntS(t.7) - t.9 = [this+20] - t.10 = 1 - t.8 = Sub(t.9 t.10) - t.1 = t.8 - t.12 = [this] - t.13 = 0 - t.14 = t.1 - t.12 = [t.12+4] - t.11 = call t.12(this t.13 t.14) + t.3 = this + t.4 = [this] + t.5 = t.0 + t.6 = t.5 + t.4 = [t.4+12] + t.2 = call t.4(this t.6) + t.7 = t.2 + t.1 = t.7 + t.9 = this + t.10 = [this] + t.10 = [t.10+8] + t.8 = call t.10(this) + t.11 = t.8 t.1 = t.11 - t.16 = [this] - t.16 = [t.16+8] - t.15 = call t.16(this ) - t.1 = t.15 - t.17 = 0 - ret t.17 + t.12 = 9999 + t.13 = t.12 + t.14 = t.13 + PrintIntS(t.14) + t.16 = [this+20] + t.17 = 1 + t.15 = Sub(t.16 t.17) + t.18 = t.15 + t.1 = t.18 + t.20 = this + t.21 = [this] + t.22 = 0 + t.23 = t.22 + t.24 = t.1 + t.25 = t.24 + t.21 = [t.21+4] + t.19 = call t.21(this t.23 t.25) + t.26 = t.19 + t.1 = t.26 + t.28 = this + t.29 = [this] + t.29 = [t.29+8] + t.27 = call t.29(this) + t.30 = t.27 + t.1 = t.30 + t.31 = 0 + t.32 = t.31 + t.33 = t.32 + ret t.33 func QS_Sort(this t.0 t.1 ) - t.2 = 0 - t.4 = t.0 - t.5 = t.1 - t.3 = LtS(t.4 t.5) - t.6 = t.3 - if0 t.6 goto :if22_else -if22_body: - t.9 = [this+16] - t.10 = MulS(t.1 4) - t.10 = Add(t.10 4) - t.10 = Add(t.9 t.10) - t.8 = [t.10] - t.7 = t.8 - t.13 = t.0 - t.14 = 1 - t.12 = Sub(t.13 t.14) - t.11 = t.12 + t.3 = 0 + t.4 = t.3 + t.2 = t.4 + t.6 = t.0 + t.7 = t.1 + t.5 = LtS(t.6 t.7) + t.8 = t.5 + t.9 = t.8 + if0 t.9 goto :if43_else +if43_body: + t.13 = [this+16] + t.12 = t.13 t.15 = t.1 - t.16 = 1 -while32_test: - t.17 = t.16 - if0 t.17 goto :while32_end -while32_body: - t.18 = 1 -while34_test: - t.19 = t.18 - if0 t.19 goto :while34_end -while34_body: - t.21 = t.11 - t.22 = 1 - t.20 = Add(t.21 t.22) - t.11 = t.20 - t.25 = [this+16] - t.26 = MulS(t.11 4) - t.26 = Add(t.26 4) - t.26 = Add(t.25 t.26) - t.24 = [t.26] - t.23 = t.24 - t.29 = t.23 - t.30 = t.7 - t.28 = LtS(t.29 t.30) - t.27 = Eq(t.28 0) - t.31 = t.27 - if0 t.31 goto :if42_else -if42_body: - t.18 = 0 - goto :if42_end -if42_else: - t.18 = 1 -if42_end: - goto :while34_test -while34_end: - t.18 = 1 -while47_test: - t.32 = t.18 - if0 t.32 goto :while47_end -while47_body: - t.34 = t.15 - t.35 = 1 - t.33 = Sub(t.34 t.35) - t.15 = t.33 - t.37 = [this+16] - t.38 = MulS(t.15 4) - t.38 = Add(t.38 4) - t.38 = Add(t.37 t.38) - t.36 = [t.38] - t.23 = t.36 - t.41 = t.7 - t.42 = t.23 - t.40 = LtS(t.41 t.42) - t.39 = Eq(t.40 0) - t.43 = t.39 - if0 t.43 goto :if55_else -if55_body: - t.18 = 0 - goto :if55_end -if55_else: - t.18 = 1 -if55_end: - goto :while47_test -while47_end: - t.45 = [this+16] - t.46 = MulS(t.11 4) - t.46 = Add(t.46 4) - t.46 = Add(t.45 t.46) - t.44 = [t.46] - t.2 = t.44 - t.47 = [this+16] - t.48 = MulS(t.11 4) - t.48 = Add(t.48 4) - t.48 = Add(t.47 t.48) - t.50 = [this+16] - t.51 = MulS(t.15 4) - t.51 = Add(t.51 4) - t.51 = Add(t.50 t.51) - t.49 = [t.51] - [t.48] = t.49 - t.52 = [this+16] - t.53 = MulS(t.15 4) - t.53 = Add(t.53 4) - t.53 = Add(t.52 t.53) - [t.53] = t.2 - t.55 = t.15 - t.57 = t.11 - t.58 = 1 - t.56 = Add(t.57 t.58) - t.59 = t.56 - t.54 = LtS(t.55 t.59) - t.60 = t.54 - if0 t.60 goto :if70_else -if70_body: - t.16 = 0 - goto :if70_end -if70_else: - t.16 = 1 -if70_end: - goto :while32_test -while32_end: - t.61 = [this+16] - t.62 = MulS(t.15 4) - t.62 = Add(t.62 4) - t.62 = Add(t.61 t.62) - t.64 = [this+16] - t.65 = MulS(t.11 4) - t.65 = Add(t.65 4) - t.65 = Add(t.64 t.65) - t.63 = [t.65] - [t.62] = t.63 - t.66 = [this+16] - t.67 = MulS(t.11 4) - t.67 = Add(t.67 4) - t.67 = Add(t.66 t.67) - t.69 = [this+16] - t.70 = MulS(t.1 4) - t.70 = Add(t.70 4) - t.70 = Add(t.69 t.70) - t.68 = [t.70] - [t.67] = t.68 - t.71 = [this+16] - t.72 = MulS(t.1 4) - t.72 = Add(t.72 4) - t.72 = Add(t.71 t.72) - [t.72] = t.2 - t.75 = [this] - t.78 = t.11 - t.79 = 1 - t.77 = Sub(t.78 t.79) - t.76 = t.0 - t.80 = t.77 - t.75 = [t.75+4] - t.74 = call t.75(this t.79 t.80) - t.73 = t.74 - t.82 = [this] - t.84 = t.11 - t.85 = 1 - t.83 = Add(t.84 t.85) - t.86 = t.83 - t.87 = t.1 - t.82 = [t.82+4] - t.81 = call t.82(this t.86 t.87) - t.73 = t.81 - goto :if22_end -if22_else: - t.73 = 0 -if22_end: - t.88 = 0 - ret t.88 + t.14 = MulS(t.15 4) + t.14 = Add(t.14 4) + t.14 = Add(t.12 t.14) + t.11 = [t.14] + t.16 = t.11 + t.10 = t.16 + t.19 = t.0 + t.20 = 1 + t.18 = Sub(t.19 t.20) + t.21 = t.18 + t.17 = t.21 + t.23 = t.1 + t.24 = t.23 + t.22 = t.24 + t.26 = 1 + t.27 = t.26 + t.25 = t.27 +while62_test: + t.28 = t.25 + t.29 = t.28 + t.30 = t.29 + if0 t.30 goto :while62_end +while62_body: + t.32 = 1 + t.33 = t.32 + t.31 = t.33 +while68_test: + t.34 = t.31 + t.35 = t.34 + t.36 = t.35 + if0 t.36 goto :while68_end +while68_body: + t.38 = t.17 + t.39 = 1 + t.37 = Add(t.38 t.39) + t.40 = t.37 + t.17 = t.40 + t.44 = [this+16] + t.43 = t.44 + t.46 = t.17 + t.45 = MulS(t.46 4) + t.45 = Add(t.45 4) + t.45 = Add(t.43 t.45) + t.42 = [t.45] + t.47 = t.42 + t.41 = t.47 + t.50 = t.41 + t.51 = t.10 + t.49 = LtS(t.50 t.51) + t.52 = t.49 + t.53 = t.52 + t.54 = t.53 + t.48 = Eq(t.54 0) + t.55 = t.48 + t.56 = t.55 + t.57 = t.56 + if0 t.57 goto :if82_else +if82_body: + t.58 = 0 + t.59 = t.58 + t.31 = t.59 + goto :if82_end +if82_else: + t.60 = 1 + t.61 = t.60 + t.31 = t.61 +if82_end: + goto :while68_test +while68_end: + t.62 = 1 + t.63 = t.62 + t.31 = t.63 +while98_test: + t.64 = t.31 + t.65 = t.64 + t.66 = t.65 + if0 t.66 goto :while98_end +while98_body: + t.68 = t.22 + t.69 = 1 + t.67 = Sub(t.68 t.69) + t.70 = t.67 + t.22 = t.70 + t.73 = [this+16] + t.72 = t.73 + t.75 = t.22 + t.74 = MulS(t.75 4) + t.74 = Add(t.74 4) + t.74 = Add(t.72 t.74) + t.71 = [t.74] + t.76 = t.71 + t.41 = t.76 + t.79 = t.10 + t.80 = t.41 + t.78 = LtS(t.79 t.80) + t.81 = t.78 + t.82 = t.81 + t.83 = t.82 + t.77 = Eq(t.83 0) + t.84 = t.77 + t.85 = t.84 + t.86 = t.85 + if0 t.86 goto :if112_else +if112_body: + t.87 = 0 + t.88 = t.87 + t.31 = t.88 + goto :if112_end +if112_else: + t.89 = 1 + t.90 = t.89 + t.31 = t.90 +if112_end: + goto :while98_test +while98_end: + t.93 = [this+16] + t.92 = t.93 + t.95 = t.17 + t.94 = MulS(t.95 4) + t.94 = Add(t.94 4) + t.94 = Add(t.92 t.94) + t.91 = [t.94] + t.96 = t.91 + t.2 = t.96 + t.97 = [this+16] + t.99 = t.17 + t.100 = t.99 + t.98 = MulS(t.100 4) + t.98 = Add(t.98 4) + t.98 = Add(t.97 t.98) + t.103 = [this+16] + t.102 = t.103 + t.105 = t.22 + t.104 = MulS(t.105 4) + t.104 = Add(t.104 4) + t.104 = Add(t.102 t.104) + t.101 = [t.104] + t.106 = t.101 + [t.98] = t.106 + t.107 = [this+16] + t.109 = t.22 + t.110 = t.109 + t.108 = MulS(t.110 4) + t.108 = Add(t.108 4) + t.108 = Add(t.107 t.108) + t.111 = t.2 + t.112 = t.111 + [t.108] = t.112 + t.114 = t.22 + t.116 = t.17 + t.117 = 1 + t.115 = Add(t.116 t.117) + t.118 = t.115 + t.119 = t.118 + t.113 = LtS(t.114 t.119) + t.120 = t.113 + t.121 = t.120 + if0 t.121 goto :if148_else +if148_body: + t.122 = 0 + t.123 = t.122 + t.25 = t.123 + goto :if148_end +if148_else: + t.124 = 1 + t.125 = t.124 + t.25 = t.125 +if148_end: + goto :while62_test +while62_end: + t.126 = [this+16] + t.128 = t.22 + t.129 = t.128 + t.127 = MulS(t.129 4) + t.127 = Add(t.127 4) + t.127 = Add(t.126 t.127) + t.132 = [this+16] + t.131 = t.132 + t.134 = t.17 + t.133 = MulS(t.134 4) + t.133 = Add(t.133 4) + t.133 = Add(t.131 t.133) + t.130 = [t.133] + t.135 = t.130 + [t.127] = t.135 + t.136 = [this+16] + t.138 = t.17 + t.139 = t.138 + t.137 = MulS(t.139 4) + t.137 = Add(t.137 4) + t.137 = Add(t.136 t.137) + t.142 = [this+16] + t.141 = t.142 + t.144 = t.1 + t.143 = MulS(t.144 4) + t.143 = Add(t.143 4) + t.143 = Add(t.141 t.143) + t.140 = [t.143] + t.145 = t.140 + [t.137] = t.145 + t.146 = [this+16] + t.148 = t.1 + t.149 = t.148 + t.147 = MulS(t.149 4) + t.147 = Add(t.147 4) + t.147 = Add(t.146 t.147) + t.150 = t.2 + t.151 = t.150 + [t.147] = t.151 + t.154 = this + t.155 = [this] + t.156 = t.0 + t.157 = t.156 + t.159 = t.17 + t.160 = 1 + t.158 = Sub(t.159 t.160) + t.161 = t.158 + t.155 = [t.155+4] + t.153 = call t.155(this t.157 t.161) + t.162 = t.153 + t.152 = t.162 + t.164 = this + t.165 = [this] + t.167 = t.17 + t.168 = 1 + t.166 = Add(t.167 t.168) + t.169 = t.166 + t.170 = t.1 + t.171 = t.170 + t.165 = [t.165+4] + t.163 = call t.165(this t.169 t.171) + t.172 = t.163 + t.152 = t.172 + goto :if43_end +if43_else: + t.173 = 0 + t.174 = t.173 + t.152 = t.174 +if43_end: + t.175 = 0 + t.176 = t.175 + t.177 = t.176 + ret t.177 func QS_Print(this ) - t.0 = 0 -while104_test: - t.2 = t.0 - t.3 = [this+20] - t.1 = LtS(t.2 t.3) - t.4 = t.1 - if0 t.4 goto :while104_end -while104_body: - t.6 = [this+16] - t.7 = MulS(t.0 4) - t.7 = Add(t.7 4) - t.7 = Add(t.6 t.7) - t.5 = [t.7] - t.8 = t.5 - PrintIntS(t.8) - t.10 = t.0 - t.11 = 1 - t.9 = Add(t.10 t.11) - t.0 = t.9 - goto :while104_test -while104_end: - t.12 = 0 - ret t.12 + t.1 = 0 + t.2 = t.1 + t.0 = t.2 +while214_test: + t.4 = t.0 + t.5 = [this+20] + t.6 = t.5 + t.7 = t.6 + t.3 = LtS(t.4 t.7) + t.8 = t.3 + t.9 = t.8 + if0 t.9 goto :while214_end +while214_body: + t.12 = [this+16] + t.11 = t.12 + t.14 = t.0 + t.13 = MulS(t.14 4) + t.13 = Add(t.13 4) + t.13 = Add(t.11 t.13) + t.10 = [t.13] + t.15 = t.10 + t.16 = t.15 + PrintIntS(t.16) + t.18 = t.0 + t.19 = 1 + t.17 = Add(t.18 t.19) + t.20 = t.17 + t.0 = t.20 + goto :while214_test +while214_end: + t.21 = 0 + t.22 = t.21 + t.23 = t.22 + ret t.23 func QS_Init(this t.0 ) - [this+20] = t.0 - t.1 = call :AllocArray(t.0) - [this+16] = t.1 - t.2 = [this+16] - t.3 = MulS(0 4) - t.3 = Add(t.3 4) - t.3 = Add(t.2 t.3) - [t.3] = 20 - t.4 = [this+16] - t.5 = MulS(1 4) - t.5 = Add(t.5 4) - t.5 = Add(t.4 t.5) - [t.5] = 7 - t.6 = [this+16] - t.7 = MulS(2 4) - t.7 = Add(t.7 4) - t.7 = Add(t.6 t.7) - [t.7] = 12 + t.1 = t.0 + t.2 = t.1 + [this+20] = t.2 + t.3 = t.0 + t.4 = t.3 + t.5 = call :AllocArray(t.4) + t.6 = t.5 + t.7 = t.6 + [this+16] = t.7 t.8 = [this+16] - t.9 = MulS(3 4) + t.10 = 0 + t.11 = t.10 + t.9 = MulS(t.11 4) t.9 = Add(t.9 4) t.9 = Add(t.8 t.9) - [t.9] = 18 - t.10 = [this+16] - t.11 = MulS(4 4) - t.11 = Add(t.11 4) - t.11 = Add(t.10 t.11) - [t.11] = 2 - t.12 = [this+16] - t.13 = MulS(5 4) - t.13 = Add(t.13 4) - t.13 = Add(t.12 t.13) - [t.13] = 11 + t.12 = 20 + t.13 = t.12 + [t.9] = t.13 t.14 = [this+16] - t.15 = MulS(6 4) + t.16 = 1 + t.17 = t.16 + t.15 = MulS(t.17 4) t.15 = Add(t.15 4) t.15 = Add(t.14 t.15) - [t.15] = 6 - t.16 = [this+16] - t.17 = MulS(7 4) - t.17 = Add(t.17 4) - t.17 = Add(t.16 t.17) - [t.17] = 9 - t.18 = [this+16] - t.19 = MulS(8 4) - t.19 = Add(t.19 4) - t.19 = Add(t.18 t.19) - [t.19] = 19 + t.18 = 7 + t.19 = t.18 + [t.15] = t.19 t.20 = [this+16] - t.21 = MulS(9 4) + t.22 = 2 + t.23 = t.22 + t.21 = MulS(t.23 4) t.21 = Add(t.21 4) t.21 = Add(t.20 t.21) - [t.21] = 5 - t.22 = 0 - ret t.22 + t.24 = 12 + t.25 = t.24 + [t.21] = t.25 + t.26 = [this+16] + t.28 = 3 + t.29 = t.28 + t.27 = MulS(t.29 4) + t.27 = Add(t.27 4) + t.27 = Add(t.26 t.27) + t.30 = 18 + t.31 = t.30 + [t.27] = t.31 + t.32 = [this+16] + t.34 = 4 + t.35 = t.34 + t.33 = MulS(t.35 4) + t.33 = Add(t.33 4) + t.33 = Add(t.32 t.33) + t.36 = 2 + t.37 = t.36 + [t.33] = t.37 + t.38 = [this+16] + t.40 = 5 + t.41 = t.40 + t.39 = MulS(t.41 4) + t.39 = Add(t.39 4) + t.39 = Add(t.38 t.39) + t.42 = 11 + t.43 = t.42 + [t.39] = t.43 + t.44 = [this+16] + t.46 = 6 + t.47 = t.46 + t.45 = MulS(t.47 4) + t.45 = Add(t.45 4) + t.45 = Add(t.44 t.45) + t.48 = 6 + t.49 = t.48 + [t.45] = t.49 + t.50 = [this+16] + t.52 = 7 + t.53 = t.52 + t.51 = MulS(t.53 4) + t.51 = Add(t.51 4) + t.51 = Add(t.50 t.51) + t.54 = 9 + t.55 = t.54 + [t.51] = t.55 + t.56 = [this+16] + t.58 = 8 + t.59 = t.58 + t.57 = MulS(t.59 4) + t.57 = Add(t.57 4) + t.57 = Add(t.56 t.57) + t.60 = 19 + t.61 = t.60 + [t.57] = t.61 + t.62 = [this+16] + t.64 = 9 + t.65 = t.64 + t.63 = MulS(t.65 4) + t.63 = Add(t.63 4) + t.63 = Add(t.62 t.63) + t.66 = 5 + t.67 = t.66 + [t.63] = t.67 + t.68 = 0 + t.69 = t.68 + t.70 = t.69 + ret t.70 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/TreeVisitor.vapor b/output/TreeVisitor.vapor index 8cbc9cc..8df4b85 100644 --- a/output/TreeVisitor.vapor +++ b/output/TreeVisitor.vapor @@ -2,11 +2,13 @@ func Main() t.3 = HeapAllocZ(4) [t.3+0] = :functable_TV t.4 = t.3 - t.5 = [t.4+0] + t.5 = t.4 t.6 = [t.5+0] - t.2 = call t.6(t.4 ) - t.7 = t.2 - PrintIntS(t.7) + t.7 = [t.6+0] + t.2 = call t.7(t.5) + t.8 = t.2 + t.9 = t.8 + PrintIntS(t.9) ret const functable_TV @@ -15,137 +17,205 @@ const functable_TV func TV_Start(this ) t.3 = HeapAllocZ(108) [t.3+0] = :functable_Tree - t.2 = t.3 - t.2 = t.2 - t.6 = [t.2+0] - t.7 = [t.6+0] - t.8 = 16 - t.5 = call t.7(t.2 t.8) - t.4 = t.5 - t.2 = t.2 - t.10 = [t.2+0] - t.11 = [t.10+72] - t.9 = call t.11(t.2 ) - t.4 = t.9 - t.12 = 100000000 - PrintIntS(t.12) - t.2 = t.2 - t.14 = [t.2+0] - t.15 = [t.14+48] - t.16 = 8 - t.13 = call t.15(t.2 t.16) - t.4 = t.13 - t.2 = t.2 - t.18 = [t.2+0] - t.19 = [t.18+48] - t.20 = 24 - t.17 = call t.19(t.2 t.20) - t.4 = t.17 - t.2 = t.2 - t.22 = [t.2+0] - t.23 = [t.22+48] - t.24 = 4 - t.21 = call t.23(t.2 t.24) - t.4 = t.21 - t.2 = t.2 - t.26 = [t.2+0] - t.27 = [t.26+48] - t.28 = 12 - t.25 = call t.27(t.2 t.28) - t.4 = t.25 - t.2 = t.2 - t.30 = [t.2+0] - t.31 = [t.30+48] - t.32 = 20 - t.29 = call t.31(t.2 t.32) - t.4 = t.29 - t.2 = t.2 - t.34 = [t.2+0] - t.35 = [t.34+48] - t.36 = 28 - t.33 = call t.35(t.2 t.36) - t.4 = t.33 - t.2 = t.2 + t.4 = t.3 + t.5 = t.4 + t.2 = t.5 + t.8 = t.2 + t.2 = t.8 + t.9 = [t.2+0] + t.10 = [t.9+0] + t.11 = 16 + t.12 = t.11 + t.7 = call t.10(t.2 t.12) + t.13 = t.7 + t.6 = t.13 + t.15 = t.2 + t.2 = t.15 + t.16 = [t.2+0] + t.17 = [t.16+72] + t.14 = call t.17(t.2) + t.18 = t.14 + t.6 = t.18 + t.19 = 100000000 + t.20 = t.19 + t.21 = t.20 + PrintIntS(t.21) + t.23 = t.2 + t.2 = t.23 + t.24 = [t.2+0] + t.25 = [t.24+48] + t.26 = 8 + t.27 = t.26 + t.22 = call t.25(t.2 t.27) + t.28 = t.22 + t.6 = t.28 + t.30 = t.2 + t.2 = t.30 + t.31 = [t.2+0] + t.32 = [t.31+48] + t.33 = 24 + t.34 = t.33 + t.29 = call t.32(t.2 t.34) + t.35 = t.29 + t.6 = t.35 + t.37 = t.2 + t.2 = t.37 t.38 = [t.2+0] t.39 = [t.38+48] - t.40 = 14 - t.37 = call t.39(t.2 t.40) - t.4 = t.37 - t.2 = t.2 - t.42 = [t.2+0] - t.43 = [t.42+72] - t.41 = call t.43(t.2 ) - t.4 = t.41 - t.44 = 100000000 - PrintIntS(t.44) - t.46 = HeapAllocZ(16) - [t.46+0] = :functable_MyVisitor - t.45 = t.46 - t.47 = 50000000 - PrintIntS(t.47) - t.2 = t.2 - t.50 = [t.2+0] - t.51 = [t.50+80] - t.52 = t.45 - t.49 = call t.51(t.2 t.52) - t.48 = t.49 - t.53 = 100000000 - PrintIntS(t.53) - t.2 = t.2 - t.55 = [t.2+0] - t.56 = [t.55+68] - t.57 = 24 - t.54 = call t.56(t.2 t.57) - t.58 = t.54 - PrintIntS(t.58) - t.2 = t.2 - t.60 = [t.2+0] - t.61 = [t.60+68] - t.62 = 12 - t.59 = call t.61(t.2 t.62) - t.63 = t.59 - PrintIntS(t.63) - t.2 = t.2 - t.65 = [t.2+0] - t.66 = [t.65+68] - t.67 = 16 - t.64 = call t.66(t.2 t.67) - t.68 = t.64 - PrintIntS(t.68) - t.2 = t.2 - t.70 = [t.2+0] - t.71 = [t.70+68] - t.72 = 50 - t.69 = call t.71(t.2 t.72) - t.73 = t.69 - PrintIntS(t.73) - t.2 = t.2 - t.75 = [t.2+0] - t.76 = [t.75+68] - t.77 = 12 - t.74 = call t.76(t.2 t.77) - t.78 = t.74 + t.40 = 4 + t.41 = t.40 + t.36 = call t.39(t.2 t.41) + t.42 = t.36 + t.6 = t.42 + t.44 = t.2 + t.2 = t.44 + t.45 = [t.2+0] + t.46 = [t.45+48] + t.47 = 12 + t.48 = t.47 + t.43 = call t.46(t.2 t.48) + t.49 = t.43 + t.6 = t.49 + t.51 = t.2 + t.2 = t.51 + t.52 = [t.2+0] + t.53 = [t.52+48] + t.54 = 20 + t.55 = t.54 + t.50 = call t.53(t.2 t.55) + t.56 = t.50 + t.6 = t.56 + t.58 = t.2 + t.2 = t.58 + t.59 = [t.2+0] + t.60 = [t.59+48] + t.61 = 28 + t.62 = t.61 + t.57 = call t.60(t.2 t.62) + t.63 = t.57 + t.6 = t.63 + t.65 = t.2 + t.2 = t.65 + t.66 = [t.2+0] + t.67 = [t.66+48] + t.68 = 14 + t.69 = t.68 + t.64 = call t.67(t.2 t.69) + t.70 = t.64 + t.6 = t.70 + t.72 = t.2 + t.2 = t.72 + t.73 = [t.2+0] + t.74 = [t.73+72] + t.71 = call t.74(t.2) + t.75 = t.71 + t.6 = t.75 + t.76 = 100000000 + t.77 = t.76 + t.78 = t.77 PrintIntS(t.78) - t.2 = t.2 - t.80 = [t.2+0] - t.81 = [t.80+52] - t.82 = 12 - t.79 = call t.81(t.2 t.82) - t.4 = t.79 - t.2 = t.2 - t.84 = [t.2+0] - t.85 = [t.84+72] - t.83 = call t.85(t.2 ) - t.4 = t.83 - t.2 = t.2 - t.87 = [t.2+0] - t.88 = [t.87+68] - t.89 = 12 - t.86 = call t.88(t.2 t.89) - t.90 = t.86 - PrintIntS(t.90) - t.91 = 0 - ret t.91 + t.80 = HeapAllocZ(16) + [t.80+0] = :functable_MyVisitor + t.81 = t.80 + t.82 = t.81 + t.79 = t.82 + t.83 = 50000000 + t.84 = t.83 + t.85 = t.84 + PrintIntS(t.85) + t.88 = t.2 + t.2 = t.88 + t.89 = [t.2+0] + t.90 = [t.89+80] + t.91 = t.79 + t.92 = t.91 + t.87 = call t.90(t.2 t.92) + t.93 = t.87 + t.86 = t.93 + t.94 = 100000000 + t.95 = t.94 + t.96 = t.95 + PrintIntS(t.96) + t.98 = t.2 + t.2 = t.98 + t.99 = [t.2+0] + t.100 = [t.99+68] + t.101 = 24 + t.102 = t.101 + t.97 = call t.100(t.2 t.102) + t.103 = t.97 + t.104 = t.103 + PrintIntS(t.104) + t.106 = t.2 + t.2 = t.106 + t.107 = [t.2+0] + t.108 = [t.107+68] + t.109 = 12 + t.110 = t.109 + t.105 = call t.108(t.2 t.110) + t.111 = t.105 + t.112 = t.111 + PrintIntS(t.112) + t.114 = t.2 + t.2 = t.114 + t.115 = [t.2+0] + t.116 = [t.115+68] + t.117 = 16 + t.118 = t.117 + t.113 = call t.116(t.2 t.118) + t.119 = t.113 + t.120 = t.119 + PrintIntS(t.120) + t.122 = t.2 + t.2 = t.122 + t.123 = [t.2+0] + t.124 = [t.123+68] + t.125 = 50 + t.126 = t.125 + t.121 = call t.124(t.2 t.126) + t.127 = t.121 + t.128 = t.127 + PrintIntS(t.128) + t.130 = t.2 + t.2 = t.130 + t.131 = [t.2+0] + t.132 = [t.131+68] + t.133 = 12 + t.134 = t.133 + t.129 = call t.132(t.2 t.134) + t.135 = t.129 + t.136 = t.135 + PrintIntS(t.136) + t.138 = t.2 + t.2 = t.138 + t.139 = [t.2+0] + t.140 = [t.139+52] + t.141 = 12 + t.142 = t.141 + t.137 = call t.140(t.2 t.142) + t.143 = t.137 + t.6 = t.143 + t.145 = t.2 + t.2 = t.145 + t.146 = [t.2+0] + t.147 = [t.146+72] + t.144 = call t.147(t.2) + t.148 = t.144 + t.6 = t.148 + t.150 = t.2 + t.2 = t.150 + t.151 = [t.2+0] + t.152 = [t.151+68] + t.153 = 12 + t.154 = t.153 + t.149 = call t.152(t.2 t.154) + t.155 = t.149 + t.156 = t.155 + PrintIntS(t.156) + t.157 = 0 + t.158 = t.157 + t.159 = t.158 + ret t.159 const functable_Tree :Tree_Init @@ -171,721 +241,1051 @@ const functable_Tree :Tree_accept func Tree_Init(this t.0 ) - [this+92] = t.0 - [this+96] = 0 - [this+100] = 0 - t.1 = 1 - ret t.1 + t.1 = t.0 + t.2 = t.1 + [this+92] = t.2 + t.3 = 0 + t.4 = t.3 + [this+96] = t.4 + t.5 = 0 + t.6 = t.5 + [this+100] = t.6 + t.7 = 1 + t.8 = t.7 + t.9 = t.8 + ret t.9 func Tree_SetRight(this t.0 ) - [this+88] = t.0 - t.1 = 1 - ret t.1 + t.1 = t.0 + t.2 = t.1 + [this+88] = t.2 + t.3 = 1 + t.4 = t.3 + t.5 = t.4 + ret t.5 func Tree_SetLeft(this t.0 ) - [this+84] = t.0 - t.1 = 1 - ret t.1 + t.1 = t.0 + t.2 = t.1 + [this+84] = t.2 + t.3 = 1 + t.4 = t.3 + t.5 = t.4 + ret t.5 func Tree_GetRight(this ) t.0 = [this+88] - ret t.0 + t.1 = t.0 + t.2 = t.1 + ret t.2 func Tree_GetLeft(this ) t.0 = [this+84] - ret t.0 + t.1 = t.0 + t.2 = t.1 + ret t.2 func Tree_GetKey(this ) t.0 = [this+92] - ret t.0 + t.1 = t.0 + t.2 = t.1 + ret t.2 func Tree_SetKey(this t.0 ) - [this+92] = t.0 - t.1 = 1 - ret t.1 + t.1 = t.0 + t.2 = t.1 + [this+92] = t.2 + t.3 = 1 + t.4 = t.3 + t.5 = t.4 + ret t.5 func Tree_GetHas_Right(this ) t.0 = [this+100] - ret t.0 + t.1 = t.0 + t.2 = t.1 + ret t.2 func Tree_GetHas_Left(this ) t.0 = [this+96] - ret t.0 + t.1 = t.0 + t.2 = t.1 + ret t.2 func Tree_SetHas_Left(this t.0 ) - [this+96] = t.0 - t.1 = 1 - ret t.1 + t.1 = t.0 + t.2 = t.1 + [this+96] = t.2 + t.3 = 1 + t.4 = t.3 + t.5 = t.4 + ret t.5 func Tree_SetHas_Right(this t.0 ) - [this+100] = t.0 - t.1 = 1 - ret t.1 + t.1 = t.0 + t.2 = t.1 + [this+100] = t.2 + t.3 = 1 + t.4 = t.3 + t.5 = t.4 + ret t.5 func Tree_Compare(this t.0 t.1 ) - t.2 = 0 - t.5 = t.1 - t.6 = 1 - t.4 = Add(t.5 t.6) - t.3 = t.4 - t.8 = t.0 - t.9 = t.1 - t.7 = LtS(t.8 t.9) - t.10 = t.7 - if0 t.10 goto :if105_else -if105_body: - t.2 = 0 - goto :if105_end -if105_else: - t.13 = t.0 - t.14 = t.3 - t.12 = LtS(t.13 t.14) - t.11 = Eq(t.12 0) - t.15 = t.11 - if0 t.15 goto :if109_else -if109_body: - t.2 = 0 - goto :if109_end -if109_else: - t.2 = 1 -if109_end: -if105_end: - t.16 = t.2 - ret t.16 + t.3 = 0 + t.4 = t.3 + t.2 = t.4 + t.7 = t.1 + t.8 = 1 + t.6 = Add(t.7 t.8) + t.9 = t.6 + t.5 = t.9 + t.11 = t.0 + t.12 = t.1 + t.10 = LtS(t.11 t.12) + t.13 = t.10 + t.14 = t.13 + if0 t.14 goto :if216_else +if216_body: + t.15 = 0 + t.16 = t.15 + t.2 = t.16 + goto :if216_end +if216_else: + t.19 = t.0 + t.20 = t.5 + t.18 = LtS(t.19 t.20) + t.21 = t.18 + t.22 = t.21 + t.23 = t.22 + t.17 = Eq(t.23 0) + t.24 = t.17 + t.25 = t.24 + t.26 = t.25 + if0 t.26 goto :if223_else +if223_body: + t.27 = 0 + t.28 = t.27 + t.2 = t.28 + goto :if223_end +if223_else: + t.29 = 1 + t.30 = t.29 + t.2 = t.30 +if223_end: +if216_end: + t.31 = t.2 + t.32 = t.31 + t.33 = t.32 + ret t.33 func Tree_Insert(this t.0 ) t.3 = HeapAllocZ(108) [t.3+0] = :functable_Tree - t.2 = t.3 - t.2 = t.2 - t.6 = [t.2+0] - t.7 = [t.6+0] - t.8 = t.0 - t.5 = call t.7(t.2 t.8) - t.4 = t.5 - t.9 = this - t.10 = 1 -while120_test: - t.11 = t.10 - if0 t.11 goto :while120_end -while120_body: - t.9 = t.9 - t.14 = [t.9+0] - t.15 = [t.14+20] - t.13 = call t.15(t.9 ) - t.12 = t.13 - t.17 = t.0 - t.18 = t.12 - t.16 = LtS(t.17 t.18) - t.19 = t.16 - if0 t.19 goto :if125_else -if125_body: - t.9 = t.9 - t.21 = [t.9+0] - t.22 = [t.21+32] - t.20 = call t.22(t.9 ) - t.23 = t.20 - if0 t.23 goto :if129_else -if129_body: - t.9 = t.9 - t.25 = [t.9+0] - t.26 = [t.25+16] - t.24 = call t.26(t.9 ) - t.9 = t.24 - goto :if129_end -if129_else: - t.10 = 0 - t.9 = t.9 - t.28 = [t.9+0] - t.29 = [t.28+36] - t.30 = 1 - t.27 = call t.29(t.9 t.30) - t.4 = t.27 - t.9 = t.9 - t.32 = [t.9+0] - t.33 = [t.32+8] - t.34 = t.2 - t.31 = call t.33(t.9 t.34) - t.4 = t.31 -if129_end: - goto :if125_end -if125_else: - t.9 = t.9 - t.36 = [t.9+0] - t.37 = [t.36+28] - t.35 = call t.37(t.9 ) - t.38 = t.35 - if0 t.38 goto :if144_else -if144_body: - t.9 = t.9 - t.40 = [t.9+0] - t.41 = [t.40+12] - t.39 = call t.41(t.9 ) - t.9 = t.39 - goto :if144_end -if144_else: - t.10 = 0 - t.9 = t.9 - t.43 = [t.9+0] - t.44 = [t.43+40] - t.45 = 1 - t.42 = call t.44(t.9 t.45) - t.4 = t.42 - t.9 = t.9 - t.47 = [t.9+0] - t.48 = [t.47+4] - t.49 = t.2 - t.46 = call t.48(t.9 t.49) - t.4 = t.46 -if144_end: -if125_end: - goto :while120_test -while120_end: - t.50 = 1 - ret t.50 + t.4 = t.3 + t.5 = t.4 + t.2 = t.5 + t.8 = t.2 + t.2 = t.8 + t.9 = [t.2+0] + t.10 = [t.9+0] + t.11 = t.0 + t.12 = t.11 + t.7 = call t.10(t.2 t.12) + t.13 = t.7 + t.6 = t.13 + t.15 = this + t.16 = t.15 + t.14 = t.16 + t.18 = 1 + t.19 = t.18 + t.17 = t.19 +while254_test: + t.20 = t.17 + t.21 = t.20 + t.22 = t.21 + if0 t.22 goto :while254_end +while254_body: + t.25 = t.14 + t.14 = t.25 + t.26 = [t.14+0] + t.27 = [t.26+20] + t.24 = call t.27(t.14) + t.28 = t.24 + t.23 = t.28 + t.30 = t.0 + t.31 = t.23 + t.29 = LtS(t.30 t.31) + t.32 = t.29 + t.33 = t.32 + if0 t.33 goto :if263_else +if263_body: + t.35 = t.14 + t.14 = t.35 + t.36 = [t.14+0] + t.37 = [t.36+32] + t.34 = call t.37(t.14) + t.38 = t.34 + t.39 = t.38 + if0 t.39 goto :if268_else +if268_body: + t.41 = t.14 + t.14 = t.41 + t.42 = [t.14+0] + t.43 = [t.42+16] + t.40 = call t.43(t.14) + t.44 = t.40 + t.14 = t.44 + goto :if268_end +if268_else: + t.45 = 0 + t.46 = t.45 + t.17 = t.46 + t.48 = t.14 + t.14 = t.48 + t.49 = [t.14+0] + t.50 = [t.49+36] + t.51 = 1 + t.52 = t.51 + t.47 = call t.50(t.14 t.52) + t.53 = t.47 + t.6 = t.53 + t.55 = t.14 + t.14 = t.55 + t.56 = [t.14+0] + t.57 = [t.56+8] + t.58 = t.2 + t.59 = t.58 + t.54 = call t.57(t.14 t.59) + t.60 = t.54 + t.6 = t.60 +if268_end: + goto :if263_end +if263_else: + t.62 = t.14 + t.14 = t.62 + t.63 = [t.14+0] + t.64 = [t.63+28] + t.61 = call t.64(t.14) + t.65 = t.61 + t.66 = t.65 + if0 t.66 goto :if295_else +if295_body: + t.68 = t.14 + t.14 = t.68 + t.69 = [t.14+0] + t.70 = [t.69+12] + t.67 = call t.70(t.14) + t.71 = t.67 + t.14 = t.71 + goto :if295_end +if295_else: + t.72 = 0 + t.73 = t.72 + t.17 = t.73 + t.75 = t.14 + t.14 = t.75 + t.76 = [t.14+0] + t.77 = [t.76+40] + t.78 = 1 + t.79 = t.78 + t.74 = call t.77(t.14 t.79) + t.80 = t.74 + t.6 = t.80 + t.82 = t.14 + t.14 = t.82 + t.83 = [t.14+0] + t.84 = [t.83+4] + t.85 = t.2 + t.86 = t.85 + t.81 = call t.84(t.14 t.86) + t.87 = t.81 + t.6 = t.87 +if295_end: +if263_end: + goto :while254_test +while254_end: + t.88 = 1 + t.89 = t.88 + t.90 = t.89 + ret t.90 func Tree_Delete(this t.0 ) - t.2 = this t.3 = this - t.4 = 1 - t.5 = 0 - t.6 = 1 -while160_test: - t.7 = t.4 - if0 t.7 goto :while160_end -while160_body: - t.2 = t.2 - t.10 = [t.2+0] - t.11 = [t.10+20] - t.9 = call t.11(t.2 ) - t.8 = t.9 - t.13 = t.0 - t.14 = t.8 - t.12 = LtS(t.13 t.14) - t.15 = t.12 - if0 t.15 goto :if165_else -if165_body: - t.2 = t.2 - t.17 = [t.2+0] - t.18 = [t.17+32] - t.16 = call t.18(t.2 ) - t.19 = t.16 - if0 t.19 goto :if169_else -if169_body: - t.3 = t.2 - t.2 = t.2 - t.21 = [t.2+0] - t.22 = [t.21+16] - t.20 = call t.22(t.2 ) - t.2 = t.20 - goto :if169_end -if169_else: - t.4 = 0 -if169_end: - goto :if165_end -if165_else: - t.24 = t.8 - t.25 = t.0 - t.23 = LtS(t.24 t.25) - t.26 = t.23 - if0 t.26 goto :if176_else -if176_body: - t.2 = t.2 - t.28 = [t.2+0] - t.29 = [t.28+28] - t.27 = call t.29(t.2 ) - t.30 = t.27 - if0 t.30 goto :if180_else -if180_body: - t.3 = t.2 - t.2 = t.2 - t.32 = [t.2+0] - t.33 = [t.32+12] - t.31 = call t.33(t.2 ) - t.2 = t.31 - goto :if180_end -if180_else: - t.4 = 0 -if180_end: - goto :if176_end -if176_else: - t.34 = t.6 - if0 t.34 goto :if187_else -if187_body: - t.2 = t.2 - t.38 = [t.2+0] - t.39 = [t.38+28] - t.37 = call t.39(t.2 ) - t.36 = Eq(t.37 0) - t.40 = t.36 - t.2 = t.2 - t.43 = [t.2+0] - t.44 = [t.43+32] - t.42 = call t.44(t.2 ) - t.41 = Eq(t.42 0) - t.45 = t.41 - t.46 = Eq(1 t.40) - t.47 = Eq(1 t.45) - t.35 = Eq(t.46 t.47) - t.48 = t.35 - if0 t.48 goto :if188_else -if188_body: - t.49 = 1 - goto :if188_end -if188_else: - t.51 = [this] - t.52 = t.3 - t.53 = t.2 - t.51 = [t.51+56] - t.50 = call t.51(this t.52 t.53) - t.49 = t.50 -if188_end: - goto :if187_end -if187_else: - t.55 = [this] - t.56 = t.3 + t.4 = t.3 + t.2 = t.4 + t.6 = this + t.7 = t.6 + t.5 = t.7 + t.9 = 1 + t.10 = t.9 + t.8 = t.10 + t.12 = 0 + t.13 = t.12 + t.11 = t.13 + t.15 = 1 + t.16 = t.15 + t.14 = t.16 +while335_test: + t.17 = t.8 + t.18 = t.17 + t.19 = t.18 + if0 t.19 goto :while335_end +while335_body: + t.22 = t.2 + t.2 = t.22 + t.23 = [t.2+0] + t.24 = [t.23+20] + t.21 = call t.24(t.2) + t.25 = t.21 + t.20 = t.25 + t.27 = t.0 + t.28 = t.20 + t.26 = LtS(t.27 t.28) + t.29 = t.26 + t.30 = t.29 + if0 t.30 goto :if344_else +if344_body: + t.32 = t.2 + t.2 = t.32 + t.33 = [t.2+0] + t.34 = [t.33+32] + t.31 = call t.34(t.2) + t.35 = t.31 + t.36 = t.35 + if0 t.36 goto :if349_else +if349_body: + t.37 = t.2 + t.38 = t.37 + t.5 = t.38 + t.40 = t.2 + t.2 = t.40 + t.41 = [t.2+0] + t.42 = [t.41+16] + t.39 = call t.42(t.2) + t.43 = t.39 + t.2 = t.43 + goto :if349_end +if349_else: + t.44 = 0 + t.45 = t.44 + t.8 = t.45 +if349_end: + goto :if344_end +if344_else: + t.47 = t.20 + t.48 = t.0 + t.46 = LtS(t.47 t.48) + t.49 = t.46 + t.50 = t.49 + if0 t.50 goto :if364_else +if364_body: + t.52 = t.2 + t.2 = t.52 + t.53 = [t.2+0] + t.54 = [t.53+28] + t.51 = call t.54(t.2) + t.55 = t.51 + t.56 = t.55 + if0 t.56 goto :if369_else +if369_body: t.57 = t.2 - t.55 = [t.55+56] - t.54 = call t.55(this t.56 t.57) - t.49 = t.54 -if187_end: - t.5 = 1 - t.4 = 0 -if176_end: -if165_end: - t.6 = 0 - goto :while160_test -while160_end: - t.58 = t.5 - ret t.58 + t.58 = t.57 + t.5 = t.58 + t.60 = t.2 + t.2 = t.60 + t.61 = [t.2+0] + t.62 = [t.61+12] + t.59 = call t.62(t.2) + t.63 = t.59 + t.2 = t.63 + goto :if369_end +if369_else: + t.64 = 0 + t.65 = t.64 + t.8 = t.65 +if369_end: + goto :if364_end +if364_else: + t.66 = t.14 + t.67 = t.66 + t.68 = t.67 + if0 t.68 goto :if384_else +if384_body: + t.72 = t.2 + t.2 = t.72 + t.73 = [t.2+0] + t.74 = [t.73+28] + t.71 = call t.74(t.2) + t.75 = t.71 + t.70 = Eq(t.75 0) + t.76 = t.70 + t.79 = t.2 + t.2 = t.79 + t.80 = [t.2+0] + t.81 = [t.80+32] + t.78 = call t.81(t.2) + t.82 = t.78 + t.77 = Eq(t.82 0) + t.83 = t.77 + t.84 = Eq(1 t.76) + t.85 = Eq(1 t.83) + t.69 = Eq(t.84 t.85) + t.86 = t.69 + t.87 = t.86 + if0 t.87 goto :if387_else +if387_body: + t.89 = 1 + t.90 = t.89 + t.88 = t.90 + goto :if387_end +if387_else: + t.92 = this + t.93 = [this] + t.94 = t.5 + t.95 = t.94 + t.96 = t.2 + t.97 = t.96 + t.93 = [t.93+56] + t.91 = call t.93(this t.95 t.97) + t.98 = t.91 + t.88 = t.98 +if387_end: + goto :if384_end +if384_else: + t.100 = this + t.101 = [this] + t.102 = t.5 + t.103 = t.102 + t.104 = t.2 + t.105 = t.104 + t.101 = [t.101+56] + t.99 = call t.101(this t.103 t.105) + t.106 = t.99 + t.88 = t.106 +if384_end: + t.107 = 1 + t.108 = t.107 + t.11 = t.108 + t.109 = 0 + t.110 = t.109 + t.8 = t.110 +if364_end: +if344_end: + t.111 = 0 + t.112 = t.111 + t.14 = t.112 + goto :while335_test +while335_end: + t.113 = t.11 + t.114 = t.113 + t.115 = t.114 + ret t.115 func Tree_Remove(this t.0 t.1 ) - t.1 = t.1 - t.3 = [t.1+0] - t.4 = [t.3+32] - t.2 = call t.4(t.1 ) - t.5 = t.2 - if0 t.5 goto :if211_else -if211_body: - t.8 = [this] - t.9 = t.0 - t.10 = t.1 - t.8 = [t.8+64] - t.7 = call t.8(this t.9 t.10) - t.6 = t.7 - goto :if211_end -if211_else: - t.1 = t.1 - t.12 = [t.1+0] - t.13 = [t.12+28] - t.11 = call t.13(t.1 ) - t.14 = t.11 - if0 t.14 goto :if219_else -if219_body: - t.16 = [this] - t.17 = t.0 + t.3 = t.1 + t.1 = t.3 + t.4 = [t.1+0] + t.5 = [t.4+32] + t.2 = call t.5(t.1) + t.6 = t.2 + t.7 = t.6 + if0 t.7 goto :if433_else +if433_body: + t.10 = this + t.11 = [this] + t.12 = t.0 + t.13 = t.12 + t.14 = t.1 + t.15 = t.14 + t.11 = [t.11+64] + t.9 = call t.11(this t.13 t.15) + t.16 = t.9 + t.8 = t.16 + goto :if433_end +if433_else: t.18 = t.1 - t.16 = [t.16+60] - t.15 = call t.16(this t.17 t.18) - t.6 = t.15 - goto :if219_end -if219_else: - t.1 = t.1 - t.21 = [t.1+0] - t.22 = [t.21+20] - t.20 = call t.22(t.1 ) - t.19 = t.20 - t.0 = t.0 - t.26 = [t.0+0] - t.27 = [t.26+16] - t.25 = call t.27(t.0 ) - t.28 = t.25 - t.29 = [t.28+0] - t.30 = [t.29+20] - t.24 = call t.30(t.28 ) - t.23 = t.24 - t.32 = [this] - t.33 = t.19 - t.34 = t.23 - t.32 = [t.32+44] - t.31 = call t.32(this t.33 t.34) - t.35 = t.31 - if0 t.35 goto :if237_else -if237_body: - t.0 = t.0 - t.37 = [t.0+0] - t.38 = [t.37+8] - t.39 = [this+104] - t.36 = call t.38(t.0 t.39) - t.6 = t.36 - t.0 = t.0 + t.1 = t.18 + t.19 = [t.1+0] + t.20 = [t.19+28] + t.17 = call t.20(t.1) + t.21 = t.17 + t.22 = t.21 + if0 t.22 goto :if447_else +if447_body: + t.24 = this + t.25 = [this] + t.26 = t.0 + t.27 = t.26 + t.28 = t.1 + t.29 = t.28 + t.25 = [t.25+60] + t.23 = call t.25(this t.27 t.29) + t.30 = t.23 + t.8 = t.30 + goto :if447_end +if447_else: + t.33 = t.1 + t.1 = t.33 + t.34 = [t.1+0] + t.35 = [t.34+20] + t.32 = call t.35(t.1) + t.36 = t.32 + t.31 = t.36 + t.40 = t.0 + t.0 = t.40 t.41 = [t.0+0] - t.42 = [t.41+36] - t.43 = 0 - t.40 = call t.42(t.0 t.43) - t.6 = t.40 - goto :if237_end -if237_else: - t.0 = t.0 - t.45 = [t.0+0] - t.46 = [t.45+4] - t.47 = [this+104] - t.44 = call t.46(t.0 t.47) - t.6 = t.44 - t.0 = t.0 - t.49 = [t.0+0] - t.50 = [t.49+40] - t.51 = 0 - t.48 = call t.50(t.0 t.51) - t.6 = t.48 -if237_end: -if219_end: -if211_end: - t.52 = 1 - ret t.52 + t.42 = [t.41+16] + t.39 = call t.42(t.0) + t.43 = t.39 + t.44 = t.43 + t.45 = t.44 + t.46 = [t.45+0] + t.47 = [t.46+20] + t.38 = call t.47(t.45) + t.48 = t.38 + t.37 = t.48 + t.50 = this + t.51 = [this] + t.52 = t.31 + t.53 = t.52 + t.54 = t.37 + t.55 = t.54 + t.51 = [t.51+44] + t.49 = call t.51(this t.53 t.55) + t.56 = t.49 + t.57 = t.56 + if0 t.57 goto :if477_else +if477_body: + t.59 = t.0 + t.0 = t.59 + t.60 = [t.0+0] + t.61 = [t.60+8] + t.62 = [this+104] + t.63 = t.62 + t.58 = call t.61(t.0 t.63) + t.64 = t.58 + t.8 = t.64 + t.66 = t.0 + t.0 = t.66 + t.67 = [t.0+0] + t.68 = [t.67+36] + t.69 = 0 + t.70 = t.69 + t.65 = call t.68(t.0 t.70) + t.71 = t.65 + t.8 = t.71 + goto :if477_end +if477_else: + t.73 = t.0 + t.0 = t.73 + t.74 = [t.0+0] + t.75 = [t.74+4] + t.76 = [this+104] + t.77 = t.76 + t.72 = call t.75(t.0 t.77) + t.78 = t.72 + t.8 = t.78 + t.80 = t.0 + t.0 = t.80 + t.81 = [t.0+0] + t.82 = [t.81+40] + t.83 = 0 + t.84 = t.83 + t.79 = call t.82(t.0 t.84) + t.85 = t.79 + t.8 = t.85 +if477_end: +if447_end: +if433_end: + t.86 = 1 + t.87 = t.86 + t.88 = t.87 + ret t.88 func Tree_RemoveRight(this t.0 t.1 ) -while259_test: - t.1 = t.1 - t.3 = [t.1+0] - t.4 = [t.3+28] - t.2 = call t.4(t.1 ) - t.5 = t.2 - if0 t.5 goto :while259_end -while259_body: - t.1 = t.1 - t.8 = [t.1+0] - t.9 = [t.8+24] - t.1 = t.1 - t.12 = [t.1+0] - t.13 = [t.12+12] - t.11 = call t.13(t.1 ) - t.14 = t.11 - t.15 = [t.14+0] - t.16 = [t.15+20] - t.10 = call t.16(t.14 ) - t.17 = t.10 - t.7 = call t.9(t.1 t.17) - t.6 = t.7 - t.0 = t.1 - t.1 = t.1 - t.19 = [t.1+0] - t.20 = [t.19+12] - t.18 = call t.20(t.1 ) - t.1 = t.18 - goto :while259_test -while259_end: - t.0 = t.0 - t.22 = [t.0+0] - t.23 = [t.22+4] - t.24 = [this+104] - t.21 = call t.23(t.0 t.24) - t.6 = t.21 - t.0 = t.0 - t.26 = [t.0+0] - t.27 = [t.26+40] - t.28 = 0 - t.25 = call t.27(t.0 t.28) - t.6 = t.25 - t.29 = 1 - ret t.29 +while517_test: + t.3 = t.1 + t.1 = t.3 + t.4 = [t.1+0] + t.5 = [t.4+28] + t.2 = call t.5(t.1) + t.6 = t.2 + t.7 = t.6 + if0 t.7 goto :while517_end +while517_body: + t.10 = t.1 + t.1 = t.10 + t.11 = [t.1+0] + t.12 = [t.11+24] + t.15 = t.1 + t.1 = t.15 + t.16 = [t.1+0] + t.17 = [t.16+12] + t.14 = call t.17(t.1) + t.18 = t.14 + t.19 = t.18 + t.20 = t.19 + t.21 = [t.20+0] + t.22 = [t.21+20] + t.13 = call t.22(t.20) + t.23 = t.13 + t.9 = call t.12(t.1 t.23) + t.24 = t.9 + t.8 = t.24 + t.25 = t.1 + t.26 = t.25 + t.0 = t.26 + t.28 = t.1 + t.1 = t.28 + t.29 = [t.1+0] + t.30 = [t.29+12] + t.27 = call t.30(t.1) + t.31 = t.27 + t.1 = t.31 + goto :while517_test +while517_end: + t.33 = t.0 + t.0 = t.33 + t.34 = [t.0+0] + t.35 = [t.34+4] + t.36 = [this+104] + t.37 = t.36 + t.32 = call t.35(t.0 t.37) + t.38 = t.32 + t.8 = t.38 + t.40 = t.0 + t.0 = t.40 + t.41 = [t.0+0] + t.42 = [t.41+40] + t.43 = 0 + t.44 = t.43 + t.39 = call t.42(t.0 t.44) + t.45 = t.39 + t.8 = t.45 + t.46 = 1 + t.47 = t.46 + t.48 = t.47 + ret t.48 func Tree_RemoveLeft(this t.0 t.1 ) -while287_test: - t.1 = t.1 - t.3 = [t.1+0] - t.4 = [t.3+32] - t.2 = call t.4(t.1 ) - t.5 = t.2 - if0 t.5 goto :while287_end -while287_body: - t.1 = t.1 - t.8 = [t.1+0] - t.9 = [t.8+24] - t.1 = t.1 - t.12 = [t.1+0] - t.13 = [t.12+16] - t.11 = call t.13(t.1 ) - t.14 = t.11 - t.15 = [t.14+0] - t.16 = [t.15+20] - t.10 = call t.16(t.14 ) - t.17 = t.10 - t.7 = call t.9(t.1 t.17) - t.6 = t.7 - t.0 = t.1 - t.1 = t.1 - t.19 = [t.1+0] - t.20 = [t.19+16] - t.18 = call t.20(t.1 ) - t.1 = t.18 - goto :while287_test -while287_end: - t.0 = t.0 - t.22 = [t.0+0] - t.23 = [t.22+8] - t.24 = [this+104] - t.21 = call t.23(t.0 t.24) - t.6 = t.21 - t.0 = t.0 - t.26 = [t.0+0] - t.27 = [t.26+36] - t.28 = 0 - t.25 = call t.27(t.0 t.28) - t.6 = t.25 - t.29 = 1 - ret t.29 +while564_test: + t.3 = t.1 + t.1 = t.3 + t.4 = [t.1+0] + t.5 = [t.4+32] + t.2 = call t.5(t.1) + t.6 = t.2 + t.7 = t.6 + if0 t.7 goto :while564_end +while564_body: + t.10 = t.1 + t.1 = t.10 + t.11 = [t.1+0] + t.12 = [t.11+24] + t.15 = t.1 + t.1 = t.15 + t.16 = [t.1+0] + t.17 = [t.16+16] + t.14 = call t.17(t.1) + t.18 = t.14 + t.19 = t.18 + t.20 = t.19 + t.21 = [t.20+0] + t.22 = [t.21+20] + t.13 = call t.22(t.20) + t.23 = t.13 + t.9 = call t.12(t.1 t.23) + t.24 = t.9 + t.8 = t.24 + t.25 = t.1 + t.26 = t.25 + t.0 = t.26 + t.28 = t.1 + t.1 = t.28 + t.29 = [t.1+0] + t.30 = [t.29+16] + t.27 = call t.30(t.1) + t.31 = t.27 + t.1 = t.31 + goto :while564_test +while564_end: + t.33 = t.0 + t.0 = t.33 + t.34 = [t.0+0] + t.35 = [t.34+8] + t.36 = [this+104] + t.37 = t.36 + t.32 = call t.35(t.0 t.37) + t.38 = t.32 + t.8 = t.38 + t.40 = t.0 + t.0 = t.40 + t.41 = [t.0+0] + t.42 = [t.41+36] + t.43 = 0 + t.44 = t.43 + t.39 = call t.42(t.0 t.44) + t.45 = t.39 + t.8 = t.45 + t.46 = 1 + t.47 = t.46 + t.48 = t.47 + ret t.48 func Tree_Search(this t.0 ) - t.2 = this - t.3 = 1 - t.4 = 0 -while315_test: - t.5 = t.3 - if0 t.5 goto :while315_end -while315_body: - t.2 = t.2 - t.8 = [t.2+0] - t.9 = [t.8+20] - t.7 = call t.9(t.2 ) - t.6 = t.7 - t.11 = t.0 - t.12 = t.6 - t.10 = LtS(t.11 t.12) - t.13 = t.10 - if0 t.13 goto :if320_else -if320_body: - t.2 = t.2 - t.15 = [t.2+0] - t.16 = [t.15+32] - t.14 = call t.16(t.2 ) - t.17 = t.14 - if0 t.17 goto :if324_else -if324_body: - t.2 = t.2 - t.19 = [t.2+0] - t.20 = [t.19+16] - t.18 = call t.20(t.2 ) - t.2 = t.18 - goto :if324_end -if324_else: - t.3 = 0 -if324_end: - goto :if320_end -if320_else: - t.22 = t.6 - t.23 = t.0 - t.21 = LtS(t.22 t.23) - t.24 = t.21 - if0 t.24 goto :if331_else -if331_body: - t.2 = t.2 - t.26 = [t.2+0] - t.27 = [t.26+28] - t.25 = call t.27(t.2 ) - t.28 = t.25 - if0 t.28 goto :if335_else -if335_body: - t.2 = t.2 - t.30 = [t.2+0] - t.31 = [t.30+12] - t.29 = call t.31(t.2 ) - t.2 = t.29 - goto :if335_end -if335_else: - t.3 = 0 -if335_end: - goto :if331_end -if331_else: - t.4 = 1 - t.3 = 0 -if331_end: -if320_end: - goto :while315_test -while315_end: - t.32 = t.4 - ret t.32 - -func Tree_Print(this ) - t.1 = this - t.4 = [this] - t.5 = t.1 - t.4 = [t.4+76] - t.3 = call t.4(this t.5) - t.2 = t.3 + t.3 = this + t.4 = t.3 + t.2 = t.4 t.6 = 1 - ret t.6 + t.7 = t.6 + t.5 = t.7 + t.9 = 0 + t.10 = t.9 + t.8 = t.10 +while617_test: + t.11 = t.5 + t.12 = t.11 + t.13 = t.12 + if0 t.13 goto :while617_end +while617_body: + t.16 = t.2 + t.2 = t.16 + t.17 = [t.2+0] + t.18 = [t.17+20] + t.15 = call t.18(t.2) + t.19 = t.15 + t.14 = t.19 + t.21 = t.0 + t.22 = t.14 + t.20 = LtS(t.21 t.22) + t.23 = t.20 + t.24 = t.23 + if0 t.24 goto :if626_else +if626_body: + t.26 = t.2 + t.2 = t.26 + t.27 = [t.2+0] + t.28 = [t.27+32] + t.25 = call t.28(t.2) + t.29 = t.25 + t.30 = t.29 + if0 t.30 goto :if631_else +if631_body: + t.32 = t.2 + t.2 = t.32 + t.33 = [t.2+0] + t.34 = [t.33+16] + t.31 = call t.34(t.2) + t.35 = t.31 + t.2 = t.35 + goto :if631_end +if631_else: + t.36 = 0 + t.37 = t.36 + t.5 = t.37 +if631_end: + goto :if626_end +if626_else: + t.39 = t.14 + t.40 = t.0 + t.38 = LtS(t.39 t.40) + t.41 = t.38 + t.42 = t.41 + if0 t.42 goto :if644_else +if644_body: + t.44 = t.2 + t.2 = t.44 + t.45 = [t.2+0] + t.46 = [t.45+28] + t.43 = call t.46(t.2) + t.47 = t.43 + t.48 = t.47 + if0 t.48 goto :if649_else +if649_body: + t.50 = t.2 + t.2 = t.50 + t.51 = [t.2+0] + t.52 = [t.51+12] + t.49 = call t.52(t.2) + t.53 = t.49 + t.2 = t.53 + goto :if649_end +if649_else: + t.54 = 0 + t.55 = t.54 + t.5 = t.55 +if649_end: + goto :if644_end +if644_else: + t.56 = 1 + t.57 = t.56 + t.8 = t.57 + t.58 = 0 + t.59 = t.58 + t.5 = t.59 +if644_end: +if626_end: + goto :while617_test +while617_end: + t.60 = t.8 + t.61 = t.60 + t.62 = t.61 + ret t.62 -func Tree_RecPrint(this t.0 ) - t.0 = t.0 - t.2 = [t.0+0] - t.3 = [t.2+32] - t.1 = call t.3(t.0 ) - t.4 = t.1 - if0 t.4 goto :if347_else -if347_body: +func Tree_Print(this ) + t.2 = this + t.3 = t.2 + t.1 = t.3 + t.6 = this t.7 = [this] - t.0 = t.0 - t.9 = [t.0+0] - t.10 = [t.9+16] - t.8 = call t.10(t.0 ) - t.11 = t.8 + t.8 = t.1 + t.9 = t.8 t.7 = [t.7+76] - t.6 = call t.7(this t.11) - t.5 = t.6 - goto :if347_end -if347_else: - t.5 = 1 -if347_end: - t.0 = t.0 + t.5 = call t.7(this t.9) + t.10 = t.5 + t.4 = t.10 + t.11 = 1 + t.12 = t.11 + t.13 = t.12 + ret t.13 + +func Tree_RecPrint(this t.0 ) + t.2 = t.0 + t.0 = t.2 + t.3 = [t.0+0] + t.4 = [t.3+32] + t.1 = call t.4(t.0) + t.5 = t.1 + t.6 = t.5 + if0 t.6 goto :if680_else +if680_body: + t.9 = this + t.10 = [this] + t.12 = t.0 + t.0 = t.12 t.13 = [t.0+0] - t.14 = [t.13+20] - t.12 = call t.14(t.0 ) - t.15 = t.12 - PrintIntS(t.15) - t.0 = t.0 - t.17 = [t.0+0] - t.18 = [t.17+28] - t.16 = call t.18(t.0 ) - t.19 = t.16 - if0 t.19 goto :if361_else -if361_body: - t.21 = [this] - t.0 = t.0 - t.23 = [t.0+0] - t.24 = [t.23+12] - t.22 = call t.24(t.0 ) - t.25 = t.22 - t.21 = [t.21+76] - t.20 = call t.21(this t.25) - t.5 = t.20 - goto :if361_end -if361_else: - t.5 = 1 -if361_end: - t.26 = 1 - ret t.26 + t.14 = [t.13+16] + t.11 = call t.14(t.0) + t.15 = t.11 + t.10 = [t.10+76] + t.8 = call t.10(this t.15) + t.16 = t.8 + t.7 = t.16 + goto :if680_end +if680_else: + t.17 = 1 + t.18 = t.17 + t.7 = t.18 +if680_end: + t.20 = t.0 + t.0 = t.20 + t.21 = [t.0+0] + t.22 = [t.21+20] + t.19 = call t.22(t.0) + t.23 = t.19 + t.24 = t.23 + PrintIntS(t.24) + t.26 = t.0 + t.0 = t.26 + t.27 = [t.0+0] + t.28 = [t.27+28] + t.25 = call t.28(t.0) + t.29 = t.25 + t.30 = t.29 + if0 t.30 goto :if703_else +if703_body: + t.32 = this + t.33 = [this] + t.35 = t.0 + t.0 = t.35 + t.36 = [t.0+0] + t.37 = [t.36+12] + t.34 = call t.37(t.0) + t.38 = t.34 + t.33 = [t.33+76] + t.31 = call t.33(this t.38) + t.39 = t.31 + t.7 = t.39 + goto :if703_end +if703_else: + t.40 = 1 + t.41 = t.40 + t.7 = t.41 +if703_end: + t.42 = 1 + t.43 = t.42 + t.44 = t.43 + ret t.44 func Tree_accept(this t.0 ) t.1 = 333 - PrintIntS(t.1) - t.0 = t.0 - t.4 = [t.0+0] - t.5 = [t.4+0] - t.6 = this - t.3 = call t.5(t.0 t.6) - t.2 = t.3 - t.7 = 0 - ret t.7 + t.2 = t.1 + t.3 = t.2 + PrintIntS(t.3) + t.6 = t.0 + t.0 = t.6 + t.7 = [t.0+0] + t.8 = [t.7+0] + t.9 = this + t.10 = t.9 + t.5 = call t.8(t.0 t.10) + t.11 = t.5 + t.4 = t.11 + t.12 = 0 + t.13 = t.12 + t.14 = t.13 + ret t.14 const functable_Visitor :Visitor_visit func Visitor_visit(this t.0 ) - t.0 = t.0 - t.2 = [t.0+0] - t.3 = [t.2+28] - t.1 = call t.3(t.0 ) - t.4 = t.1 - if0 t.4 goto :if378_else -if378_body: - t.0 = t.0 - t.6 = [t.0+0] - t.7 = [t.6+12] - t.5 = call t.7(t.0 ) - [this+8] = t.5 - t.10 = [this+8] - t.11 = [t.10+0] - t.12 = [t.11+80] - t.13 = this - t.9 = call t.12(t.10 t.13) - t.8 = t.9 - goto :if378_end -if378_else: - t.8 = 0 -if378_end: - t.0 = t.0 - t.15 = [t.0+0] - t.16 = [t.15+32] - t.14 = call t.16(t.0 ) - t.17 = t.14 - if0 t.17 goto :if389_else -if389_body: - t.0 = t.0 - t.19 = [t.0+0] - t.20 = [t.19+16] - t.18 = call t.20(t.0 ) - [this+4] = t.18 - t.22 = [this+4] - t.23 = [t.22+0] - t.24 = [t.23+80] - t.25 = this - t.21 = call t.24(t.22 t.25) - t.8 = t.21 - goto :if389_end -if389_else: - t.8 = 0 -if389_end: - t.26 = 0 - ret t.26 + t.2 = t.0 + t.0 = t.2 + t.3 = [t.0+0] + t.4 = [t.3+28] + t.1 = call t.4(t.0) + t.5 = t.1 + t.6 = t.5 + if0 t.6 goto :if736_else +if736_body: + t.8 = t.0 + t.0 = t.8 + t.9 = [t.0+0] + t.10 = [t.9+12] + t.7 = call t.10(t.0) + t.11 = t.7 + [this+8] = t.11 + t.14 = [this+8] + t.15 = t.14 + t.16 = [t.15+0] + t.17 = [t.16+80] + t.18 = this + t.19 = t.18 + t.13 = call t.17(t.15 t.19) + t.20 = t.13 + t.12 = t.20 + goto :if736_end +if736_else: + t.21 = 0 + t.22 = t.21 + t.12 = t.22 +if736_end: + t.24 = t.0 + t.0 = t.24 + t.25 = [t.0+0] + t.26 = [t.25+32] + t.23 = call t.26(t.0) + t.27 = t.23 + t.28 = t.27 + if0 t.28 goto :if756_else +if756_body: + t.30 = t.0 + t.0 = t.30 + t.31 = [t.0+0] + t.32 = [t.31+16] + t.29 = call t.32(t.0) + t.33 = t.29 + [this+4] = t.33 + t.35 = [this+4] + t.36 = t.35 + t.37 = [t.36+0] + t.38 = [t.37+80] + t.39 = this + t.40 = t.39 + t.34 = call t.38(t.36 t.40) + t.41 = t.34 + t.12 = t.41 + goto :if756_end +if756_else: + t.42 = 0 + t.43 = t.42 + t.12 = t.43 +if756_end: + t.44 = 0 + t.45 = t.44 + t.46 = t.45 + ret t.46 const functable_MyVisitor :MyVisitor_visit :Visitor_visit func MyVisitor_visit(this t.0 ) - t.0 = t.0 - t.2 = [t.0+0] - t.3 = [t.2+28] - t.1 = call t.3(t.0 ) - t.4 = t.1 - if0 t.4 goto :if401_else -if401_body: - t.0 = t.0 - t.6 = [t.0+0] - t.7 = [t.6+12] - t.5 = call t.7(t.0 ) - [this+12] = t.5 - t.10 = [this+12] - t.11 = [t.10+0] - t.12 = [t.11+80] - t.13 = this - t.9 = call t.12(t.10 t.13) - t.8 = t.9 - goto :if401_end -if401_else: - t.8 = 0 -if401_end: - t.0 = t.0 - t.15 = [t.0+0] - t.16 = [t.15+20] - t.14 = call t.16(t.0 ) - t.17 = t.14 - PrintIntS(t.17) - t.0 = t.0 - t.19 = [t.0+0] - t.20 = [t.19+32] - t.18 = call t.20(t.0 ) - t.21 = t.18 - if0 t.21 goto :if416_else -if416_body: - t.0 = t.0 - t.23 = [t.0+0] - t.24 = [t.23+16] - t.22 = call t.24(t.0 ) - [this+8] = t.22 - t.26 = [this+8] - t.27 = [t.26+0] - t.28 = [t.27+80] - t.29 = this - t.25 = call t.28(t.26 t.29) - t.8 = t.25 - goto :if416_end -if416_else: - t.8 = 0 -if416_end: - t.30 = 0 - ret t.30 + t.2 = t.0 + t.0 = t.2 + t.3 = [t.0+0] + t.4 = [t.3+28] + t.1 = call t.4(t.0) + t.5 = t.1 + t.6 = t.5 + if0 t.6 goto :if779_else +if779_body: + t.8 = t.0 + t.0 = t.8 + t.9 = [t.0+0] + t.10 = [t.9+12] + t.7 = call t.10(t.0) + t.11 = t.7 + [this+12] = t.11 + t.14 = [this+12] + t.15 = t.14 + t.16 = [t.15+0] + t.17 = [t.16+80] + t.18 = this + t.19 = t.18 + t.13 = call t.17(t.15 t.19) + t.20 = t.13 + t.12 = t.20 + goto :if779_end +if779_else: + t.21 = 0 + t.22 = t.21 + t.12 = t.22 +if779_end: + t.24 = t.0 + t.0 = t.24 + t.25 = [t.0+0] + t.26 = [t.25+20] + t.23 = call t.26(t.0) + t.27 = t.23 + t.28 = t.27 + PrintIntS(t.28) + t.30 = t.0 + t.0 = t.30 + t.31 = [t.0+0] + t.32 = [t.31+32] + t.29 = call t.32(t.0) + t.33 = t.29 + t.34 = t.33 + if0 t.34 goto :if805_else +if805_body: + t.36 = t.0 + t.0 = t.36 + t.37 = [t.0+0] + t.38 = [t.37+16] + t.35 = call t.38(t.0) + t.39 = t.35 + [this+8] = t.39 + t.41 = [this+8] + t.42 = t.41 + t.43 = [t.42+0] + t.44 = [t.43+80] + t.45 = this + t.46 = t.45 + t.40 = call t.44(t.42 t.46) + t.47 = t.40 + t.12 = t.47 + goto :if805_end +if805_else: + t.48 = 0 + t.49 = t.48 + t.12 = t.49 +if805_end: + t.50 = 0 + t.51 = t.50 + t.52 = t.51 + ret t.52 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/ex30.vapor b/output/ex30.vapor index 03c3830..9d03cd3 100644 --- a/output/ex30.vapor +++ b/output/ex30.vapor @@ -6,7 +6,9 @@ const functable_A func A_foo(this ) t.0 = 22 - ret t.0 + t.1 = t.0 + t.2 = t.1 + ret t.2 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/ex31.vapor b/output/ex31.vapor index 127792e..40b024b 100644 --- a/output/ex31.vapor +++ b/output/ex31.vapor @@ -1,7 +1,9 @@ func Main() t.4 = HeapAllocZ(8) [t.4+0] = :functable_A - t.3 = t.4 + t.5 = t.4 + t.6 = t.5 + t.3 = t.6 ret const functable_A @@ -10,11 +12,15 @@ const functable_A func A_foo(this ) t.0 = 22 - ret t.0 + t.1 = t.0 + t.2 = t.1 + ret t.2 func A_bar(this ) t.0 = 42 - ret t.0 + t.1 = t.0 + t.2 = t.1 + ret t.2 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/ex32.vapor b/output/ex32.vapor index 4149aba..8816a0a 100644 --- a/output/ex32.vapor +++ b/output/ex32.vapor @@ -1,16 +1,23 @@ func Main() t.4 = HeapAllocZ(8) [t.4+0] = :functable_A - t.3 = t.4 - t.3 = t.3 - t.6 = [t.3+0] - t.7 = [t.6+0] - t.8 = 12 - t.9 = 14 - t.10 = 15 - t.5 = call t.7(t.3 t.8 t.9 t.10) - t.11 = t.5 - PrintIntS(t.11) + t.5 = t.4 + t.6 = t.5 + t.3 = t.6 + t.8 = t.3 + t.3 = t.8 + t.9 = [t.3+0] + t.10 = [t.9+0] + t.11 = 12 + t.12 = t.11 + t.13 = 14 + t.14 = t.13 + t.15 = 15 + t.16 = t.15 + t.7 = call t.10(t.3 t.12 t.14 t.16) + t.17 = t.7 + t.18 = t.17 + PrintIntS(t.18) ret const functable_A @@ -18,7 +25,9 @@ const functable_A func A_foo(this t.0 t.1 t.2 ) t.3 = 22 - ret t.3 + t.4 = t.3 + t.5 = t.4 + ret t.5 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/ex33.vapor b/output/ex33.vapor index 4260958..8557073 100644 --- a/output/ex33.vapor +++ b/output/ex33.vapor @@ -1,33 +1,41 @@ func Main() t.4 = HeapAllocZ(16) [t.4+0] = :functable_A - t.3 = t.4 - t.3 = t.3 - t.6 = [t.3+0] - t.7 = [t.6+4] - t.9 = 0 - t.10 = 1 - t.8 = Sub(t.9 t.10) - t.14 = 6 - t.15 = 7 - t.13 = MulS(t.14 t.15) - t.11 = t.8 - t.12 = 400 - t.16 = t.13 - t.5 = call t.7(t.3 t.14 t.15 t.16) - t.17 = t.5 - PrintIntS(t.17) - t.3 = t.3 - t.19 = [t.3+0] - t.20 = [t.19+0] - t.22 = 0 - t.23 = 1 - t.21 = Add(t.22 t.23) - t.24 = t.21 - t.25 = 400 - t.18 = call t.20(t.3 t.24 t.25) - t.26 = t.18 - PrintIntS(t.26) + t.5 = t.4 + t.6 = t.5 + t.3 = t.6 + t.8 = t.3 + t.3 = t.8 + t.9 = [t.3+0] + t.10 = [t.9+4] + t.12 = 0 + t.13 = 1 + t.11 = Sub(t.12 t.13) + t.14 = t.11 + t.15 = 400 + t.16 = t.15 + t.18 = 6 + t.19 = 7 + t.17 = MulS(t.18 t.19) + t.20 = t.17 + t.7 = call t.10(t.3 t.14 t.16 t.20) + t.21 = t.7 + t.22 = t.21 + PrintIntS(t.22) + t.24 = t.3 + t.3 = t.24 + t.25 = [t.3+0] + t.26 = [t.25+0] + t.28 = 0 + t.29 = 1 + t.27 = Add(t.28 t.29) + t.30 = t.27 + t.31 = 400 + t.32 = t.31 + t.23 = call t.26(t.3 t.30 t.32) + t.33 = t.23 + t.34 = t.33 + PrintIntS(t.34) ret const functable_A @@ -35,13 +43,19 @@ const functable_A :A_bar func A_foo(this t.0 t.1 ) - [this+8] = 3 - t.2 = 22 - ret t.2 + t.2 = 3 + t.3 = t.2 + [this+8] = t.3 + t.4 = 22 + t.5 = t.4 + t.6 = t.5 + ret t.6 func A_bar(this t.0 t.1 t.2 ) t.3 = 6 - ret t.3 + t.4 = t.3 + t.5 = t.4 + ret t.5 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/ex34.vapor b/output/ex34.vapor index 1b1cdc8..a4baf4f 100644 --- a/output/ex34.vapor +++ b/output/ex34.vapor @@ -1,25 +1,36 @@ func Main() t.4 = HeapAllocZ(8) [t.4+0] = :functable_A - t.3 = t.4 - t.5 = 1 - PrintIntS(t.5) - t.3 = t.3 - t.7 = [t.3+0] - t.8 = [t.7+0] - t.9 = 2 - t.6 = call t.8(t.3 t.9) - t.10 = t.6 - PrintIntS(t.10) + t.5 = t.4 + t.6 = t.5 + t.3 = t.6 + t.7 = 1 + t.8 = t.7 + t.9 = t.8 + PrintIntS(t.9) + t.11 = t.3 + t.3 = t.11 + t.12 = [t.3+0] + t.13 = [t.12+0] + t.14 = 2 + t.15 = t.14 + t.10 = call t.13(t.3 t.15) + t.16 = t.10 + t.17 = t.16 + PrintIntS(t.17) ret const functable_A :A_foo func A_foo(this t.0 ) - [this+4] = 42 - t.1 = [this+4] - ret t.1 + t.1 = 42 + t.2 = t.1 + [this+4] = t.2 + t.3 = [this+4] + t.4 = t.3 + t.5 = t.4 + ret t.5 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/ex35.vapor b/output/ex35.vapor index 47ee28a..c5ac984 100644 --- a/output/ex35.vapor +++ b/output/ex35.vapor @@ -2,12 +2,15 @@ func Main() t.3 = HeapAllocZ(4) [t.3+0] = :functable_Fac t.4 = t.3 - t.5 = [t.4+0] + t.5 = t.4 t.6 = [t.5+0] - t.7 = 10 - t.2 = call t.6(t.4 t.7) - t.8 = t.2 - PrintIntS(t.8) + t.7 = [t.6+0] + t.8 = 10 + t.9 = t.8 + t.2 = call t.7(t.5 t.9) + t.10 = t.2 + t.11 = t.10 + PrintIntS(t.11) ret const functable_Fac @@ -15,7 +18,9 @@ const functable_Fac func Fac_ComputeFac(this t.0 ) t.1 = 4 - ret t.1 + t.2 = t.1 + t.3 = t.2 + ret t.3 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/ex36.vapor b/output/ex36.vapor index ef01f49..5886722 100644 --- a/output/ex36.vapor +++ b/output/ex36.vapor @@ -1,23 +1,32 @@ func Main() t.4 = HeapAllocZ(4) [t.4+0] = :functable_Fac - t.3 = t.4 - t.3 = t.3 - t.6 = [t.3+0] - t.7 = [t.6+0] - t.8 = 10 - t.5 = call t.7(t.3 t.8) - t.9 = t.5 - PrintIntS(t.9) + t.5 = t.4 + t.6 = t.5 + t.3 = t.6 + t.8 = t.3 + t.3 = t.8 + t.9 = [t.3+0] + t.10 = [t.9+0] + t.11 = 10 + t.12 = t.11 + t.7 = call t.10(t.3 t.12) + t.13 = t.7 + t.14 = t.13 + PrintIntS(t.14) ret const functable_Fac :Fac_ComputeFac func Fac_ComputeFac(this t.0 ) - t.1 = 4 - t.2 = t.1 - ret t.2 + t.2 = 4 + t.3 = t.2 + t.1 = t.3 + t.4 = t.1 + t.5 = t.4 + t.6 = t.5 + ret t.6 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/ex37.vapor b/output/ex37.vapor index 616bf27..4a73c41 100644 --- a/output/ex37.vapor +++ b/output/ex37.vapor @@ -1,35 +1,45 @@ func Main() t.4 = HeapAllocZ(4) [t.4+0] = :functable_A - t.3 = t.4 - t.3 = t.3 - t.6 = [t.3+0] - t.7 = [t.6+0] - t.5 = call t.7(t.3 ) - t.8 = t.5 - PrintIntS(t.8) + t.5 = t.4 + t.6 = t.5 + t.3 = t.6 + t.8 = t.3 + t.3 = t.8 + t.9 = [t.3+0] + t.10 = [t.9+0] + t.7 = call t.10(t.3) + t.11 = t.7 + t.12 = t.11 + PrintIntS(t.12) ret const functable_A :A_foo func A_foo(this ) - t.0 = 0 -while5_test: - t.2 = t.0 - t.3 = 10 - t.1 = LtS(t.2 t.3) - t.4 = t.1 - if0 t.4 goto :while5_end -while5_body: - t.6 = t.0 - t.7 = 1 - t.5 = Add(t.6 t.7) - t.0 = t.5 - goto :while5_test -while5_end: - t.8 = t.0 - ret t.8 + t.1 = 0 + t.2 = t.1 + t.0 = t.2 +while11_test: + t.4 = t.0 + t.5 = 10 + t.3 = LtS(t.4 t.5) + t.6 = t.3 + t.7 = t.6 + if0 t.7 goto :while11_end +while11_body: + t.9 = t.0 + t.10 = 1 + t.8 = Add(t.9 t.10) + t.11 = t.8 + t.0 = t.11 + goto :while11_test +while11_end: + t.12 = t.0 + t.13 = t.12 + t.14 = t.13 + ret t.14 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/ex38.vapor b/output/ex38.vapor index 616bf27..4a73c41 100644 --- a/output/ex38.vapor +++ b/output/ex38.vapor @@ -1,35 +1,45 @@ func Main() t.4 = HeapAllocZ(4) [t.4+0] = :functable_A - t.3 = t.4 - t.3 = t.3 - t.6 = [t.3+0] - t.7 = [t.6+0] - t.5 = call t.7(t.3 ) - t.8 = t.5 - PrintIntS(t.8) + t.5 = t.4 + t.6 = t.5 + t.3 = t.6 + t.8 = t.3 + t.3 = t.8 + t.9 = [t.3+0] + t.10 = [t.9+0] + t.7 = call t.10(t.3) + t.11 = t.7 + t.12 = t.11 + PrintIntS(t.12) ret const functable_A :A_foo func A_foo(this ) - t.0 = 0 -while5_test: - t.2 = t.0 - t.3 = 10 - t.1 = LtS(t.2 t.3) - t.4 = t.1 - if0 t.4 goto :while5_end -while5_body: - t.6 = t.0 - t.7 = 1 - t.5 = Add(t.6 t.7) - t.0 = t.5 - goto :while5_test -while5_end: - t.8 = t.0 - ret t.8 + t.1 = 0 + t.2 = t.1 + t.0 = t.2 +while11_test: + t.4 = t.0 + t.5 = 10 + t.3 = LtS(t.4 t.5) + t.6 = t.3 + t.7 = t.6 + if0 t.7 goto :while11_end +while11_body: + t.9 = t.0 + t.10 = 1 + t.8 = Add(t.9 t.10) + t.11 = t.8 + t.0 = t.11 + goto :while11_test +while11_end: + t.12 = t.0 + t.13 = t.12 + t.14 = t.13 + ret t.14 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/ex39.vapor b/output/ex39.vapor index 3ee23ea..6f2dec2 100644 --- a/output/ex39.vapor +++ b/output/ex39.vapor @@ -1,21 +1,30 @@ func Main() - t.2 = 0 - t.5 = 2 - t.6 = t.2 - t.4 = MulS(t.5 t.6) - t.3 = t.4 - t.8 = t.3 - t.9 = t.2 - t.7 = Add(t.8 t.9) - t.3 = t.7 - t.11 = t.3 - t.12 = 1 - t.10 = Sub(t.11 t.12) - t.3 = t.10 - t.13 = t.2 - PrintIntS(t.13) - t.14 = t.3 - PrintIntS(t.14) + t.3 = 0 + t.4 = t.3 + t.2 = t.4 + t.7 = 2 + t.8 = t.2 + t.6 = MulS(t.7 t.8) + t.9 = t.6 + t.5 = t.9 + t.11 = t.5 + t.12 = t.2 + t.10 = Add(t.11 t.12) + t.13 = t.10 + t.5 = t.13 + t.15 = t.5 + t.16 = 1 + t.14 = Sub(t.15 t.16) + t.17 = t.14 + t.5 = t.17 + t.18 = t.2 + t.19 = t.18 + t.20 = t.19 + PrintIntS(t.20) + t.21 = t.5 + t.22 = t.21 + t.23 = t.22 + PrintIntS(t.23) ret func AllocArray(size) diff --git a/output/ex40.vapor b/output/ex40.vapor index 4aa976f..20ebe32 100644 --- a/output/ex40.vapor +++ b/output/ex40.vapor @@ -1,27 +1,37 @@ func Main() t.4 = HeapAllocZ(8) [t.4+0] = :functable_A - t.3 = t.4 - t.3 = t.3 - t.6 = [t.3+0] - t.7 = [t.6+0] - t.8 = 12 - t.5 = call t.7(t.3 t.8) - t.9 = t.5 - PrintIntS(t.9) + t.5 = t.4 + t.6 = t.5 + t.3 = t.6 + t.8 = t.3 + t.3 = t.8 + t.9 = [t.3+0] + t.10 = [t.9+0] + t.11 = 12 + t.12 = t.11 + t.7 = call t.10(t.3 t.12) + t.13 = t.7 + t.14 = t.13 + PrintIntS(t.14) ret const functable_A :A_add_two func A_add_two(this t.0 ) - [this+4] = 2 - t.2 = t.0 - t.3 = [this+4] - t.1 = Add(t.2 t.3) - t.0 = t.1 + t.1 = 2 + t.2 = t.1 + [this+4] = t.2 t.4 = t.0 - ret t.4 + t.5 = [this+4] + t.3 = Add(t.4 t.5) + t.6 = t.3 + t.0 = t.6 + t.7 = t.0 + t.8 = t.7 + t.9 = t.8 + ret t.9 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/ex41.vapor b/output/ex41.vapor index e1ce5bd..4d2fce9 100644 --- a/output/ex41.vapor +++ b/output/ex41.vapor @@ -1,49 +1,63 @@ func Main() t.4 = HeapAllocZ(4) [t.4+0] = :functable_A - t.3 = t.4 - t.3 = t.3 - t.6 = [t.3+0] - t.7 = [t.6+0] - t.5 = call t.7(t.3 ) - t.8 = t.5 - PrintIntS(t.8) + t.5 = t.4 + t.6 = t.5 + t.3 = t.6 + t.8 = t.3 + t.3 = t.8 + t.9 = [t.3+0] + t.10 = [t.9+0] + t.7 = call t.10(t.3) + t.11 = t.7 + t.12 = t.11 + PrintIntS(t.12) ret const functable_A :A_foo func A_foo(this ) - t.0 = 0 t.1 = 0 -while5_test: - t.3 = t.0 - t.4 = 10 - t.2 = LtS(t.3 t.4) - t.5 = t.2 - if0 t.5 goto :while5_end -while5_body: -while10_test: - t.7 = t.1 - t.8 = 100 + t.2 = t.1 + t.0 = t.2 + t.4 = 0 + t.5 = t.4 + t.3 = t.5 +while13_test: + t.7 = t.0 + t.8 = 10 t.6 = LtS(t.7 t.8) t.9 = t.6 - if0 t.9 goto :while10_end -while10_body: - t.11 = t.1 - t.12 = 1 - t.10 = Add(t.11 t.12) - t.1 = t.10 - goto :while10_test -while10_end: - t.14 = t.0 - t.15 = 1 - t.13 = Add(t.14 t.15) - t.0 = t.13 - goto :while5_test -while5_end: - t.16 = t.1 - ret t.16 + t.10 = t.9 + if0 t.10 goto :while13_end +while13_body: +while19_test: + t.12 = t.3 + t.13 = 100 + t.11 = LtS(t.12 t.13) + t.14 = t.11 + t.15 = t.14 + if0 t.15 goto :while19_end +while19_body: + t.17 = t.3 + t.18 = 1 + t.16 = Add(t.17 t.18) + t.19 = t.16 + t.3 = t.19 + goto :while19_test +while19_end: + t.21 = t.0 + t.22 = 1 + t.20 = Add(t.21 t.22) + t.23 = t.20 + t.0 = t.23 + goto :while13_test +while13_end: + t.24 = t.3 + t.25 = t.24 + t.26 = t.25 + ret t.26 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/ex43.vapor b/output/ex43.vapor index 08eb00d..4c06826 100644 --- a/output/ex43.vapor +++ b/output/ex43.vapor @@ -1,35 +1,48 @@ func Main() t.4 = HeapAllocZ(4) [t.4+0] = :functable_A - t.3 = t.4 - t.3 = t.3 - t.6 = [t.3+0] - t.7 = [t.6+0] - t.5 = call t.7(t.3 ) - t.8 = t.5 - PrintIntS(t.8) + t.5 = t.4 + t.6 = t.5 + t.3 = t.6 + t.8 = t.3 + t.3 = t.8 + t.9 = [t.3+0] + t.10 = [t.9+0] + t.7 = call t.10(t.3) + t.11 = t.7 + t.12 = t.11 + PrintIntS(t.12) ret const functable_A :A_foo func A_foo(this ) - t.0 = 1 - t.2 = 5 - t.3 = t.0 - t.1 = LtS(t.2 t.3) - t.4 = t.1 - if0 t.4 goto :if5_else -if5_body: - t.5 = 1 - PrintIntS(t.5) - goto :if5_end -if5_else: - t.6 = 0 - PrintIntS(t.6) -if5_end: - t.7 = t.0 - ret t.7 + t.1 = 1 + t.2 = t.1 + t.0 = t.2 + t.4 = 5 + t.5 = t.0 + t.3 = LtS(t.4 t.5) + t.6 = t.3 + t.7 = t.6 + if0 t.7 goto :if11_else +if11_body: + t.8 = 1 + t.9 = t.8 + t.10 = t.9 + PrintIntS(t.10) + goto :if11_end +if11_else: + t.11 = 0 + t.12 = t.11 + t.13 = t.12 + PrintIntS(t.13) +if11_end: + t.14 = t.0 + t.15 = t.14 + t.16 = t.15 + ret t.16 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/ex44.vapor b/output/ex44.vapor index 6ad8e68..b921ff3 100644 --- a/output/ex44.vapor +++ b/output/ex44.vapor @@ -2,11 +2,13 @@ func Main() t.3 = HeapAllocZ(8) [t.3+0] = :functable_Operator t.4 = t.3 - t.5 = [t.4+0] + t.5 = t.4 t.6 = [t.5+0] - t.2 = call t.6(t.4 ) - t.7 = t.2 - PrintIntS(t.7) + t.7 = [t.6+0] + t.2 = call t.7(t.5) + t.8 = t.2 + t.9 = t.8 + PrintIntS(t.9) ret const functable_Operator @@ -18,9 +20,12 @@ func Operator_compute(this ) t.3 = Eq(1 t.1) t.4 = Eq(1 t.2) t.0 = Eq(t.3 t.4) - [this+4] = t.0 - t.5 = 0 - ret t.5 + t.5 = t.0 + [this+4] = t.5 + t.6 = 0 + t.7 = t.6 + t.8 = t.7 + ret t.8 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/ex45.vapor b/output/ex45.vapor index 7adf817..53d5ab4 100644 --- a/output/ex45.vapor +++ b/output/ex45.vapor @@ -1,26 +1,38 @@ func Main() t.4 = HeapAllocZ(8) [t.4+0] = :functable_A - t.3 = t.4 - t.3 = t.3 - t.7 = [t.3+0] - t.8 = [t.7+0] - t.6 = call t.8(t.3 ) - t.5 = t.6 - t.9 = t.5 - PrintIntS(t.9) + t.5 = t.4 + t.6 = t.5 + t.3 = t.6 + t.9 = t.3 + t.3 = t.9 + t.10 = [t.3+0] + t.11 = [t.10+0] + t.8 = call t.11(t.3) + t.12 = t.8 + t.7 = t.12 + t.13 = t.7 + t.14 = t.13 + t.15 = t.14 + PrintIntS(t.15) ret const functable_A :A_run func A_run(this ) - t.0 = call :AllocArray(10) - [this+4] = t.0 - t.2 = [this+4] - t.1 = [t.2+0] - t.3 = t.1 - ret t.3 + t.0 = 10 + t.1 = t.0 + t.2 = call :AllocArray(t.1) + t.3 = t.2 + t.4 = t.3 + [this+4] = t.4 + t.7 = [this+4] + t.6 = t.7 + t.5 = [t.6+0] + t.8 = t.5 + t.9 = t.8 + ret t.9 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/ex46.vapor b/output/ex46.vapor index 282da13..3b141bc 100644 --- a/output/ex46.vapor +++ b/output/ex46.vapor @@ -1,28 +1,40 @@ func Main() t.4 = HeapAllocZ(16) [t.4+0] = :functable_A - t.3 = t.4 - t.3 = t.3 - t.6 = [t.3+0] - t.7 = [t.6+0] - t.5 = call t.7(t.3 ) - t.8 = t.5 - PrintIntS(t.8) - t.3 = t.3 - t.10 = [t.3+0] - t.11 = [t.10+0] - t.9 = call t.11(t.3 ) - t.12 = t.9 + t.5 = t.4 + t.6 = t.5 + t.3 = t.6 + t.8 = t.3 + t.3 = t.8 + t.9 = [t.3+0] + t.10 = [t.9+0] + t.7 = call t.10(t.3) + t.11 = t.7 + t.12 = t.11 PrintIntS(t.12) - t.3 = t.3 + t.14 = t.3 + t.3 = t.14 t.15 = [t.3+0] - t.16 = [t.15+4] - t.17 = 10 - t.18 = 20 - t.14 = call t.16(t.3 t.17 t.18) - t.13 = t.14 - t.19 = t.13 - PrintIntS(t.19) + t.16 = [t.15+0] + t.13 = call t.16(t.3) + t.17 = t.13 + t.18 = t.17 + PrintIntS(t.18) + t.21 = t.3 + t.3 = t.21 + t.22 = [t.3+0] + t.23 = [t.22+4] + t.24 = 10 + t.25 = t.24 + t.26 = 20 + t.27 = t.26 + t.20 = call t.23(t.3 t.25 t.27) + t.28 = t.20 + t.19 = t.28 + t.29 = t.19 + t.30 = t.29 + t.31 = t.30 + PrintIntS(t.31) ret const functable_A @@ -30,27 +42,40 @@ const functable_A :A_bar func A_foo(this ) - [this+12] = 0 - t.1 = 1 - t.2 = 2 - t.0 = Add(t.1 t.2) - [this+8] = t.0 - t.4 = [this+8] - t.5 = [this+12] - t.3 = Add(t.4 t.5) - [this+12] = t.3 - t.6 = [this+12] - ret t.6 + t.0 = 0 + t.1 = t.0 + [this+12] = t.1 + t.3 = 1 + t.4 = 2 + t.2 = Add(t.3 t.4) + t.5 = t.2 + [this+8] = t.5 + t.7 = [this+8] + t.8 = [this+12] + t.6 = Add(t.7 t.8) + t.9 = t.6 + [this+12] = t.9 + t.10 = [this+12] + t.11 = t.10 + t.12 = t.11 + ret t.12 func A_bar(this t.0 t.1 ) - [this+8] = t.0 - [this+12] = t.1 - t.4 = [this+8] - t.5 = [this+12] - t.3 = MulS(t.4 t.5) - t.2 = t.3 - t.6 = t.2 - ret t.6 + t.2 = t.0 + t.3 = t.2 + [this+8] = t.3 + t.4 = t.1 + t.5 = t.4 + [this+12] = t.5 + t.8 = [this+8] + t.9 = [this+12] + t.7 = MulS(t.8 t.9) + t.10 = t.7 + t.6 = t.10 + t.11 = t.6 + t.12 = t.11 + t.13 = t.12 + ret t.13 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/ex47.vapor b/output/ex47.vapor index e035a56..ebe2f0a 100644 --- a/output/ex47.vapor +++ b/output/ex47.vapor @@ -1,20 +1,27 @@ func Main() t.4 = HeapAllocZ(12) [t.4+0] = :functable_A - t.3 = t.4 - t.3 = t.3 - t.6 = [t.3+0] - t.7 = [t.6+0] - t.8 = 42 - t.5 = call t.7(t.3 t.8) - t.9 = t.5 - PrintIntS(t.9) - t.3 = t.3 - t.11 = [t.3+0] - t.12 = [t.11+4] - t.10 = call t.12(t.3 ) - t.13 = t.10 - PrintIntS(t.13) + t.5 = t.4 + t.6 = t.5 + t.3 = t.6 + t.8 = t.3 + t.3 = t.8 + t.9 = [t.3+0] + t.10 = [t.9+0] + t.11 = 42 + t.12 = t.11 + t.7 = call t.10(t.3 t.12) + t.13 = t.7 + t.14 = t.13 + PrintIntS(t.14) + t.16 = t.3 + t.3 = t.16 + t.17 = [t.3+0] + t.18 = [t.17+4] + t.15 = call t.18(t.3) + t.19 = t.15 + t.20 = t.19 + PrintIntS(t.20) ret const functable_A @@ -22,27 +29,40 @@ const functable_A :A_get func A_set(this t.0 ) - t.1 = call :AllocArray(12) - [this+8] = t.1 + t.1 = 12 + t.2 = t.1 + t.3 = call :AllocArray(t.2) + t.4 = t.3 + t.5 = t.4 + [this+8] = t.5 + t.6 = [this+8] + t.8 = 5 + t.9 = t.8 + t.7 = MulS(t.9 4) + t.7 = Add(t.7 4) + t.7 = Add(t.6 t.7) + t.10 = t.0 + t.11 = t.10 + [t.7] = t.11 + t.14 = [this+8] + t.13 = t.14 + t.12 = [t.13+0] + t.15 = t.12 + t.16 = t.15 + ret t.16 + +func A_get(this ) t.2 = [this+8] - t.3 = MulS(5 4) + t.1 = t.2 + t.4 = 5 + t.3 = MulS(t.4 4) t.3 = Add(t.3 4) - t.3 = Add(t.2 t.3) - [t.3] = t.0 - t.5 = [this+8] - t.4 = [t.5+0] - t.6 = t.4 + t.3 = Add(t.1 t.3) + t.0 = [t.3] + t.5 = t.0 + t.6 = t.5 ret t.6 -func A_get(this ) - t.1 = [this+8] - t.2 = MulS(5 4) - t.2 = Add(t.2 4) - t.2 = Add(t.1 t.2) - t.0 = [t.2] - t.3 = t.0 - ret t.3 - func AllocArray(size) bytes = MulS(size 4) bytes = Add(bytes 4) diff --git a/output/ex48.vapor b/output/ex48.vapor index 3a30098..7269ba4 100644 --- a/output/ex48.vapor +++ b/output/ex48.vapor @@ -1,20 +1,27 @@ func Main() t.4 = HeapAllocZ(12) [t.4+0] = :functable_A - t.3 = t.4 - t.3 = t.3 - t.6 = [t.3+0] - t.7 = [t.6+0] - t.8 = 42 - t.5 = call t.7(t.3 t.8) - t.9 = t.5 - PrintIntS(t.9) - t.3 = t.3 - t.11 = [t.3+0] - t.12 = [t.11+4] - t.10 = call t.12(t.3 ) - t.13 = t.10 - PrintIntS(t.13) + t.5 = t.4 + t.6 = t.5 + t.3 = t.6 + t.8 = t.3 + t.3 = t.8 + t.9 = [t.3+0] + t.10 = [t.9+0] + t.11 = 42 + t.12 = t.11 + t.7 = call t.10(t.3 t.12) + t.13 = t.7 + t.14 = t.13 + PrintIntS(t.14) + t.16 = t.3 + t.3 = t.16 + t.17 = [t.3+0] + t.18 = [t.17+4] + t.15 = call t.18(t.3) + t.19 = t.15 + t.20 = t.19 + PrintIntS(t.20) ret const functable_A @@ -22,13 +29,19 @@ const functable_A :A_get func A_set(this t.0 ) - [this+8] = t.0 - t.1 = [this+8] - ret t.1 + t.1 = t.0 + t.2 = t.1 + [this+8] = t.2 + t.3 = [this+8] + t.4 = t.3 + t.5 = t.4 + ret t.5 func A_get(this ) t.0 = [this+8] - ret t.0 + t.1 = t.0 + t.2 = t.1 + ret t.2 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/ex49.vapor b/output/ex49.vapor index ad216d4..57e0093 100644 --- a/output/ex49.vapor +++ b/output/ex49.vapor @@ -1,31 +1,43 @@ func Main() t.4 = HeapAllocZ(8) [t.4+0] = :functable_A - t.3 = t.4 - t.3 = t.3 - t.6 = [t.3+0] - t.7 = [t.6+0] - t.5 = call t.7(t.3 ) - t.8 = t.5 - PrintIntS(t.8) + t.5 = t.4 + t.6 = t.5 + t.3 = t.6 + t.8 = t.3 + t.3 = t.8 + t.9 = [t.3+0] + t.10 = [t.9+0] + t.7 = call t.10(t.3) + t.11 = t.7 + t.12 = t.11 + PrintIntS(t.12) ret const functable_A :A_set func A_set(this ) - [this+4] = 3 - t.0 = 1 - ret t.0 + t.0 = 3 + t.1 = t.0 + [this+4] = t.1 + t.2 = 1 + t.3 = t.2 + t.4 = t.3 + ret t.4 const functable_B :B_get :A_set func B_get(this ) - [this+8] = 12 - t.0 = [this+8] - ret t.0 + t.0 = 12 + t.1 = t.0 + [this+8] = t.1 + t.2 = [this+8] + t.3 = t.2 + t.4 = t.3 + ret t.4 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/ex50.vapor b/output/ex50.vapor index 8c2f4ef..434dc66 100644 --- a/output/ex50.vapor +++ b/output/ex50.vapor @@ -1,13 +1,17 @@ func Main() t.4 = HeapAllocZ(8) [t.4+0] = :functable_A - t.3 = t.4 - t.3 = t.3 - t.6 = [t.3+0] - t.7 = [t.6+0] - t.5 = call t.7(t.3 ) - t.8 = t.5 - PrintIntS(t.8) + t.5 = t.4 + t.6 = t.5 + t.3 = t.6 + t.8 = t.3 + t.3 = t.8 + t.9 = [t.3+0] + t.10 = [t.9+0] + t.7 = call t.10(t.3) + t.11 = t.7 + t.12 = t.11 + PrintIntS(t.12) ret const functable_A @@ -16,19 +20,27 @@ const functable_A func A_set_get(this ) t.0 = HeapAllocZ(12) [t.0+0] = :functable_B - [this+4] = t.0 - t.3 = [this+4] - t.4 = [t.3+0] - t.5 = [t.4+4] - t.2 = call t.5(t.3 ) - t.1 = t.2 - t.3 = [this+4] - t.7 = [t.3+0] - t.8 = [t.7+0] - t.6 = call t.8(t.3 ) - t.1 = t.6 - t.9 = t.1 - ret t.9 + t.1 = t.0 + t.2 = t.1 + [this+4] = t.2 + t.5 = [this+4] + t.6 = t.5 + t.7 = [t.6+0] + t.8 = [t.7+4] + t.4 = call t.8(t.6) + t.9 = t.4 + t.3 = t.9 + t.11 = [this+4] + t.6 = t.11 + t.12 = [t.6+0] + t.13 = [t.12+0] + t.10 = call t.13(t.6) + t.14 = t.10 + t.3 = t.14 + t.15 = t.3 + t.16 = t.15 + t.17 = t.16 + ret t.17 const functable_B :B_get @@ -36,12 +48,18 @@ const functable_B func B_get(this ) t.0 = [this+8] - ret t.0 + t.1 = t.0 + t.2 = t.1 + ret t.2 func B_set(this ) - [this+8] = 12 - t.0 = 1 - ret t.0 + t.0 = 12 + t.1 = t.0 + [this+8] = t.1 + t.2 = 1 + t.3 = t.2 + t.4 = t.3 + ret t.4 func AllocArray(size) bytes = MulS(size 4) diff --git a/output/ex51.java b/output/ex51.java new file mode 100644 index 0000000..96a5d5a --- /dev/null +++ b/output/ex51.java @@ -0,0 +1,31 @@ +class ex51{ + public static void main(String[] a){ + System.out.println(new Test().start()); + } +} + +class Test { + + Test test; + int[] i; + + public int setval(int pos, int val) { i[pos] = val; return 0; } + public int getval(int pos) { int val; val = i[pos]; return val; } + + public int start(){ + Test foo; + int val; + foo = this; + i = new int[10]; + + test = (new Test()).next(); + val = foo.setval(2, 42); + test = this; + val = test.getval(2); + return val; + } + + public Test next() { + return test; + } +} diff --git a/output/ex51.vapor b/output/ex51.vapor new file mode 100644 index 0000000..6046fae --- /dev/null +++ b/output/ex51.vapor @@ -0,0 +1,111 @@ +func Main() + t.3 = HeapAllocZ(24) + [t.3+0] = :functable_Test + t.4 = t.3 + t.5 = t.4 + t.6 = [t.5+0] + t.7 = [t.6+8] + t.2 = call t.7(t.5) + t.8 = t.2 + t.9 = t.8 + PrintIntS(t.9) + ret + +const functable_Test + :Test_setval + :Test_getval + :Test_start + :Test_next + +func Test_setval(this t.0 t.1 ) + t.2 = [this+20] + t.4 = t.0 + t.5 = t.4 + t.3 = MulS(t.5 4) + t.3 = Add(t.3 4) + t.3 = Add(t.2 t.3) + t.6 = t.1 + t.7 = t.6 + [t.3] = t.7 + t.8 = 0 + t.9 = t.8 + t.10 = t.9 + ret t.10 + +func Test_getval(this t.0 ) + t.4 = [this+20] + t.3 = t.4 + t.6 = t.0 + t.5 = MulS(t.6 4) + t.5 = Add(t.5 4) + t.5 = Add(t.3 t.5) + t.2 = [t.5] + t.7 = t.2 + t.1 = t.7 + t.8 = t.1 + t.9 = t.8 + t.10 = t.9 + ret t.10 + +func Test_start(this ) + t.2 = this + t.3 = t.2 + t.1 = t.3 + t.4 = 10 + t.5 = t.4 + t.6 = call :AllocArray(t.5) + t.7 = t.6 + t.8 = t.7 + [this+20] = t.8 + t.10 = HeapAllocZ(24) + [t.10+0] = :functable_Test + t.11 = t.10 + t.12 = t.11 + t.13 = t.12 + t.14 = t.13 + t.15 = [t.14+0] + t.16 = [t.15+12] + t.9 = call t.16(t.14) + t.17 = t.9 + [this+16] = t.17 + t.20 = t.1 + t.1 = t.20 + t.21 = [t.1+0] + t.22 = [t.21+0] + t.23 = 2 + t.24 = t.23 + t.25 = 42 + t.26 = t.25 + t.19 = call t.22(t.1 t.24 t.26) + t.27 = t.19 + t.18 = t.27 + t.28 = this + t.29 = t.28 + [this+16] = t.29 + t.31 = [this+16] + t.32 = t.31 + t.33 = [t.32+0] + t.34 = [t.33+4] + t.35 = 2 + t.36 = t.35 + t.30 = call t.34(t.32 t.36) + t.37 = t.30 + t.18 = t.37 + t.38 = t.18 + t.39 = t.38 + t.40 = t.39 + ret t.40 + +func Test_next(this ) + t.0 = [this+16] + t.1 = t.0 + t.2 = t.1 + ret t.2 + +func AllocArray(size) + bytes = MulS(size 4) + bytes = Add(bytes 4) + v = HeapAllocZ(bytes) + [v] = size + ret v + diff --git a/output/ex52.java b/output/ex52.java new file mode 100644 index 0000000..6febcd5 --- /dev/null +++ b/output/ex52.java @@ -0,0 +1,28 @@ +class ex52{ + public static void main(String[] a){ + System.out.println(new Test().start()); + } +} + +class Test { + + Test test; + boolean b; + + public int start(){ + int val; + test = new Test(); + b = true; + b = test.next(); + if (!b) + val = 1; + else + val = 3; + return val; + } + + public boolean next(){ + return ((true && (7<8)) && b); + } + +} diff --git a/output/ex52.vapor b/output/ex52.vapor new file mode 100644 index 0000000..20de523 --- /dev/null +++ b/output/ex52.vapor @@ -0,0 +1,84 @@ +func Main() + t.3 = HeapAllocZ(16) + [t.3+0] = :functable_Test + t.4 = t.3 + t.5 = t.4 + t.6 = [t.5+0] + t.7 = [t.6+0] + t.2 = call t.7(t.5) + t.8 = t.2 + t.9 = t.8 + PrintIntS(t.9) + ret + +const functable_Test + :Test_start + :Test_next + +func Test_start(this ) + t.0 = HeapAllocZ(16) + [t.0+0] = :functable_Test + t.1 = t.0 + t.2 = t.1 + [this+8] = t.2 + t.3 = 1 + t.4 = t.3 + [this+12] = t.4 + t.6 = [this+8] + t.7 = t.6 + t.8 = [t.7+0] + t.9 = [t.8+4] + t.5 = call t.9(t.7) + t.10 = t.5 + [this+12] = t.10 + t.12 = [this+12] + t.13 = t.12 + t.11 = Eq(t.13 0) + t.14 = t.11 + t.15 = t.14 + t.16 = t.15 + if0 t.16 goto :if17_else +if17_body: + t.18 = 1 + t.19 = t.18 + t.17 = t.19 + goto :if17_end +if17_else: + t.20 = 3 + t.21 = t.20 + t.17 = t.21 +if17_end: + t.22 = t.17 + t.23 = t.22 + t.24 = t.23 + ret t.24 + +func Test_next(this ) + t.2 = 1 + t.4 = 7 + t.5 = 8 + t.3 = LtS(t.4 t.5) + t.6 = t.3 + t.7 = t.6 + t.8 = Eq(1 t.2) + t.9 = Eq(1 t.7) + t.1 = Eq(t.8 t.9) + t.10 = t.1 + t.11 = t.10 + t.12 = [this+12] + t.13 = Eq(1 t.11) + t.14 = Eq(1 t.12) + t.0 = Eq(t.13 t.14) + t.15 = t.0 + t.16 = t.15 + t.17 = t.16 + t.18 = t.17 + ret t.18 + +func AllocArray(size) + bytes = MulS(size 4) + bytes = Add(bytes 4) + v = HeapAllocZ(bytes) + [v] = size + ret v + |