8200466: Revisit the setting of _transitive_interfaces in InstanceKlass

Delay the setting of _transitive_interfaces until after initialize_supers() in fill_instance_klass().

Reviewed-by: iklam, coleenp
This commit is contained in:
Calvin Cheung 2018-05-02 09:26:10 -07:00
parent 7dc011ccca
commit aedb6040c6
10 changed files with 35 additions and 18 deletions

View file

@ -918,9 +918,10 @@ bool InstanceKlass::can_be_primary_super_slow() const {
return Klass::can_be_primary_super_slow();
}
GrowableArray<Klass*>* InstanceKlass::compute_secondary_supers(int num_extra_slots) {
GrowableArray<Klass*>* InstanceKlass::compute_secondary_supers(int num_extra_slots,
Array<Klass*>* transitive_interfaces) {
// The secondaries are the implemented interfaces.
Array<Klass*>* interfaces = transitive_interfaces();
Array<Klass*>* interfaces = transitive_interfaces;
int num_secondaries = num_extra_slots + interfaces->length();
if (num_secondaries == 0) {
// Must share this for correct bootstrapping!