Mercurial > hg > truffle
diff src/share/vm/oops/instanceKlass.cpp @ 2334:dbad0519a1c4
6845426: non-static <clinit> method with no args is called during the class initialization process
Summary: Only call <clinit> with ACC_STATIC for classfiles with version > 50
Reviewed-by: acorn, dholmes, coleenp
author | kamg |
---|---|
date | Fri, 04 Mar 2011 14:40:46 -0500 |
parents | e5383553fd4e |
children | 8033953d67ff |
line wrap: on
line diff
--- a/src/share/vm/oops/instanceKlass.cpp Thu Mar 03 19:53:03 2011 -0500 +++ b/src/share/vm/oops/instanceKlass.cpp Fri Mar 04 14:40:46 2011 -0500 @@ -735,7 +735,12 @@ static int call_class_initializer_impl_counter = 0; // for debugging methodOop instanceKlass::class_initializer() { - return find_method(vmSymbols::class_initializer_name(), vmSymbols::void_method_signature()); + methodOop clinit = find_method( + vmSymbols::class_initializer_name(), vmSymbols::void_method_signature()); + if (clinit != NULL && clinit->has_valid_initializer_flags()) { + return clinit; + } + return NULL; } void instanceKlass::call_class_initializer_impl(instanceKlassHandle this_oop, TRAPS) {