7195867: NPG: SAJDI tests fail with sun.jvm.hotspot.types.WrongTypeException: No suitable match for type

Need to restore the vtable in metadata when we restore the type from the shared archive.

Reviewed-by: acorn, jcoomes, jmasa, jrose
This commit is contained in:
Coleen Phillimore 2012-09-05 20:08:08 -04:00
parent f3b6368c39
commit 8536f548db
6 changed files with 22 additions and 4 deletions

View file

@ -643,6 +643,11 @@ class ConstantPool : public Metadata {
void remove_unshareable_info();
void restore_unshareable_info(TRAPS);
bool resolve_class_constants(TRAPS);
// The ConstantPool vtable is restored by this call when the ConstantPool is
// in the shared archive. See patch_klass_vtables() in metaspaceShared.cpp for
// all the gory details. SA, dtrace and pstack helpers distinguish metadata
// by their vtable.
void restore_vtable() { guarantee(is_constantPool(), "vtable restored by this call"); }
private:
enum { _no_index_sentinel = -1, _possible_index_sentinel = -2 };