< prev index next >

src/hotspot/share/code/aotCodeCache.cpp

Print this page
@@ -506,25 +506,36 @@
    if (_compressedKlassShift != (uint)CompressedKlassPointers::shift()) {
      log_debug(aot, codecache, init)("AOT Code Cache disabled: it was created with CompressedKlassPointers::shift() = %d vs current %d", _compressedKlassShift, CompressedKlassPointers::shift());
      return false;
    }
  
-   // The following checks do not affect AOT adapters caching
+   // The following checks do not affect AOT code, but can disable
+   // AOT stub/adapters caching if they are incompatible with runtime settings
+   // (adapters too as they access oops when buffering scalarized value objects).
  
    if (((_flags & compressedOops) != 0) != UseCompressedOops) {
-     log_debug(aot, codecache, init)("AOT Code Cache disabled: it was created with UseCompressedOops = %s", UseCompressedOops ? "false" : "true");
+     log_debug(aot, codecache, init)("AOT Stub/Adapter Cache disabled: it was created with UseCompressedOops = %s", UseCompressedOops ? "false" : "true");
      AOTStubCaching = false;
+     if (InlineTypePassFieldsAsArgs) {
+       AOTAdapterCaching = false;
+     }
    }
    if (_compressedOopShift != (uint)CompressedOops::shift()) {
-     log_debug(aot, codecache, init)("AOT Code Cache disabled: it was created with different CompressedOops::shift(): %d vs current %d", _compressedOopShift, CompressedOops::shift());
+     log_debug(aot, codecache, init)("AOT Stub/Adapter Cache disabled: it was created with different CompressedOops::shift(): %d vs current %d", _compressedOopShift, CompressedOops::shift());
      AOTStubCaching = false;
+     if (InlineTypePassFieldsAsArgs) {
+       AOTAdapterCaching = false;
+     }
    }
  
-   // This should be the last check as it only disables AOTStubCaching
+   // This should be the last check as it only disables AOTStub/AdapterCaching
    if ((_compressedOopBase == nullptr || CompressedOops::base() == nullptr) && (_compressedOopBase != CompressedOops::base())) {
-     log_debug(aot, codecache, init)("AOTStubCaching is disabled: incompatible CompressedOops::base(): %p vs current %p", _compressedOopBase, CompressedOops::base());
+     log_debug(aot, codecache, init)("AOT Stub/Adapter Cache disabled: incompatible CompressedOops::base(): %p vs current %p", _compressedOopBase, CompressedOops::base());
      AOTStubCaching = false;
+     if (InlineTypePassFieldsAsArgs) {
+       AOTAdapterCaching = false;
+     }
    }
  
    if (!verify_cpu_features(cache)) {
      return false;
    }

@@ -1344,10 +1355,11 @@
    // Record addresses of VM runtime methods
    SET_ADDRESS(_extrs, SharedRuntime::fixup_callers_callsite);
    SET_ADDRESS(_extrs, SharedRuntime::handle_wrong_method);
    SET_ADDRESS(_extrs, SharedRuntime::handle_wrong_method_abstract);
    SET_ADDRESS(_extrs, SharedRuntime::handle_wrong_method_ic_miss);
+   SET_ADDRESS(_extrs, SharedRuntime::allocate_inline_types);
  #if defined(AARCH64) && !defined(ZERO)
    SET_ADDRESS(_extrs, JavaThread::aarch64_get_thread_helper);
  #endif
    {
      // Required by Shared blobs

@@ -1393,10 +1405,18 @@
      SET_ADDRESS(_extrs, Runtime1::move_klass_patching);
      SET_ADDRESS(_extrs, Runtime1::move_mirror_patching);
      SET_ADDRESS(_extrs, Runtime1::move_appendix_patching);
      SET_ADDRESS(_extrs, Runtime1::predicate_failed_trap);
      SET_ADDRESS(_extrs, Runtime1::unimplemented_entry);
+     SET_ADDRESS(_extrs, Runtime1::new_null_free_array);
+     SET_ADDRESS(_extrs, Runtime1::load_flat_array);
+     SET_ADDRESS(_extrs, Runtime1::store_flat_array);
+     SET_ADDRESS(_extrs, Runtime1::substitutability_check);
+     SET_ADDRESS(_extrs, Runtime1::buffer_inline_args);
+     SET_ADDRESS(_extrs, Runtime1::buffer_inline_args_no_receiver);
+     SET_ADDRESS(_extrs, Runtime1::throw_identity_exception);
+     SET_ADDRESS(_extrs, Runtime1::throw_illegal_monitor_state_exception);
      SET_ADDRESS(_extrs, Thread::current);
      SET_ADDRESS(_extrs, CompressedKlassPointers::base_addr());
  #ifndef PRODUCT
      SET_ADDRESS(_extrs, os::breakpoint);
  #endif

@@ -1420,10 +1440,12 @@
      SET_ADDRESS(_extrs, OptoRuntime::monitor_notify_C);
      SET_ADDRESS(_extrs, OptoRuntime::monitor_notifyAll_C);
      SET_ADDRESS(_extrs, OptoRuntime::rethrow_C);
      SET_ADDRESS(_extrs, OptoRuntime::slow_arraycopy_C);
      SET_ADDRESS(_extrs, OptoRuntime::register_finalizer_C);
+     SET_ADDRESS(_extrs, OptoRuntime::load_unknown_inline_C);
+     SET_ADDRESS(_extrs, OptoRuntime::store_unknown_inline_C);
      SET_ADDRESS(_extrs, OptoRuntime::vthread_end_first_transition_C);
      SET_ADDRESS(_extrs, OptoRuntime::vthread_start_final_transition_C);
      SET_ADDRESS(_extrs, OptoRuntime::vthread_start_transition_C);
      SET_ADDRESS(_extrs, OptoRuntime::vthread_end_transition_C);
  #if defined(AARCH64)

@@ -1451,10 +1473,14 @@
  #if defined(AMD64) || defined(AARCH64) || defined(RISCV64)
    SET_ADDRESS(_extrs, MacroAssembler::debug64);
  #endif
  #endif // ZERO
  
+   if (UseCompressedOops) {
+     SET_ADDRESS(_extrs, CompressedOops::base_addr());
+   }
+ 
    // addresses of fields in AOT runtime constants area
    address* p = AOTRuntimeConstants::field_addresses_list();
    while (*p != nullptr) {
      SET_ADDRESS(_extrs, *p++);
    }
< prev index next >