Mercurial > hg > truffle
comparison src/share/vm/classfile/systemDictionary.cpp @ 6864:dd2b66d09ccd
8000659: NPG: ClassCastExceptions are unexpectedly thrown when testing nashorn
Summary: Treat the oops in invoke_method_table() as strong roots when ClassUnloading is enabled.
Reviewed-by: kamg, coleenp
author | stefank |
---|---|
date | Tue, 09 Oct 2012 22:12:25 +0200 |
parents | f6b0eb4e44cf |
children | 633ba56cb013 |
comparison
equal
deleted
inserted
replaced
6863:04155d9c8c76 | 6864:dd2b66d09ccd |
---|---|
1747 void SystemDictionary::always_strong_oops_do(OopClosure* blk) { | 1747 void SystemDictionary::always_strong_oops_do(OopClosure* blk) { |
1748 blk->do_oop(&_java_system_loader); | 1748 blk->do_oop(&_java_system_loader); |
1749 blk->do_oop(&_system_loader_lock_obj); | 1749 blk->do_oop(&_system_loader_lock_obj); |
1750 | 1750 |
1751 dictionary()->always_strong_oops_do(blk); | 1751 dictionary()->always_strong_oops_do(blk); |
1752 | |
1753 // Visit extra methods | |
1754 invoke_method_table()->oops_do(blk); | |
1752 } | 1755 } |
1753 | 1756 |
1754 void SystemDictionary::always_strong_classes_do(KlassClosure* closure) { | 1757 void SystemDictionary::always_strong_classes_do(KlassClosure* closure) { |
1755 // Follow all system classes and temporary placeholders in dictionary | 1758 // Follow all system classes and temporary placeholders in dictionary |
1756 dictionary()->always_strong_classes_do(closure); | 1759 dictionary()->always_strong_classes_do(closure); |