From f8a12a0ec3cf15ddf98cf658a627acdb27e81029 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Mon, 26 Jun 2017 18:18:24 +0300 Subject: [PATCH] Optimize JavaTypeResolver by avoiding using some language features It's quite a hot point and using local functions with default parameters seem to affect negatively to overall performance (at least some of compiler benchmark have shown it) --- .../load/java/lazy/types/JavaTypeResolver.kt | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/types/JavaTypeResolver.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/types/JavaTypeResolver.kt index 57fceca7a83..efd71f7a9dc 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/types/JavaTypeResolver.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/types/JavaTypeResolver.kt @@ -87,14 +87,15 @@ class JavaTypeResolver( val useFlexible = !attr.isForAnnotationParameter && attr.howThisTypeIsUsed != SUPERTYPE val isRaw = javaType.isRaw if (!isRaw && !useFlexible) { - return computeSimpleJavaClassifierType(javaType, attr) ?: errorType() + return computeSimpleJavaClassifierType(javaType, attr, null) ?: errorType() } - fun computeBound(flexibility: JavaTypeFlexibility, lowerResult: SimpleType? = null) = - computeSimpleJavaClassifierType(javaType, attr.withFlexibility(flexibility), lowerResult) - - val lower = computeBound(FLEXIBLE_LOWER_BOUND) ?: return errorType() - val upper = computeBound(FLEXIBLE_UPPER_BOUND, lowerResult = lower) ?: return errorType() + val lower = + computeSimpleJavaClassifierType(javaType, attr.withFlexibility(FLEXIBLE_LOWER_BOUND), lowerResult = null) + ?: return errorType() + val upper = + computeSimpleJavaClassifierType(javaType, attr.withFlexibility(FLEXIBLE_UPPER_BOUND), lowerResult = lower) + ?: return errorType() return if (isRaw) { RawTypeImpl(lower, upper) @@ -106,7 +107,7 @@ class JavaTypeResolver( private fun computeSimpleJavaClassifierType( javaType: JavaClassifierType, attr: JavaTypeAttributes, - lowerResult: SimpleType? = null + lowerResult: SimpleType? ): SimpleType? { val annotations = lowerResult?.annotations ?: LazyJavaAnnotations(c, javaType)