< prev index next >

src/hotspot/share/code/compiledIC.cpp

Print this page

@@ -534,12 +534,13 @@
     //     null check on a call when the target isn't loaded).
     //     This causes problems when verifying the IC because
     //     it looks vanilla but is optimized. Code in is_call_to_interpreted
     //     is aware of this and weakens its asserts.
     if (is_optimized) {
-      entry      = method_code->verified_entry_point();
+      entry      = caller_is_c1 ? method_code->verified_value_entry_point() : method_code->verified_entry_point();
     } else {
+    //assert(!(caller_is_c1 && method->has_scalarized_args()), "FIXME - what to do with c1 caller??");
       entry      = method_code->entry_point();
     }
   }
   bool far_c2a = entry != NULL && caller_is_nmethod && method_code->is_far_code();
   if (entry != NULL && !far_c2a) {

@@ -557,10 +558,11 @@
       }
     } else {
       // Use icholder entry
       assert(method_code == NULL || method_code->is_compiled(), "must be compiled");
       CompiledICHolder* holder = new CompiledICHolder(method(), receiver_klass);
+    //assert(!(caller_is_c1 && method->has_scalarized_args()), "FIXME - what to do with c1 caller??");
       info.set_icholder_entry(method()->get_c2i_unverified_entry(), holder);
     }
   }
   assert(info.is_optimized() == is_optimized, "must agree");
 }

@@ -668,22 +670,22 @@
       info._to_aot = true;
     } else {
       info._to_aot = false;
     }
     info._to_interpreter = false;
-    if (caller_nm->is_c1()) {
+    if (caller_nm->is_compiled_by_c1()) {
       info._entry = m_code->verified_value_entry_point();
     } else {
       info._entry = m_code->verified_entry_point();
     }
   } else {
     // Callee is interpreted code.  In any case entering the interpreter
     // puts a converter-frame on the stack to save arguments.
     assert(!m->is_method_handle_intrinsic(), "Compiled code should never call interpreter MH intrinsics");
     info._to_interpreter = true;
 
-    if (caller_nm->is_c1()) {
+    if (caller_nm->is_compiled_by_c1()) {
       // C1 -> interp: values passed as oops
       info._entry = m()->get_c2i_value_entry();
     } else {
       // C2 -> interp: values passed fields
       info._entry = m()->get_c2i_entry();
< prev index next >