From e80884665d36fa4240384b737b36bd6f41d89e8a Mon Sep 17 00:00:00 2001 From: Jacek Sieka Date: Thu, 2 Jan 2025 17:26:53 +0100 Subject: [PATCH] varints: no need for emit (#24585) (cherry picked from commit 78835562b14e764065ad56904f7f7463e73dff0b) --- lib/std/varints.nim | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/lib/std/varints.nim b/lib/std/varints.nim index 88144a06c1..7adab9c37c 100644 --- a/lib/std/varints.nim +++ b/lib/std/varints.nim @@ -107,15 +107,9 @@ proc writeVu64*(z: var openArray[byte], x: uint64): int = varintWrite32(toOpenArray(z, 5, 8), y) return 9 -proc sar(a, b: int64): int64 {.noinit.} = - {.emit: [result, " = ", a, " >> ", b, ";"].} - -proc sal(a, b: int64): int64 {.noinit.} = - {.emit: [result, " = ", a, " << ", b, ";"].} - proc encodeZigzag*(x: int64): uint64 {.inline.} = - uint64(sal(x, 1)) xor uint64(sar(x, 63)) + let xu = uint64(x) + (xu shl 1) xor (xu shr 63) proc decodeZigzag*(x: uint64): int64 {.inline.} = - let casted = cast[int64](x) - result = (`shr`(casted, 1)) xor (-(casted and 1)) + cast[int64]((x shr 1) xor (x shl 63))