From 659dc19b1b33a65baff02bb94c875968becf1c68 Mon Sep 17 00:00:00 2001 From: c9s Date: Tue, 10 Nov 2015 19:29:18 +0800 Subject: [PATCH] Replace short integer with int to fit into cacheline (assume 64byte) --- include/r3.h | 9 +++++---- src/node.c | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/include/r3.h b/include/r3.h index 52c9bc9..f16d199 100644 --- a/include/r3.h +++ b/include/r3.h @@ -38,8 +38,8 @@ struct _node { // #endif // edges are mostly less than 255 - unsigned char compare_type; // compare_type: pcre, opcode, string - unsigned char edge_len; + unsigned int edge_len; + unsigned char compare_type; // compare_type: pcre, opcode, string unsigned char endpoint; // endpoint, should be zero for non-endpoint nodes unsigned char ov_cnt; // capture vector array size for pcre @@ -68,8 +68,9 @@ struct _node { struct _edge { char * pattern; // 8 bytes node * child; // 8 bytes - unsigned char pattern_len; // 1 byte - unsigned char opcode:4; // 4 bit + unsigned int pattern_len; // 1 byte + unsigned int opcode; + // unsigned char opcode:4; // 4 bit unsigned char has_slug:1; // 1 bit }; diff --git a/src/node.c b/src/node.c index 5d8b781..9a7fdb1 100644 --- a/src/node.c +++ b/src/node.c @@ -277,8 +277,8 @@ node * r3_tree_matchl(const node * n, const char * path, int path_len, match_ent info("try matching: %s\n", path); edge *e; - unsigned short i; - unsigned short restlen; + unsigned int i; + unsigned int restlen; const char *pp; const char *pp_end;