Mercurial > hg > truffle
diff src/share/vm/oops/methodData.cpp @ 13080:6e1826d5c23e
8027572: assert(r != 0) failed: invalid
Summary: null classes should be expected in profiles with conflicts
Reviewed-by: kvn, iveresov
author | roland |
---|---|
date | Wed, 13 Nov 2013 13:45:50 +0100 |
parents | 5ccbab1c69f3 |
children | 096c224171c4 da862781b584 b8413a9cbb84 |
line wrap: on
line diff
--- a/src/share/vm/oops/methodData.cpp Wed Nov 13 01:50:14 2013 -0800 +++ b/src/share/vm/oops/methodData.cpp Wed Nov 13 13:45:50 2013 +0100 @@ -275,23 +275,23 @@ } bool TypeEntries::is_loader_alive(BoolObjectClosure* is_alive_cl, intptr_t p) { - return !is_type_none(p) && - !((Klass*)klass_part(p))->is_loader_alive(is_alive_cl); + Klass* k = (Klass*)klass_part(p); + return k != NULL && k->is_loader_alive(is_alive_cl); } void TypeStackSlotEntries::clean_weak_klass_links(BoolObjectClosure* is_alive_cl) { for (int i = 0; i < _number_of_entries; i++) { intptr_t p = type(i); - if (is_loader_alive(is_alive_cl, p)) { - set_type(i, type_none()); + if (!is_loader_alive(is_alive_cl, p)) { + set_type(i, with_status((Klass*)NULL, p)); } } } void ReturnTypeEntry::clean_weak_klass_links(BoolObjectClosure* is_alive_cl) { intptr_t p = type(); - if (is_loader_alive(is_alive_cl, p)) { - set_type(type_none()); + if (!is_loader_alive(is_alive_cl, p)) { + set_type(with_status((Klass*)NULL, p)); } }