From fc78971aeaf8c94d77b8c623e961bf3075f3c63d Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 2 Oct 2013 19:48:48 +0400 Subject: [PATCH] Delete JvmClassName.getAsmType() --- .../src/org/jetbrains/jet/codegen/AsmUtil.java | 4 ++-- .../src/org/jetbrains/jet/codegen/StackValue.java | 8 ++------ .../java/mapping/KotlinToJavaTypesMap.java | 5 ++++- .../jet/lang/resolve/java/JvmClassName.java | 10 ---------- .../jet/lang/resolve/java/JvmPrimitiveType.java | 15 ++++++++++----- .../java/mapping/JavaToKotlinClassMap.java | 7 ++++--- 6 files changed, 22 insertions(+), 27 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/AsmUtil.java b/compiler/backend/src/org/jetbrains/jet/codegen/AsmUtil.java index c2fd2772143..6af2e904413 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/AsmUtil.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/AsmUtil.java @@ -90,7 +90,7 @@ public class AsmUtil { for (JvmPrimitiveType primitiveType : JvmPrimitiveType.values()) { Type asmType = asmTypeForPrimitive(primitiveType); typeBySortBuilder.put(asmType.getSort(), primitiveType); - typeByWrapperBuilder.put(primitiveType.getWrapper().getAsmType(), asmType); + typeByWrapperBuilder.put(asmTypeByFqNameWithoutInnerClasses(primitiveType.getWrapperFqName()), asmType); } primitiveTypeByAsmSort = typeBySortBuilder.build(); primitiveTypeByBoxedType = typeByWrapperBuilder.build(); @@ -102,7 +102,7 @@ public class AsmUtil { @NotNull public static Type boxType(@NotNull Type type) { JvmPrimitiveType jvmPrimitiveType = primitiveTypeByAsmSort.get(type.getSort()); - return jvmPrimitiveType != null ? jvmPrimitiveType.getWrapper().getAsmType() : type; + return jvmPrimitiveType != null ? asmTypeByFqNameWithoutInnerClasses(jvmPrimitiveType.getWrapperFqName()) : type; } @NotNull diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/StackValue.java b/compiler/backend/src/org/jetbrains/jet/codegen/StackValue.java index 2c725cfa783..d5b1748358c 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/StackValue.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/StackValue.java @@ -30,7 +30,6 @@ import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.psi.JetExpression; import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall; import org.jetbrains.jet.lang.resolve.java.AsmTypeConstants; -import org.jetbrains.jet.lang.resolve.java.JvmPrimitiveType; import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue; import org.jetbrains.jet.lexer.JetTokens; @@ -252,11 +251,8 @@ public abstract class StackValue { } } else if (fromType.getSort() == Type.OBJECT) { - if (toType.getSort() == Type.BOOLEAN) { - coerce(fromType, JvmPrimitiveType.BOOLEAN.getWrapper().getAsmType(), v); - } - else if (toType.getSort() == Type.CHAR) { - coerce(fromType, JvmPrimitiveType.CHAR.getWrapper().getAsmType(), v); + if (toType.getSort() == Type.BOOLEAN || toType.getSort() == Type.CHAR) { + coerce(fromType, boxType(toType), v); } else { coerce(fromType, getType(Number.class), v); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/mapping/KotlinToJavaTypesMap.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/mapping/KotlinToJavaTypesMap.java index 7ad6c88cb99..9f49453fa0e 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/mapping/KotlinToJavaTypesMap.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/mapping/KotlinToJavaTypesMap.java @@ -23,6 +23,7 @@ import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.descriptors.ClassifierDescriptor; import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lang.resolve.java.AsmTypeConstants; +import org.jetbrains.jet.lang.resolve.java.JvmClassName; import org.jetbrains.jet.lang.resolve.java.JvmPrimitiveType; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe; @@ -62,7 +63,9 @@ public class KotlinToJavaTypesMap extends JavaToKotlinClassMapBuilder { FqName fqName = builtInsFqName.child(primitiveType.getTypeName()); register(fqName, asmType); - registerNullable(fqName, jvmPrimitiveType.getWrapper().getAsmType()); + + JvmClassName wrapperName = JvmClassName.byFqNameWithoutInnerClasses(jvmPrimitiveType.getWrapperFqName()); + registerNullable(fqName, Type.getObjectType(wrapperName.getInternalName())); register(builtInsFqName.child(primitiveType.getArrayTypeName()), Type.getType("[" + asmType.getDescriptor())); } diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JvmClassName.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JvmClassName.java index a73b98fe8e9..ff244492b0f 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JvmClassName.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JvmClassName.java @@ -18,7 +18,6 @@ package org.jetbrains.jet.lang.resolve.java; import com.intellij.openapi.util.text.StringUtil; import org.jetbrains.annotations.NotNull; -import org.jetbrains.asm4.Type; import org.jetbrains.jet.lang.resolve.name.FqName; public class JvmClassName { @@ -73,7 +72,6 @@ public class JvmClassName { private final String internalName; private FqName fqName; - private Type asmType; private JvmClassName(@NotNull String internalName) { this.internalName = internalName; @@ -92,14 +90,6 @@ public class JvmClassName { return internalName; } - @NotNull - public Type getAsmType() { - if (asmType == null) { - asmType = Type.getType("L" + internalName + ';'); - } - return asmType; - } - @Override public String toString() { return getInternalName(); diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JvmPrimitiveType.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JvmPrimitiveType.java index afb87f5f42c..6795be7176e 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JvmPrimitiveType.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JvmPrimitiveType.java @@ -16,6 +16,8 @@ package org.jetbrains.jet.lang.resolve.java; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.types.lang.PrimitiveType; public enum JvmPrimitiveType { @@ -31,23 +33,26 @@ public enum JvmPrimitiveType { private final PrimitiveType primitiveType; private final String name; - private final JvmClassName wrapper; + private final FqName wrapperFqName; - private JvmPrimitiveType(PrimitiveType primitiveType, String name, String wrapperClassName) { + private JvmPrimitiveType(@NotNull PrimitiveType primitiveType, @NotNull String name, @NotNull String wrapperClassName) { this.primitiveType = primitiveType; this.name = name; - this.wrapper = JvmClassName.byFqNameWithoutInnerClasses(wrapperClassName); + this.wrapperFqName = new FqName(wrapperClassName); } + @NotNull public PrimitiveType getPrimitiveType() { return primitiveType; } + @NotNull public String getName() { return name; } - public JvmClassName getWrapper() { - return wrapper; + @NotNull + public FqName getWrapperFqName() { + return wrapperFqName; } } diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/mapping/JavaToKotlinClassMap.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/mapping/JavaToKotlinClassMap.java index 9eea51413a2..437ec08ee6a 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/mapping/JavaToKotlinClassMap.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/mapping/JavaToKotlinClassMap.java @@ -69,11 +69,12 @@ public class JavaToKotlinClassMap extends JavaToKotlinClassMapBuilder implements for (JvmPrimitiveType jvmPrimitiveType : JvmPrimitiveType.values()) { PrimitiveType primitiveType = jvmPrimitiveType.getPrimitiveType(); String name = jvmPrimitiveType.getName(); - register(jvmPrimitiveType.getWrapper().getFqName(), builtIns.getPrimitiveClassDescriptor(primitiveType)); + FqName wrapperFqName = jvmPrimitiveType.getWrapperFqName(); + + register(wrapperFqName, builtIns.getPrimitiveClassDescriptor(primitiveType)); primitiveTypesMap.put(name, builtIns.getPrimitiveJetType(primitiveType)); primitiveTypesMap.put("[" + name, builtIns.getPrimitiveArrayJetType(primitiveType)); - primitiveTypesMap.put(jvmPrimitiveType.getWrapper().getFqName().asString(), builtIns.getNullablePrimitiveJetType( - primitiveType)); + primitiveTypesMap.put(wrapperFqName.asString(), builtIns.getNullablePrimitiveJetType(primitiveType)); } primitiveTypesMap.put("void", KotlinBuiltIns.getInstance().getUnitType()); }