8132547: [AOT] support invokedynamic instructions

Reviewed-by: iveresov, kvn
This commit is contained in:
Dean Long 2017-10-19 19:23:48 -07:00
parent 8db461922a
commit e7270b8965
40 changed files with 894 additions and 159 deletions

View file

@ -151,7 +151,7 @@ InstanceKlass* InstanceKlass::allocate_instance_klass(const ClassFileParser& par
nonstatic_oop_map_size(parser.total_oop_map_count()),
parser.is_interface(),
parser.is_anonymous(),
should_store_fingerprint());
should_store_fingerprint(parser.is_anonymous()));
const Symbol* const class_name = parser.class_name();
assert(class_name != NULL, "invariant");
@ -1957,7 +1957,7 @@ bool InstanceKlass::supers_have_passed_fingerprint_checks() {
return true;
}
bool InstanceKlass::should_store_fingerprint() {
bool InstanceKlass::should_store_fingerprint(bool is_anonymous) {
#if INCLUDE_AOT
// We store the fingerprint into the InstanceKlass only in the following 2 cases:
if (CalculateClassFingerprint) {
@ -1968,6 +1968,10 @@ bool InstanceKlass::should_store_fingerprint() {
// (2) We are running -Xshare:dump to create a shared archive
return true;
}
if (UseAOT && is_anonymous) {
// (3) We are using AOT code from a shared library and see an anonymous class
return true;
}
#endif
// In all other cases we might set the _misc_has_passed_fingerprint_check bit,