< prev index next > src/hotspot/share/memory/universe.cpp
Print this page
LatestMethodCache* Universe::_finalizer_register_cache = nullptr;
LatestMethodCache* Universe::_loader_addClass_cache = nullptr;
LatestMethodCache* Universe::_throw_illegal_access_error_cache = nullptr;
LatestMethodCache* Universe::_throw_no_such_method_error_cache = nullptr;
LatestMethodCache* Universe::_do_stack_walk_cache = nullptr;
+ LatestMethodCache* Universe::_is_substitutable_cache = nullptr;
+ LatestMethodCache* Universe::_value_object_hash_code_cache = nullptr;
long Universe::verify_flags = Universe::Verify_All;
Array<int>* Universe::_the_empty_int_array = nullptr;
Array<u2>* Universe::_the_empty_short_array = nullptr;
_finalizer_register_cache->metaspace_pointers_do(it);
_loader_addClass_cache->metaspace_pointers_do(it);
_throw_illegal_access_error_cache->metaspace_pointers_do(it);
_throw_no_such_method_error_cache->metaspace_pointers_do(it);
_do_stack_walk_cache->metaspace_pointers_do(it);
+ _is_substitutable_cache->metaspace_pointers_do(it);
+ _value_object_hash_code_cache->metaspace_pointers_do(it);
}
#if INCLUDE_CDS_JAVA_HEAP
void Universe::set_archived_basic_type_mirror_index(BasicType t, int index) {
assert(DumpSharedSpaces, "dump-time only");
_finalizer_register_cache->serialize(f);
_loader_addClass_cache->serialize(f);
_throw_illegal_access_error_cache->serialize(f);
_throw_no_such_method_error_cache->serialize(f);
_do_stack_walk_cache->serialize(f);
+ _is_substitutable_cache->serialize(f);
+ _value_object_hash_code_cache->serialize(f);
}
void Universe::check_alignment(uintx size, uintx alignment, const char* name) {
if (size < alignment || size % alignment != 0) {
// Verify shared interfaces array.
assert(_the_array_interfaces_array->at(0) ==
vmClasses::Cloneable_klass(), "u3");
assert(_the_array_interfaces_array->at(1) ==
vmClasses::Serializable_klass(), "u3");
+
} else
#endif
{
// Set up shared interfaces array. (Do this before supers are set up.)
_the_array_interfaces_array->at_put(0, vmClasses::Cloneable_klass());
}
Universe::initialize_tlab();
Metaspace::global_initialize();
-
// Initialize performance counters for metaspaces
MetaspaceCounters::initialize_performance_counters();
// Checks 'AfterMemoryInit' constraints.
if (!JVMFlagLimit::check_all_constraints(JVMFlagConstraintPhase::AfterMemoryInit)) {
Universe::_finalizer_register_cache = new LatestMethodCache();
Universe::_loader_addClass_cache = new LatestMethodCache();
Universe::_throw_illegal_access_error_cache = new LatestMethodCache();
Universe::_throw_no_such_method_error_cache = new LatestMethodCache();
Universe::_do_stack_walk_cache = new LatestMethodCache();
+ Universe::_is_substitutable_cache = new LatestMethodCache();
+ Universe::_value_object_hash_code_cache = new LatestMethodCache();
#if INCLUDE_CDS
DynamicArchive::check_for_dynamic_dump();
if (UseSharedSpaces) {
// Read the data structures supporting the shared spaces (shared
// Set up method for stack walking
initialize_known_method(_do_stack_walk_cache,
vmClasses::AbstractStackWalker_klass(),
"doStackWalk",
vmSymbols::doStackWalk_signature(), false, CHECK);
+
+ // Set up substitutability testing
+ ResourceMark rm;
+ initialize_known_method(_is_substitutable_cache,
+ vmClasses::ValueObjectMethods_klass(),
+ vmSymbols::isSubstitutable_name()->as_C_string(),
+ vmSymbols::object_object_boolean_signature(), true, CHECK);
+ initialize_known_method(_value_object_hash_code_cache,
+ vmClasses::ValueObjectMethods_klass(),
+ vmSymbols::valueObjectHashCode_name()->as_C_string(),
+ vmSymbols::object_int_signature(), true, CHECK);
}
void universe2_init() {
EXCEPTION_MARK;
Universe::genesis(CATCH);
< prev index next >