< prev index next >

src/hotspot/share/aot/aotCodeHeap.cpp

Print this page




1032     sweep_dependent_methods(dyno_data);
1033     return false;
1034   }
1035 
1036   if (dyno_klass == NULL) {
1037     // (appendix) at build-time, none now
1038     sweep_dependent_methods(holder_data);
1039     sweep_dependent_methods(dyno_data);
1040     return false;
1041   }
1042 
1043   // TODO: support array appendix object
1044   if (!dyno_klass->is_instance_klass()) {
1045     sweep_dependent_methods(holder_data);
1046     sweep_dependent_methods(dyno_data);
1047     return false;
1048   }
1049 
1050   InstanceKlass* dyno = InstanceKlass::cast(dyno_klass);
1051 
1052   if (!dyno->is_unsafe_anonymous()) {
1053     if (_klasses_got[dyno_data->_got_index] != dyno) {
1054       // compile-time class different from runtime class, fail and deoptimize
1055       sweep_dependent_methods(holder_data);
1056       sweep_dependent_methods(dyno_data);
1057       return false;
1058     }
1059 
1060     if (dyno->is_initialized()) {
1061       _klasses_got[dyno_data->_got_index - 1] = dyno;
1062     }
1063     return true;
1064   }
1065 
1066   // TODO: support anonymous supers
1067   if (!dyno->supers_have_passed_fingerprint_checks() || dyno->get_stored_fingerprint() != dyno_data->_fingerprint) {
1068       NOT_PRODUCT( aot_klasses_fp_miss++; )
1069       log_trace(aot, class, fingerprint)("class  %s%s  has bad fingerprint in  %s tid=" INTPTR_FORMAT,
1070           dyno->internal_name(), dyno->is_shared() ? " (shared)" : "",
1071           _lib->name(), p2i(thread));
1072     sweep_dependent_methods(holder_data);




1032     sweep_dependent_methods(dyno_data);
1033     return false;
1034   }
1035 
1036   if (dyno_klass == NULL) {
1037     // (appendix) at build-time, none now
1038     sweep_dependent_methods(holder_data);
1039     sweep_dependent_methods(dyno_data);
1040     return false;
1041   }
1042 
1043   // TODO: support array appendix object
1044   if (!dyno_klass->is_instance_klass()) {
1045     sweep_dependent_methods(holder_data);
1046     sweep_dependent_methods(dyno_data);
1047     return false;
1048   }
1049 
1050   InstanceKlass* dyno = InstanceKlass::cast(dyno_klass);
1051 
1052   if (!dyno->is_hidden() && !dyno->is_unsafe_anonymous()) {
1053     if (_klasses_got[dyno_data->_got_index] != dyno) {
1054       // compile-time class different from runtime class, fail and deoptimize
1055       sweep_dependent_methods(holder_data);
1056       sweep_dependent_methods(dyno_data);
1057       return false;
1058     }
1059 
1060     if (dyno->is_initialized()) {
1061       _klasses_got[dyno_data->_got_index - 1] = dyno;
1062     }
1063     return true;
1064   }
1065 
1066   // TODO: support anonymous supers
1067   if (!dyno->supers_have_passed_fingerprint_checks() || dyno->get_stored_fingerprint() != dyno_data->_fingerprint) {
1068       NOT_PRODUCT( aot_klasses_fp_miss++; )
1069       log_trace(aot, class, fingerprint)("class  %s%s  has bad fingerprint in  %s tid=" INTPTR_FORMAT,
1070           dyno->internal_name(), dyno->is_shared() ? " (shared)" : "",
1071           _lib->name(), p2i(thread));
1072     sweep_dependent_methods(holder_data);


< prev index next >