JVM IR: support value classes only when feature is enabled
Remove NeedsToVisit because it doesn't really help with performance, and it significantly increases code complexity.
This commit is contained in:
committed by
Space Team
parent
2dee47a8c1
commit
12bbdebed2
+2
@@ -176,6 +176,8 @@ fun unboxedTypeOfInlineClass(boxedType: Type, state: GenerationState): Type? {
|
||||
}
|
||||
|
||||
fun getMultiFieldValueClassUnboxInfo(boxedType: Type, state: GenerationState): MultiFieldValueClassUnboxInfo? {
|
||||
if (!state.config.supportMultiFieldValueClasses) return null
|
||||
|
||||
val descriptor =
|
||||
state.jvmBackendClassResolver.resolveToClassDescriptors(boxedType).singleOrNull()?.takeIf { it.isMultiFieldValueClass() }
|
||||
?: return null
|
||||
|
||||
+1
-1
@@ -297,7 +297,7 @@ private fun AbstractInsnNode.isInlineClassUnboxing(state: GenerationState) =
|
||||
}
|
||||
|
||||
private fun AbstractInsnNode.isMultiFieldValueClassUnboxing(state: GenerationState) =
|
||||
isMethodInsnWith(Opcodes.INVOKEVIRTUAL) {
|
||||
state.config.supportMultiFieldValueClasses && isMethodInsnWith(Opcodes.INVOKEVIRTUAL) {
|
||||
isMultiFieldValueClassUnboxingMethodDescriptor(state)
|
||||
}
|
||||
|
||||
|
||||
@@ -100,4 +100,6 @@ class JvmBackendConfig(configuration: CompilerConfiguration) {
|
||||
val noNewJavaAnnotationTargets: Boolean = configuration.getBoolean(JVMConfigurationKeys.NO_NEW_JAVA_ANNOTATION_TARGETS)
|
||||
|
||||
val oldInnerClassesLogic: Boolean = configuration.getBoolean(JVMConfigurationKeys.OLD_INNER_CLASSES_LOGIC)
|
||||
|
||||
val supportMultiFieldValueClasses: Boolean = languageVersionSettings.supportsFeature(LanguageFeature.ValueClasses)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user