JS: load metadata optimization in KotlinJavascriptMetadataUtils
This commit is contained in:
@@ -31,6 +31,7 @@ public object KotlinJavascriptMetadataUtils {
|
|||||||
|
|
||||||
public val JS_EXT: String = ".js"
|
public val JS_EXT: String = ".js"
|
||||||
private val KOTLIN_JAVASCRIPT_METHOD_NAME = "kotlin_module_metadata"
|
private val KOTLIN_JAVASCRIPT_METHOD_NAME = "kotlin_module_metadata"
|
||||||
|
private val KOTLIN_JAVASCRIPT_METHOD_NAME_PATTERN = "\\.kotlin_module_metadata\\(".toRegex()
|
||||||
/**
|
/**
|
||||||
* Matches string like <name>.kotlin_module_metadata(<abi version>, <module name>, <base64 data>)
|
* Matches string like <name>.kotlin_module_metadata(<abi version>, <module name>, <base64 data>)
|
||||||
*/
|
*/
|
||||||
@@ -68,6 +69,9 @@ public object KotlinJavascriptMetadataUtils {
|
|||||||
public fun loadMetadata(path: String): List<KotlinJavascriptMetadata> = loadMetadata(File(path))
|
public fun loadMetadata(path: String): List<KotlinJavascriptMetadata> = loadMetadata(File(path))
|
||||||
|
|
||||||
private fun parseMetadata(text: String, path: String, metadataList: MutableList<KotlinJavascriptMetadata>) {
|
private fun parseMetadata(text: String, path: String, metadataList: MutableList<KotlinJavascriptMetadata>) {
|
||||||
|
// 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)
|
val matcher = METADATA_PATTERN.matcher(text)
|
||||||
while (matcher.find()) {
|
while (matcher.find()) {
|
||||||
var abiVersion = Integer.parseInt(matcher.group(1));
|
var abiVersion = Integer.parseInt(matcher.group(1));
|
||||||
|
|||||||
Reference in New Issue
Block a user