< prev index next >

src/hotspot/share/opto/doCall.cpp

Print this page
*** 31,10 ***
--- 31,11 ---
  #include "interpreter/linkResolver.hpp"
  #include "logging/log.hpp"
  #include "logging/logLevel.hpp"
  #include "logging/logMessage.hpp"
  #include "logging/logStream.hpp"
+ #include "oops/trainingData.hpp"
  #include "opto/addnode.hpp"
  #include "opto/callGenerator.hpp"
  #include "opto/castnode.hpp"
  #include "opto/cfgnode.hpp"
  #include "opto/mulnode.hpp"

*** 100,10 ***
--- 101,12 ---
    const bool is_virtual_or_interface = (bytecode == Bytecodes::_invokevirtual) ||
                                         (bytecode == Bytecodes::_invokeinterface) ||
                                         (orig_callee->intrinsic_id() == vmIntrinsics::_linkToVirtual) ||
                                         (orig_callee->intrinsic_id() == vmIntrinsics::_linkToInterface);
  
+   callee->ensure_method_data(true);
+ 
    // Dtrace currently doesn't work unless all calls are vanilla
    if (env()->dtrace_method_probes()) {
      allow_inline = false;
    }
  

*** 482,10 ***
--- 485,14 ---
    // v-calls.  Let interface calls happen.
    ciInstanceKlass* holder_klass = dest_method->holder();
    if (!holder_klass->is_being_initialized() &&
        !holder_klass->is_initialized() &&
        !holder_klass->is_interface()) {
+     if (C->env()->task()->is_precompile()) {
+       ResourceMark rm;
+       log_debug(precompile)("Emitting uncommon trap (cannot compile call site) in AOT code for %s", holder_klass->name()->as_klass_external_name());
+     }
      uncommon_trap(Deoptimization::Reason_uninitialized,
                    Deoptimization::Action_reinterpret,
                    holder_klass);
      return true;
    }
< prev index next >