summary refs log tree commit diff stats
path: root/compiler/nir/nirlineinfos.nim
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2023-10-16 00:01:33 +0200
committerGitHub <noreply@github.com>2023-10-16 00:01:33 +0200
commit10c3ab626941d9c1ec69a2921696f4b7d0c2a6ac (patch)
treec1b8b2117bbb86101f54269ff2e66816ce4b8296 /compiler/nir/nirlineinfos.nim
parent5f400983d588ec91a688453ce69cec94d310cc70 (diff)
downloadNim-10c3ab626941d9c1ec69a2921696f4b7d0c2a6ac.tar.gz
NIR: store sizes, alignments and offsets in the type graph; beginning… (#22822)
…s of a patent-pending new VM
Diffstat (limited to 'compiler/nir/nirlineinfos.nim')
-rw-r--r--compiler/nir/nirlineinfos.nim7
1 files changed, 5 insertions, 2 deletions
diff --git a/compiler/nir/nirlineinfos.nim b/compiler/nir/nirlineinfos.nim
index 4e86f619e..5f5d55086 100644
--- a/compiler/nir/nirlineinfos.nim
+++ b/compiler/nir/nirlineinfos.nim
@@ -34,13 +34,13 @@ const
 static:
   assert AsideBit + FileBits + LineBits + ColBits == 32
 
-import .. / ic / bitabs # for LitId
+import .. / ic / [bitabs, rodfiles] # for LitId
 
 type
   PackedLineInfo* = distinct uint32
 
   LineInfoManager* = object
-    aside*: seq[(LitId, int32, int32)]
+    aside: seq[(LitId, int32, int32)]
 
 proc pack*(m: var LineInfoManager; file: LitId; line, col: int32): PackedLineInfo =
   if file.uint32 <= FileMax.uint32 and line <= LineMax and col <= ColMax:
@@ -66,6 +66,9 @@ proc unpack*(m: LineInfoManager; i: PackedLineInfo): (LitId, int32, int32) =
 proc getFileId*(m: LineInfoManager; i: PackedLineInfo): LitId =
   result = unpack(m, i)[0]
 
+proc store*(r: var RodFile; m: LineInfoManager) = storeSeq(r, m.aside)
+proc load*(r: var RodFile; m: var LineInfoManager) = loadSeq(r, m.aside)
+
 when isMainModule:
   var m = LineInfoManager(aside: @[])
   for i in 0'i32..<16388'i32: