From a471bbc1852ef0b321d8a1e9da857686c4498005 Mon Sep 17 00:00:00 2001 From: Svyatoslav Scherbina Date: Thu, 18 Mar 2021 13:16:25 +0300 Subject: [PATCH] Native compiler: remove unused hashing code It was used to compute hashes for class names, but this is no longer required after c6ac807034f9ef8cf61b69e53b4dea7eb76ae754. --- .../kotlin/backend/konan/llvm/ContextUtils.kt | 40 ------------------- .../kotlin/backend/konan/llvm/HashUtils.kt | 35 ---------------- .../kotlin/backend/konan/llvm/Runtime.kt | 1 - 3 files changed, 76 deletions(-) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/ContextUtils.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/ContextUtils.kt index ebfd69835b8..5acba6c28e6 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/ContextUtils.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/ContextUtils.kt @@ -13,7 +13,6 @@ import llvm.* import org.jetbrains.kotlin.backend.konan.CachedLibraries import org.jetbrains.kotlin.library.resolver.TopologicalLibraryOrder import org.jetbrains.kotlin.backend.konan.Context -import org.jetbrains.kotlin.backend.konan.hash.GlobalHash import org.jetbrains.kotlin.backend.konan.ir.llvmSymbolOrigin import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.konan.CompiledKlibModuleOrigin @@ -214,45 +213,6 @@ internal interface ContextUtils : RuntimeAware { val IrClass.llvmTypeInfoPtr: LLVMValueRef get() = typeInfoPtr.llvm - /** - * Returns contents of this [GlobalHash]. - * - * It must be declared identically with [Runtime.globalHashType]. - */ - fun GlobalHash.getBytes(): ByteArray { - @Suppress("DEPRECATION") - val size = GlobalHash.size - assert(size == LLVMStoreSizeOfType(llvmTargetData, runtime.globalHashType)) - - return this.bits.getBytes(size) - } - - /** - * Returns global hash of this string contents. - */ - val String.globalHashBytes: ByteArray - get() = memScoped { - val hash = globalHash(stringAsBytes(this@globalHashBytes), memScope) - hash.getBytes() - } - - /** - * Return base64 representation for global hash of this string contents. - */ - val String.globalHashBase64: String - get() { - return base64Encode(globalHashBytes) - } - - val String.globalHash: ConstValue - get() = memScoped { - val hashBytes = this@globalHash.globalHashBytes - return Struct(runtime.globalHashType, ConstArray(int8Type, hashBytes.map { Int8(it) })) - } - - val FqName.globalHash: ConstValue - get() = this.toString().globalHash - } /** diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/HashUtils.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/HashUtils.kt index cafe946f636..1d745eb99e4 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/HashUtils.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/HashUtils.kt @@ -5,46 +5,11 @@ package org.jetbrains.kotlin.backend.konan.llvm -import kotlinx.cinterop.* import org.jetbrains.kotlin.backend.common.serialization.cityHash64 -import org.jetbrains.kotlin.backend.konan.hash.* @OptIn(ExperimentalUnsignedTypes::class) internal fun localHash(data: ByteArray): Long { return cityHash64(data).toLong() } -internal fun globalHash(data: ByteArray, retValPlacement: NativePlacement): GlobalHash { - val res = retValPlacement.alloc() - memScoped { - val bytes = allocArrayOf(data) - MakeGlobalHash(bytes, data.size, res.ptr) - } - return res -} - -public fun base64Encode(data: ByteArray): String { - memScoped { - val resultSize = 4 * data.size / 3 + 3 + 1 - val result = allocArray(resultSize) - val bytes = allocArrayOf(data) - EncodeBase64(bytes, data.size, result, resultSize) - // TODO: any better way to do that without two copies? - return result.toKString() - } -} - -public fun base64Decode(encoded: String): ByteArray { - memScoped { - val bufferSize: Int = 3 * encoded.length / 4 - val result = allocArray(bufferSize) - val resultSize = allocArray(1) - resultSize[0] = bufferSize - val errorCode = DecodeBase64(encoded, encoded.length, result, resultSize) - if (errorCode != 0) throw Error("Non-zero exit code of DecodeBase64: ${errorCode}") - val realSize = resultSize[0] - return result.readBytes(realSize) - } -} - internal class LocalHash(val value: Long) : ConstValue by Int64(value) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/Runtime.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/Runtime.kt index dcf00b6c66f..5d2024cab81 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/Runtime.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/Runtime.kt @@ -28,7 +28,6 @@ class Runtime(bitcodeFile: String) { val writableTypeInfoType = getStructTypeOrNull("WritableTypeInfo") val methodTableRecordType = getStructType("MethodTableRecord") val interfaceTableRecordType = getStructType("InterfaceTableRecord") - val globalHashType = getStructType("GlobalHash") val associatedObjectTableRecordType = getStructType("AssociatedObjectTableRecord") val objHeaderType = getStructType("ObjHeader")