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