From b3b8a23f4e253b66ed0931beeb9b5cbf240c53f7 Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Mon, 22 Aug 2011 18:36:41 +0400 Subject: [PATCH] Get rid of myStack holding intermediate StackValues and use functional style visitor instead. --- .../jetbrains/jet/codegen/ClassContext.java | 2 +- .../jet/codegen/ExpressionCodegen.java | 429 +++++++++--------- .../jet/codegen/FunctionCodegen.java | 36 +- .../org/jetbrains/jet/codegen/StackValue.java | 18 +- .../jet/codegen/intrinsics/ArraySize.java | 4 +- .../jet/codegen/intrinsics/BinaryOp.java | 11 +- .../jet/codegen/intrinsics/Concat.java | 16 +- .../jet/codegen/intrinsics/Increment.java | 4 +- .../codegen/intrinsics/IntrinsicMethod.java | 2 +- .../jetbrains/jet/codegen/intrinsics/Inv.java | 4 +- .../jetbrains/jet/codegen/intrinsics/Not.java | 6 +- .../jet/codegen/intrinsics/NumberCast.java | 4 +- .../jet/codegen/intrinsics/PsiMethodCall.java | 4 +- .../jet/codegen/intrinsics/RangeTo.java | 2 +- .../jet/codegen/intrinsics/TypeInfo.java | 2 +- .../jet/codegen/intrinsics/UnaryMinus.java | 4 +- .../jet/codegen/intrinsics/ValueTypeInfo.java | 2 +- 17 files changed, 259 insertions(+), 291 deletions(-) diff --git a/idea/src/org/jetbrains/jet/codegen/ClassContext.java b/idea/src/org/jetbrains/jet/codegen/ClassContext.java index 87e92d070f7..d553ca2774e 100644 --- a/idea/src/org/jetbrains/jet/codegen/ClassContext.java +++ b/idea/src/org/jetbrains/jet/codegen/ClassContext.java @@ -37,7 +37,7 @@ public class ClassContext { } public StackValue getThisExpression() { - if (parentContext == null) return null; + if (parentContext == null) return StackValue.none(); thisWasUsed = true; if (thisExpression != null) return thisExpression; diff --git a/idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index 99783414912..df9e10521d2 100644 --- a/idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -33,7 +33,7 @@ import java.util.*; * @author max * @author yole */ -public class ExpressionCodegen extends JetVisitorVoid { +public class ExpressionCodegen extends JetVisitor { private static final String CLASS_OBJECT = "java/lang/Object"; private static final String CLASS_STRING = "java/lang/String"; public static final String CLASS_STRING_BUILDER = "java/lang/StringBuilder"; @@ -59,7 +59,6 @@ public class ExpressionCodegen extends JetVisitorVoid { private final Stack