src/share/vm/oops/methodOop.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/oops/methodOop.cpp	Wed Mar  2 14:05:02 2011
--- new/src/share/vm/oops/methodOop.cpp	Wed Mar  2 14:05:00 2011

*** 464,474 **** --- 464,487 ---- return true; } bool methodOopDesc::is_initializer() const { ! return name() == vmSymbols::object_initializer_name() || name() == vmSymbols::class_initializer_name(); ! return name() == vmSymbols::object_initializer_name() || is_static_initializer(); + } + + bool methodOopDesc::has_valid_initializer_flags() const { + return (is_static() || + instanceKlass::cast(method_holder())->major_version() < 51); + } + + bool methodOopDesc::is_static_initializer() const { + // For classfiles version 51 or greater, ensure that the clinit method is + // static. Non-static methods with the name "<clinit>" are not static + // initializers. (older classfiles exempted for backward compatibility) + return name() == vmSymbols::class_initializer_name() && + has_valid_initializer_flags(); } objArrayHandle methodOopDesc::resolved_checked_exceptions_impl(methodOop this_oop, TRAPS) { int length = this_oop->checked_exceptions_length();

src/share/vm/oops/methodOop.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File