From 2b2fce5949473e31e1297904451ebecb053b36ab Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Thu, 18 Jun 2020 18:34:08 +0300 Subject: [PATCH] Fix for KT-37761. Don't use mmap. It causes more troubles than it produce benefits --- .../jetbrains/kotlin/library/impl/IrFileReaders.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/IrFileReaders.kt b/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/IrFileReaders.kt index 2797991f46d..c6e8bfdf5d8 100644 --- a/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/IrFileReaders.kt +++ b/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/IrFileReaders.kt @@ -34,7 +34,7 @@ abstract class IrArrayReader(private val buffer: ByteBuffer) { } } -class IrArrayFileReader(file: File) : IrArrayReader(file.memoryMappedBuffer) +class IrArrayFileReader(file: File) : IrArrayReader(file.readBuffer) class IrArrayMemoryReader(bytes: ByteArray) : IrArrayReader(bytes.buffer) abstract class IrMultiArrayReader(private val buffer: ByteBuffer) { @@ -85,7 +85,7 @@ abstract class IrMultiArrayReader(private val buffer: ByteBuffer) { } } -class IrMultiArrayFileReader(file: File) : IrMultiArrayReader(file.memoryMappedBuffer) +class IrMultiArrayFileReader(file: File) : IrMultiArrayReader(file.readBuffer) class IrMultiArrayMemoryReader(bytes: ByteArray) : IrMultiArrayReader(bytes.buffer) abstract class IrMultiTableReader(private val buffer: ByteBuffer, private val keyReader: ByteBuffer.() -> K) { @@ -169,16 +169,16 @@ abstract class IrTableReader(private val buffer: ByteBuffer, keyReader: ByteB } } -val File.memoryMappedBuffer: ByteBuffer get() = map(FileChannel.MapMode.READ_ONLY) +val File.readBuffer: ByteBuffer get() = this.readBytes().buffer val ByteArray.buffer: ByteBuffer get() = ByteBuffer.wrap(this) -class IndexIrTableFileReader(file: File) : IrTableReader(file.memoryMappedBuffer, { long }) +class IndexIrTableFileReader(file: File) : IrTableReader(file.readBuffer, { long }) class IndexIrTableMemoryReader(bytes: ByteArray) : IrTableReader(bytes.buffer, { long }) data class DeclarationId(val id: Int) -class DeclarationIrTableFileReader(file: File) : IrTableReader(file.memoryMappedBuffer, { DeclarationId(int) }) +class DeclarationIrTableFileReader(file: File) : IrTableReader(file.readBuffer, { DeclarationId(int) }) class DeclarationIrTableMemoryReader(bytes: ByteArray) : IrTableReader(bytes.buffer, { DeclarationId(int) }) -class DeclarationIrMultiTableFileReader(file: File) : IrMultiTableReader(file.memoryMappedBuffer, { DeclarationId(int) }) +class DeclarationIrMultiTableFileReader(file: File) : IrMultiTableReader(file.readBuffer, { DeclarationId(int) }) class DeclarationIrMultiTableMemoryReader(bytes: ByteArray) : IrMultiTableReader(bytes.buffer, { DeclarationId(int) }) \ No newline at end of file