32 , m_bit_area_length (0)
33 , m_long_tran_mvccids (
NULL)
34 , m_long_tran_mvccids_length (0)
35 , m_initialized (false)
124 return ((
unit_type) 1) << (bit_offset & 0x3F);
182 size_t highest_bit_position;
187 for (highest_completed_bit_area =
get_unit_of (end_position); highest_completed_bit_area >=
m_bit_area;
188 --highest_completed_bit_area)
190 bits = *highest_completed_bit_area;
195 for (bit_pos = 0, count_bits =
UNIT_BIT_COUNT / 2; count_bits > 0; count_bits /= 2)
197 if (bits >= (1ULL << count_bits))
204 highest_bit_position = bit_pos;
238 size_t lowest_bit_pos = 0;
244 for (lowest_active_bit_area =
m_bit_area; lowest_active_bit_area <= end_bit_area; ++lowest_active_bit_area)
246 bits = *lowest_active_bit_area;
253 for (bit_pos = 0, count_bits =
UNIT_BIT_COUNT / 2; count_bits > 0; count_bits /= 2)
256 if ((bits & mask) == mask)
262 lowest_bit_pos += bit_pos;
266 if (lowest_active_bit_area > end_bit_area)
290 char *dest_bit_area = (
char *) dest.
m_bit_area;
292 if (new_bit_area_memsize > 0)
294 std::memcpy (dest_bit_area,
m_bit_area, new_bit_area_memsize);
296 if (old_bit_area_memsize > new_bit_area_memsize)
299 std::memset (dest_bit_area + new_bit_area_memsize, 0, old_bit_area_memsize - new_bit_area_memsize);
344 return !
is_set (position);
364 size_t memsize = (m_long_tran_mvccids_length - i - 1) *
sizeof (
MVCCID);
400 #if !defined (NDEBUG) 441 size_t first_not_all_committed;
442 for (first_not_all_committed = 0; first_not_all_committed <
get_area_size (); first_not_all_committed++)
462 const size_t BITAREA_SIZE_AFTER_CLEANUP = 16;
463 size_t delete_count =
get_area_size () - BITAREA_SIZE_AFTER_CLEANUP;
469 for (
size_t i = 0;
i < delete_count;
i++)
475 ++bit_pos, mask <<= 1, ++long_tran_mvccid)
477 if ((bits & mask) == 0)
526 #if !defined (NDEBUG) size_t get_area_size() const
static int count_bits(const unsigned char *mem, int nbits)
int logtb_get_number_of_total_tran_indices(void)
static const size_t UNIT_BIT_COUNT
MVCCID get_mvccid(size_t bit_offset) const
void reset_start_mvccid(MVCCID mvccid)
static const size_t BITAREA_MAX_BITS
static const unit_type ALL_ACTIVE
void reset_active_transactions()
void cleanup_migrate_to_long_transations()
bool is_set(size_t bit_offset) const
MVCCID * m_long_tran_mvccids
static size_t long_tran_max_size()
unit_type * get_unit_of(size_t bit_offset) const
static const size_t UNIT_BYTE_COUNT
static const size_t BITAREA_MAX_SIZE
void set_inactive_mvccid(MVCCID mvccid)
volatile size_t m_long_tran_mvccids_length
MVCCID compute_highest_completed_mvccid() const
void remove_long_transaction(MVCCID mvccid)
static size_t bit_size_to_unit_size(size_t bit_count)
volatile MVCCID m_bit_area_start_mvccid
static const unit_type ALL_COMMITTED
#define MVCC_ID_PRECEDES(id1, id2)
size_t get_bit_area_memsize() const
static size_t units_to_bytes(size_t unit_count)
void set_bitarea_mvccid(MVCCID mvccid)
size_t get_long_tran_memsize() const
static const size_t BITAREA_MAX_MEMSIZE
MVCCID get_bit_area_start_mvccid()
MVCCID compute_lowest_active_mvccid() const
bool is_active(MVCCID mvccid) const
void copy_to(mvcc_active_tran &dest, copy_safety safety) const
size_t get_bit_offset(MVCCID mvccid) const
static unit_type get_mask_of(size_t bit_offset)
static size_t units_to_bits(size_t unit_count)
void ltrim_area(size_t trim_size)
volatile size_t m_bit_area_length
void add_long_transaction(MVCCID mvccid)