This file implements the new evaluation engine for Nim code. An instruction is 1-3 int32s in memory, it is a register based VM.
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: [].}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: [].}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: [].}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: [].}proc setGlobalValue(c: PCtx; s: PSym; val: PNode) {....raises: [Exception,
ValueError, KeyError, OSError, IOError, ERecoverableError], tags: [
RootEffect, ReadDirEffect, WriteIOEffect, ReadIOEffect, ReadEnvEffect],
forbids: [].}val matches the s.typ 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: [].}
© 2006–2024 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/compiler/vm.html