aboutsummaryrefslogtreecommitdiff
path: root/posix/regex_internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'posix/regex_internal.h')
-rw-r--r--posix/regex_internal.h19
1 files changed, 15 insertions, 4 deletions
diff --git a/posix/regex_internal.h b/posix/regex_internal.h
index 0092b25c13..628dc94066 100644
--- a/posix/regex_internal.h
+++ b/posix/regex_internal.h
@@ -412,6 +412,15 @@ struct bin_tree_t
};
typedef struct bin_tree_t bin_tree_t;
+#define BIN_TREE_STORAGE_SIZE \
+ ((1024 - sizeof (void *)) / sizeof (bin_tree_t))
+
+struct bin_tree_storage_t
+{
+ struct bin_tree_storage_t *next;
+ bin_tree_t data[BIN_TREE_STORAGE_SIZE];
+};
+typedef struct bin_tree_storage_t bin_tree_storage_t;
#define CONTEXT_WORD 1
#define CONTEXT_NEWLINE (CONTEXT_WORD << 1)
@@ -578,7 +587,6 @@ struct re_dfa_t
re_token_t *nodes;
int nodes_alloc;
int nodes_len;
- bin_tree_t *str_tree;
int *nexts;
int *org_indices;
re_node_set *edests;
@@ -589,6 +597,9 @@ struct re_dfa_t
re_dfastate_t *init_state_word;
re_dfastate_t *init_state_nl;
re_dfastate_t *init_state_begbuf;
+ bin_tree_t *str_tree;
+ bin_tree_storage_t *str_tree_storage;
+ int str_tree_storage_idx;
/* number of subexpressions `re_nsub' is in regex_t. */
int subexps_alloc;
@@ -598,9 +609,6 @@ struct re_dfa_t
int nbackref; /* The number of backreference in this dfa. */
/* Bitmap expressing which backreference is used. */
unsigned int used_bkref_map;
-#ifdef DEBUG
- char* re_str;
-#endif
unsigned int has_plural_match : 1;
/* If this dfa has "multibyte node", which is a backreference or
a node which can accept multibyte character or multi character
@@ -609,6 +617,9 @@ struct re_dfa_t
unsigned int is_utf8 : 1;
unsigned int map_notascii : 1;
int mb_cur_max;
+#ifdef DEBUG
+ char* re_str;
+#endif
};
#ifndef RE_NO_INTERNAL_PROTOTYPES