< prev index next >

src/hotspot/share/code/dependencies.cpp

Print this page
@@ -80,10 +80,14 @@
  
  void Dependencies::assert_evol_method(ciMethod* m) {
    assert_common_1(evol_method, m);
  }
  
+ void Dependencies::assert_mismatch_calling_convention(ciMethod* m) {
+   assert_common_1(mismatch_calling_convention, m);
+ }
+ 
  void Dependencies::assert_leaf_type(ciKlass* ctxk) {
    if (ctxk->is_array_klass()) {
      // As a special case, support this assertion on an array type,
      // which reduces to an assertion on its element type.
      // Note that this cannot be done with assertions that

@@ -583,10 +587,11 @@
  
  
  const char* Dependencies::_dep_name[TYPE_LIMIT] = {
    "end_marker",
    "evol_method",
+   "mismatch_calling_convention",
    "leaf_type",
    "abstract_with_unique_concrete_subtype",
    "unique_concrete_method_2",
    "unique_concrete_method_4",
    "unique_implementor",

@@ -595,10 +600,11 @@
  };
  
  int Dependencies::_dep_args[TYPE_LIMIT] = {
    -1,// end_marker
    1, // evol_method m
+   1, // mismatch_calling_convention m
    1, // leaf_type ctxk
    2, // abstract_with_unique_concrete_subtype ctxk, k
    2, // unique_concrete_method_2 ctxk, m
    4, // unique_concrete_method_4 ctxk, m, resolved_klass, resolved_method
    2, // unique_implementor ctxk, implementor

@@ -1692,12 +1698,20 @@
  Klass* Dependencies::check_evol_method(Method* m) {
    assert(must_be_in_vm(), "raw oops here");
    // Did somebody do a JVMTI RedefineClasses while our backs were turned?
    // Or is there a now a breakpoint?
    // (Assumes compiled code cannot handle bkpts; change if UseFastBreakpoints.)
-   if (m->is_old()
-       || m->number_of_breakpoints() > 0) {
+   if (m->is_old() || m->number_of_breakpoints() > 0) {
+     return m->method_holder();
+   } else {
+     return nullptr;
+   }
+ }
+ 
+ Klass* Dependencies::check_mismatch_calling_convention(Method* m) {
+   assert(must_be_in_vm(), "raw oops here");
+   if (m->mismatch()) {
      return m->method_holder();
    } else {
      return nullptr;
    }
  }

@@ -2070,10 +2084,13 @@
    Klass* witness = nullptr;
    switch (type()) {
    case evol_method:
      witness = check_evol_method(method_argument(0));
      break;
+   case mismatch_calling_convention:
+     witness = check_mismatch_calling_convention(method_argument(0));
+     break;
    case leaf_type:
      witness = check_leaf_type(context_type());
      break;
    case abstract_with_unique_concrete_subtype:
      witness = check_abstract_with_unique_concrete_subtype(context_type(), type_argument(1), changes);
< prev index next >