From 6d8fc1e035a7249d58a10870ec657e27e1b9415e Mon Sep 17 00:00:00 2001 From: Michael Nedzelsky Date: Sat, 28 Mar 2015 12:03:15 +0300 Subject: [PATCH] JS: load metadata optimization in KotlinJavascriptMetadataUtils --- .../jetbrains/kotlin/utils/KotlinJavascriptMetadataUtils.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/compiler/util/src/org/jetbrains/kotlin/utils/KotlinJavascriptMetadataUtils.kt b/compiler/util/src/org/jetbrains/kotlin/utils/KotlinJavascriptMetadataUtils.kt index 271a0e0fcd1..6c68cb00913 100644 --- a/compiler/util/src/org/jetbrains/kotlin/utils/KotlinJavascriptMetadataUtils.kt +++ b/compiler/util/src/org/jetbrains/kotlin/utils/KotlinJavascriptMetadataUtils.kt @@ -31,6 +31,7 @@ public object KotlinJavascriptMetadataUtils { public val JS_EXT: String = ".js" private val KOTLIN_JAVASCRIPT_METHOD_NAME = "kotlin_module_metadata" + private val KOTLIN_JAVASCRIPT_METHOD_NAME_PATTERN = "\\.kotlin_module_metadata\\(".toRegex() /** * Matches string like .kotlin_module_metadata(, , ) */ @@ -68,6 +69,9 @@ public object KotlinJavascriptMetadataUtils { public fun loadMetadata(path: String): List = loadMetadata(File(path)) private fun parseMetadata(text: String, path: String, metadataList: MutableList) { + // Check for literal pattern first in order to reduce time for large files without metadata + if (!KOTLIN_JAVASCRIPT_METHOD_NAME_PATTERN.matcher(text).find()) return + val matcher = METADATA_PATTERN.matcher(text) while (matcher.find()) { var abiVersion = Integer.parseInt(matcher.group(1));