< prev index next > src/hotspot/share/cds/archiveHeapWriter.hpp
Print this page
HeapRootSegments heap_root_segments() { return _heap_root_segments; }
};
#if INCLUDE_CDS_JAVA_HEAP
class ArchiveHeapWriter : AllStatic {
+ friend class HeapShared;
// ArchiveHeapWriter manipulates three types of addresses:
//
// "source" vs "buffered" vs "requested"
//
// (Note: the design and convention is the same as for the archiving of Metaspace objects.
int _index; // The location of this object in _source_objs
int _rank; // A lower rank means the object will be written at a lower location.
};
static GrowableArrayCHeap<HeapObjOrder, mtClassShared>* _source_objs_order;
- typedef ResizeableResourceHashtable<size_t, oop,
+ typedef ResizeableResourceHashtable<size_t, OopHandle,
AnyObj::C_HEAP,
mtClassShared> BufferOffsetToSourceObjectTable;
static BufferOffsetToSourceObjectTable* _buffer_offset_to_source_obj_table;
static void allocate_buffer();
static void root_segment_at_put(objArrayOop segment, int index, oop root);
static objArrayOop allocate_root_segment(size_t offset, int element_count);
static void copy_roots_to_buffer(GrowableArrayCHeap<oop, mtClassShared>* roots);
static void copy_source_objs_to_buffer(GrowableArrayCHeap<oop, mtClassShared>* roots);
static size_t copy_one_source_obj_to_buffer(oop src_obj);
+ static void update_stats(oop src_obj);
static void maybe_fill_gc_region_gap(size_t required_byte_size);
static size_t filler_array_byte_size(int length);
static int filler_array_length(size_t fill_bytes);
static HeapWord* init_filler_array_at_buffer_top(int array_length, size_t fill_bytes);
static int compare_objs_by_oop_fields(HeapObjOrder* a, HeapObjOrder* b);
static void sort_source_objs();
public:
static void init() NOT_CDS_JAVA_HEAP_RETURN;
+ static void delete_tables_with_raw_oops();
static void add_source_obj(oop src_obj);
static bool is_too_large_to_archive(size_t size);
static bool is_too_large_to_archive(oop obj);
static bool is_string_too_large_to_archive(oop string);
static void write(GrowableArrayCHeap<oop, mtClassShared>*, ArchiveHeapInfo* heap_info);
static address requested_address(); // requested address of the lowest achived heap object
static size_t get_filler_size_at(address buffered_addr);
static void mark_native_pointer(oop src_obj, int offset);
- static bool is_marked_as_native_pointer(ArchiveHeapInfo* heap_info, oop src_obj, int field_offset);
+ static bool is_marked_as_native_pointer(ArchiveHeapInfo* heap_info, address buffered_obj, int field_offset);
static oop source_obj_to_requested_obj(oop src_obj);
static oop buffered_addr_to_source_obj(address buffered_addr);
static address buffered_addr_to_requested_addr(address buffered_addr);
};
< prev index next >