Executable memory buffer (mmap / VirtualAlloc). Mirrors runtime/src/mmap.rs.
Types
ExecutableBuffer = object mem*: pointer mappedSize*: int length*: int
- Owns RX memory. Derefs to bytes for reading.
MutableBuffer = object mem*: pointer mappedSize*: int length*: int
Consts
DefaultPageSize = 4096
Procs
proc `[]`(b: ExecutableBuffer; i: int): byte {....raises: [], tags: [], forbids: [].}
proc allocWritable(size: int): tuple[mem: pointer, mapped: int] {. ...raises: [IOError], tags: [], forbids: [].}
proc destroy(b: var ExecutableBuffer) {....raises: [], tags: [], forbids: [].}
proc destroy(b: var MutableBuffer) {....raises: [], tags: [], forbids: [].}
proc freeMapping(mem: pointer; mapped: int) {....raises: [], tags: [], forbids: [].}
proc isEmpty(b: ExecutableBuffer): bool {....raises: [], tags: [], forbids: [].}
proc jitAllowWrites(allow: bool) {.inline, ...raises: [], tags: [], forbids: [].}
proc len(b: ExecutableBuffer): int {....raises: [], tags: [], forbids: [].}
proc makeExecutable(mem: pointer; mapped, length: int) {....raises: [IOError], tags: [], forbids: [].}
proc makeWritable(mem: pointer; mapped: int) {....raises: [IOError], tags: [], forbids: [].}
proc newExecutableBuffer(size: int): ExecutableBuffer {....raises: [IOError], tags: [], forbids: [].}
proc newMutableBuffer(size: int): MutableBuffer {....raises: [IOError], tags: [], forbids: [].}
proc pageSize(): int {....raises: [], tags: [], forbids: [].}
proc ptrAt(b: ExecutableBuffer; off: AssemblyOffset): pointer {....raises: [], tags: [], forbids: [].}
proc size(b: ExecutableBuffer): int {....raises: [], tags: [], forbids: [].}
proc toExecutable(b: MutableBuffer): ExecutableBuffer {....raises: [IOError], tags: [], forbids: [].}
proc toMutable(b: ExecutableBuffer): MutableBuffer {....raises: [IOError], tags: [], forbids: [].}
proc toSeq(b: ExecutableBuffer): seq[byte] {....raises: [], tags: [], forbids: [].}
proc writeBytes(b: var MutableBuffer; data: openArray[byte]) {....raises: [], tags: [], forbids: [].}