make --gc:arc --exceptions:quirky work again [backport:1.4] (#16583)

* make --gc:arc --exceptions:quirky work again [backport:1.4]

* fixes #16404 [backport:1.4]
This commit is contained in:
Andreas Rumpf
2021-01-04 19:44:50 +01:00
committed by GitHub
parent 80c8f06663
commit 6317e4004d
8 changed files with 49 additions and 17 deletions

View File

@@ -44,3 +44,13 @@ proc setControlCHook(hook: proc () {.noconv.}) = discard
proc closureIterSetupExc(e: ref Exception) {.compilerproc, inline.} =
sysFatal(ReraiseDefect, "exception handling is not available")
when gotoBasedExceptions:
var nimInErrorMode {.threadvar.}: bool
proc nimErrorFlag(): ptr bool {.compilerRtl, inl.} =
result = addr(nimInErrorMode)
proc nimTestErrorFlag() {.compilerRtl.} =
if nimInErrorMode:
sysFatal(ReraiseDefect, "exception handling is not available")

View File

@@ -24,26 +24,26 @@ const digitsTable = "0001020304050607080910111213141516171819" &
# else:
# res.add $i
# doAssert res == digitsTable
func digits10(num: uint64): int {.noinline.} =
if num < 10:
if num < 10'u64:
result = 1
elif num < 100:
elif num < 100'u64:
result = 2
elif num < 1_000:
elif num < 1_000'u64:
result = 3
elif num < 10_000:
elif num < 10_000'u64:
result = 4
elif num < 100_000:
elif num < 100_000'u64:
result = 5
elif num < 1_000_000:
elif num < 1_000_000'u64:
result = 6
elif num < 10_000_000:
elif num < 10_000_000'u64:
result = 7
elif num < 100_000_000:
elif num < 100_000_000'u64:
result = 8
elif num < 1_000_000_000:
elif num < 1_000_000_000'u64:
result = 9
elif num < 10_000_000_000'u64:
result = 10