From 8be7e6064eab361fee454edfe24c0d8918ced6b4 Mon Sep 17 00:00:00 2001 From: Svyatoslav Kuzmich Date: Thu, 12 Nov 2020 13:47:00 +0300 Subject: [PATCH] [JS IR] Optimize sanitization - Use direct function call instead of lambda - Don't do anything for already valid names --- .../org/jetbrains/kotlin/ir/backend/js/utils/NameTables.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/NameTables.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/NameTables.kt index f5163534a62..42fc6779169 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/NameTables.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/NameTables.kt @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid import org.jetbrains.kotlin.ir.visitors.acceptVoid import org.jetbrains.kotlin.js.naming.isES5IdentifierPart import org.jetbrains.kotlin.js.naming.isES5IdentifierStart +import org.jetbrains.kotlin.js.naming.isValidES5Identifier import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty import java.util.* @@ -44,7 +45,6 @@ private fun mapToKey(declaration: T): String { class NameTable( val parent: NameTable<*>? = null, val reserved: MutableSet = mutableSetOf(), - val sanitizer: (String) -> String = ::sanitizeName, val mappedNames: MutableMap? = null ) { var finished = false @@ -65,7 +65,7 @@ class NameTable( } fun declareFreshName(declaration: T, suggestedName: String): String { - val freshName = findFreshName(sanitizer(suggestedName)) + val freshName = findFreshName(sanitizeName(suggestedName)) declareStableName(declaration, freshName) return freshName } @@ -424,6 +424,7 @@ class NameTables( fun sanitizeName(name: String): String { + if (name.isValidES5Identifier()) return name if (name.isEmpty()) return "_" val first = name.first().let { if (it.isES5IdentifierStart()) it else '_' }