From 9af42515ec6035fdecea368bdb9b6a6f86c7e845 Mon Sep 17 00:00:00 2001 From: Erica Fischer Date: Thu, 1 Feb 2024 13:06:53 -0800 Subject: [PATCH] Fewer atomic operations --- serial.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/serial.cpp b/serial.cpp index d7505ee6..67f926c4 100644 --- a/serial.cpp +++ b/serial.cpp @@ -52,6 +52,8 @@ void serialize_long_long(FILE *out, long long n, std::atomic *fpos, c } void serialize_ulong_long(FILE *out, unsigned long long zigzag, std::atomic *fpos, const char *fname) { + int inc = 0; + while (1) { unsigned char b = zigzag & 0x7F; if ((zigzag >> 7) != 0) { @@ -60,17 +62,19 @@ void serialize_ulong_long(FILE *out, unsigned long long zigzag, std::atomic>= 7; } else { if (putc(b, out) == EOF) { fprintf(stderr, "%s: Write to temporary file failed: %s\n", fname, strerror(errno)); exit(EXIT_WRITE); } - *fpos += 1; + inc++; break; } } + + *fpos += inc; } void serialize_byte(FILE *out, signed char n, std::atomic *fpos, const char *fname) {