mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
iseq.c: Succinct bitvector now supports 32-bit machine
Second try of succinct bitvector. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61757 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
b87571100a
commit
0542d61e27
2 changed files with 5 additions and 5 deletions
8
iseq.c
8
iseq.c
|
@ -2840,9 +2840,9 @@ struct succ_index_table {
|
|||
} succ_index_table;
|
||||
|
||||
#define imm_block_rank_set(v, i, r) (v) |= (uint64_t)(r) << (7 * (i))
|
||||
#define imm_block_rank_get(v, i) ((int) (((v) & 0x7fL << (i) * 7) >> ((i) * 7)))
|
||||
#define imm_block_rank_get(v, i) (((int)((v) >> ((i) * 7))) & 0x7f)
|
||||
#define small_block_rank_set(v, i, r) (v) |= (uint64_t)(r) << (9 * ((i) - 1))
|
||||
#define small_block_rank_get(v, i) ((int) ((i) == 0 ? 0 : ((v) & 0x1ffL << ((i) - 1) * 9) >> (((i) - 1) * 9)))
|
||||
#define small_block_rank_get(v, i) ((i) == 0 ? 0 : (((int)((v) >> (((i) - 1) * 9))) & 0x1ff))
|
||||
|
||||
static struct succ_index_table *
|
||||
succ_index_table_create(int max_pos, int *data, int size)
|
||||
|
@ -2868,7 +2868,7 @@ succ_index_table_create(int max_pos, int *data, int size)
|
|||
if (j) small_block_rank_set(sd_block->small_block_ranks, j, small_rank);
|
||||
for (i = 0; i < 64; i++) {
|
||||
if (r < size && data[r] == k * 512 + j * 64 + i + IMMEDIATE_TABLE_SIZE) {
|
||||
bits |= 1L << i;
|
||||
bits |= ((uint64_t)1) << i;
|
||||
r++;
|
||||
}
|
||||
}
|
||||
|
@ -2897,7 +2897,7 @@ succ_index_table_invert(int max_pos, struct succ_index_table *sd, int size)
|
|||
for (k = 0; k < succ_size; k++) {
|
||||
for (j = 0; j < 8; j++) {
|
||||
for (i = 0; i < 64; i++) {
|
||||
if (sd->succ_part[k].bits[j] & (1L << i)) {
|
||||
if (sd->succ_part[k].bits[j] & (((uint64_t)1) << i)) {
|
||||
*p++ = k * 512 + j * 64 + i + IMMEDIATE_TABLE_SIZE;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -63,7 +63,7 @@
|
|||
* 2: succinct bitvector
|
||||
*/
|
||||
#ifndef VM_INSN_INFO_TABLE_IMPL
|
||||
# define VM_INSN_INFO_TABLE_IMPL 1
|
||||
# define VM_INSN_INFO_TABLE_IMPL 2
|
||||
#endif
|
||||
|
||||
#include "ruby/ruby.h"
|
||||
|
|
Loading…
Add table
Reference in a new issue