From 9d2ff1b9c7a0a6f88f6a0c59430e257729425684 Mon Sep 17 00:00:00 2001 From: Aliaksei Chapyzhenka Date: Tue, 15 Sep 2020 18:07:57 -0700 Subject: [PATCH] no branches in digit parser --- vcd_spans.c | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/vcd_spans.c b/vcd_spans.c index 48c3629..dab5861 100644 --- a/vcd_spans.c +++ b/vcd_spans.c @@ -144,25 +144,10 @@ int onDigit( vcd_parser_t* state, const unsigned char* p, const unsigned char* endp, - int value + int digit ) { - state->value *= 2; - state->mask *= 2; - switch (value) { - case 1: { - state->value += 1; - return 0; - } - case 2: { - state->mask += 1; - return 0; - } - case 3: { - state->value += 1; - state->mask += 1; - return 0; - } - } + state->value = (state->value << 1) + (digit & 1); + state->mask = (state->mask << 1) + ((digit >> 1) & 1); return 0; }