rename li_table->ar_table (and related names).

* internal.h: rename the following names:
  * li_table -> ar_table. "li" means linear (from linear search),
    but we use the word "array" (from data layout).
  * RHASH_ARRAY -> RHASH_AR_TABLE. AR_TABLE is more clear.
  * rb_hash_array_* -> rb_hash_ar_table_*.
  * RHASH_TABLE_P() -> RHASH_ST_TABLE_P(). more clear.
  * RHASH_CLEAR() -> RHASH_ST_CLEAR().

* hash.c: rename "linear_" prefix functions to "ar_" prefix.

* hash.c (linear_init_table): rename to ar_alloc_table.

* debug_counter.h: rename obj_hash_array to obj_hash_ar.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66390 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ko1 2018-12-14 01:10:15 +00:00
parent bd78a07f46
commit e4c79d0d10
6 changed files with 332 additions and 331 deletions

View File

@ -4431,10 +4431,10 @@ static inline void
ary_recycle_hash(VALUE hash) ary_recycle_hash(VALUE hash)
{ {
assert(RBASIC_CLASS(hash) == 0); assert(RBASIC_CLASS(hash) == 0);
if (RHASH_TABLE_P(hash)) { if (RHASH_ST_TABLE_P(hash)) {
st_table *tbl = RHASH_ST_TABLE(hash); st_table *tbl = RHASH_ST_TABLE(hash);
st_free_table(tbl); st_free_table(tbl);
RHASH_CLEAR(hash); RHASH_ST_CLEAR(hash);
} }
} }

View File

@ -181,7 +181,7 @@ RB_DEBUG_COUNTER(obj_hash_empty)
RB_DEBUG_COUNTER(obj_hash_under4) RB_DEBUG_COUNTER(obj_hash_under4)
RB_DEBUG_COUNTER(obj_hash_ge4) RB_DEBUG_COUNTER(obj_hash_ge4)
RB_DEBUG_COUNTER(obj_hash_ge8) RB_DEBUG_COUNTER(obj_hash_ge8)
RB_DEBUG_COUNTER(obj_hash_array) RB_DEBUG_COUNTER(obj_hash_ar)
RB_DEBUG_COUNTER(obj_hash_st) RB_DEBUG_COUNTER(obj_hash_st)
RB_DEBUG_COUNTER(obj_hash_transient) RB_DEBUG_COUNTER(obj_hash_transient)

20
gc.c
View File

