@@ -35,43 +35,43 @@ internal class NativeMemoryMapImpl<KEY_TYPE : Any, VALUE_TYPE : Any>(
3535 override fun put (key : KEY_TYPE , value : VALUE_TYPE ? ): NativeMemoryMap .PutResult {
3636 var result: NativeMemoryMap .PutResult = NativeMemoryMap .PutResult .NO_CHANGE
3737
38- cacheMap.compute(key) { _, currentNearCacheBuffer ->
38+ cacheMap.compute(key) { _, currentBuffer ->
3939
4040 if (value == null ) {
4141 // free current buffer, deleting entry from map
42- if (currentNearCacheBuffer != null ) {
43- nativeMemoryAllocator.freeNativeMemoryBuffer(currentNearCacheBuffer )
42+ if (currentBuffer != null ) {
43+ nativeMemoryAllocator.freeNativeMemoryBuffer(currentBuffer )
4444 result = NativeMemoryMap .PutResult .FREED_CURRENT_BUFFER
4545 }
4646 null
47- } else if (currentNearCacheBuffer == null ) {
47+ } else if (currentBuffer == null ) {
4848 // allocate a new buffer
4949 val newValueByteArray = valueSerializer.serializeToByteArray(value = value)
5050 val newCapacityBytes = newValueByteArray.size
5151
52- val newNearCacheBuffer =
52+ val newBuffer =
5353 nativeMemoryAllocator.allocateNativeMemoryBuffer(capacityBytes = newCapacityBytes)
5454
55- newNearCacheBuffer .copyFromArray(byteArray = newValueByteArray)
55+ newBuffer .copyFromArray(byteArray = newValueByteArray)
5656
5757 result = NativeMemoryMap .PutResult .ALLOCATED_NEW_BUFFER
5858
59- newNearCacheBuffer
59+ newBuffer
6060 } else {
6161 // reuse existing buffer
6262 val newValueByteArray = valueSerializer.serializeToByteArray(value = value)
6363 val newCapacityBytes = newValueByteArray.size
6464
6565 nativeMemoryAllocator.resizeNativeMemoryBuffer(
66- buffer = currentNearCacheBuffer ,
66+ buffer = currentBuffer ,
6767 newCapacityBytes = newCapacityBytes,
6868 )
6969
70- currentNearCacheBuffer .copyFromArray(byteArray = newValueByteArray)
70+ currentBuffer .copyFromArray(byteArray = newValueByteArray)
7171
7272 result = NativeMemoryMap .PutResult .REUSED_EXISTING_BUFFER
7373
74- currentNearCacheBuffer
74+ currentBuffer
7575 }
7676 }
7777
@@ -85,7 +85,7 @@ internal class NativeMemoryMapImpl<KEY_TYPE : Any, VALUE_TYPE : Any>(
8585 /* *
8686 * Non-private for unit test only.
8787 */
88- val threadLocalHeapReadBuffer =
88+ val threadLocalOnHeapReadBuffer =
8989 if (useThreadLocalOnHeapReadBuffer) {
9090 ThreadLocal .withInitial {
9191 OnHeapMemoryBufferFactory .newOnHeapMemoryBuffer(
@@ -96,26 +96,29 @@ internal class NativeMemoryMapImpl<KEY_TYPE : Any, VALUE_TYPE : Any>(
9696 null
9797 }
9898
99+ private val getOnHeapReadBuffer: (currentBuffer: NativeMemoryBuffer ) -> OnHeapMemoryBuffer =
100+ if (threadLocalOnHeapReadBuffer != null ) {
101+ { threadLocalOnHeapReadBuffer.get() }
102+ } else {
103+ { currentBuffer -> OnHeapMemoryBufferFactory .newOnHeapMemoryBuffer(initialCapacityBytes = currentBuffer.capacityBytes) }
104+ }
105+
99106 override fun get (key : KEY_TYPE ): VALUE_TYPE ? {
100107 var onHeapReadBuffer: OnHeapMemoryBuffer ? = null
101108
102- cacheMap.computeIfPresent(key) { _, nearCacheBuffer ->
109+ cacheMap.computeIfPresent(key) { _, currentBuffer ->
103110
104111 onHeapReadBuffer =
105112 run {
106- // copy nearCacheBuffer to readBuffer
107- val readBuffer = if (threadLocalHeapReadBuffer != null ) {
108- threadLocalHeapReadBuffer.get()
109- } else {
110- OnHeapMemoryBufferFactory .newOnHeapMemoryBuffer(initialCapacityBytes = nearCacheBuffer.capacityBytes)
111- }
113+ // copy currentBuffer to readBuffer
114+ val readBuffer = getOnHeapReadBuffer(currentBuffer)
112115
113- nearCacheBuffer .copyToOnHeapMemoryBuffer(onHeapMemoryBuffer = readBuffer)
116+ currentBuffer .copyToOnHeapMemoryBuffer(onHeapMemoryBuffer = readBuffer)
114117
115118 readBuffer
116119 }
117120
118- nearCacheBuffer
121+ currentBuffer
119122 }
120123
121124 return onHeapReadBuffer?.let {
0 commit comments