[FIR] Eliminate isNotSAM optimization as ineffective (see dc4f332c)

This commit is contained in:
Mikhail Glukhikh
2020-02-19 11:15:02 +03:00
parent 9017654b9d
commit 82c8b5f368
11 changed files with 7 additions and 49 deletions
@@ -35,7 +35,6 @@ interface FirDeclarationStatus : FirElement {
val isData: Boolean
val isSuspend: Boolean
val isStatic: Boolean
val isNotSAM: Boolean
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitDeclarationStatus(this, data)
}
@@ -34,7 +34,6 @@ interface FirResolvedDeclarationStatus : FirDeclarationStatus {
override val isData: Boolean
override val isSuspend: Boolean
override val isStatic: Boolean
override val isNotSAM: Boolean
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitResolvedDeclarationStatus(this, data)
}
@@ -6,10 +6,6 @@
package org.jetbrains.kotlin.fir
import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.builder.AbstractFirRegularClassBuilder
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
import org.jetbrains.kotlin.fir.expressions.FirBlock
import org.jetbrains.kotlin.fir.expressions.FirExpression
@@ -20,26 +16,3 @@ fun FirBlock.returnExpressions(): List<FirExpression> = listOfNotNull(statements
private val PUBLIC_METHOD_NAMES_IN_OBJECT = setOf("equals", "hashCode", "getClass", "wait", "notify", "notifyAll", "toString")
fun AbstractFirRegularClassBuilder.calculateSAM() {
val status = status as FirDeclarationStatusImpl
status.isNotSAM = isNotSam()
}
fun AbstractFirRegularClassBuilder.isNotSam(): Boolean {
var counter = 0
for (declaration in declarations) {
if (declaration is FirProperty && declaration.modality == Modality.ABSTRACT) {
return true
}
if (declaration is FirSimpleFunction) {
if (declaration.modality != Modality.ABSTRACT || declaration.name.asString() in PUBLIC_METHOD_NAMES_IN_OBJECT) {
continue
}
counter++
if (counter > 1) {
return true
}
}
}
return false
}
@@ -121,12 +121,6 @@ open class FirDeclarationStatusImpl(
this[STATIC] = value
}
override var isNotSAM: Boolean
get() = this[NOT_SAM]
set(value) {
this[NOT_SAM] = value
}
private enum class Modifier(val mask: Int) {
EXPECT(0x1),
ACTUAL(0x2),
@@ -142,8 +136,7 @@ open class FirDeclarationStatusImpl(
COMPANION(0x800),
DATA(0x1000),
SUSPEND(0x2000),
STATIC(0x4000),
NOT_SAM(0x8000)
STATIC(0x4000)
}
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
@@ -296,8 +296,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
+modality
generateBooleanFields(
"expect", "actual", "override", "operator", "infix", "inline", "tailRec",
"external", "const", "lateInit", "inner", "companion", "data", "suspend",
"static", "notSAM"
"external", "const", "lateInit", "inner", "companion", "data", "suspend", "static"
)
}