diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2023-10-16 00:01:33 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-16 00:01:33 +0200 |
commit | 10c3ab626941d9c1ec69a2921696f4b7d0c2a6ac (patch) | |
tree | c1b8b2117bbb86101f54269ff2e66816ce4b8296 /compiler/nir/nirlineinfos.nim | |
parent | 5f400983d588ec91a688453ce69cec94d310cc70 (diff) | |
download | Nim-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.nim | 7 |
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: |