8227260: JNI upcalls should bypass class initialization barrier in c2i adapter

Reviewed-by: eosterlund, dholmes, mdoerr, dpochepk
This commit is contained in:
Vladimir Ivanov 2019-07-19 16:25:04 +03:00
parent 96d9d06cc9
commit 242bd67c6c
11 changed files with 227 additions and 45 deletions

View file

@ -146,6 +146,12 @@ address Method::get_c2i_unverified_entry() {
return adapter()->get_c2i_unverified_entry();
}
address Method::get_c2i_no_clinit_check_entry() {
assert(VM_Version::supports_fast_class_init_checks(), "");
assert(adapter() != NULL, "must have");
return adapter()->get_c2i_no_clinit_check_entry();
}
char* Method::name_and_sig_as_C_string() const {
return name_and_sig_as_C_string(constants()->pool_holder(), name(), signature());
}
@ -1045,7 +1051,7 @@ void Method::unlink_method() {
_c2i_entry ---------------------------------+->[c2i entry..]
_i2i_entry -------------+ _i2c_entry ---------------+-> [i2c entry..] |
_from_interpreted_entry | _c2i_unverified_entry | |
| | | |
| | _c2i_no_clinit_check_entry| |
| | (_cds_entry_table: CODE) | |
| +->[0]: jmp _entry_table[0] --> (i2i_entry_for "zero_locals") | |
| | (allocated at run time) | |