From c3faa9f746172e9d697f9120c291898526b48171 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Fri, 11 Jun 2021 14:02:55 -0500 Subject: [PATCH] small lexer speedup again --- include/bh.h | 2 +- src/onyxlex.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/include/bh.h b/include/bh.h index bf5623ef..c82ef733 100644 --- a/include/bh.h +++ b/include/bh.h @@ -528,7 +528,7 @@ typedef struct bh__arr { bh__arrhead(arr)->length += n) #define bh_arr_push(arr, value) ( \ - bh__arr_grow(bh_arr_allocator(arr), (void **) &(arr), sizeof(*(arr)), bh_arr_length(arr) + 1), \ + bh_arr_length(arr) + 1 > bh_arr_capacity(arr) ? bh__arr_grow(bh_arr_allocator(arr), (void **) &(arr), sizeof(*(arr)), bh_arr_length(arr) + 1) : 0, \ arr[bh__arrhead(arr)->length++] = value) #define bh_arr_set_at(arr, n, value) ( \ diff --git a/src/onyxlex.c b/src/onyxlex.c index 99addd54..59370246 100644 --- a/src/onyxlex.c +++ b/src/onyxlex.c @@ -92,6 +92,8 @@ static const char* token_type_names[] = { #endif #define char_is_alphanum(c) (((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= 'Z') || ((c) >= '0' && (c) <= '9')) +#define char_is_num(c) ((c) >= '0' && (c) <= '9') +#define char_is_alpha(c) (((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= 'Z')) static inline b32 token_lit(OnyxTokenizer* tokenizer, OnyxToken* tk, char* lit, b32 is_word, TokenType type) { i64 len = 0; -- 2.25.1