From 5e8e8ef6565e82a23626fe16893f93870dae1012 Mon Sep 17 00:00:00 2001 From: Ioi Lam Date: Fri, 10 May 2024 20:34:17 +0000 Subject: [PATCH] 8315431: ArchiveHeapWriter::get_filler_size_at() cannot handle buffer expansion Reviewed-by: matsaave, ccheung --- src/hotspot/share/cds/archiveHeapWriter.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/hotspot/share/cds/archiveHeapWriter.cpp b/src/hotspot/share/cds/archiveHeapWriter.cpp index e9f4fad63d4..d526a961b7f 100644 --- a/src/hotspot/share/cds/archiveHeapWriter.cpp +++ b/src/hotspot/share/cds/archiveHeapWriter.cpp @@ -67,8 +67,10 @@ ArchiveHeapWriter::BufferOffsetToSourceObjectTable* ArchiveHeapWriter::_buffer_offset_to_source_obj_table = nullptr; -typedef ResourceHashtable FillersTable; static FillersTable* _fillers; @@ -361,12 +363,12 @@ void ArchiveHeapWriter::maybe_fill_gc_region_gap(size_t required_byte_size) { array_length, fill_bytes, _buffer_used); HeapWord* filler = init_filler_array_at_buffer_top(array_length, fill_bytes); _buffer_used = filler_end; - _fillers->put((address)filler, fill_bytes); + _fillers->put(buffered_address_to_offset((address)filler), fill_bytes); } } size_t ArchiveHeapWriter::get_filler_size_at(address buffered_addr) { - size_t* p = _fillers->get(buffered_addr); + size_t* p = _fillers->get(buffered_address_to_offset(buffered_addr)); if (p != nullptr) { assert(*p > 0, "filler must be larger than zero bytes"); return *p;