From 2266a348c3f02fb33e3b7d028c5b792abda1c7fc Mon Sep 17 00:00:00 2001 From: "Denis.Zharkov" Date: Fri, 30 Jul 2021 13:13:46 +0300 Subject: [PATCH] Get rid of another map built in FastJarHandler --- .../cli/jvm/compiler/jarfs/FastJarHandler.kt | 10 ++-------- .../jvm/compiler/jarfs/FastJarVirtualFile.kt | 17 ++++++++++++----- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/jarfs/FastJarHandler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/jarfs/FastJarHandler.kt index ce9177b892c..7d446acb412 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/jarfs/FastJarHandler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/jarfs/FastJarHandler.kt @@ -31,7 +31,6 @@ class FastJarHandler(val fileSystem: FastJarFileSystem, path: String) { } } - val childrenMap = HashMap>(ourEntryMap.size) myRoot = FastJarVirtualFile(this, "", -1, null) val filesByRelativePath = HashMap(ourEntryMap.size) @@ -41,13 +40,8 @@ class FastJarHandler(val fileSystem: FastJarFileSystem, path: String) { getOrCreateFile(info, filesByRelativePath) } - for (child in filesByRelativePath.values) { - val parent = child.parent as? FastJarVirtualFile ?: continue - childrenMap.getOrPut(parent) { mutableListOf() }.add(child) - } - - for ((key, childList) in childrenMap) { - key.children = childList.toTypedArray() + for (node in filesByRelativePath.values) { + node.initChildrenArrayFromList() } } diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/jarfs/FastJarVirtualFile.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/jarfs/FastJarVirtualFile.kt index 7425f15e55c..37ba1cfc6c4 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/jarfs/FastJarVirtualFile.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/jarfs/FastJarVirtualFile.kt @@ -17,12 +17,19 @@ internal class FastJarVirtualFile( private val myHandler: FastJarHandler, private val myName: CharSequence, private val myLength: Int, - private val myParent: VirtualFile? + private val myParent: FastJarVirtualFile? ) : VirtualFile() { - private var myChildren = EMPTY_ARRAY - fun setChildren(children: Array) { - myChildren = children + private var myChildrenArray = EMPTY_ARRAY + private val myChildrenList: MutableList = mutableListOf() + + init { + myParent?.myChildrenList?.add(this) + } + + fun initChildrenArrayFromList() { + myChildrenArray = myChildrenList.toTypedArray() + myChildrenList.clear() } override fun getName(): String { @@ -68,7 +75,7 @@ internal class FastJarVirtualFile( } override fun getChildren(): Array { - return myChildren + return myChildrenArray } @Throws(IOException::class)