8174994: SA: clhsdb printmdo throws WrongTypeException when attached to a process with CDS

Read in the md region of the CDS archive in SA and map the vtable addresses to the corresponding metadata type.

Reviewed-by: iklam, coleenp, ysuenaga, dholmes
This commit is contained in:
Jini George 2018-04-26 12:25:36 +05:30
parent 15ef60b350
commit ccc74fdd60
11 changed files with 719 additions and 56 deletions

View file

@ -56,6 +56,7 @@
#include "memory/referenceType.hpp"
#include "memory/universe.hpp"
#include "memory/virtualspace.hpp"
#include "memory/filemap.hpp"
#include "oops/array.hpp"
#include "oops/arrayKlass.hpp"
#include "oops/arrayOop.hpp"
@ -1120,6 +1121,16 @@ typedef PaddedEnd<ObjectMonitor> PaddedObjectMonitor;
static_field(java_lang_Class, _oop_size_offset, int) \
static_field(java_lang_Class, _static_oop_field_count_offset, int) \
\
/********************************************/ \
/* FileMapInfo fields (CDS archive related) */ \
/********************************************/ \
\
nonstatic_field(FileMapInfo, _header, FileMapInfo::FileMapHeader*) \
static_field(FileMapInfo, _current_info, FileMapInfo*) \
nonstatic_field(FileMapInfo::FileMapHeader, _space[0], FileMapInfo::FileMapHeader::space_info)\
nonstatic_field(FileMapInfo::FileMapHeader::space_info, _addr._base, char*) \
nonstatic_field(FileMapInfo::FileMapHeader::space_info, _used, size_t) \
\
/******************/ \
/* VMError fields */ \
/******************/ \
@ -1444,7 +1455,7 @@ typedef PaddedEnd<ObjectMonitor> PaddedObjectMonitor;
declare_type(SafepointBlob, SingletonBlob) \
declare_type(DeoptimizationBlob, SingletonBlob) \
declare_c2_type(ExceptionBlob, SingletonBlob) \
declare_c2_type(UncommonTrapBlob, RuntimeBlob) \
declare_c2_type(UncommonTrapBlob, RuntimeBlob) \
\
/***************************************/ \
/* PcDesc and other compiled code info */ \
@ -2000,6 +2011,10 @@ typedef PaddedEnd<ObjectMonitor> PaddedObjectMonitor;
declare_toplevel_type(vframeArrayElement) \
declare_toplevel_type(Annotations*) \
declare_type(OopMapValue, StackObj) \
declare_type(FileMapInfo, CHeapObj<mtInternal>) \
declare_type(FileMapInfo::FileMapHeaderBase, CHeapObj<mtClass>) \
declare_type(FileMapInfo::FileMapHeader, FileMapInfo::FileMapHeaderBase)\
declare_toplevel_type(FileMapInfo::FileMapHeader::space_info) \
\
/************/ \
/* GC types */ \