diff --git a/bootstrap.xml b/bootstrap.xml index 1697aacc6b7..695ce5f2e03 100644 --- a/bootstrap.xml +++ b/bootstrap.xml @@ -1,4 +1,21 @@ + + + + @{prop}=${@{prop}} + + + + + + + + + + + + + diff --git a/build.xml b/build.xml index bc0ee63e9f7..6c91c946fa5 100644 --- a/build.xml +++ b/build.xml @@ -20,7 +20,7 @@ - + @@ -36,7 +36,7 @@ - + diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/CodegenContext.java b/compiler/backend/src/org/jetbrains/jet/codegen/CodegenContext.java index ce0eb62f800..a1135e9c65c 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/CodegenContext.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/CodegenContext.java @@ -10,6 +10,7 @@ import org.objectweb.asm.commons.InstructionAdapter; import java.util.Collections; import java.util.HashMap; +import java.util.LinkedHashMap; /* * @author max @@ -38,6 +39,8 @@ public abstract class CodegenContext { public final ObjectOrClosureCodegen closure; HashMap typeInfoConstants; + HashMap reverseTypeInfoConstants; + int typeInfoConstantsCount; HashMap accessors; protected StackValue outerExpression; @@ -177,13 +180,16 @@ public abstract class CodegenContext { if(parentContext != STATIC) return parentContext.getTypeInfoConstantIndex(type); - if(typeInfoConstants == null) - typeInfoConstants = new HashMap(); + if(typeInfoConstants == null) { + typeInfoConstants = new LinkedHashMap(); + reverseTypeInfoConstants = new LinkedHashMap(); + } Integer index = typeInfoConstants.get(type); if(index == null) { - index = typeInfoConstants.size(); + index = typeInfoConstantsCount++; typeInfoConstants.put(type, index); + reverseTypeInfoConstants.put(index, type); } return index; } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index e69555a882b..3ab8cc82519 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -35,18 +35,10 @@ import java.util.*; * @author alex.tkachman */ 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"; - private static final String CLASS_COMPARABLE = "java/lang/Comparable"; private static final String CLASS_NO_PATTERN_MATCHED_EXCEPTION = "jet/NoPatternMatchedException"; private static final String CLASS_TYPE_CAST_EXCEPTION = "jet/TypeCastException"; - private static final Type OBJECT_TYPE = Type.getType(Object.class); - private static final Type THROWABLE_TYPE = Type.getType(Throwable.class); - private static final Type STRING_TYPE = Type.getObjectType(CLASS_STRING); - private final Stack