< prev index next >

src/hotspot/share/memory/universe.cpp

Print this page
*** 136,10 ***
--- 136,12 ---
  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;

*** 235,10 ***
--- 237,12 ---
    _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(CDSConfig::is_dumping_heap(), "sanity");

*** 286,10 ***
--- 290,12 ---
    _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) {

*** 369,10 ***
--- 375,11 ---
        // 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());

*** 797,11 ***
    }
  
    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)) {
--- 804,10 ---

*** 815,10 ***
--- 821,12 ---
    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

*** 971,10 ***
--- 979,21 ---
    // 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 >