src/share/vm/oops/method.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
8161987 Cdiff src/share/vm/oops/method.cpp
src/share/vm/oops/method.cpp
Print this page
rev 8156 : 8157181: Compilers accept modification of final fields outside initializer methods
Summary: Track initialized final field updates; disable constant folding if an update is detected.
Reviewed-by: vlivanov, dnsimon, forax, never, kvn, coleenp
*** 588,598 ****
Bytecodes::length_for(java_code_at(0)) == last_index &&
Bytecodes::is_return(java_code_at(last_index)));
}
bool Method::is_initializer() const {
! return name() == vmSymbols::object_initializer_name() || is_static_initializer();
}
bool Method::has_valid_initializer_flags() const {
return (is_static() ||
method_holder()->major_version() < 51);
--- 588,598 ----
Bytecodes::length_for(java_code_at(0)) == last_index &&
Bytecodes::is_return(java_code_at(last_index)));
}
bool Method::is_initializer() const {
! return is_object_initializer() || is_static_initializer();
}
bool Method::has_valid_initializer_flags() const {
return (is_static() ||
method_holder()->major_version() < 51);
*** 604,613 ****
--- 604,616 ----
// initializers. (older classfiles exempted for backward compatibility)
return name() == vmSymbols::class_initializer_name() &&
has_valid_initializer_flags();
}
+ bool Method::is_object_initializer() const {
+ return name() == vmSymbols::object_initializer_name();
+ }
objArrayHandle Method::resolved_checked_exceptions_impl(Method* this_oop, TRAPS) {
int length = this_oop->checked_exceptions_length();
if (length == 0) { // common case
return objArrayHandle(THREAD, Universe::the_empty_class_klass_array());
src/share/vm/oops/method.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File