< prev index next >
src/share/vm/gc/g1/g1BlockOffsetTable.inline.hpp
Print this page
*** 74,84 ****
memset_with_concurrent_readers(&_offset_array[left], offset, num_cards);
}
// Variant of index_for that does not check the index for validity.
inline size_t G1BlockOffsetTable::index_for_raw(const void* p) const {
! return pointer_delta((char*)p, _reserved.start(), sizeof(char)) >> LogN;
}
inline size_t G1BlockOffsetTable::index_for(const void* p) const {
char* pc = (char*)p;
assert(pc >= (char*)_reserved.start() &&
--- 74,84 ----
memset_with_concurrent_readers(&_offset_array[left], offset, num_cards);
}
// Variant of index_for that does not check the index for validity.
inline size_t G1BlockOffsetTable::index_for_raw(const void* p) const {
! return pointer_delta((char*)p, _reserved.start(), sizeof(char)) >> BOTConstants::LogN;
}
inline size_t G1BlockOffsetTable::index_for(const void* p) const {
char* pc = (char*)p;
assert(pc >= (char*)_reserved.start() &&
*** 115,133 ****
index = MIN2(index, max_index);
}
HeapWord* q = _bot->address_for_index(index);
uint offset = _bot->offset_array(index); // Extend u_char to uint.
! while (offset >= N_words) {
// The excess of the offset from N_words indicates a power of Base
// to go back by.
! size_t n_cards_back = BlockOffsetArray::entry_to_cards_back(offset);
! q -= (N_words * n_cards_back);
index -= n_cards_back;
offset = _bot->offset_array(index);
}
! assert(offset < N_words, "offset too large");
q -= offset;
return q;
}
inline HeapWord* G1BlockOffsetTablePart::forward_to_block_containing_addr_const(HeapWord* q, HeapWord* n,
--- 115,133 ----
index = MIN2(index, max_index);
}
HeapWord* q = _bot->address_for_index(index);
uint offset = _bot->offset_array(index); // Extend u_char to uint.
! while (offset >= BOTConstants::N_words) {
// The excess of the offset from N_words indicates a power of Base
// to go back by.
! size_t n_cards_back = BOTConstants::entry_to_cards_back(offset);
! q -= (BOTConstants::N_words * n_cards_back);
index -= n_cards_back;
offset = _bot->offset_array(index);
}
! assert(offset < BOTConstants::N_words, "offset too large");
q -= offset;
return q;
}
inline HeapWord* G1BlockOffsetTablePart::forward_to_block_containing_addr_const(HeapWord* q, HeapWord* n,
< prev index next >