mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Use long instead of int
This commit is contained in:
parent
d868f4ca31
commit
36ff0521c1
2 changed files with 23 additions and 22 deletions
30
regexec.c
30
regexec.c
|
@ -235,15 +235,15 @@ onig_get_capture_tree(OnigRegion* region)
|
||||||
|
|
||||||
/* count number of jump-like opcodes for allocation of cache memory. */
|
/* count number of jump-like opcodes for allocation of cache memory. */
|
||||||
/* return -1 if we cannot optimize the regex matching by using cache. */
|
/* return -1 if we cannot optimize the regex matching by using cache. */
|
||||||
static int count_num_cache_opcode(regex_t* reg, int* table_size)
|
static long count_num_cache_opcode(regex_t* reg, long* table_size)
|
||||||
{
|
{
|
||||||
int num = 0;
|
long num = 0;
|
||||||
UChar* p = reg->p;
|
UChar* p = reg->p;
|
||||||
UChar* pend = p + reg->used;
|
UChar* pend = p + reg->used;
|
||||||
LengthType len;
|
LengthType len;
|
||||||
MemNumType mem;
|
MemNumType mem;
|
||||||
MemNumType current_mem = -1;
|
MemNumType current_mem = -1;
|
||||||
int current_mem_num = 0;
|
long current_mem_num = 0;
|
||||||
OnigEncoding enc = reg->enc;
|
OnigEncoding enc = reg->enc;
|
||||||
|
|
||||||
while (p < pend) {
|
while (p < pend) {
|
||||||
|
@ -456,8 +456,8 @@ static void init_cache_index_table(regex_t* reg, OnigCacheIndex *table)
|
||||||
LengthType len;
|
LengthType len;
|
||||||
MemNumType mem;
|
MemNumType mem;
|
||||||
MemNumType current_mem = -1;
|
MemNumType current_mem = -1;
|
||||||
int num = 0;
|
long num = 0;
|
||||||
int current_mem_num = 0;
|
long current_mem_num = 0;
|
||||||
OnigEncoding enc = reg->enc;
|
OnigEncoding enc = reg->enc;
|
||||||
|
|
||||||
while (p < pend) {
|
while (p < pend) {
|
||||||
|
@ -1162,9 +1162,9 @@ stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end,
|
||||||
if (enable) {\
|
if (enable) {\
|
||||||
int cache_index = find_cache_index_table((reg), (stk), (repeat_stk), (table), (num_cache_table), (p));\
|
int cache_index = find_cache_index_table((reg), (stk), (repeat_stk), (table), (num_cache_table), (p));\
|
||||||
if (cache_index >= 0) {\
|
if (cache_index >= 0) {\
|
||||||
int key = (num_cache_size) * (int)(pos) + cache_index;\
|
long key = (num_cache_size) * (long)(pos) + cache_index;\
|
||||||
int index = key >> 3;\
|
long index = key >> 3;\
|
||||||
int mask = 1 << (key & 7);\
|
long mask = 1 << (key & 7);\
|
||||||
if ((match_cache)[index] & mask) {\
|
if ((match_cache)[index] & mask) {\
|
||||||
goto fail;\
|
goto fail;\
|
||||||
}\
|
}\
|
||||||
|
@ -1214,11 +1214,11 @@ static int find_cache_index_table(regex_t* reg, OnigStackType *stk, OnigStackInd
|
||||||
return range->base_num + range->inner_num * range->lower + (range->inner_num + 1) * (count - range->lower) + item->num;
|
return range->base_num + range->inner_num * range->lower + (range->inner_num + 1) * (count - range->lower) + item->num;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void reset_match_cache(regex_t* reg, UChar* pbegin, UChar* pend, int pos, uint8_t* match_cache, OnigCacheIndex *table, int num_cache_size, int num_cache_table) {
|
static void reset_match_cache(regex_t* reg, UChar* pbegin, UChar* pend, long pos, uint8_t* match_cache, OnigCacheIndex *table, long num_cache_size, long num_cache_table) {
|
||||||
int l = 0, r = num_cache_table - 1, m1 = 0, m2 = 0;
|
long l = 0, r = num_cache_table - 1, m1 = 0, m2 = 0;
|
||||||
int is_inc = *pend == OP_REPEAT_INC || *pend == OP_REPEAT_INC_NG;
|
int is_inc = *pend == OP_REPEAT_INC || *pend == OP_REPEAT_INC_NG;
|
||||||
OnigCacheIndex *item1, *item2;
|
OnigCacheIndex *item1, *item2;
|
||||||
int k1, k2;
|
long k1, k2;
|
||||||
|
|
||||||
while (l <= r) {
|
while (l <= r) {
|
||||||
m1 = (l + r) / 2;
|
m1 = (l + r) / 2;
|
||||||
|
@ -3428,7 +3428,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||||
default:
|
default:
|
||||||
goto unexpected_bytecode_error;
|
goto unexpected_bytecode_error;
|
||||||
}
|
}
|
||||||
reset_match_cache(reg, addr, pbegin, (int)(s - str), msa->match_cache, msa->cache_index_table, msa->num_cache_table ,msa->num_cache_opcode);
|
reset_match_cache(reg, addr, pbegin, (long)(s - str), msa->match_cache, msa->cache_index_table, msa->num_cache_table ,msa->num_cache_opcode);
|
||||||
}
|
}
|
||||||
# endif
|
# endif
|
||||||
}
|
}
|
||||||
|
@ -3820,8 +3820,8 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||||
pkeep = stk->u.state.pkeep;
|
pkeep = stk->u.state.pkeep;
|
||||||
|
|
||||||
#ifdef USE_CACHE_MATCH_OPT
|
#ifdef USE_CACHE_MATCH_OPT
|
||||||
if (++msa->num_fail >= (int)(end - str) + 1 && msa->num_cache_opcode == NUM_CACHE_OPCODE_UNINIT) {
|
if (++msa->num_fail >= (long)(end - str) + 1 && msa->num_cache_opcode == NUM_CACHE_OPCODE_UNINIT) {
|
||||||
int table_size = 0;
|
long table_size = 0;
|
||||||
msa->enable_cache_match_opt = 1;
|
msa->enable_cache_match_opt = 1;
|
||||||
if (msa->num_cache_opcode == NUM_CACHE_OPCODE_UNINIT) {
|
if (msa->num_cache_opcode == NUM_CACHE_OPCODE_UNINIT) {
|
||||||
msa->num_cache_opcode = count_num_cache_opcode(reg, &table_size);
|
msa->num_cache_opcode = count_num_cache_opcode(reg, &table_size);
|
||||||
|
@ -3846,7 +3846,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||||
return ONIGERR_MEMORY;
|
return ONIGERR_MEMORY;
|
||||||
}
|
}
|
||||||
/* Currently, int is used for the key of match_cache */
|
/* Currently, int is used for the key of match_cache */
|
||||||
if (match_cache_size8 >= INT_MAX_LIMIT) {
|
if (match_cache_size8 >= LONG_MAX_LIMIT) {
|
||||||
return ONIGERR_MEMORY;
|
return ONIGERR_MEMORY;
|
||||||
}
|
}
|
||||||
size_t match_cache_size = (match_cache_size8 >> 3) + (match_cache_size8 & 7 ? 1 : 0);
|
size_t match_cache_size = (match_cache_size8 >> 3) + (match_cache_size8 & 7 ? 1 : 0);
|
||||||
|
|
9
regint.h
9
regint.h
|
@ -387,6 +387,7 @@ typedef unsigned int BitStatusType;
|
||||||
|
|
||||||
|
|
||||||
#define INT_MAX_LIMIT ((1UL << (SIZEOF_INT * 8 - 1)) - 1)
|
#define INT_MAX_LIMIT ((1UL << (SIZEOF_INT * 8 - 1)) - 1)
|
||||||
|
#define LONG_MAX_LIMIT ((1UL << (SIZEOF_LONG * 8 - 1)) - 1)
|
||||||
|
|
||||||
#define DIGITVAL(code) ((code) - '0')
|
#define DIGITVAL(code) ((code) - '0')
|
||||||
#define ODIGITVAL(code) DIGITVAL(code)
|
#define ODIGITVAL(code) DIGITVAL(code)
|
||||||
|
@ -875,7 +876,7 @@ typedef struct _OnigStackType {
|
||||||
#ifdef USE_CACHE_MATCH_OPT
|
#ifdef USE_CACHE_MATCH_OPT
|
||||||
typedef struct {
|
typedef struct {
|
||||||
UChar *addr;
|
UChar *addr;
|
||||||
int num;
|
long num;
|
||||||
int outer_repeat;
|
int outer_repeat;
|
||||||
} OnigCacheIndex;
|
} OnigCacheIndex;
|
||||||
#endif
|
#endif
|
||||||
|
@ -903,10 +904,10 @@ typedef struct {
|
||||||
uint64_t end_time;
|
uint64_t end_time;
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_CACHE_MATCH_OPT
|
#ifdef USE_CACHE_MATCH_OPT
|
||||||
int num_fail;
|
long num_fail;
|
||||||
int enable_cache_match_opt;
|
int enable_cache_match_opt;
|
||||||
int num_cache_opcode;
|
long num_cache_opcode;
|
||||||
int num_cache_table;
|
long num_cache_table;
|
||||||
OnigCacheIndex* cache_index_table;
|
OnigCacheIndex* cache_index_table;
|
||||||
uint8_t* match_cache;
|
uint8_t* match_cache;
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue