Drop PrimitiveTypesUtil, store desc in JvmPrimitiveType
This commit is contained in:
@@ -62,7 +62,6 @@ import static org.jetbrains.kotlin.load.java.JvmAnnotationNames.ABI_VERSION_FIEL
|
||||
import static org.jetbrains.kotlin.load.java.JvmAnnotationNames.KotlinSyntheticClass;
|
||||
import static org.jetbrains.kotlin.resolve.DescriptorUtils.*;
|
||||
import static org.jetbrains.kotlin.resolve.jvm.AsmTypes.*;
|
||||
import static org.jetbrains.kotlin.resolve.jvm.types.PrimitiveTypesUtil.asmTypeForPrimitive;
|
||||
import static org.jetbrains.kotlin.types.TypeUtils.isNullableType;
|
||||
import static org.jetbrains.org.objectweb.asm.Opcodes.*;
|
||||
|
||||
@@ -109,7 +108,7 @@ public class AsmUtil {
|
||||
ImmutableMap.Builder<Integer, JvmPrimitiveType> typeBySortBuilder = ImmutableMap.builder();
|
||||
ImmutableMap.Builder<Type, Type> typeByWrapperBuilder = ImmutableMap.builder();
|
||||
for (JvmPrimitiveType primitiveType : JvmPrimitiveType.values()) {
|
||||
Type asmType = asmTypeForPrimitive(primitiveType);
|
||||
Type asmType = Type.getType(primitiveType.getDesc());
|
||||
typeBySortBuilder.put(asmType.getSort(), primitiveType);
|
||||
typeByWrapperBuilder.put(asmTypeByFqNameWithoutInnerClasses(primitiveType.getWrapperFqName()), asmType);
|
||||
}
|
||||
|
||||
@@ -39,7 +39,6 @@ import java.util.List;
|
||||
import static org.jetbrains.kotlin.builtins.KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME;
|
||||
import static org.jetbrains.kotlin.codegen.AsmUtil.asmDescByFqNameWithoutInnerClasses;
|
||||
import static org.jetbrains.kotlin.resolve.jvm.AsmTypes.getType;
|
||||
import static org.jetbrains.kotlin.resolve.jvm.types.PrimitiveTypesUtil.asmTypeForPrimitive;
|
||||
|
||||
public class ArrayIterator extends IntrinsicMethod {
|
||||
@NotNull
|
||||
@@ -69,7 +68,7 @@ public class ArrayIterator extends IntrinsicMethod {
|
||||
if (containingDeclaration.equals(arrayClass)) {
|
||||
FqName fqName = new FqName(BUILT_INS_PACKAGE_FQ_NAME + "." + primitiveType.getTypeName() + "Iterator");
|
||||
String iteratorDesc = asmDescByFqNameWithoutInnerClasses(fqName);
|
||||
String methodSignature = "([" + asmTypeForPrimitive(jvmPrimitiveType) + ")" + iteratorDesc;
|
||||
String methodSignature = "([" + jvmPrimitiveType.getDesc() + ")" + iteratorDesc;
|
||||
v.invokestatic("kotlin/jvm/internal/InternalPackage", "iterator", methodSignature, false);
|
||||
return Type.getType(iteratorDesc);
|
||||
}
|
||||
|
||||
+5
-8
@@ -32,8 +32,6 @@ import org.jetbrains.org.objectweb.asm.Type;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.jetbrains.kotlin.resolve.jvm.types.PrimitiveTypesUtil.asmTypeForPrimitive;
|
||||
|
||||
public class KotlinToJavaTypesMap extends JavaToKotlinClassMapBuilder {
|
||||
private static KotlinToJavaTypesMap instance = null;
|
||||
|
||||
@@ -56,18 +54,17 @@ public class KotlinToJavaTypesMap extends JavaToKotlinClassMapBuilder {
|
||||
|
||||
private void initPrimitives() {
|
||||
FqName builtInsFqName = KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME;
|
||||
for (JvmPrimitiveType jvmPrimitiveType : JvmPrimitiveType.values()) {
|
||||
PrimitiveType primitiveType = jvmPrimitiveType.getPrimitiveType();
|
||||
Type asmType = asmTypeForPrimitive(jvmPrimitiveType);
|
||||
for (JvmPrimitiveType type : JvmPrimitiveType.values()) {
|
||||
PrimitiveType primitiveType = type.getPrimitiveType();
|
||||
FqName fqName = builtInsFqName.child(primitiveType.getTypeName());
|
||||
|
||||
register(fqName, asmType);
|
||||
register(fqName, Type.getType(type.getDesc()));
|
||||
|
||||
FqName wrapperFqName = jvmPrimitiveType.getWrapperFqName();
|
||||
FqName wrapperFqName = type.getWrapperFqName();
|
||||
registerNullable(fqName, Type.getObjectType(JvmClassName.byFqNameWithoutInnerClasses(wrapperFqName).getInternalName()));
|
||||
registerFqName(fqName, wrapperFqName);
|
||||
|
||||
register(builtInsFqName.child(primitiveType.getArrayTypeName()), Type.getType("[" + asmType.getDescriptor()));
|
||||
register(builtInsFqName.child(primitiveType.getArrayTypeName()), Type.getType("[" + type.getDesc()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
-42
@@ -1,42 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.resolve.jvm.types;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType;
|
||||
import org.jetbrains.org.objectweb.asm.Type;
|
||||
|
||||
import static org.jetbrains.org.objectweb.asm.Type.*;
|
||||
|
||||
public class PrimitiveTypesUtil {
|
||||
private PrimitiveTypesUtil() {
|
||||
}
|
||||
|
||||
public static Type asmTypeForPrimitive(@NotNull JvmPrimitiveType jvmPrimitiveType) {
|
||||
switch (jvmPrimitiveType) {
|
||||
case BOOLEAN: return BOOLEAN_TYPE;
|
||||
case CHAR: return CHAR_TYPE;
|
||||
case BYTE: return BYTE_TYPE;
|
||||
case SHORT: return SHORT_TYPE;
|
||||
case INT: return INT_TYPE;
|
||||
case FLOAT: return FLOAT_TYPE;
|
||||
case LONG: return LONG_TYPE;
|
||||
case DOUBLE: return DOUBLE_TYPE;
|
||||
default: throw new IllegalStateException("Unknown primitive type: " + jvmPrimitiveType);
|
||||
}
|
||||
}
|
||||
}
|
||||
+17
-10
@@ -17,21 +17,21 @@
|
||||
package org.jetbrains.kotlin.resolve.jvm;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.name.FqName;
|
||||
import org.jetbrains.kotlin.builtins.PrimitiveType;
|
||||
import org.jetbrains.kotlin.name.FqName;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public enum JvmPrimitiveType {
|
||||
BOOLEAN(PrimitiveType.BOOLEAN, "boolean", "java.lang.Boolean"),
|
||||
CHAR(PrimitiveType.CHAR, "char", "java.lang.Character"),
|
||||
BYTE(PrimitiveType.BYTE, "byte", "java.lang.Byte"),
|
||||
SHORT(PrimitiveType.SHORT, "short", "java.lang.Short"),
|
||||
INT(PrimitiveType.INT, "int", "java.lang.Integer"),
|
||||
FLOAT(PrimitiveType.FLOAT, "float", "java.lang.Float"),
|
||||
LONG(PrimitiveType.LONG, "long", "java.lang.Long"),
|
||||
DOUBLE(PrimitiveType.DOUBLE, "double", "java.lang.Double"),
|
||||
BOOLEAN(PrimitiveType.BOOLEAN, "boolean", "Z", "java.lang.Boolean"),
|
||||
CHAR(PrimitiveType.CHAR, "char", "C", "java.lang.Character"),
|
||||
BYTE(PrimitiveType.BYTE, "byte", "B", "java.lang.Byte"),
|
||||
SHORT(PrimitiveType.SHORT, "short", "S", "java.lang.Short"),
|
||||
INT(PrimitiveType.INT, "int", "I", "java.lang.Integer"),
|
||||
FLOAT(PrimitiveType.FLOAT, "float", "F", "java.lang.Float"),
|
||||
LONG(PrimitiveType.LONG, "long", "J", "java.lang.Long"),
|
||||
DOUBLE(PrimitiveType.DOUBLE, "double", "D", "java.lang.Double"),
|
||||
;
|
||||
|
||||
private static final Set<FqName> WRAPPERS_CLASS_NAMES;
|
||||
@@ -50,11 +50,13 @@ public enum JvmPrimitiveType {
|
||||
|
||||
private final PrimitiveType primitiveType;
|
||||
private final String name;
|
||||
private final String desc;
|
||||
private final FqName wrapperFqName;
|
||||
|
||||
private JvmPrimitiveType(@NotNull PrimitiveType primitiveType, @NotNull String name, @NotNull String wrapperClassName) {
|
||||
JvmPrimitiveType(@NotNull PrimitiveType primitiveType, @NotNull String name, @NotNull String desc, @NotNull String wrapperClassName) {
|
||||
this.primitiveType = primitiveType;
|
||||
this.name = name;
|
||||
this.desc = desc;
|
||||
this.wrapperFqName = new FqName(wrapperClassName);
|
||||
}
|
||||
|
||||
@@ -68,6 +70,11 @@ public enum JvmPrimitiveType {
|
||||
return name;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getDesc() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public FqName getWrapperFqName() {
|
||||
return wrapperFqName;
|
||||
|
||||
Reference in New Issue
Block a user