Mercurial > hg > graal-jvmci-8
comparison 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 |
comparison
equal
deleted
inserted
replaced
2333:f767174aac14 | 2334:dbad0519a1c4 |
---|---|
733 } | 733 } |
734 | 734 |
735 static int call_class_initializer_impl_counter = 0; // for debugging | 735 static int call_class_initializer_impl_counter = 0; // for debugging |
736 | 736 |
737 methodOop instanceKlass::class_initializer() { | 737 methodOop instanceKlass::class_initializer() { |
738 return find_method(vmSymbols::class_initializer_name(), vmSymbols::void_method_signature()); | 738 methodOop clinit = find_method( |
739 vmSymbols::class_initializer_name(), vmSymbols::void_method_signature()); | |
740 if (clinit != NULL && clinit->has_valid_initializer_flags()) { | |
741 return clinit; | |
742 } | |
743 return NULL; | |
739 } | 744 } |
740 | 745 |
741 void instanceKlass::call_class_initializer_impl(instanceKlassHandle this_oop, TRAPS) { | 746 void instanceKlass::call_class_initializer_impl(instanceKlassHandle this_oop, TRAPS) { |
742 methodHandle h_method(THREAD, this_oop->class_initializer()); | 747 methodHandle h_method(THREAD, this_oop->class_initializer()); |
743 assert(!this_oop->is_initialized(), "we cannot initialize twice"); | 748 assert(!this_oop->is_initialized(), "we cannot initialize twice"); |