@ -2271,15 +2271,15 @@ obj_free(rb_objspace_t *objspace, VALUE obj)
RB_DEBUG_COUNTER_INC(obj_hash_empty); RB_DEBUG_COUNTER_INC(obj_hash_empty);
} }
if (RHASH_ARRAY_P(obj)) { if (RHASH_AR_TABLE_P(obj)) {
RB_DEBUG_COUNTER_INC(obj_hash_array); RB_DEBUG_COUNTER_INC(obj_hash_ar);
} }
else { else {
RB_DEBUG_COUNTER_INC(obj_hash_st); RB_DEBUG_COUNTER_INC(obj_hash_st);
} }
#endif #endif
if (/* RHASH_ARRAY_P(obj) */ !FL_TEST_RAW(obj, RHASH_ST_TABLE_FLAG)) { if (/* RHASH_AR_TABLE_P(obj) */ !FL_TEST_RAW(obj, RHASH_ST_TABLE_FLAG)) {
li_table *tab = RHASH(obj)->as.li; ar_table *tab = RHASH(obj)->as.ar;
if (tab) { if (tab) {
if (RHASH_TRANSIENT_P(obj)) { if (RHASH_TRANSIENT_P(obj)) {
@ -2291,7 +2291,7 @@ obj_free(rb_objspace_t *objspace, VALUE obj)
} }
} }
else { else {
GC_ASSERT(RHASH_TABLE_P(obj)); GC_ASSERT(RHASH_ST_TABLE_P(obj));
st_free_table(RHASH(obj)->as.st); st_free_table(RHASH(obj)->as.st);
} }
break; break;
@ -3355,8 +3355,8 @@ obj_memsize_of(VALUE obj, int use_all_types)
size += rb_ary_memsize(obj); size += rb_ary_memsize(obj);
break; break;
case T_HASH: case T_HASH:
if (RHASH_ARRAY_P(obj)) { if (RHASH_AR_TABLE_P(obj)) {
size += sizeof(li_table); size += sizeof(ar_table);
} }
else { else {
VM_ASSERT(RHASH_ST_TABLE(obj) != NULL); VM_ASSERT(RHASH_ST_TABLE(obj) != NULL);
@ -4254,9 +4254,9 @@ mark_hash(rb_objspace_t *objspace, VALUE hash)
{ {
rb_hash_stlike_foreach(hash, mark_keyvalue, (st_data_t)objspace); rb_hash_stlike_foreach(hash, mark_keyvalue, (st_data_t)objspace);
if (RHASH_ARRAY_P(hash)) { if (RHASH_AR_TABLE_P(hash)) {
if (objspace->mark_func_data == NULL && RHASH_TRANSIENT_P(hash)) { if (objspace->mark_func_data == NULL && RHASH_TRANSIENT_P(hash)) {
rb_transient_heap_mark(hash, RHASH_ARRAY(hash)); rb_transient_heap_mark(hash, RHASH_AR_TABLE(hash));
} }
} }
else { else {
@ -9710,7 +9710,7 @@ rb_raw_obj_info(char *buff, const int buff_size, VALUE obj)
} }
case T_HASH: { case T_HASH: {
snprintf(buff, buff_size, "%s [%c%c] %d", buff, snprintf(buff, buff_size, "%s [%c%c] %d", buff,
RHASH_ARRAY_P(obj) ? 'A' : 'S', RHASH_AR_TABLE_P(obj) ? 'A' : 'S',
RHASH_TRANSIENT_P(obj) ? 'T' : ' ', RHASH_TRANSIENT_P(obj) ? 'T' : ' ',
(int)RHASH_SIZE(obj)); (int)RHASH_SIZE(obj));
break; break;

557
hash.c

File diff suppressed because it is too large Load Diff

View File

@ -760,44 +760,44 @@ struct RComplex {
enum ruby_rhash_flags { enum ruby_rhash_flags {
RHASH_ST_TABLE_FLAG = FL_USER3, RHASH_ST_TABLE_FLAG = FL_USER3,
RHASH_ARRAY_MAX_SIZE = 8, RHASH_AR_TABLE_MAX_SIZE = 8,
RHASH_ARRAY_SIZE_MASK = (FL_USER4|FL_USER5|FL_USER6|FL_USER7), RHASH_AR_TABLE_SIZE_MASK = (FL_USER4|FL_USER5|FL_USER6|FL_USER7),
RHASH_ARRAY_SIZE_SHIFT = (FL_USHIFT+4), RHASH_AR_TABLE_SIZE_SHIFT = (FL_USHIFT+4),
RHASH_ARRAY_BOUND_MASK = (FL_USER8|FL_USER9|FL_USER10|FL_USER11), RHASH_AR_TABLE_BOUND_MASK = (FL_USER8|FL_USER9|FL_USER10|FL_USER11),
RHASH_ARRAY_BOUND_SHIFT = (FL_USHIFT+8), RHASH_AR_TABLE_BOUND_SHIFT = (FL_USHIFT+8),
RHASH_ENUM_END RHASH_ENUM_END
}; };
#define HASH_PROC_DEFAULT FL_USER2 #define HASH_PROC_DEFAULT FL_USER2
#define RHASH_ARRAY_SIZE_RAW(h) \ #define RHASH_AR_TABLE_SIZE_RAW(h) \
((unsigned int)((RBASIC(h)->flags & RHASH_ARRAY_SIZE_MASK) >> RHASH_ARRAY_SIZE_SHIFT)) ((unsigned int)((RBASIC(h)->flags & RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT))
int rb_hash_array_p(VALUE hash); int rb_hash_ar_table_p(VALUE hash);
struct li_table *rb_hash_array(VALUE hash); struct ar_table_struct *rb_hash_ar_table(VALUE hash);
st_table *rb_hash_st_table(VALUE hash); st_table *rb_hash_st_table(VALUE hash);
void rb_hash_st_table_set(VALUE hash, st_table *st); void rb_hash_st_table_set(VALUE hash, st_table *st);
#if 0 /* for debug */ #if 0 /* for debug */
#define RHASH_ARRAY_P(hash) rb_hash_array_p(hash) #define RHASH_AR_TABLE_P(hash) rb_hash_ar_table_p(hash)
#define RHASH_ARRAY(h) rb_hash_array(h) #define RHASH_AR_TABLE(h) rb_hash_ar_table(h)
#define RHASH_ST_TABLE(h) rb_hash_st_table(h) #define RHASH_ST_TABLE(h) rb_hash_st_table(h)
#else #else
#define RHASH_ARRAY_P(hash) (!FL_TEST_RAW((hash), RHASH_ST_TABLE_FLAG)) #define RHASH_AR_TABLE_P(hash) (!FL_TEST_RAW((hash), RHASH_ST_TABLE_FLAG))
#define RHASH_ARRAY(hash) (RHASH(hash)->as.li) #define RHASH_AR_TABLE(hash) (RHASH(hash)->as.ar)
#define RHASH_ST_TABLE(hash) (RHASH(hash)->as.st) #define RHASH_ST_TABLE(hash) (RHASH(hash)->as.st)
#endif #endif
#define RHASH(obj) (R_CAST(RHash)(obj)) #define RHASH(obj) (R_CAST(RHash)(obj))
#define RHASH_ST_SIZE(h) (RHASH_ST_TABLE(h)->num_entries) #define RHASH_ST_SIZE(h) (RHASH_ST_TABLE(h)->num_entries)
#define RHASH_TABLE_P(h) (!RHASH_ARRAY_P(h)) #define RHASH_ST_TABLE_P(h) (!RHASH_AR_TABLE_P(h))
#define RHASH_CLEAR(h) (FL_UNSET_RAW(h, RHASH_ST_TABLE_FLAG), RHASH(h)->as.li = NULL) #define RHASH_ST_CLEAR(h) (FL_UNSET_RAW(h, RHASH_ST_TABLE_FLAG), RHASH(h)->as.ar = NULL)
#define RHASH_ARRAY_SIZE_MASK (VALUE)RHASH_ARRAY_SIZE_MASK #define RHASH_AR_TABLE_SIZE_MASK (VALUE)RHASH_AR_TABLE_SIZE_MASK
#define RHASH_ARRAY_SIZE_SHIFT RHASH_ARRAY_SIZE_SHIFT #define RHASH_AR_TABLE_SIZE_SHIFT RHASH_AR_TABLE_SIZE_SHIFT
#define RHASH_ARRAY_BOUND_MASK (VALUE)RHASH_ARRAY_BOUND_MASK #define RHASH_AR_TABLE_BOUND_MASK (VALUE)RHASH_AR_TABLE_BOUND_MASK
#define RHASH_ARRAY_BOUND_SHIFT RHASH_ARRAY_BOUND_SHIFT #define RHASH_AR_TABLE_BOUND_SHIFT RHASH_AR_TABLE_BOUND_SHIFT
#if USE_TRANSIENT_HEAP #if USE_TRANSIENT_HEAP
#define RHASH_TRANSIENT_FLAG FL_USER14 #define RHASH_TRANSIENT_FLAG FL_USER14
@ -810,33 +810,33 @@ void rb_hash_st_table_set(VALUE hash, st_table *st);
#define RHASH_UNSET_TRANSIENT_FLAG(h) ((void)0) #define RHASH_UNSET_TRANSIENT_FLAG(h) ((void)0)
#endif #endif
#define RHASH_ARRAY_MAX_SIZE 8 #define RHASH_AR_TABLE_MAX_SIZE 8
#define RHASH_ARRAY_MAX_BOUND RHASH_ARRAY_MAX_SIZE #define RHASH_AR_TABLE_MAX_BOUND RHASH_AR_TABLE_MAX_SIZE
typedef struct li_table_entry { typedef struct ar_table_entry {
VALUE hash; VALUE hash;
VALUE key; VALUE key;
VALUE record; VALUE record;
} li_table_entry; } ar_table_entry;
typedef struct li_table { typedef struct ar_table_struct {
li_table_entry entries[RHASH_ARRAY_MAX_SIZE]; ar_table_entry entries[RHASH_AR_TABLE_MAX_SIZE];
} li_table; } ar_table;
/* /*
* RHASH_ARRAY_P(h): * RHASH_AR_TABLE_P(h):
* * as.li == NULL or * * as.ar == NULL or
* as.li points li_table. * as.ar points ar_table.
* * as.li is allocated by transient heap or xmalloc. * * as.ar is allocated by transient heap or xmalloc.
* *
* !RHASH_ARRAY_P(h): * !RHASH_AR_TABLE_P(h):
* * as.st points st_table. * * as.st points st_table.
*/ */
struct RHash { struct RHash {
struct RBasic basic; struct RBasic basic;
union { union {
struct st_table *st; st_table *st;
struct li_table *li; /* possibly 0 */ ar_table *ar; /* possibly 0 */
} as; } as;
int iter_lev; int iter_lev;
const VALUE ifnone; const VALUE ifnone;
@ -849,7 +849,7 @@ struct RHash {
# define RHASH_ITER_LEV(h) (RHASH(h)->iter_lev) # define RHASH_ITER_LEV(h) (RHASH(h)->iter_lev)
# define RHASH_IFNONE(h) (RHASH(h)->ifnone) # define RHASH_IFNONE(h) (RHASH(h)->ifnone)
# define RHASH_SIZE(h) (RHASH_ARRAY_P(h) ? RHASH_ARRAY_SIZE_RAW(h) : RHASH_ST_SIZE(h)) # define RHASH_SIZE(h) (RHASH_AR_TABLE_P(h) ? RHASH_AR_TABLE_SIZE_RAW(h) : RHASH_ST_SIZE(h))
#endif /* #ifdef RHASH_ITER_LEV */ #endif /* #ifdef RHASH_ITER_LEV */
/* missing/setproctitle.c */ /* missing/setproctitle.c */

View File

@ -583,8 +583,8 @@ transient_heap_ptr(VALUE obj, int error)
break; break;
case T_HASH: case T_HASH:
if (RHASH_TRANSIENT_P(obj)) { if (RHASH_TRANSIENT_P(obj)) {
TH_ASSERT(RHASH_ARRAY_P(obj)); TH_ASSERT(RHASH_AR_TABLE_P(obj));
ptr = (VALUE *)(RHASH(obj)->as.li); ptr = (VALUE *)(RHASH(obj)->as.ar);
} }
else { else {
ptr = NULL; ptr = NULL;