[Commonizer] Refactor CIR to avoid strong refs on descriptors

This is necessary to reduce memory consumption in commonizer while
processing sets of massive libraries.
Ex: ios_x64 (127 libraries) vs ios_arm64 (127 libraries).
This commit is contained in:
Dmitriy Dolovov
2020-02-13 18:51:48 +07:00
parent a0b0f72edf
commit 11e0f427ac
18 changed files with 236 additions and 193 deletions
@@ -1,8 +1,8 @@
expect annotation class CommonAnnotationForAnnotationClassesOnly(text: String) { val text: String }
expect annotation class CommonAnnotation(text: String) { val text: String }
expect annotation class CommonOuterAnnotation(inner: CommonInnerAnnotation) { val inner: CommonInnerAnnotation }
expect annotation class CommonInnerAnnotation(text: String) { val text: String }
//expect annotation class CommonOuterAnnotation(inner: CommonInnerAnnotation) { val inner: CommonInnerAnnotation }
//expect annotation class CommonInnerAnnotation(text: String) { val text: String }
expect var propertyWithoutBackingField: Double
expect val propertyWithBackingField: Double
@@ -15,4 +15,4 @@ expect fun <Q : Number> Q.function2(): Q
expect class AnnotatedClass(value: String) { val value: String }
expect class AnnotatedTypeAlias
expect object ObjectWithNestedAnnotations
//expect object ObjectWithNestedAnnotations
@@ -16,13 +16,13 @@ annotation class JsAnnotationForAnnotationClassesOnly(val text: String)
@CommonAnnotationForAnnotationClassesOnly("annotation-class")
annotation class JsAnnotation(val text: String)
@Target(AnnotationTarget.CLASS)
actual annotation class CommonOuterAnnotation(actual val inner: CommonInnerAnnotation)
actual annotation class CommonInnerAnnotation(actual val text: String)
//@Target(AnnotationTarget.CLASS)
//actual annotation class CommonOuterAnnotation(actual val inner: CommonInnerAnnotation)
//actual annotation class CommonInnerAnnotation(actual val text: String)
@Target(AnnotationTarget.CLASS)
annotation class JsOuterAnnotation(val inner: JsInnerAnnotation)
annotation class JsInnerAnnotation(val text: String)
//@Target(AnnotationTarget.CLASS)
//annotation class JsOuterAnnotation(val inner: JsInnerAnnotation)
//annotation class JsInnerAnnotation(val text: String)
@JsAnnotation("property")
@CommonAnnotation("property")
@@ -57,6 +57,6 @@ actual class AnnotatedClass @JsAnnotation("constructor") @CommonAnnotation("cons
@CommonAnnotation("type-alias")
actual typealias AnnotatedTypeAlias = AnnotatedClass
@JsOuterAnnotation(inner = JsInnerAnnotation("nested-annotations"))
@CommonOuterAnnotation(inner = CommonInnerAnnotation("nested-annotations"))
actual object ObjectWithNestedAnnotations
//@JsOuterAnnotation(inner = JsInnerAnnotation("nested-annotations"))
//@CommonOuterAnnotation(inner = CommonInnerAnnotation("nested-annotations"))
//actual object ObjectWithNestedAnnotations
@@ -16,13 +16,13 @@ annotation class JvmAnnotationForAnnotationClassesOnly(val text: String)
@CommonAnnotationForAnnotationClassesOnly("annotation-class")
annotation class JvmAnnotation(val text: String)
@Target(AnnotationTarget.CLASS)
actual annotation class CommonOuterAnnotation(actual val inner: CommonInnerAnnotation)
actual annotation class CommonInnerAnnotation(actual val text: String)
@Target(AnnotationTarget.CLASS)
annotation class JvmOuterAnnotation(val inner: JvmInnerAnnotation)
annotation class JvmInnerAnnotation(val text: String)
//@Target(AnnotationTarget.CLASS)
//actual annotation class CommonOuterAnnotation(actual val inner: CommonInnerAnnotation)
//actual annotation class CommonInnerAnnotation(actual val text: String)
//
//@Target(AnnotationTarget.CLASS)
//annotation class JvmOuterAnnotation(val inner: JvmInnerAnnotation)
//annotation class JvmInnerAnnotation(val text: String)
@JvmAnnotation("property")
@CommonAnnotation("property")
@@ -57,6 +57,6 @@ actual class AnnotatedClass @JvmAnnotation("constructor") @CommonAnnotation("con
@CommonAnnotation("type-alias")
actual typealias AnnotatedTypeAlias = AnnotatedClass
@JvmOuterAnnotation(inner = JvmInnerAnnotation("nested-annotations"))
@CommonOuterAnnotation(inner = CommonInnerAnnotation("nested-annotations"))
actual object ObjectWithNestedAnnotations
//@JvmOuterAnnotation(inner = JvmInnerAnnotation("nested-annotations"))
//@CommonOuterAnnotation(inner = CommonInnerAnnotation("nested-annotations"))
//actual object ObjectWithNestedAnnotations
@@ -16,13 +16,13 @@ annotation class JsAnnotationForAnnotationClassesOnly(val text: String)
@CommonAnnotationForAnnotationClassesOnly("annotation-class")
annotation class JsAnnotation(val text: String)
@Target(AnnotationTarget.CLASS)
annotation class CommonOuterAnnotation(val inner: CommonInnerAnnotation)
annotation class CommonInnerAnnotation(val text: String)
@Target(AnnotationTarget.CLASS)
annotation class JsOuterAnnotation(val inner: JsInnerAnnotation)
annotation class JsInnerAnnotation(val text: String)
//@Target(AnnotationTarget.CLASS)
//annotation class CommonOuterAnnotation(val inner: CommonInnerAnnotation)
//annotation class CommonInnerAnnotation(val text: String)
//
//@Target(AnnotationTarget.CLASS)
//annotation class JsOuterAnnotation(val inner: JsInnerAnnotation)
//annotation class JsInnerAnnotation(val text: String)
@JsAnnotation("property")
@CommonAnnotation("property")
@@ -57,6 +57,6 @@ class AnnotatedClass @JsAnnotation("constructor") @CommonAnnotation("constructor
@CommonAnnotation("type-alias")
typealias AnnotatedTypeAlias = AnnotatedClass
@JsOuterAnnotation(inner = JsInnerAnnotation("nested-annotations"))
@CommonOuterAnnotation(inner = CommonInnerAnnotation("nested-annotations"))
object ObjectWithNestedAnnotations
//@JsOuterAnnotation(inner = JsInnerAnnotation("nested-annotations"))
//@CommonOuterAnnotation(inner = CommonInnerAnnotation("nested-annotations"))
//object ObjectWithNestedAnnotations
@@ -16,13 +16,13 @@ annotation class JvmAnnotationForAnnotationClassesOnly(val text: String)
@CommonAnnotationForAnnotationClassesOnly("annotation-class")
annotation class JvmAnnotation(val text: String)
@Target(AnnotationTarget.CLASS)
annotation class CommonOuterAnnotation(val inner: CommonInnerAnnotation)
annotation class CommonInnerAnnotation(val text: String)
@Target(AnnotationTarget.CLASS)
annotation class JvmOuterAnnotation(val inner: JvmInnerAnnotation)
annotation class JvmInnerAnnotation(val text: String)
//@Target(AnnotationTarget.CLASS)
//annotation class CommonOuterAnnotation(val inner: CommonInnerAnnotation)
//annotation class CommonInnerAnnotation(val text: String)
//
//@Target(AnnotationTarget.CLASS)
//annotation class JvmOuterAnnotation(val inner: JvmInnerAnnotation)
//annotation class JvmInnerAnnotation(val text: String)
@JvmAnnotation("property")
@CommonAnnotation("property")
@@ -57,6 +57,6 @@ class AnnotatedClass @JvmAnnotation("constructor") @CommonAnnotation("constructo
@CommonAnnotation("type-alias")
typealias AnnotatedTypeAlias = AnnotatedClass
@JvmOuterAnnotation(inner = JvmInnerAnnotation("nested-annotations"))
@CommonOuterAnnotation(inner = CommonInnerAnnotation("nested-annotations"))
object ObjectWithNestedAnnotations
//@JvmOuterAnnotation(inner = JvmInnerAnnotation("nested-annotations"))
//@CommonOuterAnnotation(inner = CommonInnerAnnotation("nested-annotations"))
//object ObjectWithNestedAnnotations