77 return has_reserved_count_table(); |
77 return has_reserved_count_table(); |
78 } |
78 } |
79 |
79 |
80 size_t ptr_2_card_num(const jbyte* card_ptr) { |
80 size_t ptr_2_card_num(const jbyte* card_ptr) { |
81 assert(card_ptr >= _ct_bot, |
81 assert(card_ptr >= _ct_bot, |
82 err_msg("Invalid card pointer: " |
82 "Invalid card pointer: " |
83 "card_ptr: " PTR_FORMAT ", " |
83 "card_ptr: " PTR_FORMAT ", " |
84 "_ct_bot: " PTR_FORMAT, |
84 "_ct_bot: " PTR_FORMAT, |
85 p2i(card_ptr), p2i(_ct_bot))); |
85 p2i(card_ptr), p2i(_ct_bot)); |
86 size_t card_num = pointer_delta(card_ptr, _ct_bot, sizeof(jbyte)); |
86 size_t card_num = pointer_delta(card_ptr, _ct_bot, sizeof(jbyte)); |
87 assert(card_num < _reserved_max_card_num, |
87 assert(card_num < _reserved_max_card_num, |
88 err_msg("card pointer out of range: " PTR_FORMAT, p2i(card_ptr))); |
88 "card pointer out of range: " PTR_FORMAT, p2i(card_ptr)); |
89 return card_num; |
89 return card_num; |
90 } |
90 } |
91 |
91 |
92 jbyte* card_num_2_ptr(size_t card_num) { |
92 jbyte* card_num_2_ptr(size_t card_num) { |
93 assert(card_num < _reserved_max_card_num, |
93 assert(card_num < _reserved_max_card_num, |
94 err_msg("card num out of range: " SIZE_FORMAT, card_num)); |
94 "card num out of range: " SIZE_FORMAT, card_num); |
95 return (jbyte*) (_ct_bot + card_num); |
95 return (jbyte*) (_ct_bot + card_num); |
96 } |
96 } |
97 |
97 |
98 // Clear the counts table for the given (exclusive) index range. |
98 // Clear the counts table for the given (exclusive) index range. |
99 void clear_range(size_t from_card_num, size_t to_card_num); |
99 void clear_range(size_t from_card_num, size_t to_card_num); |