summary refs log tree commit diff stats
path: root/lib/system/arc.nim
diff options
context:
space:
mode:
Diffstat (limited to 'lib/system/arc.nim')
-rw-r--r--lib/system/arc.nim17
1 files changed, 2 insertions, 15 deletions
diff --git a/lib/system/arc.nim b/lib/system/arc.nim
index 50dec241f..a8da0b6e3 100644
--- a/lib/system/arc.nim
+++ b/lib/system/arc.nim
@@ -227,8 +227,6 @@ template tearDownForeignThreadGc* =
   ## With `--gc:arc` a nop.
   discard
 
-type ObjCheckCache = array[0..1, PNimTypeV2]
-
 proc memcmp(str1, str2: cstring, n: csize_t): cint {.importc, header: "<string.h>".}
 
 func endsWith(s, suffix: cstring): bool {.inline.} =
@@ -242,19 +240,8 @@ func endsWith(s, suffix: cstring): bool {.inline.} =
 proc isObj(obj: PNimTypeV2, subclass: cstring): bool {.compilerRtl, inl.} =
   result = endsWith(obj.name, subclass)
 
-proc isObjSlowPath(obj: PNimTypeV2, subclass: cstring, cache: var ObjCheckCache): bool {.compilerRtl, inline.} =
-  if endsWith(obj.name, subclass):
-    cache[1] = obj
-    result = true
-  else:
-    cache[0] = obj
-    result = false
-
-proc isObjWithCache(obj: PNimTypeV2, subclass: cstring, cache: var ObjCheckCache): bool {.compilerRtl.} =
-  if cache[0] == obj: result = false
-  elif cache[1] == obj: result = true
-  else:
-    result = isObjSlowPath(obj, subclass, cache)
+proc isObjDisplayCheck(source: PNimTypeV2, targetDepth: int16, token: uint32): bool {.compilerRtl, inline.} =
+  result = targetDepth <= source.depth and source.display[targetDepth] == token
 
 proc chckObj(obj: PNimTypeV2, subclass: cstring) {.compilerRtl.} =
   # checks if obj is of type subclass: