W3cubDocs

/Nim

vm

Source Edit

This file implements the new evaluation engine for Nim code. An instruction is 1-3 int32s in memory, it is a register based VM.

Imports

semmacrosanity, msgs, vmdef, vmgen, nimsets, types, parser, vmdeps, idents, trees, renderer, options, transf, gorgeimpl, lineinfos, btrees, macrocacheimpl, modulegraphs, sighashes, int128, vmprofiler, ast, semfold, evaltempl, magicsys, pathutils, vmconv, vmmarshal

Procs

proc evalConstExpr(module: PSym; idgen: IdGenerator; g: ModuleGraph; e: PNode): PNode {....raises: [
    Exception, ValueError, KeyError, OSError, IOError, ERecoverableError], tags: [
    RootEffect, ReadDirEffect, WriteIOEffect, ReadIOEffect, ReadEnvEffect,
    TimeEffect, ExecIOEffect], forbids: [].}
Source Edit
proc evalExpr(c: PCtx; n: PNode): PNode {....raises: [Exception, ValueError,
    KeyError, OSError, IOError, ERecoverableError], tags: [RootEffect,
    ReadDirEffect, WriteIOEffect, ReadIOEffect, ReadEnvEffect, TimeEffect,
    ExecIOEffect], forbids: [].}
Source Edit
proc evalMacroCall(module: PSym; idgen: IdGenerator; g: ModuleGraph;
                   templInstCounter: ref int; n, nOrig: PNode; sym: PSym): PNode {....raises: [
    Exception, ValueError, KeyError, OSError, IOError, ERecoverableError], tags: [
    RootEffect, ReadDirEffect, WriteIOEffect, ReadIOEffect, ReadEnvEffect,
    TimeEffect, ExecIOEffect], forbids: [].}
Source Edit
proc evalStaticExpr(module: PSym; idgen: IdGenerator; g: ModuleGraph; e: PNode;
                    prc: PSym): PNode {....raises: [Exception, ValueError,
    KeyError, OSError, IOError, ERecoverableError], tags: [RootEffect,
    ReadDirEffect, WriteIOEffect, ReadIOEffect, ReadEnvEffect, TimeEffect,
    ExecIOEffect], forbids: [].}
Source Edit
proc evalStaticStmt(module: PSym; idgen: IdGenerator; g: ModuleGraph; e: PNode;
                    prc: PSym) {....raises: [Exception, ValueError, KeyError,
    OSError, IOError, ERecoverableError], tags: [RootEffect, ReadDirEffect,
    WriteIOEffect, ReadIOEffect, ReadEnvEffect, TimeEffect, ExecIOEffect],
                                 forbids: [].}
Source Edit
proc evalStmt(c: PCtx; n: PNode) {....raises: [Exception, ValueError, KeyError,
    OSError, IOError, ERecoverableError], tags: [RootEffect, ReadDirEffect,
    WriteIOEffect, ReadIOEffect, ReadEnvEffect, TimeEffect, ExecIOEffect],
                                   forbids: [].}
Source Edit
proc execProc(c: PCtx; sym: PSym; args: openArray[PNode]): PNode {....raises: [
    Exception, ValueError, KeyError, OSError, IOError, ERecoverableError], tags: [
    RootEffect, ReadDirEffect, WriteIOEffect, ReadIOEffect, ReadEnvEffect,
    TimeEffect, ExecIOEffect], forbids: [].}
Source Edit
proc getBool(a: VmArgs; i: Natural): bool {....raises: [], tags: [], forbids: [].}
Source Edit
proc getFloat(a: VmArgs; i: Natural): BiggestFloat {....raises: [], tags: [],
    forbids: [].}
Source Edit
proc getGlobalValue(c: PCtx; s: PSym): PNode {....raises: [Exception, ValueError,
    KeyError, OSError, IOError, ERecoverableError], tags: [RootEffect,
    ReadDirEffect, WriteIOEffect, ReadIOEffect, ReadEnvEffect], forbids: [].}
Source Edit
proc getInt(a: VmArgs; i: Natural): BiggestInt {....raises: [], tags: [],
    forbids: [].}
Source Edit
proc getNode(a: VmArgs; i: Natural): PNode {....raises: [], tags: [], forbids: [].}
Source Edit
proc getNodeAddr(a: VmArgs; i: Natural): PNode {....raises: [], tags: [],
    forbids: [].}
Source Edit
proc getString(a: VmArgs; i: Natural): string {....raises: [], tags: [],
    forbids: [].}
Source Edit
proc getVar(a: VmArgs; i: Natural): PNode {....raises: [], tags: [], forbids: [].}
Source Edit
proc interpreterCode(c: PPassContext; n: PNode): PNode {....raises: [Exception,
    ValueError, KeyError, OSError, IOError, ERecoverableError], tags: [
    RootEffect, ReadDirEffect, WriteIOEffect, ReadIOEffect, ReadEnvEffect,
    TimeEffect, ExecIOEffect], forbids: [].}
Source Edit
proc numArgs(a: VmArgs): int {....raises: [], tags: [], forbids: [].}
Source Edit
proc registerAdditionalOps(c: PCtx) {....raises: [], tags: [], forbids: [].}
Source Edit
proc setGlobalValue(c: PCtx; s: PSym; val: PNode) {....raises: [Exception,
    ValueError, KeyError, OSError, IOError, ERecoverableError], tags: [
    RootEffect, ReadDirEffect, WriteIOEffect, ReadIOEffect, ReadEnvEffect],
    forbids: [].}
Does not do type checking so ensure the val matches the s.typ Source Edit
proc setResult(a: VmArgs; n: PNode) {....raises: [], tags: [], forbids: [].}
Source Edit
proc setResult(a: VmArgs; v: (BiggestInt, BiggestInt)) {....raises: [], tags: [],
    forbids: [].}
Source Edit
proc setResult(a: VmArgs; v: AbsoluteDir) {....raises: [], tags: [], forbids: [].}
Source Edit
proc setResult(a: VmArgs; v: BiggestFloat) {....raises: [], tags: [], forbids: [].}
Source Edit
proc setResult(a: VmArgs; v: BiggestInt) {....raises: [], tags: [], forbids: [].}
Source Edit
proc setResult(a: VmArgs; v: bool) {....raises: [], tags: [], forbids: [].}
Source Edit
proc setResult(a: VmArgs; v: seq[string]) {....raises: [], tags: [], forbids: [].}
Source Edit
proc setResult(a: VmArgs; v: string) {....raises: [], tags: [], forbids: [].}
Source Edit
proc setupCompileTimeVar(module: PSym; idgen: IdGenerator; g: ModuleGraph;
                         n: PNode) {....raises: [Exception, ValueError, KeyError,
    OSError, IOError, ERecoverableError], tags: [RootEffect, ReadDirEffect,
    WriteIOEffect, ReadIOEffect, ReadEnvEffect, TimeEffect, ExecIOEffect],
                                     forbids: [].}
Source Edit
proc setupEvalGen(graph: ModuleGraph; module: PSym; idgen: IdGenerator): PPassContext {.
    ...raises: [], tags: [], forbids: [].}
Source Edit
proc setupGlobalCtx(module: PSym; graph: ModuleGraph; idgen: IdGenerator) {.
    ...raises: [], tags: [], forbids: [].}
Source Edit

Iterators

iterator genericParamsInMacroCall(macroSym: PSym; call: PNode): (PSym, PNode) {.
    ...raises: [], tags: [], forbids: [].}
Source Edit

© 2006–2024 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/compiler/vm.html