mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	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:
		
							parent
							
								
									bd78a07f46
								
							
						
					
					
						commit
						e4c79d0d10
					
				
					 6 changed files with 332 additions and 331 deletions
				
			
		
							
								
								
									
										4
									
								
								array.c
									
										
									
									
									
								
							
							
						
						
									
										4
									
								
								array.c
									
										
									
									
									
								
							| 
						 | 
					@ -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);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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
									
										
									
									
									
								
							
							
						
						
									
										20
									
								
								gc.c
									
										
									
									
									
								
							| 
						 | 
					@ -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;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										76
									
								
								internal.h
									
										
									
									
									
								
							
							
						
						
									
										76
									
								
								internal.h
									
										
									
									
									
								
							| 
						 | 
					@ -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 */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue