csize_t CodeBuffer::copy_relocations_to(CodeBlob* dest) const { address buf = NULL; csize_t buf_offset = 0; csize_t buf_limit = 0; if (dest != NULL) { buf = (address)dest->relocation_begin(); buf_limit = (address)dest->relocation_end() - buf; } // if dest == NULL, this is just the sizing pass // buf_offset = copy_relocations_to(buf, buf_limit, false); // Account for index: if (buf != NULL) { RelocIterator::create_index(dest->relocation_begin(), buf_offset / sizeof(relocInfo), dest->relocation_end()); } return buf_offset; }
csize_t CodeBuffer::total_relocation_size() const { csize_t lsize = copy_relocations_to(NULL); // dry run only csize_t csize = total_content_size(); csize_t total = RelocIterator::locs_and_index_size(csize, lsize); return (csize_t) align_size_up(total, HeapWordSize); }