< prev index next > src/hotspot/share/code/dependencies.cpp
Print this page
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
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",
};
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
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;
}
}
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 >