IKVM11  11
Java SE 11 Virtual Machine for .NET
Loading...
Searching...
No Matches
IKVM.Runtime.Util.Java.Nio.DirectBufferMemoryManager Class Reference

Provides a MemoryManager<T> implementation backed by a Java DirectBuffer. This is a bit backward because ultimatly Java owns the memory, and we just use this manager to obtain a Memory<byte> reference to it. Ideally, we would override DirectBuffer in the JDK to allocate from the runtime MemoryPool. More...

Inheritance diagram for IKVM.Runtime.Util.Java.Nio.DirectBufferMemoryManager:

Public Member Functions

 DirectBufferMemoryManager (object buffer)
 Initializes a new instance.
 
override unsafe Span< byte > GetSpan ()
 
override unsafe MemoryHandle Pin (int elementIndex=0)
 
override void Unpin ()
 

Protected Member Functions

override void Dispose (bool disposing)
 

Detailed Description

Provides a MemoryManager<T> implementation backed by a Java DirectBuffer. This is a bit backward because ultimatly Java owns the memory, and we just use this manager to obtain a Memory<byte> reference to it. Ideally, we would override DirectBuffer in the JDK to allocate from the runtime MemoryPool.

Definition at line 17 of file DirectBufferMemoryManager.cs.

Constructor & Destructor Documentation

◆ DirectBufferMemoryManager()

IKVM.Runtime.Util.Java.Nio.DirectBufferMemoryManager.DirectBufferMemoryManager ( object buffer)

Initializes a new instance.

Definition at line 28 of file DirectBufferMemoryManager.cs.

29 {
30 this.buffer = buffer ?? throw new ArgumentNullException(nameof(buffer));
31 }

Member Function Documentation

◆ Dispose()

override void IKVM.Runtime.Util.Java.Nio.DirectBufferMemoryManager.Dispose ( bool disposing)
protected

Definition at line 52 of file DirectBufferMemoryManager.cs.

53 {
54 // Java deals with this through the use of a Cleaner
55 // TODO I think we should own this
56 }

◆ GetSpan()

override unsafe Span< byte > IKVM.Runtime.Util.Java.Nio.DirectBufferMemoryManager.GetSpan ( )

◆ Pin()

override unsafe MemoryHandle IKVM.Runtime.Util.Java.Nio.DirectBufferMemoryManager.Pin ( int elementIndex = 0)

Definition at line 37 of file DirectBufferMemoryManager.cs.

38 {
39 if (elementIndex < 0 || elementIndex >= bufferAccessor.GetCapacity(buffer))
40 throw new ArgumentOutOfRangeException(nameof(elementIndex));
41
42 return new MemoryHandle((byte*)(IntPtr)(bufferAccessor.GetAddress(buffer)) + elementIndex);
43 }

◆ Unpin()

override void IKVM.Runtime.Util.Java.Nio.DirectBufferMemoryManager.Unpin ( )

Definition at line 46 of file DirectBufferMemoryManager.cs.

47 {
48
49 }

The documentation for this class was generated from the following file: