summary refs log tree commit diff stats
path: root/compiler/ccgmerge.nim
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/ccgmerge.nim')
-rw-r--r--compiler/ccgmerge.nim27
1 files changed, 14 insertions, 13 deletions
diff --git a/compiler/ccgmerge.nim b/compiler/ccgmerge.nim
index 92b6aa9dc..46982d0a2 100644
--- a/compiler/ccgmerge.nim
+++ b/compiler/ccgmerge.nim
@@ -12,7 +12,7 @@
 
 import
   ast, astalgo, ropes, options, strutils, nimlexbase, msgs, cgendata, rodutils,
-  intsets, platform, llstream
+  intsets, platform, llstream, tables, sighashes
 
 # Careful! Section marks need to contain a tabulator so that they cannot
 # be part of C string literals.
@@ -69,7 +69,7 @@ proc genSectionEnd*(ps: TCProcSection): Rope =
   if compilationCachePresent:
     result = rope(NimMergeEndMark & tnl)
 
-proc writeTypeCache(a: TIdTable, s: var string) =
+proc writeTypeCache(a: TypeCache, s: var string) =
   var i = 0
   for id, value in pairs(a):
     if i == 10:
@@ -77,9 +77,9 @@ proc writeTypeCache(a: TIdTable, s: var string) =
       s.add(tnl)
     else:
       s.add(' ')
-    encodeVInt(id, s)
+    encodeStr($id, s)
     s.add(':')
-    encodeStr($Rope(value), s)
+    encodeStr($value, s)
     inc i
   s.add('}')
 
@@ -103,8 +103,9 @@ proc genMergeInfo*(m: BModule): Rope =
   writeTypeCache(m.typeCache, s)
   s.add("declared:{")
   writeIntSet(m.declaredThings, s)
-  s.add("typeInfo:{")
-  writeIntSet(m.typeInfoMarker, s)
+  when false:
+    s.add("typeInfo:{")
+    writeIntSet(m.typeInfoMarker, s)
   s.add("labels:")
   encodeVInt(m.labels, s)
   s.add(" flags:")
@@ -185,19 +186,18 @@ proc newFakeType(id: int): PType =
   new(result)
   result.id = id
 
-proc readTypeCache(L: var TBaseLexer, result: var TIdTable) =
+proc readTypeCache(L: var TBaseLexer, result: var TypeCache) =
   if ^L.bufpos != '{': internalError("ccgmerge: '{' expected")
   inc L.bufpos
   while ^L.bufpos != '}':
     skipWhite(L)
-    var key = decodeVInt(L.buf, L.bufpos)
+    var key = decodeStr(L.buf, L.bufpos)
     if ^L.bufpos != ':': internalError("ccgmerge: ':' expected")
     inc L.bufpos
     var value = decodeStr(L.buf, L.bufpos)
-    # XXX little hack: we create a "fake" type object with the correct Id
-    # better would be to adapt the data structure to not even store the
-    # object as key, but only the Id
-    idTablePut(result, newFakeType(key), value.rope)
+    # XXX implement me
+    when false:
+      idTablePut(result, newFakeType(key), value.rope)
   inc L.bufpos
 
 proc readIntSet(L: var TBaseLexer, result: var IntSet) =
@@ -220,7 +220,8 @@ proc processMergeInfo(L: var TBaseLexer, m: BModule) =
     case k
     of "typeCache": readTypeCache(L, m.typeCache)
     of "declared":  readIntSet(L, m.declaredThings)
-    of "typeInfo":  readIntSet(L, m.typeInfoMarker)
+    of "typeInfo":
+      when false: readIntSet(L, m.typeInfoMarker)
     of "labels":    m.labels = decodeVInt(L.buf, L.bufpos)
     of "flags":
       m.flags = cast[set[CodegenFlag]](decodeVInt(L.buf, L.bufpos) != 0)